diff --git a/ibm_db_sa/base.py b/ibm_db_sa/base.py index 7ac89fb..a67eeab 100644 --- a/ibm_db_sa/base.py +++ b/ibm_db_sa/base.py @@ -1475,6 +1475,13 @@ def denormalize_name(self, name): @log_entry_exit def has_table(self, connection, table_name, schema=None, **kw): + if not isinstance(table_name, str) or len(table_name) > 128: + logger.debug( + f"has_table -> returning False (invalid table_name: " + f"type={type(table_name).__name__}, " + f"len={len(table_name) if isinstance(table_name, str) else 'N/A'})" + ) + return False exists = self._reflector.has_table(connection, table_name, schema=schema, **kw) logger.debug(f"Table exists -> {exists}") return exists diff --git a/ibm_db_sa/reflection.py b/ibm_db_sa/reflection.py index a318557..1824a58 100644 --- a/ibm_db_sa/reflection.py +++ b/ibm_db_sa/reflection.py @@ -243,6 +243,8 @@ class DB2Reflector(BaseReflector): @log_entry_exit def has_table(self, connection, table_name, schema=None, **kw): try: + if not isinstance(table_name, str) or len(table_name) > 128: + return False logger.debug(f"Checking table existence -> schema={schema}, table={table_name}") current_schema = self.denormalize_name(schema or self.default_schema_name) original_table_name = table_name @@ -903,6 +905,8 @@ class AS400Reflector(BaseReflector): @log_entry_exit def has_table(self, connection, table_name, schema=None, **kw): try: + if not isinstance(table_name, str) or len(table_name) > 128: + return False current_schema = self.denormalize_name(schema or self.default_schema_name) table_name = self.denormalize_name(table_name) logger.debug( @@ -1503,6 +1507,8 @@ class OS390Reflector(BaseReflector): @log_entry_exit def has_table(self, connection, table_name, schema=None, **kw): try: + if not isinstance(table_name, str) or len(table_name) > 128: + return False current_schema = self.denormalize_name(schema or self.default_schema_name) table_name = self.denormalize_name(table_name) logger.debug(