@@ -251,9 +251,9 @@ def query_get_table_columns(
251251 if self .sybase_driver_type .is_iq :
252252 query = (
253253 f"SELECT c.column_name, d.domain_name AS data_type, "
254- f"CASE WHEN d.domain_name IN ('DECIMAL', 'NUMERIC') THEN c.scale ELSE NULL END AS numeric_scale, "
255- f"CASE WHEN d.domain_name IN ('DECIMAL', 'NUMERIC') THEN c.width ELSE NULL END AS numeric_precision, "
256254 f"CASE WHEN d.domain_name IN ('DATE', 'TIME', 'TIMESTAMP') THEN c.scale ELSE NULL END AS datetime_precision, "
255+ f"CASE WHEN t.name IN ('float') THEN 15 WHEN t.name IN ('real') THEN 7 ELSE c.prec END AS numeric_precision, "
256+ f"CASE WHEN t.name IN ('float', 'real') THEN NULL ELSE c.scale END AS numeric_scale, "
257257 f"NULL AS collation_name, c.width AS character_maximum_length "
258258 f"FROM { database } .SYS.SYSTABLE t "
259259 f"JOIN { database } .SYS.SYSCOLUMN c ON t.table_id = c.table_id "
@@ -266,8 +266,9 @@ def query_get_table_columns(
266266 elif self .sybase_driver_type .is_ase :
267267 query = (
268268 f"SELECT c.name AS column_name, t.name AS data_type, "
269- f"c.prec AS numeric_precision, c.scale AS numeric_scale, "
270269 f"CASE WHEN c.type IN (61, 111) THEN c.prec ELSE NULL END AS datetime_precision, "
270+ f"CASE WHEN t.name IN ('float') THEN 15 WHEN t.name IN ('real') THEN 7 ELSE c.prec END AS numeric_precision, "
271+ f"CASE WHEN t.name IN ('float', 'real') THEN NULL ELSE c.scale END AS numeric_scale, "
271272 f"NULL AS collation_name, c.length AS character_maximum_length "
272273 f"FROM { database } ..sysobjects o "
273274 f"JOIN { database } ..syscolumns c ON o.id = c.id "
@@ -280,8 +281,9 @@ def query_get_table_columns(
280281 try :
281282 ase_query = (
282283 f"SELECT c.name AS column_name, t.name AS data_type, "
283- f"c.prec AS numeric_precision, c.scale AS numeric_scale, "
284284 f"CASE WHEN c.type IN (61, 111) THEN c.prec ELSE NULL END AS datetime_precision, "
285+ f"CASE WHEN t.name IN ('float') THEN 15 WHEN t.name IN ('real') THEN 7 ELSE c.prec END AS numeric_precision, "
286+ f"CASE WHEN t.name IN ('float', 'real') THEN NULL ELSE c.scale END AS numeric_scale, "
285287 f"NULL AS collation_name, c.length AS character_maximum_length "
286288 f"FROM { database } ..sysobjects o "
287289 f"JOIN { database } ..syscolumns c ON o.id = c.id "
@@ -295,8 +297,9 @@ def query_get_table_columns(
295297 except Exception as _ :
296298 iq_query = (
297299 f"SELECT c.name AS column_name, t.name AS data_type, "
298- f"c.prec AS numeric_precision, c.scale AS numeric_scale, "
299300 f"CASE WHEN c.type IN (61, 111) THEN c.prec ELSE NULL END AS datetime_precision, "
301+ f"CASE WHEN t.name IN ('float') THEN 15 WHEN t.name IN ('real') THEN 7 ELSE c.prec END AS numeric_precision, "
302+ f"CASE WHEN t.name IN ('float', 'real') THEN NULL ELSE c.scale END AS numeric_scale, "
300303 f"NULL AS collation_name, c.length AS character_maximum_length "
301304 f"FROM { database } .dbo.sysobjects o "
302305 f"JOIN { database } .dbo.syscolumns c ON o.id = c.id "
0 commit comments