Skip to content

Commit ee3e2b9

Browse files
Fix CLI0109E in has_table() when table_name exceeds max Db2 identifier length (#197)
Signed-off-by: Balram Choudhary <bchoudhary@rocketsoftware.com>
1 parent af63b97 commit ee3e2b9

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

ibm_db_sa/base.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,6 +1475,13 @@ def denormalize_name(self, name):
14751475

14761476
@log_entry_exit
14771477
def has_table(self, connection, table_name, schema=None, **kw):
1478+
if not isinstance(table_name, str) or len(table_name) > 128:
1479+
logger.debug(
1480+
f"has_table -> returning False (invalid table_name: "
1481+
f"type={type(table_name).__name__}, "
1482+
f"len={len(table_name) if isinstance(table_name, str) else 'N/A'})"
1483+
)
1484+
return False
14781485
exists = self._reflector.has_table(connection, table_name, schema=schema, **kw)
14791486
logger.debug(f"Table exists -> {exists}")
14801487
return exists

ibm_db_sa/reflection.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,8 @@ class DB2Reflector(BaseReflector):
243243
@log_entry_exit
244244
def has_table(self, connection, table_name, schema=None, **kw):
245245
try:
246+
if not isinstance(table_name, str) or len(table_name) > 128:
247+
return False
246248
logger.debug(f"Checking table existence -> schema={schema}, table={table_name}")
247249
current_schema = self.denormalize_name(schema or self.default_schema_name)
248250
original_table_name = table_name
@@ -903,6 +905,8 @@ class AS400Reflector(BaseReflector):
903905
@log_entry_exit
904906
def has_table(self, connection, table_name, schema=None, **kw):
905907
try:
908+
if not isinstance(table_name, str) or len(table_name) > 128:
909+
return False
906910
current_schema = self.denormalize_name(schema or self.default_schema_name)
907911
table_name = self.denormalize_name(table_name)
908912
logger.debug(
@@ -1503,6 +1507,8 @@ class OS390Reflector(BaseReflector):
15031507
@log_entry_exit
15041508
def has_table(self, connection, table_name, schema=None, **kw):
15051509
try:
1510+
if not isinstance(table_name, str) or len(table_name) > 128:
1511+
return False
15061512
current_schema = self.denormalize_name(schema or self.default_schema_name)
15071513
table_name = self.denormalize_name(table_name)
15081514
logger.debug(

0 commit comments

Comments
 (0)