@@ -933,6 +933,48 @@ public void GetColumnSchemaAfterNextResult()
933
933
Assert . False ( reader . NextResult ( ) ) ;
934
934
Assert . Empty ( reader . GetColumnSchema ( ) ) ;
935
935
}
936
+
937
+ [ Fact ]
938
+ public void GetColumnSchemaForTableAlias ( )
939
+ {
940
+ using var cmd = m_database . Connection . CreateCommand ( ) ;
941
+ cmd . CommandText = """
942
+ drop table if exists column_schema_table2;
943
+ drop table if exists column_schema_table1;
944
+ create table column_schema_table1(id int not null primary key);
945
+ create table column_schema_table2(id int not null primary key,
946
+ table1_id1 int not null,
947
+ table1_id2 int not null,
948
+ foreign key (table1_id1) references column_schema_table1(id),
949
+ foreign key (table1_id2) references column_schema_table1(id));
950
+ insert into column_schema_table1(id) values(1),(2);
951
+ insert into column_schema_table2(id, table1_id1, table1_id2) values(3, 1, 2);
952
+ """ ;
953
+ cmd . ExecuteNonQuery ( ) ;
954
+
955
+ cmd . CommandText = """
956
+ select t2.id as id2, t1a.id as ida, t1b.id as idb
957
+ from column_schema_table2 t2
958
+ join column_schema_table1 t1a on t2.table1_id1 = t1a.id
959
+ join column_schema_table1 t1b on t2.table1_id2 = t1b.id;
960
+ """ ;
961
+ using var reader = cmd . ExecuteReader ( ) ;
962
+ Assert . True ( reader . Read ( ) ) ;
963
+ var schema = reader . GetColumnSchema ( ) ;
964
+ Assert . Equal ( 3 , schema . Count ) ;
965
+ Assert . Equal ( "id2" , schema [ 0 ] . ColumnName ) ;
966
+ Assert . Equal ( "ida" , schema [ 1 ] . ColumnName ) ;
967
+ Assert . Equal ( "idb" , schema [ 2 ] . ColumnName ) ;
968
+ Assert . Equal ( "id" , schema [ 0 ] . BaseColumnName ) ;
969
+ Assert . Equal ( "id" , schema [ 1 ] . BaseColumnName ) ;
970
+ Assert . Equal ( "id" , schema [ 2 ] . BaseColumnName ) ;
971
+ Assert . Equal ( "column_schema_table2" , schema [ 0 ] . BaseTableName ) ;
972
+ Assert . Equal ( "column_schema_table1" , schema [ 1 ] . BaseTableName ) ;
973
+ Assert . Equal ( "column_schema_table1" , schema [ 2 ] . BaseTableName ) ;
974
+ Assert . Equal ( "t2" , ( ( MySqlDbColumn ) schema [ 0 ] ) . TableName ) ;
975
+ Assert . Equal ( "t1a" , ( ( MySqlDbColumn ) schema [ 1 ] ) . TableName ) ;
976
+ Assert . Equal ( "t1b" , ( ( MySqlDbColumn ) schema [ 2 ] ) . TableName ) ;
977
+ }
936
978
#endif
937
979
938
980
private void UseReaderWithoutDisposingThread ( object obj )
0 commit comments