MCPcopy Create free account
hub / github.com/pgadmin-org/pgadmin4 / get_table_columns

Function get_table_columns

web/pgadmin/llm/tools/database.py:519–626  ·  view source on GitHub ↗

Get column information for a specific table. Uses pgAdmin's SQL templates for version-aware column listing. Args: sid: Server ID did: Database ID schema_name: Schema name table_name: Table name Returns: Dictionary containing column informat

(
    sid: int,
    did: int,
    schema_name: str,
    table_name: str
)

Source from the content-addressed store, hash-verified

517
518
519def get_table_columns(
520 sid: int,
521 did: int,
522 schema_name: str,
523 table_name: str
524) -> dict:
525 """
526 Get column information for a specific table.
527
528 Uses pgAdmin's SQL templates for version-aware column listing.
529
530 Args:
531 sid: Server ID
532 did: Database ID
533 schema_name: Schema name
534 table_name: Table name
535
536 Returns:
537 Dictionary containing column information
538 """
539 conn_id = f"llm_{secrets.choice(range(1, 9999999))}"
540 manager = None
541
542 try:
543 manager, conn = _get_connection(sid, did, conn_id)
544 status, error = _connect_readonly(manager, conn, conn_id)
545 if not status:
546 raise DatabaseToolError(f"Connection failed: {error}",
547 code="CONNECTION_ERROR")
548
549 sversion = manager.sversion or 0
550 driver = get_driver(config.PG_DEFAULT_DRIVER)
551
552 # Use qtLiteral for safe SQL escaping
553 schema_lit = driver.qtLiteral(schema_name, conn)
554 table_lit = driver.qtLiteral(table_name, conn)
555
556 # Get table OID first
557 oid_sql = f"""
558 SELECT c.oid
559 FROM pg_catalog.pg_class c
560 JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
561 WHERE c.relname = {table_lit}
562 AND n.nspname = {schema_lit}
563 """
564
565 status, _ = conn.execute_void("BEGIN TRANSACTION READ ONLY")
566 if not status:
567 raise DatabaseToolError("Failed to start transaction",
568 code="TRANSACTION_ERROR")
569
570 try:
571 status, oid_res = conn.execute_dict(oid_sql)
572 if not status or not oid_res.get('rows'):
573 raise DatabaseToolError(
574 f"Table {schema_name}.{table_name} not found",
575 code="NOT_FOUND"
576 )

Callers 1

execute_toolFunction · 0.85

Calls 12

get_driverFunction · 0.90
compile_template_pathFunction · 0.90
_connect_readonlyFunction · 0.85
DatabaseToolErrorClass · 0.85
qtLiteralMethod · 0.80
joinMethod · 0.80
appendMethod · 0.80
_get_connectionFunction · 0.70
execute_voidMethod · 0.45
execute_dictMethod · 0.45
getMethod · 0.45
releaseMethod · 0.45

Tested by

no test coverage detected