1111always_null ,
1212always_null_int ,
1313always_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+ )
3551DATA_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
4781COLUMN_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+ )
59107SELF_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
78142CATALOG_COLUMNS = [CATALOG_COLUMN_FOR_GET_CATALOGS ]# Use specific catalog column
79143
80144SCHEMA_COLUMNS = [
81145SCHEMA_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
85151TABLE_COLUMNS = [