src/databao_context_engine/plugins/databases/duckdb_introspector.py [70:118]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            "checks": self._sql_checks(),
            "fks": self._sql_foreign_keys(),
            "idx": self._sql_indexes(),
        }

    def _sql_relations(self) -> str:
        return r"""
            SELECT
                table_name,
                CASE table_type
                    WHEN 'BASE TABLE' THEN 'table'
                    WHEN 'VIEW' THEN 'view'
                    WHEN 'MATERIALIZED VIEW' THEN 'materialized_view'
                    ELSE lower(table_type)
                END AS kind,
                NULL::VARCHAR AS description
            FROM 
                information_schema.tables
            WHERE 
                table_schema = {SCHEMA}
            ORDER BY 
                table_name; 
        """

    def _sql_columns(self) -> str:
        return r"""
            SELECT
                c.table_name,
                c.column_name,
                c.ordinal_position AS ordinal_position,
                c.data_type AS data_type,
                CASE 
                    WHEN c.is_nullable = 'YES' THEN TRUE 
                    ELSE FALSE 
                END AS is_nullable,
                c.column_default AS default_expression,
                NULL::VARCHAR AS generated,
                NULL::VARCHAR AS description
            FROM 
                information_schema.columns c
            WHERE 
                c.table_schema = {SCHEMA}
            ORDER BY 
                c.table_name, 
                c.ordinal_position; 
        """

    def _sql_primary_keys(self) -> str:
        return r"""
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



src/databao_context_engine/plugins/databases/mssql_introspector.py [120:205]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            "checks": self._sql_checks(),
            "fks": self._sql_foreign_keys(),
            "idx": self._sql_indexes(),
        }

    def _sql_relations(self) -> str:
        return r"""
            SELECT
                t.name AS table_name,
                'table' AS kind,
                CAST(ep.value AS nvarchar(4000)) AS description
            FROM 
                sys.tables t
                JOIN sys.schemas s ON s.schema_id = t.schema_id
                LEFT JOIN sys.extended_properties ep 
                          ON ep.major_id = t.object_id AND ep.minor_id = 0 AND ep.class = 1 AND ep.name = 'MS_Description'
            WHERE 
                s.name = {SCHEMA}
            UNION ALL
            SELECT
                v.name                    AS table_name,
                'view'                    AS kind,
                CAST(ep.value AS nvarchar(4000)) AS description
            FROM 
                sys.views v
                JOIN sys.schemas s ON s.schema_id = v.schema_id
                LEFT JOIN sys.extended_properties ep 
                          ON ep.major_id = v.object_id AND ep.minor_id = 0 AND ep.class = 1 AND ep.name = 'MS_Description'
            WHERE 
                s.name = {SCHEMA}
            UNION ALL
            SELECT
                et.name AS table_name,
                'external_table' AS kind,
                CAST(ep.value AS nvarchar(4000)) AS description
            FROM 
                sys.external_tables et
                JOIN sys.schemas s ON s.schema_id = et.schema_id
                LEFT JOIN sys.extended_properties ep 
                          ON ep.major_id = et.object_id AND ep.minor_id = 0 AND ep.class = 1 AND ep.name = 'MS_Description'
            WHERE 
                s.name = {SCHEMA}
            ORDER BY 
                table_name;
        """

    # TODO: simplify case when for datatype
    def _sql_columns(self) -> str:
        return r"""
            SELECT
                o.name AS table_name,
                c.name AS column_name,
                c.column_id AS ordinal_position,
                CASE
                    WHEN t.name IN ('varchar','char','varbinary','binary') THEN t.name + '(' + CASE WHEN c.max_length = -1 THEN 'MAX' ELSE CAST(c.max_length AS varchar(10)) END + ')'
                    WHEN t.name IN ('nvarchar','nchar') THEN t.name + '(' + CASE WHEN c.max_length = -1 THEN 'MAX' ELSE CAST(c.max_length / 2 AS varchar(10)) END + ')'
                    WHEN t.name IN ('decimal','numeric') THEN t.name + '(' + CAST(c.precision AS varchar(10)) + ',' + CAST(c.scale AS varchar(10)) + ')'
                    ELSE t.name
                END AS data_type,
                CAST(c.is_nullable AS bit) AS is_nullable,
                CASE
                    WHEN cc.object_id IS NOT NULL THEN CAST(cc.definition AS nvarchar(4000))
                    ELSE CAST(dc.definition AS nvarchar(4000))
                END AS default_expression,
                CASE
                    WHEN c.is_identity = 1 THEN 'identity'
                    WHEN c.is_computed = 1 THEN 'computed'
                END AS generated,
                CAST(ep.value AS nvarchar(4000)) AS description
            FROM 
                sys.columns c
                JOIN sys.objects o ON o.object_id = c.object_id AND o.type IN ('U','V')
                JOIN sys.schemas s ON s.schema_id = o.schema_id
                JOIN sys.types t ON t.user_type_id = c.user_type_id
                LEFT JOIN sys.computed_columns cc ON cc.object_id = c.object_id AND cc.column_id = c.column_id    
                LEFT JOIN sys.default_constraints dc ON dc.object_id = c.default_object_id
                LEFT JOIN sys.extended_properties ep ON ep.class = 1 AND ep.major_id = c.object_id AND ep.minor_id = c.column_id AND ep.name = 'MS_Description'
            WHERE 
                s.name = {SCHEMA}
            ORDER BY 
                o.name, 
                c.column_id;
        """

    def _sql_primary_keys(self) -> str:
        return r"""
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



