|
19 | 19 |
|
20 | 20 | #include "nodes/primnodes.h" |
21 | 21 |
|
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/catalog_type.h" |
| 24 | +#include "pg_lake/util/table_type.h" |
29 | 25 |
|
30 | 26 |
|
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 | | - |
66 | 27 | #define PG_LAKE_SERVER_NAME "pg_lake" |
67 | 28 | #define PG_LAKE_ICEBERG_SERVER_NAME "pg_lake_iceberg" |
68 | 29 |
|
69 | 30 | extern PGDLLEXPORT bool IsAnyLakeForeignTableById(Oid foreignTableId); |
70 | 31 | extern PGDLLEXPORT char *GetQualifiedRelationName(Oid relationId); |
71 | | -extern PGDLLEXPORT const char *PgLakeTableTypeToName(PgLakeTableType tableType); |
72 | | -extern PGDLLEXPORT PgLakeTableType GetPgLakeTableType(Oid foreignTableId); |
73 | 32 | extern PGDLLEXPORT char *GetPgLakeForeignServerName(Oid foreignTableId); |
74 | 33 | extern PGDLLEXPORT PgLakeTableType GetPgLakeTableTypeViaServerName(char *serverName); |
75 | 34 | extern PGDLLEXPORT bool IsPgLakeForeignTableById(Oid foreignTableId); |
76 | 35 | extern PGDLLEXPORT bool IsPgLakeIcebergForeignTableById(Oid foreignTableId); |
77 | 36 | extern PGDLLEXPORT bool IsPgLakeServerName(const char *serverName); |
78 | | -extern PGDLLEXPORT bool IsAnyWritableLakeTable(Oid foreignTableId); |
79 | 37 | extern PGDLLEXPORT bool IsPgLakeIcebergServerName(const char *serverName); |
80 | 38 | extern PGDLLEXPORT char *GetWritableTableLocation(Oid relationId, char **queryArguments); |
81 | 39 | extern PGDLLEXPORT void EnsureTableOwner(Oid relationId); |
82 | | -extern PGDLLEXPORT struct PgLakeTableProperties GetPgLakeTableProperties(Oid relationId); |
83 | | -extern PGDLLEXPORT bool IsInternalOrExternalIcebergTable(struct PgLakeTableProperties properties); |
| 40 | +extern PGDLLEXPORT bool IsAnyLakeForeignTable(RangeTblEntry *rte); |
| 41 | +extern PGDLLEXPORT CopyDataFormat GetForeignTableFormat(Oid foreignTableId); |
| 42 | +extern PGDLLEXPORT char *GetForeignTablePath(Oid foreignTableId); |
| 43 | +extern PGDLLEXPORT void ErrorIfTypeUnsupportedForIcebergTables(Oid typeOid, int32 typmod, char *columnName); |
| 44 | +extern PGDLLEXPORT void ErrorIfTypeUnsupportedNumericForIcebergTables(int32 typmod, char *columnName); |
| 45 | +extern PGDLLEXPORT PgLakeTableProperties GetPgLakeTableProperties(Oid relationId); |
84 | 46 |
|
85 | 47 | /* range var help */ |
86 | 48 | extern PGDLLEXPORT List *MakeNameListFromRangeVar(const RangeVar *rel); |
0 commit comments