1919
2020#include "nodes/primnodes.h"
2121
22- /* distinguish tables with "server pg_lake" vs "server pg_lake_iceberg" */
23- typedef enum PgLakeTableType
24- {
25- PG_LAKE_INVALID_TABLE_TYPE ,
26- PG_LAKE_TABLE_TYPE ,
27- PG_LAKE_ICEBERG_TABLE_TYPE
28- } PgLakeTableType ;
22+ #include "pg_lake/copy/copy_format.h"
23+ #include "pg_lake/util/table_type.h"
2924
3025
31- typedef enum IcebergCatalogType
32- {
33- NOT_ICEBERG_TABLE = 0 ,
34-
35- /* catalog='postgres' */
36- POSTGRES_CATALOG = 1 ,
37-
38- /*
39- * catalog='rest', read_only=True Always treat like external iceberg
40- * table, read the metadata location from the external catalog and never
41- * modify.
42- */
43- REST_CATALOG_READ_ONLY = 2 ,
44-
45- /*
46- * catalog='rest', read_only=False Treat like internal iceberg table, use
47- * all the catalog tables like lake_table.files.
48- */
49- REST_CATALOG_READ_WRITE = 3 ,
50-
51- /*
52- * Similar to REST_CATALOG_READ_ONLY, but using an object store compatible
53- * API instead of a REST catalog server.
54- */
55- OBJECT_STORE_READ_ONLY = 4 ,
56-
57- /*
58- * Similar to REST_CATALOG_READ_WRITE, but using an object store
59- * compatible API instead of a REST catalog server.
60- */
61- OBJECT_STORE_READ_WRITE = 5
62- } IcebergCatalogType ;
63-
64- struct PgLakeTableProperties ;
65-
6626#define PG_LAKE_SERVER_NAME "pg_lake"
6727#define PG_LAKE_ICEBERG_SERVER_NAME "pg_lake_iceberg"
6828
6929extern PGDLLEXPORT bool IsAnyLakeForeignTableById (Oid foreignTableId );
7030extern PGDLLEXPORT char * GetQualifiedRelationName (Oid relationId );
7131extern PGDLLEXPORT const char * PgLakeTableTypeToName (PgLakeTableType tableType );
7232extern PGDLLEXPORT PgLakeTableType GetPgLakeTableType (Oid foreignTableId );
33+ extern PGDLLEXPORT IcebergCatalogType GetIcebergCatalogType (Oid relationId );
7334extern PGDLLEXPORT char * GetPgLakeForeignServerName (Oid foreignTableId );
7435extern PGDLLEXPORT PgLakeTableType GetPgLakeTableTypeViaServerName (char * serverName );
7536extern PGDLLEXPORT bool IsPgLakeForeignTableById (Oid foreignTableId );
@@ -79,8 +40,19 @@ extern PGDLLEXPORT bool IsAnyWritableLakeTable(Oid foreignTableId);
7940extern PGDLLEXPORT bool IsPgLakeIcebergServerName (const char * serverName );
8041extern PGDLLEXPORT char * GetWritableTableLocation (Oid relationId , char * * queryArguments );
8142extern PGDLLEXPORT void EnsureTableOwner (Oid relationId );
82- extern PGDLLEXPORT struct PgLakeTableProperties GetPgLakeTableProperties (Oid relationId );
83- extern PGDLLEXPORT bool IsInternalOrExternalIcebergTable (struct PgLakeTableProperties properties );
43+ extern PGDLLEXPORT PgLakeTableProperties GetPgLakeTableProperties (Oid relationId );
44+ extern PGDLLEXPORT bool IsAnyLakeForeignTable (RangeTblEntry * rte );
45+ extern PGDLLEXPORT CopyDataFormat GetForeignTableFormat (Oid foreignTableId );
46+ extern PGDLLEXPORT char * GetForeignTablePath (Oid foreignTableId );
47+ extern PGDLLEXPORT bool IsAnyIcebergTable (Oid relationId );
48+ extern PGDLLEXPORT bool IsAnyInternalIcebergTable (Oid relationId );
49+ extern PGDLLEXPORT bool IsAnyExternalIcebergTable (Oid relationId );
50+ extern PGDLLEXPORT bool IsWritablePgLakeTable (Oid relationId );
51+ extern PGDLLEXPORT void ErrorIfTypeUnsupportedForIcebergTables (Oid typeOid , int32 typmod , char * columnName );
52+ extern PGDLLEXPORT void ErrorIfTypeUnsupportedNumericForIcebergTables (int32 typmod , char * columnName );
53+ extern PGDLLEXPORT bool HasRestCatalogTableOption (List * options );
54+ extern PGDLLEXPORT bool HasObjectStoreCatalogTableOption (List * options );
55+ extern PGDLLEXPORT bool HasReadOnlyOption (List * options );
8456
8557/* range var help */
8658extern PGDLLEXPORT List * MakeNameListFromRangeVar (const RangeVar * rel );
0 commit comments