Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions include/pgduckdb/pgduckdb_external_tables.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#pragma once

#include <string>

#include "pgduckdb/pg/declarations.hpp"

namespace pgduckdb {

void ValidateExternalIdentifier(const char *identifier, const char *context);

std::string BuildExternalTableFunctionCall(const char *reader, const char *location, void *options);

bool EnsureExternalTableLoaded(Oid relid);

void ForgetLoadedExternalTable(Oid relid);

void ResetLoadedExternalTableCache();

bool pgduckdb_is_external_relation(Oid relation_oid);

void RegisterExternalTableDependency(Oid relid);

void EnsureExternalTablesCatalogExists();

void UpsertExternalTableMetadata(Oid relid, const char *reader, const char *location, Datum options);

void DeleteExternalTableMetadata(Oid relid);

} // namespace pgduckdb
5 changes: 3 additions & 2 deletions include/pgduckdb/pgduckdb_ruleutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ char *pgduckdb_get_tabledef(Oid relation_id);
char *pgduckdb_get_alter_tabledef(Oid relation_oid, AlterTableStmt *alter_stmt);
char *pgduckdb_get_rename_relationdef(Oid relation_oid, RenameStmt *rename_stmt);
bool pgduckdb_is_not_default_expr(Node *node, void *context);
List *pgduckdb_db_and_schema(const char *postgres_schema_name, const char *duckdb_table_am_name);
const char *pgduckdb_db_and_schema_string(const char *postgres_schema_name, const char *duckdb_table_am_name);
List *pgduckdb_db_and_schema(const char *postgres_schema_name, const char *duckdb_table_am_name, bool is_ddb_external);
const char *pgduckdb_db_and_schema_string(const char *postgres_schema_name, const char *duckdb_table_am_name,
bool is_ddb_external);
bool pgduckdb_is_duckdb_row(Oid type_oid);
bool pgduckdb_is_unresolved_type(Oid type_oid);
bool pgduckdb_is_fake_type(Oid type_oid);
Expand Down
8 changes: 8 additions & 0 deletions sql/pg_duckdb--1.0.0--1.1.0.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
CREATE TABLE IF NOT EXISTS duckdb.external_tables (
relid regclass PRIMARY KEY,
reader TEXT NOT NULL,
location TEXT NOT NULL,
options JSONB
);

REVOKE ALL ON duckdb.external_tables FROM PUBLIC;
Loading