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

Fix TAM handling in update script #7617

Merged
merged 2 commits into from
Jan 24, 2025
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
4 changes: 3 additions & 1 deletion cmake/ScriptFiles.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,20 @@ 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/tam.functions.sql
pre_install/tam.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/tam.functions.sql
)

# The rest of the source files defining mostly functions
set(SOURCE_FILES
hypertable.sql
chunk.sql
hypercore.sql
ddl_internal.sql
util_time.sql
util_internal_table_ddl.sql
Expand Down
2 changes: 2 additions & 0 deletions scripts/check_updates_ast.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,8 @@ def visit_CreateFunctionStmt(
lang
and lang[0].arg.sval == "c"
and code[-1].sval != "ts_update_placeholder"
and node.returnType.names[0].sval
not in ["table_am_handler", "index_am_handler"]
):
self.errors += 1
functype = "procedure" if node.is_procedure else "function"
Expand Down
10 changes: 10 additions & 0 deletions sql/pre_install/tam.functions.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-- This file and its contents are licensed under the Apache License 2.0.
-- Please see the included NOTICE for copyright information and
-- LICENSE-APACHE for a copy of the license.

CREATE OR REPLACE FUNCTION @[email protected]_hypercore_handler(internal) RETURNS table_am_handler
AS '@MODULE_PATHNAME@', 'ts_hypercore_handler' LANGUAGE C;

CREATE OR REPLACE FUNCTION @[email protected]_hypercore_proxy_handler(internal) RETURNS index_am_handler
AS '@MODULE_PATHNAME@', 'ts_hypercore_proxy_handler' LANGUAGE C;

10 changes: 2 additions & 8 deletions sql/hypercore.sql → sql/pre_install/tam.sql
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,10 @@
-- Please see the included NOTICE for copyright information and
-- LICENSE-APACHE for a copy of the license.

CREATE FUNCTION ts_hypercore_handler(internal) RETURNS table_am_handler
AS '@MODULE_PATHNAME@', 'ts_hypercore_handler' LANGUAGE C;

CREATE ACCESS METHOD hypercore TYPE TABLE HANDLER ts_hypercore_handler;
CREATE ACCESS METHOD hypercore TYPE TABLE HANDLER @[email protected]_hypercore_handler;
COMMENT ON ACCESS METHOD hypercore IS 'Storage engine using hybrid row/columnar compression';

CREATE FUNCTION ts_hypercore_proxy_handler(internal) RETURNS index_am_handler
AS '@MODULE_PATHNAME@', 'ts_hypercore_proxy_handler' LANGUAGE C;

CREATE ACCESS METHOD hypercore_proxy TYPE INDEX HANDLER ts_hypercore_proxy_handler;
CREATE ACCESS METHOD hypercore_proxy TYPE INDEX HANDLER @[email protected]_hypercore_proxy_handler;
COMMENT ON ACCESS METHOD hypercore_proxy IS 'Hypercore proxy index access method';

-- An index AM needs at least one operator class for the column type
Expand Down
17 changes: 17 additions & 0 deletions sql/updates/latest-dev.sql
Original file line number Diff line number Diff line change
Expand Up @@ -153,3 +153,20 @@ CREATE PROCEDURE @[email protected]_chunks(
CREATE PROCEDURE @[email protected]_chunks(
chunks REGCLASS[]
) LANGUAGE C AS '@MODULE_PATHNAME@', 'ts_update_placeholder';

CREATE FUNCTION @[email protected]_hypercore_handler(internal) RETURNS table_am_handler
AS '@MODULE_PATHNAME@', 'ts_hypercore_handler' LANGUAGE C;

CREATE FUNCTION @[email protected]_hypercore_proxy_handler(internal) RETURNS index_am_handler
AS '@MODULE_PATHNAME@', 'ts_hypercore_proxy_handler' LANGUAGE C;

CREATE ACCESS METHOD hypercore TYPE TABLE HANDLER @[email protected]_hypercore_handler;
COMMENT ON ACCESS METHOD hypercore IS 'Storage engine using hybrid row/columnar compression';

CREATE ACCESS METHOD hypercore_proxy TYPE INDEX HANDLER @[email protected]_hypercore_proxy_handler;
COMMENT ON ACCESS METHOD hypercore_proxy IS 'Hypercore proxy index access method';

CREATE OPERATOR CLASS int4_ops
DEFAULT FOR TYPE int4 USING hypercore_proxy AS
OPERATOR 1 = (int4, int4),
FUNCTION 1 hashint4(int4);
4 changes: 2 additions & 2 deletions sql/updates/reverse-dev.sql
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
-- Hypercore AM
DROP ACCESS METHOD IF EXISTS hypercore_proxy;
DROP FUNCTION IF EXISTS ts_hypercore_proxy_handler;
DROP FUNCTION IF EXISTS @extschema@.ts_hypercore_proxy_handler;
DROP ACCESS METHOD IF EXISTS hypercore;
DROP FUNCTION IF EXISTS ts_hypercore_handler;
DROP FUNCTION IF EXISTS @extschema@.ts_hypercore_handler;
DROP FUNCTION IF EXISTS _timescaledb_debug.is_compressed_tid;

DROP FUNCTION IF EXISTS @[email protected]_chunk(uncompressed_chunk REGCLASS, if_not_compressed BOOLEAN, recompress BOOLEAN, hypercore_use_access_method BOOL);
Expand Down
4 changes: 2 additions & 2 deletions tsl/test/shared/expected/extension.out
Original file line number Diff line number Diff line change
Expand Up @@ -208,8 +208,6 @@ ORDER BY pronamespace::regnamespace::text COLLATE "C", p.oid::regprocedure::text
debug_waitpoint_enable(text)
debug_waitpoint_id(text)
debug_waitpoint_release(text)
ts_hypercore_handler(internal)
ts_hypercore_proxy_handler(internal)
ts_now_mock()
add_columnstore_policy(regclass,"any",boolean,interval,timestamp with time zone,text,interval,boolean)
add_compression_policy(regclass,"any",boolean,interval,timestamp with time zone,text,interval,boolean)
Expand Down Expand Up @@ -300,6 +298,8 @@ ORDER BY pronamespace::regnamespace::text COLLATE "C", p.oid::regprocedure::text
time_bucket_gapfill(smallint,smallint,smallint,smallint)
timescaledb_post_restore()
timescaledb_pre_restore()
ts_hypercore_handler(internal)
ts_hypercore_proxy_handler(internal)
timescaledb_experimental.add_policies(regclass,boolean,"any","any","any","any",boolean)
timescaledb_experimental.alter_policies(regclass,boolean,"any","any","any","any")
timescaledb_experimental.remove_all_policies(regclass,boolean)
Expand Down
Loading