From b208f5276f16272c8840a0a37b3e741ede453ca8 Mon Sep 17 00:00:00 2001 From: Mats Kindahl Date: Tue, 7 Dec 2021 13:45:27 +0100 Subject: [PATCH] Remove C language recompress_chunk Since we are re-implementing `recompress_chunk` as a PL/SQL function, there is no need to keep the C language version around any more, so we remove it from the code. --- src/cross_module_fn.c | 2 - src/cross_module_fn.h | 1 - tsl/src/compression/compress_utils.c | 101 --------------------------- tsl/src/init.c | 1 - 4 files changed, 105 deletions(-) diff --git a/src/cross_module_fn.c b/src/cross_module_fn.c index 00a8f1421..631a07768 100644 --- a/src/cross_module_fn.c +++ b/src/cross_module_fn.c @@ -67,7 +67,6 @@ CROSSMODULE_WRAPPER(array_compressor_append); CROSSMODULE_WRAPPER(array_compressor_finish); CROSSMODULE_WRAPPER(compress_chunk); CROSSMODULE_WRAPPER(decompress_chunk); -CROSSMODULE_WRAPPER(recompress_chunk); /* continous aggregate */ CROSSMODULE_WRAPPER(continuous_agg_invalidation_trigger); @@ -390,7 +389,6 @@ TSDLLEXPORT CrossModuleFunctions ts_cm_functions_default = { .process_compress_table = process_compress_table_default, .compress_chunk = error_no_default_fn_pg_community, .decompress_chunk = error_no_default_fn_pg_community, - .recompress_chunk = error_no_default_fn_pg_community, .compressed_data_decompress_forward = error_no_default_fn_pg_community, .compressed_data_decompress_reverse = error_no_default_fn_pg_community, .deltadelta_compressor_append = error_no_default_fn_pg_community, diff --git a/src/cross_module_fn.h b/src/cross_module_fn.h index e7bf4f6c5..a969367de 100644 --- a/src/cross_module_fn.h +++ b/src/cross_module_fn.h @@ -124,7 +124,6 @@ typedef struct CrossModuleFunctions void (*process_rename_cmd)(Oid relid, Cache *hcache, const RenameStmt *stmt); PGFunction compress_chunk; PGFunction decompress_chunk; - PGFunction recompress_chunk; /* The compression functions below are not installed in SQL as part of create extension; * They are installed and tested during testing scripts. They are exposed in cross-module * functions because they may be very useful for debugging customer problems if the sql diff --git a/tsl/src/compression/compress_utils.c b/tsl/src/compression/compress_utils.c index 0f11a0c02..0b4ac2cb6 100644 --- a/tsl/src/compression/compress_utils.c +++ b/tsl/src/compression/compress_utils.c @@ -504,71 +504,6 @@ tsl_decompress_chunk(PG_FUNCTION_ARGS) PG_RETURN_OID(uncompressed_chunk_id); } -/* setup FunctionCallInfo for compress_chunk/decompress_chunk - * alloc memory for decompfn_fcinfo and init it. - */ -static void -get_compression_fcinfo(char *fname, FmgrInfo *decompfn, FunctionCallInfo *decompfn_fcinfo, - FunctionCallInfo orig_fcinfo) -{ - /* compress_chunk, decompress_chunk have the same args */ - Oid argtyp[] = { REGCLASSOID, BOOLOID }; - fmNodePtr cxt = - orig_fcinfo->context; /* pass in the context from the current FunctionCallInfo */ - - Oid decomp_func_oid = - LookupFuncName(list_make1(makeString(fname)), lengthof(argtyp), argtyp, false); - - fmgr_info(decomp_func_oid, decompfn); - *decompfn_fcinfo = HEAP_FCINFO(2); - InitFunctionCallInfoData(**decompfn_fcinfo, - decompfn, - 2, - InvalidOid, /* collation */ - cxt, - NULL); - FC_ARG(*decompfn_fcinfo, 0) = FC_ARG(orig_fcinfo, 0); - FC_NULL(*decompfn_fcinfo, 0) = FC_NULL(orig_fcinfo, 0); - FC_ARG(*decompfn_fcinfo, 1) = FC_ARG(orig_fcinfo, 1); - FC_NULL(*decompfn_fcinfo, 1) = FC_NULL(orig_fcinfo, 1); -} - -static Datum -tsl_recompress_remote_chunk(Chunk *uncompressed_chunk, FunctionCallInfo fcinfo, bool if_compressed) -{ - FmgrInfo decompfn; - FmgrInfo compfn; - FunctionCallInfo decompfn_fcinfo; - FunctionCallInfo compfn_fcinfo; - get_compression_fcinfo(DECOMPRESS_CHUNK_FUNCNAME, &decompfn, &decompfn_fcinfo, fcinfo); - - FunctionCallInvoke(decompfn_fcinfo); - if (decompfn_fcinfo->isnull) - { - ereport((if_compressed ? NOTICE : ERROR), - (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("decompression failed for chunk \"%s\"", - get_rel_name(uncompressed_chunk->table_id)), - errdetail("The compression status for the chunk is %d", - uncompressed_chunk->fd.status))); - - PG_RETURN_NULL(); - } - get_compression_fcinfo(COMPRESS_CHUNK_FUNCNAME, &compfn, &compfn_fcinfo, fcinfo); - Datum compoid = FunctionCallInvoke(compfn_fcinfo); - if (compfn_fcinfo->isnull) - { - ereport((if_compressed ? NOTICE : ERROR), - (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("compression failed for chunk \"%s\"", - get_rel_name(uncompressed_chunk->table_id)), - errdetail("The compression status for the chunk is %d", - uncompressed_chunk->fd.status))); - PG_RETURN_NULL(); - } - return compoid; -} - bool tsl_recompress_chunk_wrapper(Chunk *uncompressed_chunk) { @@ -585,39 +520,3 @@ tsl_recompress_chunk_wrapper(Chunk *uncompressed_chunk) tsl_compress_chunk_wrapper(chunk, false); return true; } - -Datum -tsl_recompress_chunk(PG_FUNCTION_ARGS) -{ - Oid uncompressed_chunk_id = PG_ARGISNULL(0) ? InvalidOid : PG_GETARG_OID(0); - bool if_compressed = PG_ARGISNULL(1) ? false : PG_GETARG_BOOL(1); - TS_PREVENT_FUNC_IF_READ_ONLY(); - - Chunk *uncompressed_chunk = - ts_chunk_get_by_relid(uncompressed_chunk_id, true /* fail_if_not_found */); - if (!ts_chunk_is_unordered(uncompressed_chunk)) - { - if (!ts_chunk_is_compressed(uncompressed_chunk)) - { - ereport((if_compressed ? NOTICE : ERROR), - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("call compress_chunk instead of recompress_chunk"))); - PG_RETURN_NULL(); - } - else - { - ereport((if_compressed ? NOTICE : ERROR), - (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), - errmsg("nothing to recompress in chunk \"%s\" ", - get_rel_name(uncompressed_chunk->table_id)))); - PG_RETURN_NULL(); - } - } - if (uncompressed_chunk->relkind == RELKIND_FOREIGN_TABLE) - return tsl_recompress_remote_chunk(uncompressed_chunk, fcinfo, if_compressed); - else - { - tsl_recompress_chunk_wrapper(uncompressed_chunk); - PG_RETURN_OID(uncompressed_chunk_id); - } -} diff --git a/tsl/src/init.c b/tsl/src/init.c index 4a9e78c4f..db307e2a8 100644 --- a/tsl/src/init.c +++ b/tsl/src/init.c @@ -162,7 +162,6 @@ CrossModuleFunctions tsl_cm_functions = { .process_rename_cmd = tsl_process_rename_cmd, .compress_chunk = tsl_compress_chunk, .decompress_chunk = tsl_decompress_chunk, - .recompress_chunk = tsl_recompress_chunk, .compress_row_init = compress_row_init, .compress_row_exec = compress_row_exec, .compress_row_end = compress_row_end,