1111 always_null ,
1212 always_null_int ,
1313 always_null_smallint ,
14- identity
14+ identity ,
1515)
1616
1717
@@ -20,66 +20,132 @@ class MetadataColumnMappings:
2020
2121 # Common columns used across multiple metadata queries
2222 # FIX 1: Catalog columns - swap the mappings
23- CATALOG_COLUMN = ResultColumn ("TABLE_CAT" , "catalogName" , "string" , transform_value = identity )
24- CATALOG_COLUMN_FOR_GET_CATALOGS = ResultColumn ("TABLE_CAT" , "catalog" , "string" , transform_value = identity )
23+ CATALOG_COLUMN = ResultColumn (
24+ "TABLE_CAT" , "catalogName" , "string" , transform_value = identity
25+ )
26+ CATALOG_COLUMN_FOR_GET_CATALOGS = ResultColumn (
27+ "TABLE_CAT" , "catalog" , "string" , transform_value = identity
28+ )
2529 # Remove CATALOG_COLUMN_FOR_TABLES - will use CATALOG_COLUMN instead
26-
27- SCHEMA_COLUMN = ResultColumn ("TABLE_SCHEM" , "namespace" , "string" , transform_value = identity )
28- SCHEMA_COLUMN_FOR_GET_SCHEMA = ResultColumn ("TABLE_SCHEM" , "databaseName" , "string" , transform_value = identity )
29- TABLE_NAME_COLUMN = ResultColumn ("TABLE_NAME" , "tableName" , "string" , transform_value = identity )
30- TABLE_TYPE_COLUMN = ResultColumn ("TABLE_TYPE" , "tableType" , "string" , transform_value = transform_table_type )
31- REMARKS_COLUMN = ResultColumn ("REMARKS" , "remarks" , "string" , transform_value = transform_remarks_default )
30+
31+ SCHEMA_COLUMN = ResultColumn (
32+ "TABLE_SCHEM" , "namespace" , "string" , transform_value = identity
33+ )
34+ SCHEMA_COLUMN_FOR_GET_SCHEMA = ResultColumn (
35+ "TABLE_SCHEM" , "databaseName" , "string" , transform_value = identity
36+ )
37+ TABLE_NAME_COLUMN = ResultColumn (
38+ "TABLE_NAME" , "tableName" , "string" , transform_value = identity
39+ )
40+ TABLE_TYPE_COLUMN = ResultColumn (
41+ "TABLE_TYPE" , "tableType" , "string" , transform_value = transform_table_type
42+ )
43+ REMARKS_COLUMN = ResultColumn (
44+ "REMARKS" , "remarks" , "string" , transform_value = transform_remarks_default
45+ )
3246
3347 # Columns specific to getColumns()
34- COLUMN_NAME_COLUMN = ResultColumn ("COLUMN_NAME" , "col_name" , "string" , transform_value = identity )
48+ COLUMN_NAME_COLUMN = ResultColumn (
49+ "COLUMN_NAME" , "col_name" , "string" , transform_value = identity
50+ )
3551 DATA_TYPE_COLUMN = ResultColumn (
3652 "DATA_TYPE" , None , "int" , transform_value = calculate_data_type
3753 ) # Calculated from columnType
38- TYPE_NAME_COLUMN = ResultColumn ("TYPE_NAME" , "columnType" , "string" , transform_value = identity )
39-
54+ TYPE_NAME_COLUMN = ResultColumn (
55+ "TYPE_NAME" , "columnType" , "string" , transform_value = identity
56+ )
57+
4058 # FIX 5: SEA actually provides these columns
41- COLUMN_SIZE_COLUMN = ResultColumn ("COLUMN_SIZE" , "columnSize" , "int" , transform_value = identity )
42- DECIMAL_DIGITS_COLUMN = ResultColumn ("DECIMAL_DIGITS" , "decimalDigits" , "int" , transform_value = transform_numeric_default_zero )
43- NUM_PREC_RADIX_COLUMN = ResultColumn ("NUM_PREC_RADIX" , "radix" , "int" , transform_value = transform_numeric_default_zero )
44- ORDINAL_POSITION_COLUMN = ResultColumn ("ORDINAL_POSITION" , "ordinalPosition" , "int" , transform_value = transform_ordinal_position_offset )
45-
46- NULLABLE_COLUMN = ResultColumn ("NULLABLE" , None , "int" , transform_value = transform_nullable_to_int ) # Calculated from isNullable
59+ COLUMN_SIZE_COLUMN = ResultColumn (
60+ "COLUMN_SIZE" , "columnSize" , "int" , transform_value = identity
61+ )
62+ DECIMAL_DIGITS_COLUMN = ResultColumn (
63+ "DECIMAL_DIGITS" ,
64+ "decimalDigits" ,
65+ "int" ,
66+ transform_value = transform_numeric_default_zero ,
67+ )
68+ NUM_PREC_RADIX_COLUMN = ResultColumn (
69+ "NUM_PREC_RADIX" , "radix" , "int" , transform_value = transform_numeric_default_zero
70+ )
71+ ORDINAL_POSITION_COLUMN = ResultColumn (
72+ "ORDINAL_POSITION" ,
73+ "ordinalPosition" ,
74+ "int" ,
75+ transform_value = transform_ordinal_position_offset ,
76+ )
77+
78+ NULLABLE_COLUMN = ResultColumn (
79+ "NULLABLE" , None , "int" , transform_value = transform_nullable_to_int
80+ ) # Calculated from isNullable
4781 COLUMN_DEF_COLUMN = ResultColumn (
4882 "COLUMN_DEF" , "columnType" , "string" , transform_value = identity
4983 ) # Note: duplicate mapping
50- SQL_DATA_TYPE_COLUMN = ResultColumn ("SQL_DATA_TYPE" , None , "int" , transform_value = always_null_int )
51- SQL_DATETIME_SUB_COLUMN = ResultColumn ("SQL_DATETIME_SUB" , None , "int" , transform_value = always_null_int )
52- CHAR_OCTET_LENGTH_COLUMN = ResultColumn ("CHAR_OCTET_LENGTH" , None , "int" , transform_value = always_null_int )
53- IS_NULLABLE_COLUMN = ResultColumn ("IS_NULLABLE" , "isNullable" , "string" , transform_value = transform_is_nullable )
84+ SQL_DATA_TYPE_COLUMN = ResultColumn (
85+ "SQL_DATA_TYPE" , None , "int" , transform_value = always_null_int
86+ )
87+ SQL_DATETIME_SUB_COLUMN = ResultColumn (
88+ "SQL_DATETIME_SUB" , None , "int" , transform_value = always_null_int
89+ )
90+ CHAR_OCTET_LENGTH_COLUMN = ResultColumn (
91+ "CHAR_OCTET_LENGTH" , None , "int" , transform_value = always_null_int
92+ )
93+ IS_NULLABLE_COLUMN = ResultColumn (
94+ "IS_NULLABLE" , "isNullable" , "string" , transform_value = transform_is_nullable
95+ )
5496
5597 # Columns for getTables() that don't exist in SEA
56- TYPE_CAT_COLUMN = ResultColumn ("TYPE_CAT" , None , "string" , transform_value = always_null )
57- TYPE_SCHEM_COLUMN = ResultColumn ("TYPE_SCHEM" , None , "string" , transform_value = always_null )
58- TYPE_NAME_COLUMN = ResultColumn ("TYPE_NAME" , None , "string" , transform_value = always_null )
98+ TYPE_CAT_COLUMN = ResultColumn (
99+ "TYPE_CAT" , None , "string" , transform_value = always_null
100+ )
101+ TYPE_SCHEM_COLUMN = ResultColumn (
102+ "TYPE_SCHEM" , None , "string" , transform_value = always_null
103+ )
104+ TYPE_NAME_COLUMN = ResultColumn (
105+ "TYPE_NAME" , None , "string" , transform_value = always_null
106+ )
59107 SELF_REFERENCING_COL_NAME_COLUMN = ResultColumn (
60108 "SELF_REFERENCING_COL_NAME" , None , "string" , transform_value = always_null
61109 )
62- REF_GENERATION_COLUMN = ResultColumn ("REF_GENERATION" , None , "string" , transform_value = always_null )
63-
110+ REF_GENERATION_COLUMN = ResultColumn (
111+ "REF_GENERATION" , None , "string" , transform_value = always_null
112+ )
113+
64114 # FIX 8: Scope columns (always null per JDBC)
65- SCOPE_CATALOG_COLUMN = ResultColumn ("SCOPE_CATALOG" , None , "string" , transform_value = always_null )
66- SCOPE_SCHEMA_COLUMN = ResultColumn ("SCOPE_SCHEMA" , None , "string" , transform_value = always_null )
67- SCOPE_TABLE_COLUMN = ResultColumn ("SCOPE_TABLE" , None , "string" , transform_value = always_null )
68- SOURCE_DATA_TYPE_COLUMN = ResultColumn ("SOURCE_DATA_TYPE" , None , "smallint" , transform_value = always_null_smallint )
69-
115+ SCOPE_CATALOG_COLUMN = ResultColumn (
116+ "SCOPE_CATALOG" , None , "string" , transform_value = always_null
117+ )
118+ SCOPE_SCHEMA_COLUMN = ResultColumn (
119+ "SCOPE_SCHEMA" , None , "string" , transform_value = always_null
120+ )
121+ SCOPE_TABLE_COLUMN = ResultColumn (
122+ "SCOPE_TABLE" , None , "string" , transform_value = always_null
123+ )
124+ SOURCE_DATA_TYPE_COLUMN = ResultColumn (
125+ "SOURCE_DATA_TYPE" , None , "smallint" , transform_value = always_null_smallint
126+ )
127+
70128 # FIX 9 & 10: Auto increment and generated columns
71- IS_AUTO_INCREMENT_COLUMN = ResultColumn ("IS_AUTOINCREMENT" , "isAutoIncrement" , "string" , transform_value = identity ) # No underscore!
72- IS_GENERATED_COLUMN = ResultColumn ("IS_GENERATEDCOLUMN" , "isGenerated" , "string" , transform_value = identity ) # SEA provides this
73-
129+ IS_AUTO_INCREMENT_COLUMN = ResultColumn (
130+ "IS_AUTOINCREMENT" , "isAutoIncrement" , "string" , transform_value = identity
131+ ) # No underscore!
132+ IS_GENERATED_COLUMN = ResultColumn (
133+ "IS_GENERATEDCOLUMN" , "isGenerated" , "string" , transform_value = identity
134+ ) # SEA provides this
135+
74136 # FIX 11: Buffer length column
75- BUFFER_LENGTH_COLUMN = ResultColumn ("BUFFER_LENGTH" , None , "int" , transform_value = always_null_int ) # Always null per JDBC
137+ BUFFER_LENGTH_COLUMN = ResultColumn (
138+ "BUFFER_LENGTH" , None , "int" , transform_value = always_null_int
139+ ) # Always null per JDBC
76140
77141 # Column lists for each metadata operation
78142 CATALOG_COLUMNS = [CATALOG_COLUMN_FOR_GET_CATALOGS ] # Use specific catalog column
79143
80144 SCHEMA_COLUMNS = [
81145 SCHEMA_COLUMN_FOR_GET_SCHEMA ,
82- ResultColumn ("TABLE_CATALOG" , None , "string" , transform_value = always_null ), # Will need special population logic
146+ ResultColumn (
147+ "TABLE_CATALOG" , None , "string" , transform_value = always_null
148+ ), # Will need special population logic
83149 ]
84150
85151 TABLE_COLUMNS = [
0 commit comments