@@ -315,7 +315,7 @@ public override string GetDataTypeName(int ordinal)
315315 /// </summary>
316316 /// <param name="ordinal">The zero-based column ordinal.</param>
317317 /// <returns>The data type of the column.</returns>
318- #if NET6_0_OR_GREATER
318+ #if NET8_0_OR_GREATER
319319 [ return : DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicProperties | DynamicallyAccessedMemberTypes . PublicFields ) ]
320320#endif
321321 public override Type GetFieldType ( int ordinal )
@@ -623,75 +623,74 @@ public override DataTable GetSchemaTable()
623623
624624 var schemaTable = new DataTable ( "SchemaTable" ) ;
625625
626- var ColumnName = new DataColumn ( SchemaTableColumn . ColumnName , typeof ( string ) ) ;
627- var ColumnOrdinal = new DataColumn ( SchemaTableColumn . ColumnOrdinal , typeof ( int ) ) ;
628- var ColumnSize = new DataColumn ( SchemaTableColumn . ColumnSize , typeof ( int ) ) ;
629- var NumericPrecision = new DataColumn ( SchemaTableColumn . NumericPrecision , typeof ( short ) ) ;
630- var NumericScale = new DataColumn ( SchemaTableColumn . NumericScale , typeof ( short ) ) ;
631-
632- var DataType = new DataColumn ( SchemaTableColumn . DataType , typeof ( Type ) ) ;
633- var DataTypeName = new DataColumn ( "DataTypeName" , typeof ( string ) ) ;
626+ var columnNameColumn = new DataColumn ( SchemaTableColumn . ColumnName , typeof ( string ) ) ;
627+ var columnOrdinalColumn = new DataColumn ( SchemaTableColumn . ColumnOrdinal , typeof ( int ) ) ;
628+ var columnSizeColumn = new DataColumn ( SchemaTableColumn . ColumnSize , typeof ( int ) ) ;
629+ var numericPrecisionColumn = new DataColumn ( SchemaTableColumn . NumericPrecision , typeof ( short ) ) ;
630+ var numericScaleColumn = new DataColumn ( SchemaTableColumn . NumericScale , typeof ( short ) ) ;
631+ var dataTypeColumn = CreateDataTypeColumn ( ) ;
632+ var dataTypeNameColumn = new DataColumn ( "DataTypeName" , typeof ( string ) ) ;
634633
635- var IsLong = new DataColumn ( SchemaTableColumn . IsLong , typeof ( bool ) ) ;
636- var AllowDBNull = new DataColumn ( SchemaTableColumn . AllowDBNull , typeof ( bool ) ) ;
634+ var isLongColumn = new DataColumn ( SchemaTableColumn . IsLong , typeof ( bool ) ) ;
635+ var allowDBNullColumn = new DataColumn ( SchemaTableColumn . AllowDBNull , typeof ( bool ) ) ;
637636
638- var IsUnique = new DataColumn ( SchemaTableColumn . IsUnique , typeof ( bool ) ) ;
639- var IsKey = new DataColumn ( SchemaTableColumn . IsKey , typeof ( bool ) ) ;
640- var IsAutoIncrement = new DataColumn ( SchemaTableOptionalColumn . IsAutoIncrement , typeof ( bool ) ) ;
637+ var isUniqueColumn = new DataColumn ( SchemaTableColumn . IsUnique , typeof ( bool ) ) ;
638+ var isKeyColumn = new DataColumn ( SchemaTableColumn . IsKey , typeof ( bool ) ) ;
639+ var isAutoIncrementColumn = new DataColumn ( SchemaTableOptionalColumn . IsAutoIncrement , typeof ( bool ) ) ;
641640
642- var BaseCatalogName = new DataColumn ( SchemaTableOptionalColumn . BaseCatalogName , typeof ( string ) ) ;
643- var BaseSchemaName = new DataColumn ( SchemaTableColumn . BaseSchemaName , typeof ( string ) ) ;
644- var BaseTableName = new DataColumn ( SchemaTableColumn . BaseTableName , typeof ( string ) ) ;
645- var BaseColumnName = new DataColumn ( SchemaTableColumn . BaseColumnName , typeof ( string ) ) ;
641+ var baseCatalogNameColumn = new DataColumn ( SchemaTableOptionalColumn . BaseCatalogName , typeof ( string ) ) ;
642+ var baseSchemaNameColumn = new DataColumn ( SchemaTableColumn . BaseSchemaName , typeof ( string ) ) ;
643+ var baseTableNameColumn = new DataColumn ( SchemaTableColumn . BaseTableName , typeof ( string ) ) ;
644+ var baseColumnNameColumn = new DataColumn ( SchemaTableColumn . BaseColumnName , typeof ( string ) ) ;
646645
647- var BaseServerName = new DataColumn ( SchemaTableOptionalColumn . BaseServerName , typeof ( string ) ) ;
648- var IsAliased = new DataColumn ( SchemaTableColumn . IsAliased , typeof ( bool ) ) ;
649- var IsExpression = new DataColumn ( SchemaTableColumn . IsExpression , typeof ( bool ) ) ;
646+ var baseServerNameColumn = new DataColumn ( SchemaTableOptionalColumn . BaseServerName , typeof ( string ) ) ;
647+ var isAliasedColumn = new DataColumn ( SchemaTableColumn . IsAliased , typeof ( bool ) ) ;
648+ var isExpressionColumn = new DataColumn ( SchemaTableColumn . IsExpression , typeof ( bool ) ) ;
650649
651650 var columns = schemaTable . Columns ;
652651
653- columns . Add ( ColumnName ) ;
654- columns . Add ( ColumnOrdinal ) ;
655- columns . Add ( ColumnSize ) ;
656- columns . Add ( NumericPrecision ) ;
657- columns . Add ( NumericScale ) ;
658- columns . Add ( IsUnique ) ;
659- columns . Add ( IsKey ) ;
660- columns . Add ( BaseServerName ) ;
661- columns . Add ( BaseCatalogName ) ;
662- columns . Add ( BaseColumnName ) ;
663- columns . Add ( BaseSchemaName ) ;
664- columns . Add ( BaseTableName ) ;
665- columns . Add ( DataType ) ;
666- columns . Add ( DataTypeName ) ;
667- columns . Add ( AllowDBNull ) ;
668- columns . Add ( IsAliased ) ;
669- columns . Add ( IsExpression ) ;
670- columns . Add ( IsAutoIncrement ) ;
671- columns . Add ( IsLong ) ;
652+ columns . Add ( columnNameColumn ) ;
653+ columns . Add ( columnOrdinalColumn ) ;
654+ columns . Add ( columnSizeColumn ) ;
655+ columns . Add ( numericPrecisionColumn ) ;
656+ columns . Add ( numericScaleColumn ) ;
657+ columns . Add ( isUniqueColumn ) ;
658+ columns . Add ( isKeyColumn ) ;
659+ columns . Add ( baseServerNameColumn ) ;
660+ columns . Add ( baseCatalogNameColumn ) ;
661+ columns . Add ( baseColumnNameColumn ) ;
662+ columns . Add ( baseSchemaNameColumn ) ;
663+ columns . Add ( baseTableNameColumn ) ;
664+ columns . Add ( dataTypeColumn ) ;
665+ columns . Add ( dataTypeNameColumn ) ;
666+ columns . Add ( allowDBNullColumn ) ;
667+ columns . Add ( isAliasedColumn ) ;
668+ columns . Add ( isExpressionColumn ) ;
669+ columns . Add ( isAutoIncrementColumn ) ;
670+ columns . Add ( isLongColumn ) ;
672671
673672 for ( var i = 0 ; i < FieldCount ; i ++ )
674673 {
675674 var schemaRow = schemaTable . NewRow ( ) ;
676- schemaRow [ ColumnName ] = GetName ( i ) ;
677- schemaRow [ ColumnOrdinal ] = i ;
678- schemaRow [ ColumnSize ] = - 1 ;
679- schemaRow [ NumericPrecision ] = DBNull . Value ;
680- schemaRow [ NumericScale ] = DBNull . Value ;
681- schemaRow [ BaseServerName ] = _command . Connection ! . DataSource ;
675+ schemaRow [ columnNameColumn ] = GetName ( i ) ;
676+ schemaRow [ columnOrdinalColumn ] = i ;
677+ schemaRow [ columnSizeColumn ] = - 1 ;
678+ schemaRow [ numericPrecisionColumn ] = DBNull . Value ;
679+ schemaRow [ numericScaleColumn ] = DBNull . Value ;
680+ schemaRow [ baseServerNameColumn ] = _command . Connection ! . DataSource ;
682681 var databaseName = sqlite3_column_database_name ( _record . Handle , i ) . utf8_to_string ( ) ;
683- schemaRow [ BaseCatalogName ] = databaseName ;
682+ schemaRow [ baseCatalogNameColumn ] = databaseName ;
684683 var columnName = sqlite3_column_origin_name ( _record . Handle , i ) . utf8_to_string ( ) ;
685- schemaRow [ BaseColumnName ] = columnName ;
686- schemaRow [ BaseSchemaName ] = DBNull . Value ;
684+ schemaRow [ baseColumnNameColumn ] = columnName ;
685+ schemaRow [ baseSchemaNameColumn ] = DBNull . Value ;
687686 var tableName = sqlite3_column_table_name ( _record . Handle , i ) . utf8_to_string ( ) ;
688- schemaRow [ BaseTableName ] = tableName ;
689- schemaRow [ DataType ] = GetFieldType ( i ) ;
687+ schemaRow [ baseTableNameColumn ] = tableName ;
688+ schemaRow [ dataTypeColumn ] = GetFieldType ( i ) ;
690689 var dataTypeName = GetDataTypeName ( i ) ;
691- schemaRow [ DataTypeName ] = dataTypeName ;
692- schemaRow [ IsAliased ] = columnName != GetName ( i ) ;
693- schemaRow [ IsExpression ] = columnName == null ;
694- schemaRow [ IsLong ] = DBNull . Value ;
690+ schemaRow [ dataTypeNameColumn ] = dataTypeName ;
691+ schemaRow [ isAliasedColumn ] = columnName != GetName ( i ) ;
692+ schemaRow [ isExpressionColumn ] = columnName == null ;
693+ schemaRow [ isLongColumn ] = DBNull . Value ;
695694
696695 var eponymousVirtualTable = false ;
697696 if ( tableName != null
@@ -708,7 +707,7 @@ public override DataTable GetSchemaTable()
708707 command . Parameters . AddWithValue ( "$column" , columnName ) ;
709708
710709 var cnt = ( long ) command . ExecuteScalar ( ) ! ;
711- schemaRow [ IsUnique ] = cnt != 0 ;
710+ schemaRow [ isUniqueColumn ] = cnt != 0 ;
712711
713712 command . Parameters . Clear ( ) ;
714713 var columnType = "typeof(\" " + columnName . Replace ( "\" " , "\" \" " ) + "\" )" ;
@@ -721,7 +720,7 @@ public override DataTable GetSchemaTable()
721720 . AppendLine ( "LIMIT 1;" ) . ToString ( ) ;
722721
723722 var type = ( string ? ) command . ExecuteScalar ( ) ;
724- schemaRow [ DataType ] =
723+ schemaRow [ dataTypeColumn ] =
725724 ( type != null )
726725 ? SqliteDataRecord . GetFieldType ( type )
727726 : SqliteDataRecord . GetFieldTypeFromSqliteType (
@@ -741,16 +740,29 @@ public override DataTable GetSchemaTable()
741740 out var notNull , out var primaryKey , out var autoInc ) ;
742741 SqliteException . ThrowExceptionForRC ( rc , _command . Connection . Handle ) ;
743742
744- schemaRow [ IsKey ] = primaryKey != 0 ;
745- schemaRow [ AllowDBNull ] = notNull == 0 ;
746- schemaRow [ IsAutoIncrement ] = autoInc != 0 ;
743+ schemaRow [ isKeyColumn ] = primaryKey != 0 ;
744+ schemaRow [ allowDBNullColumn ] = notNull == 0 ;
745+ schemaRow [ isAutoIncrementColumn ] = autoInc != 0 ;
747746 }
748747 }
749748
750749 schemaTable . Rows . Add ( schemaRow ) ;
751750 }
752751
753752 return schemaTable ;
753+
754+ #if NET6_0_OR_GREATER
755+ [ UnconditionalSuppressMessage ( "Trimming" , "IL2111:Method with parameters or return value with `DynamicallyAccessedMembersAttribute`"
756+ + " is accessed via reflection. Trimmer can't guarantee availability of the requirements of the method." ,
757+ Justification = "This is about System.Type.TypeInitializer.get. It is accessed via reflection"
758+ + " as the type parameter in DataColumn is annotated with DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.PublicProperties" +
759+ " However, reflection is only used for nullable columns." ) ]
760+ #endif
761+ static DataColumn CreateDataTypeColumn ( )
762+ => new ( SchemaTableColumn . DataType , typeof ( Type ) )
763+ {
764+ AllowDBNull = false
765+ } ;
754766 }
755767 }
756768}
0 commit comments