@@ -273,7 +273,13 @@ def get_trigger_definition(
273273 13 : "TIME" ,
274274 14 : "CHAR" ,
275275 16 : "BIGINT" ,
276+ 23 : "BOOLEAN" ,
277+ 24 : "DECFLOAT(16)" ,
278+ 25 : "DECFLOAT(34)" ,
279+ 26 : "INT128" ,
276280 27 : "DOUBLE PRECISION" ,
281+ 28 : "TIME WITH TIME ZONE" ,
282+ 29 : "TIMESTAMP WITH TIME ZONE" ,
277283 35 : "TIMESTAMP" ,
278284 37 : "VARCHAR" ,
279285 261 : "BLOB" ,
@@ -302,7 +308,7 @@ def get_columns(
302308
303309 # Find the fields themselves.
304310 cursor .execute (
305- "SELECT rf.rdb$field_name, f.rdb$field_type, f.rdb$character_length "
311+ "SELECT rf.rdb$field_name, f.rdb$field_type, f.rdb$character_length, f.rdb$field_sub_type "
306312 "FROM rdb$relation_fields AS rf "
307313 "JOIN rdb$fields AS f ON f.rdb$field_name = rf.rdb$field_source "
308314 "WHERE rdb$relation_name = ? "
@@ -313,8 +319,10 @@ def get_columns(
313319 for row in cursor .fetchall ():
314320 if row [1 ] in [14 , 37 ]: # CHAR, VARCHAR
315321 data_type = f"{ self ._types [row [1 ]]} ({ row [2 ]} )"
322+ if row [1 ] == 261 and row [3 ] == 1 :
323+ data_type = "BLOB (text)"
316324 else :
317- data_type = self ._types [ row [1 ]]
325+ data_type = self ._types . get ( row [1 ], "UNKNOWN" )
318326 name = row [0 ].rstrip ()
319327 columns .append (ColumnInfo (name = name , data_type = data_type , is_primary_key = name in pk_fields ))
320328 return columns
0 commit comments