Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove the timescaledb_fdw foreign data wrapper #6413

Merged
merged 1 commit into from
Dec 13, 2023
Merged
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
6 changes: 2 additions & 4 deletions cmake/ScriptFiles.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,12 @@ set(PRE_INSTALL_SOURCE_FILES
pre_install/types.post.sql # Must be before tables.sql
pre_install/tables.sql
pre_install/cache.sql
pre_install/insert_data.sql
pre_install/fdw_functions.sql
pre_install/timescaledb_fdw.sql)
pre_install/insert_data.sql)

# Source files that define functions and need to be rerun in update
set(PRE_INSTALL_FUNCTION_FILES
pre_install/types.functions.sql
pre_install/fdw_functions.sql)
)

# The rest of the source files defining mostly functions
set(SOURCE_FILES
Expand Down
14 changes: 0 additions & 14 deletions sql/pre_install/fdw_functions.sql

This file was deleted.

7 changes: 0 additions & 7 deletions sql/pre_install/timescaledb_fdw.sql

This file was deleted.

4 changes: 4 additions & 0 deletions sql/updates/latest-dev.sql
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,7 @@ ALTER EXTENSION timescaledb DROP TABLE _timescaledb_catalog.hypertable_compressi
DROP VIEW IF EXISTS timescaledb_information.compression_settings;
DROP TABLE _timescaledb_catalog.hypertable_compression;

DROP FOREIGN DATA WRAPPER IF EXISTS timescaledb_fdw;
DROP FUNCTION IF EXISTS @[email protected]_fdw_handler();
DROP FUNCTION IF EXISTS @[email protected]_fdw_validator(text[], oid);

6 changes: 6 additions & 0 deletions sql/updates/reverse-dev.sql
Original file line number Diff line number Diff line change
Expand Up @@ -191,3 +191,9 @@ GRANT SELECT ON _timescaledb_catalog.hypertable_compression TO PUBLIC;
DROP VIEW timescaledb_information.compression_settings;
ALTER EXTENSION timescaledb DROP TABLE _timescaledb_catalog.compression_settings;
DROP TABLE _timescaledb_catalog.compression_settings;

CREATE FUNCTION @[email protected]_fdw_handler() RETURNS fdw_handler AS '@MODULE_PATHNAME@', 'ts_timescaledb_fdw_handler' LANGUAGE C STRICT;
CREATE FUNCTION @[email protected]_fdw_validator(text[], oid) RETURNS void AS '@MODULE_PATHNAME@', 'ts_timescaledb_fdw_validator' LANGUAGE C STRICT;

CREATE FOREIGN DATA WRAPPER timescaledb_fdw HANDLER @[email protected]_fdw_handler VALIDATOR @[email protected]_fdw_validator;

111 changes: 0 additions & 111 deletions src/process_utility.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
*/
#include <catalog/pg_class_d.h>
#include <postgres.h>
#include <foreign/foreign.h>
#include <nodes/parsenodes.h>
#include <nodes/nodes.h>
#include <nodes/makefuncs.h>
Expand Down Expand Up @@ -407,55 +406,6 @@ add_chunk_oid(Hypertable *ht, Oid chunk_relid, void *vargs)
}
}

static bool
block_on_foreign_server(const char *const server_name)
{
const ForeignServer *server;

Assert(server_name != NULL);
server = GetForeignServerByName(server_name, true);
if (NULL != server)
{
Oid ts_fdwid = get_foreign_data_wrapper_oid(EXTENSION_FDW_NAME, false);
if (server->fdwid == ts_fdwid)
return true;
}
return false;
}

static DDLResult
process_create_foreign_server_start(ProcessUtilityArgs *args)
{
CreateForeignServerStmt *stmt = (CreateForeignServerStmt *) args->parsetree;

if (strcmp(EXTENSION_FDW_NAME, stmt->fdwname) == 0)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("operation not supported for a TimescaleDB data node"),
errhint("Use add_data_node() to add data nodes to a "
"distributed database.")));

return DDL_CONTINUE;
}

static void
process_drop_foreign_server_start(DropStmt *stmt)
{
ListCell *lc;

foreach (lc, stmt->objects)
{
const char *servername = strVal(lfirst(lc));

if (block_on_foreign_server(servername))
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("operation not supported on a TimescaleDB data node"),
errhint("Use delete_data_node() to remove data nodes from a "
"distributed database.")));
}
}

static void
process_drop_trigger_start(ProcessUtilityArgs *args, DropStmt *stmt)
{
Expand Down Expand Up @@ -492,55 +442,6 @@ process_drop_trigger_start(ProcessUtilityArgs *args, DropStmt *stmt)
ts_cache_release(hcache);
}

static DDLResult
process_create_foreign_table_start(ProcessUtilityArgs *args)
{
CreateForeignTableStmt *stmt = (CreateForeignTableStmt *) args->parsetree;

if (block_on_foreign_server(stmt->servername))
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("operation not supported"),
errdetail(
"It is not possible to create stand-alone TimescaleDB foreign tables.")));

return DDL_CONTINUE;
}

static DDLResult
process_alter_foreign_server(ProcessUtilityArgs *args)
{
AlterForeignServerStmt *stmt = (AlterForeignServerStmt *) args->parsetree;
ForeignServer *server = GetForeignServerByName(stmt->servername, true);
Oid fdwid = get_foreign_data_wrapper_oid(EXTENSION_FDW_NAME, false);
ListCell *lc;

if (server != NULL && server->fdwid == fdwid)
{
if (stmt->has_version)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("version not supported"),
errdetail(
"It is not possible to set a version on the data node configuration.")));

/* Options are validated by the FDW, but we need to block available option
* since that must be handled via alter_data_node(). */
foreach (lc, stmt->options)
{
DefElem *elem = lfirst(lc);

if (strcmp(elem->defname, "available") == 0)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot set \"available\" using ALTER SERVER"),
errhint("Use alter_data_node() to set \"available\".")));
}
}

return DDL_CONTINUE;
}

static void
process_altertableschema(ProcessUtilityArgs *args)
{
Expand Down Expand Up @@ -1795,9 +1696,6 @@ process_drop_start(ProcessUtilityArgs *args)
case OBJECT_VIEW:
process_drop_view_start(args, stmt);
break;
case OBJECT_FOREIGN_SERVER:
process_drop_foreign_server_start(stmt);
break;
case OBJECT_TRIGGER:
process_drop_trigger_start(args, stmt);
break;
Expand Down Expand Up @@ -4217,15 +4115,6 @@ process_ddl_command_start(ProcessUtilityArgs *args)

switch (nodeTag(args->parsetree))
{
case T_CreateForeignTableStmt:
handler = process_create_foreign_table_start;
break;
case T_AlterForeignServerStmt:
handler = process_alter_foreign_server;
break;
case T_CreateForeignServerStmt:
handler = process_create_foreign_server_start;
break;
case T_AlterObjectSchemaStmt:
handler = process_alterobjectschema;
break;
Expand Down
6 changes: 0 additions & 6 deletions src/ts_catalog/continuous_agg.c
Original file line number Diff line number Diff line change
Expand Up @@ -1151,15 +1151,9 @@ drop_continuous_agg(FormData_continuous_agg *cadata, bool drop_user_view)
if (!raw_hypertable_has_other_caggs)
{
hypertable_invalidation_log_delete(form.raw_hypertable_id);
if (ts_cm_functions->remote_invalidation_log_delete)
ts_cm_functions->remote_invalidation_log_delete(form.raw_hypertable_id,
HypertableIsRawTable);
}

ts_materialization_invalidation_log_delete_inner(form.mat_hypertable_id);
if (ts_cm_functions->remote_invalidation_log_delete)
ts_cm_functions->remote_invalidation_log_delete(form.mat_hypertable_id,
HypertableIsMaterialization);

if (!raw_hypertable_has_other_caggs)
{
Expand Down
2 changes: 1 addition & 1 deletion test/runner.sh
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ cd ${EXE_DIR}/sql

# create database and install timescaledb
${PSQL} "$@" -U $TEST_ROLE_SUPERUSER -d postgres -v ECHO=none -c "CREATE DATABASE \"${TEST_DBNAME}\";"
${PSQL} "$@" -U $TEST_ROLE_SUPERUSER -d ${TEST_DBNAME} -v ECHO=none -c "SET client_min_messages=error; CREATE EXTENSION timescaledb; GRANT USAGE ON FOREIGN DATA WRAPPER timescaledb_fdw TO ${TEST_ROLE_1};"
${PSQL} "$@" -U $TEST_ROLE_SUPERUSER -d ${TEST_DBNAME} -v ECHO=none -c "SET client_min_messages=error; CREATE EXTENSION timescaledb;"
${PSQL} "$@" -U $TEST_ROLE_SUPERUSER -d ${TEST_DBNAME} -v ECHO=none -v MODULE_PATHNAME="'timescaledb-${EXT_VERSION}'" -v TSL_MODULE_PATHNAME="'timescaledb-tsl-${EXT_VERSION}'" < ${TEST_SUPPORT_FILE} >/dev/null 2>&1
export TEST_DBNAME

Expand Down
1 change: 0 additions & 1 deletion tsl/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,5 @@ install(TARGETS ${TSL_LIBRARY_NAME} DESTINATION ${PG_PKGLIBDIR})
add_subdirectory(bgw_policy)
add_subdirectory(compression)
add_subdirectory(continuous_aggs)
add_subdirectory(fdw)
add_subdirectory(nodes)
add_subdirectory(remote)
1 change: 0 additions & 1 deletion tsl/src/data_node.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
#include "extension.h"
#include "cache.h"
#include "chunk.h"
#include "fdw/fdw.h"
#include "remote/async.h"
#include "remote/connection.h"
#include "remote/connection_cache.h"
Expand Down
Loading
Loading