Skip to content

Commit 5a2ec16

Browse files
authored
feat: make get_table_comment work on OS390 and AS400 (#176)
Fixes #174 Signed-off-by: Michael Maltese <[email protected]>
1 parent 373ca53 commit 5a2ec16

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

ibm_db_sa/reflection.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,7 @@ class AS400Reflector(BaseReflector):
511511
Column("TABLE_SCHEMA", CoerceUnicode, key="tabschema"),
512512
Column("TABLE_NAME", CoerceUnicode, key="tabname"),
513513
Column("TABLE_TYPE", CoerceUnicode, key="tabtype"),
514+
Column("LONG_COMMENT", CoerceUnicode, key="remarks"),
514515
schema="QSYS2")
515516

516517
sys_table_constraints = Table("SYSCST", ischema,
@@ -615,7 +616,13 @@ def has_sequence(self, connection, sequence_name, schema=None):
615616
return c.first() is not None
616617

617618
def get_table_comment(self, connection, table_name, schema=None, **kw):
618-
raise NotImplementedError()
619+
current_schema = self.denormalize_name(schema or self.default_schema_name)
620+
table_name = self.denormalize_name(table_name)
621+
systbl = self.sys_tables
622+
query = sql.select(systbl.c.remarks).\
623+
where(systbl.c.tabschema == current_schema).\
624+
where(systbl.c.tabname == table_name)
625+
return {'text': connection.execute(query).scalar()}
619626

620627
@reflection.cache
621628
def get_sequence_names(self, connection, schema=None, **kw):
@@ -883,6 +890,7 @@ class OS390Reflector(BaseReflector):
883890
Column("OWNERTYPE", CoerceUnicode, key="ownertype"),
884891
Column("TYPE", CoerceUnicode, key="type"),
885892
Column("STATUS", CoerceUnicode, key="status"),
893+
Column("REMARKS", CoerceUnicode, key="remarks"),
886894
schema="SYSIBM")
887895

888896
sys_indexes = Table("SYSINDEXES", ischema,
@@ -992,7 +1000,13 @@ def get_schema_names(self, connection, **kw):
9921000
return [self.normalize_name(r[0]) for r in connection.execute(query)]
9931001

9941002
def get_table_comment(self, connection, table_name, schema=None, **kw):
995-
raise NotImplementedError()
1003+
current_schema = self.denormalize_name(schema or self.default_schema_name)
1004+
table_name = self.denormalize_name(table_name)
1005+
systbl = self.sys_tables
1006+
query = sql.select(systbl.c.remarks).\
1007+
where(systbl.c.tabschema == current_schema).\
1008+
where(systbl.c.tabname == table_name)
1009+
return {'text': connection.execute(query).scalar()}
9961010

9971011
@reflection.cache
9981012
def get_table_names(self, connection, schema=None, **kw):

0 commit comments

Comments
 (0)