()
| 506 | CROSS JOIN active_catalog ac |
| 507 | WHERE r.database_name = ac.catalog |
| 508 | `, |
| 509 | internalNames, access.relationPredicate("schema_name", "table_name"), |
| 510 | internalNames, access.relationPredicate("schema_name", "view_name"), |
| 511 | internalNames, access.relationPredicate("schema_name", "sequence_name"), |
| 512 | internalNames, access.relationPredicate("schema_name", "table_name"), |
| 513 | ) |
| 514 | } |
| 515 | |
| 516 | func buildSessionPgNamespaceViewSQL(access *MetadataAccessPolicy) string { |
| 517 | sql := ` |
| 518 | CREATE OR REPLACE VIEW main.pg_namespace AS |
| 519 | WITH active_catalog AS ( |
| 520 | SELECT current_database() AS catalog |
| 521 | ), |
| 522 | user_namespaces AS ( |
| 523 | SELECT schema_oid AS oid, schema_name, database_name FROM duckdb_tables() |
| 524 | UNION |
| 525 | SELECT schema_oid AS oid, schema_name, database_name FROM duckdb_views() |
| 526 | UNION |
| 527 | SELECT schema_oid AS oid, schema_name, database_name FROM duckdb_sequences() |
| 528 | UNION |
| 529 | SELECT schema_oid AS oid, schema_name, database_name FROM duckdb_indexes() |
| 530 | ) |
| 531 | SELECT DISTINCT |
| 532 | oid, |
| 533 | CASE WHEN schema_name = 'main' THEN 'public' ELSE schema_name END AS nspname, |
| 534 | CASE WHEN schema_name = 'main' THEN 6171::BIGINT ELSE 10::BIGINT END AS nspowner, |
| 535 | NULL AS nspacl |
| 536 | FROM user_namespaces n |
| 537 | CROSS JOIN active_catalog ac |
| 538 | WHERE n.database_name = ac.catalog |
| 539 | AND n.schema_name NOT LIKE '__ducklake_metadata_%' |
| 540 | AND {{ACCESS}} |
| 541 | UNION ALL |
| 542 | SELECT 11::BIGINT AS oid, 'pg_catalog' AS nspname, 10::BIGINT AS nspowner, NULL AS nspacl |
| 543 | UNION ALL |
| 544 | SELECT 12::BIGINT AS oid, 'information_schema' AS nspname, 10::BIGINT AS nspowner, NULL AS nspacl |
| 545 | UNION ALL |
| 546 | SELECT 99::BIGINT AS oid, 'pg_toast' AS nspname, 10::BIGINT AS nspowner, NULL AS nspacl |
| 547 | ` |
| 548 | return strings.Replace(sql, "{{ACCESS}}", access.schemaPredicate("n.schema_name"), 1) |
| 549 | } |
| 550 | |
| 551 | func pgTypeOIDCaseSQL(dataTypeExpr, fallbackExpr string) string { |
no test coverage detected