diff --git a/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_BindParam_sql=INSERT INTO actor SELECT -, -, -, -_parameters=System.Object[].verified.txt b/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_BindParam_sql=INSERT INTO actor SELECT -, -, -, -_parameters=System.Object[].verified.txt index 496901c2..9a3f8423 100644 --- a/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_BindParam_sql=INSERT INTO actor SELECT -, -, -, -_parameters=System.Object[].verified.txt +++ b/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_BindParam_sql=INSERT INTO actor SELECT -, -, -, -_parameters=System.Object[].verified.txt @@ -1,8 +1,8 @@  -+-------------------------------------------------+ -| qsi_unit_tests.actor - INSERT | -+----------+------------+-----------+-------------+ -| actor_id | first_name | last_name | last_update | -+----------+------------+-----------+-------------+ -| 1 | MORRIS | BABO | null | -+-------------------------------------------------+ ++-------------------------------------------------------+ +| qsi_unit_tests.actor - INSERT | ++----------+------------+-----------+-------------------+ +| actor_id | first_name | last_name | last_update | ++----------+------------+-----------+-------------------+ +| 1 | MORRIS | BABO | CURRENT_TIMESTAMP | ++-------------------------------------------------------+ diff --git a/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_BindParam_sql=INSERT INTO actor SET actor.first_name = -, actor.last_name = -_parameters=System.Object[].verified.txt b/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_BindParam_sql=INSERT INTO actor SET actor.first_name = -, actor.last_name = -_parameters=System.Object[].verified.txt index b55d6532..8df1c8c5 100644 --- a/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_BindParam_sql=INSERT INTO actor SET actor.first_name = -, actor.last_name = -_parameters=System.Object[].verified.txt +++ b/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_BindParam_sql=INSERT INTO actor SET actor.first_name = -, actor.last_name = -_parameters=System.Object[].verified.txt @@ -1,8 +1,8 @@  -+-------------------------------------------------+ -| qsi_unit_tests.actor - INSERT | -+----------+------------+-----------+-------------+ -| actor_id | first_name | last_name | last_update | -+----------+------------+-----------+-------------+ -| default | MORRIS | BABO | default | -+-------------------------------------------------+ ++-------------------------------------------------------------+ +| qsi_unit_tests.actor - INSERT | ++----------------+------------+-----------+-------------------+ +| actor_id | first_name | last_name | last_update | ++----------------+------------+-----------+-------------------+ +| AUTO_INCREMENT | MORRIS | BABO | CURRENT_TIMESTAMP | ++-------------------------------------------------------------+ diff --git a/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_sql=INSERT INTO actor SELECT 1, 'MORRIS', 'BABO', null.verified.txt b/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_sql=INSERT INTO actor SELECT 1, 'MORRIS', 'BABO', null.verified.txt index 496901c2..9a3f8423 100644 --- a/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_sql=INSERT INTO actor SELECT 1, 'MORRIS', 'BABO', null.verified.txt +++ b/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_sql=INSERT INTO actor SELECT 1, 'MORRIS', 'BABO', null.verified.txt @@ -1,8 +1,8 @@  -+-------------------------------------------------+ -| qsi_unit_tests.actor - INSERT | -+----------+------------+-----------+-------------+ -| actor_id | first_name | last_name | last_update | -+----------+------------+-----------+-------------+ -| 1 | MORRIS | BABO | null | -+-------------------------------------------------+ ++-------------------------------------------------------+ +| qsi_unit_tests.actor - INSERT | ++----------+------------+-----------+-------------------+ +| actor_id | first_name | last_name | last_update | ++----------+------------+-----------+-------------------+ +| 1 | MORRIS | BABO | CURRENT_TIMESTAMP | ++-------------------------------------------------------+ diff --git a/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_sql=INSERT INTO actor SET actor.first_name = 'MORRIS', actor.last_name = 'BABO'.verified.txt b/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_sql=INSERT INTO actor SET actor.first_name = 'MORRIS', actor.last_name = 'BABO'.verified.txt index b55d6532..8df1c8c5 100644 --- a/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_sql=INSERT INTO actor SET actor.first_name = 'MORRIS', actor.last_name = 'BABO'.verified.txt +++ b/Qsi.Tests/Vendor/MySql/verified/MySqlTest.Test_Print_sql=INSERT INTO actor SET actor.first_name = 'MORRIS', actor.last_name = 'BABO'.verified.txt @@ -1,8 +1,8 @@  -+-------------------------------------------------+ -| qsi_unit_tests.actor - INSERT | -+----------+------------+-----------+-------------+ -| actor_id | first_name | last_name | last_update | -+----------+------------+-----------+-------------+ -| default | MORRIS | BABO | default | -+-------------------------------------------------+ ++-------------------------------------------------------------+ +| qsi_unit_tests.actor - INSERT | ++----------------+------------+-----------+-------------------+ +| actor_id | first_name | last_name | last_update | ++----------------+------------+-----------+-------------------+ +| AUTO_INCREMENT | MORRIS | BABO | CURRENT_TIMESTAMP | ++-------------------------------------------------------------+ diff --git a/Qsi/Analyzers/Action/QsiActionAnalyzer.cs b/Qsi/Analyzers/Action/QsiActionAnalyzer.cs index 19824440..4ee2bd29 100644 --- a/Qsi/Analyzers/Action/QsiActionAnalyzer.cs +++ b/Qsi/Analyzers/Action/QsiActionAnalyzer.cs @@ -629,7 +629,7 @@ protected virtual SetColumnTarget ResolveSetColumnTarget( protected virtual QsiTableColumn ResolveNotNullableColumnWithInvalidDefault(IEnumerable columns, IEnumerable columnTargets) { - HashSet targetNames = columnTargets.Select(ct => ct.DeclaredName.SubIdentifier(0).ToString()).ToHashSet(); + HashSet targetNames = columnTargets.Select(ct => ct.DeclaredName.SubIdentifier(^1).ToString()).ToHashSet(); return columns .FirstOrDefault(x => !targetNames.Contains(x.Name.Value) && !x.IsNullable && x.Default is null); @@ -685,7 +685,10 @@ private async ValueTask ProcessQueryValues(TableDataInsertContext context, IQsiT foreach (var row in dataTable.Rows) { - PopulateInsertRow(context, pivot => row.Items[pivot.SourceOrder]); + PopulateInsertRow(context, pivot => + { + return row.Items[pivot.SourceOrder]; + }); } var tableAnalyzer = context.Engine.GetAnalyzer(); @@ -801,9 +804,11 @@ private void PopulateInsertRow(TableDataInsertContext context, DataValueSelector { ref var item = ref targetRow.Items[pivot.DestinationOrder]; - item = pivot.SourceColumn is not null - ? valueSelector(pivot) - : ResolveDefaultColumnValue(pivot); + if (pivot.SourceColumn is not null) + item = valueSelector(pivot); + + if (item?.Value is null) + item = ResolveDefaultColumnValue(pivot); if (item.Value is null && target.Table.Columns[pivot.DestinationOrder].IsNullable == false) throw new QsiException(QsiError.NotNullConstraints, pivot.DestinationColumn.Name.Value);