async def _get_table_info(self, schema: str, table: str) -> Dict[str, Any]:
        """Get table structure information.

        Args:
            schema: Schema name
            table: Table name

        Returns:
            Dictionary containing column information and primary keys
        """
        async with self.pool.acquire() as conn:
            async with conn.cursor() as cursor:
                # Get column information
                columns_query = """
                    SELECT
                        COLUMN_NAME,
                        DATA_TYPE,
                        NULLABLE,
                        DATA_DEFAULT
                    FROM ALL_TAB_COLUMNS
                    WHERE OWNER = :1 AND TABLE_NAME = :2
                    ORDER BY COLUMN_ID
                """
                await cursor.execute(columns_query, [schema.upper(), table.upper()])
                columns = await cursor.fetchall()

                # Get primary key information
                pk_query = """
                    SELECT cols.COLUMN_NAME
                    FROM ALL_CONSTRAINTS cons
                    JOIN ALL_CONS_COLUMNS cols
                        ON cons.CONSTRAINT_NAME = cols.CONSTRAINT_NAME
                        AND cons.OWNER = cols.OWNER
                    WHERE cons.CONSTRAINT_TYPE = 'P'
                        AND cons.OWNER = :1
                        AND cons.TABLE_NAME = :2
                    ORDER BY cols.POSITION
                """
                await cursor.execute(pk_query, [schema.upper(), table.upper()])
                primary_keys = [row[0] for row in await cursor.fetchall()]

                # Build column metadata
                column_info = {}
                for col in columns:
                    oracle_type = col[1].lower()
                    python_type = ORACLE_TYPE_MAP.get(oracle_type, Any)

                    column_info[col[0]] = {
                        "python_type": python_type,
                        "nullable": col[2] == "Y",
                        "default": col[3],
                        "oracle_type": oracle_type,
                    }

                return {
                    "columns": column_info,
                    "primary_keys": primary_keys,
                }
Get table structure information.

        Args:
            schema: Schema name
            table: Table name

        Returns:
            Dictionary containing column information and primary keys
        
backend/airweave/platform/sources/oracle.py