mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-15 01:53:41 +08:00
During chunk creation, the chunk's dimensional CHECK constraints are created via an "upcall" to PL/pgSQL code. However, creating dimensional constraints in PL/pgSQL code sometimes fails, especially during high-concurrency inserts, because PL/pgSQL code scans metadata using a snapshot that might not see the same metadata as the C code. As a result, chunk creation sometimes fail during constraint creation. To fix this issue, implement dimensional CHECK-constraint creation in C code. Other constraints (FK, PK, etc.) are still created via an upcall, but should probably also be rewritten in C. However, since these constraints don't depend on recently updated metadata, this is left to a future change. Fixes #5456
257 lines
15 KiB
Plaintext
257 lines
15 KiB
Plaintext
-- This file and its contents are licensed under the Timescale License.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-TIMESCALE for a copy of the license.
|
|
\pset tuples_only on
|
|
-- list all extension functions
|
|
-- any change in the output of this query requires adjustments
|
|
-- in the update and downgrade scripts
|
|
-- get_telemetry_report is excluded as it will not be present
|
|
-- when built with telemetry disabled
|
|
SELECT p.oid::regprocedure::text
|
|
FROM pg_proc p
|
|
JOIN pg_depend d ON
|
|
d.objid = p.oid AND
|
|
d.deptype = 'e' AND
|
|
d.refclassid = 'pg_extension'::regclass AND
|
|
d.classid = 'pg_proc'::regclass
|
|
JOIN pg_extension e ON
|
|
e.extname = 'timescaledb' AND
|
|
e.oid = d.refobjid
|
|
WHERE proname <> 'get_telemetry_report'
|
|
ORDER BY pronamespace::regnamespace::text COLLATE "C", p.oid::regprocedure::text COLLATE "C";
|
|
_timescaledb_internal.alter_job_set_hypertable_id(integer,regclass)
|
|
_timescaledb_internal.attach_osm_table_chunk(regclass,regclass)
|
|
_timescaledb_internal.bookend_deserializefunc(bytea,internal)
|
|
_timescaledb_internal.bookend_finalfunc(internal,anyelement,"any")
|
|
_timescaledb_internal.bookend_serializefunc(internal)
|
|
_timescaledb_internal.cagg_migrate_create_plan(_timescaledb_catalog.continuous_agg,text,boolean,boolean)
|
|
_timescaledb_internal.cagg_migrate_execute_copy_data(_timescaledb_catalog.continuous_agg,_timescaledb_catalog.continuous_agg_migrate_plan_step)
|
|
_timescaledb_internal.cagg_migrate_execute_copy_policies(_timescaledb_catalog.continuous_agg,_timescaledb_catalog.continuous_agg_migrate_plan_step)
|
|
_timescaledb_internal.cagg_migrate_execute_create_new_cagg(_timescaledb_catalog.continuous_agg,_timescaledb_catalog.continuous_agg_migrate_plan_step)
|
|
_timescaledb_internal.cagg_migrate_execute_disable_policies(_timescaledb_catalog.continuous_agg,_timescaledb_catalog.continuous_agg_migrate_plan_step)
|
|
_timescaledb_internal.cagg_migrate_execute_drop_old_cagg(_timescaledb_catalog.continuous_agg,_timescaledb_catalog.continuous_agg_migrate_plan_step)
|
|
_timescaledb_internal.cagg_migrate_execute_enable_policies(_timescaledb_catalog.continuous_agg,_timescaledb_catalog.continuous_agg_migrate_plan_step)
|
|
_timescaledb_internal.cagg_migrate_execute_override_cagg(_timescaledb_catalog.continuous_agg,_timescaledb_catalog.continuous_agg_migrate_plan_step)
|
|
_timescaledb_internal.cagg_migrate_execute_plan(_timescaledb_catalog.continuous_agg)
|
|
_timescaledb_internal.cagg_migrate_execute_refresh_new_cagg(_timescaledb_catalog.continuous_agg,_timescaledb_catalog.continuous_agg_migrate_plan_step)
|
|
_timescaledb_internal.cagg_migrate_plan_exists(integer)
|
|
_timescaledb_internal.cagg_migrate_pre_validation(text,text,text)
|
|
_timescaledb_internal.cagg_watermark(integer)
|
|
_timescaledb_internal.cagg_watermark_materialized(integer)
|
|
_timescaledb_internal.calculate_chunk_interval(integer,bigint,bigint)
|
|
_timescaledb_internal.chunk_constraint_add_table_constraint(_timescaledb_catalog.chunk_constraint)
|
|
_timescaledb_internal.chunk_drop_replica(regclass,name)
|
|
_timescaledb_internal.chunk_id_from_relid(oid)
|
|
_timescaledb_internal.chunk_index_clone(oid)
|
|
_timescaledb_internal.chunk_index_replace(oid,oid)
|
|
_timescaledb_internal.chunk_status(regclass)
|
|
_timescaledb_internal.chunks_in(record,integer[])
|
|
_timescaledb_internal.chunks_local_size(name,name)
|
|
_timescaledb_internal.chunks_remote_size(name,name)
|
|
_timescaledb_internal.compressed_chunk_local_stats(name,name)
|
|
_timescaledb_internal.compressed_chunk_remote_stats(name,name)
|
|
_timescaledb_internal.compressed_data_in(cstring)
|
|
_timescaledb_internal.compressed_data_out(_timescaledb_internal.compressed_data)
|
|
_timescaledb_internal.compressed_data_recv(internal)
|
|
_timescaledb_internal.compressed_data_send(_timescaledb_internal.compressed_data)
|
|
_timescaledb_internal.continuous_agg_invalidation_trigger()
|
|
_timescaledb_internal.create_chunk(regclass,jsonb,name,name,regclass)
|
|
_timescaledb_internal.create_chunk_replica_table(regclass,name)
|
|
_timescaledb_internal.create_chunk_table(regclass,jsonb,name,name)
|
|
_timescaledb_internal.create_compressed_chunk(regclass,regclass,bigint,bigint,bigint,bigint,bigint,bigint,bigint,bigint)
|
|
_timescaledb_internal.data_node_chunk_info(name,name,name)
|
|
_timescaledb_internal.data_node_compressed_chunk_stats(name,name,name)
|
|
_timescaledb_internal.data_node_hypertable_info(name,name,name)
|
|
_timescaledb_internal.data_node_index_size(name,name,name)
|
|
_timescaledb_internal.drop_chunk(regclass)
|
|
_timescaledb_internal.drop_dist_ht_invalidation_trigger(integer)
|
|
_timescaledb_internal.drop_stale_chunks(name,integer[])
|
|
_timescaledb_internal.finalize_agg(text,name,name,name[],bytea,anyelement)
|
|
_timescaledb_internal.finalize_agg_ffunc(internal,text,name,name,name[],bytea,anyelement)
|
|
_timescaledb_internal.finalize_agg_sfunc(internal,text,name,name,name[],bytea,anyelement)
|
|
_timescaledb_internal.first_combinefunc(internal,internal)
|
|
_timescaledb_internal.first_sfunc(internal,anyelement,"any")
|
|
_timescaledb_internal.freeze_chunk(regclass)
|
|
_timescaledb_internal.generate_uuid()
|
|
_timescaledb_internal.get_approx_row_count(regclass)
|
|
_timescaledb_internal.get_chunk_colstats(regclass)
|
|
_timescaledb_internal.get_chunk_relstats(regclass)
|
|
_timescaledb_internal.get_compressed_chunk_index_for_recompression(regclass)
|
|
_timescaledb_internal.get_create_command(name)
|
|
_timescaledb_internal.get_git_commit()
|
|
_timescaledb_internal.get_os_info()
|
|
_timescaledb_internal.get_partition_for_key(anyelement)
|
|
_timescaledb_internal.get_partition_hash(anyelement)
|
|
_timescaledb_internal.get_time_type(integer)
|
|
_timescaledb_internal.health()
|
|
_timescaledb_internal.hist_combinefunc(internal,internal)
|
|
_timescaledb_internal.hist_deserializefunc(bytea,internal)
|
|
_timescaledb_internal.hist_finalfunc(internal,double precision,double precision,double precision,integer)
|
|
_timescaledb_internal.hist_serializefunc(internal)
|
|
_timescaledb_internal.hist_sfunc(internal,double precision,double precision,double precision,integer)
|
|
_timescaledb_internal.hypertable_constraint_add_table_fk_constraint(name,name,name,integer)
|
|
_timescaledb_internal.hypertable_from_main_table(regclass)
|
|
_timescaledb_internal.hypertable_invalidation_log_delete(integer)
|
|
_timescaledb_internal.hypertable_local_size(name,name)
|
|
_timescaledb_internal.hypertable_remote_size(name,name)
|
|
_timescaledb_internal.indexes_local_size(name,name)
|
|
_timescaledb_internal.indexes_remote_size(name,name,name)
|
|
_timescaledb_internal.insert_blocker()
|
|
_timescaledb_internal.interval_to_usec(interval)
|
|
_timescaledb_internal.invalidation_cagg_log_add_entry(integer,bigint,bigint)
|
|
_timescaledb_internal.invalidation_hyper_log_add_entry(integer,bigint,bigint)
|
|
_timescaledb_internal.invalidation_process_cagg_log(integer,integer,regtype,bigint,bigint,integer[],bigint[],bigint[])
|
|
_timescaledb_internal.invalidation_process_cagg_log(integer,integer,regtype,bigint,bigint,integer[],bigint[],bigint[],text[])
|
|
_timescaledb_internal.invalidation_process_hypertable_log(integer,integer,regtype,integer[],bigint[],bigint[])
|
|
_timescaledb_internal.invalidation_process_hypertable_log(integer,integer,regtype,integer[],bigint[],bigint[],text[])
|
|
_timescaledb_internal.is_main_table(name,name)
|
|
_timescaledb_internal.is_main_table(regclass)
|
|
_timescaledb_internal.last_combinefunc(internal,internal)
|
|
_timescaledb_internal.last_sfunc(internal,anyelement,"any")
|
|
_timescaledb_internal.main_table_from_hypertable(integer)
|
|
_timescaledb_internal.materialization_invalidation_log_delete(integer)
|
|
_timescaledb_internal.partialize_agg(anyelement)
|
|
_timescaledb_internal.ping_data_node(name,interval)
|
|
_timescaledb_internal.policy_compression(integer,jsonb)
|
|
_timescaledb_internal.policy_compression_check(jsonb)
|
|
_timescaledb_internal.policy_compression_execute(integer,integer,anyelement,integer,boolean,boolean)
|
|
_timescaledb_internal.policy_job_error_retention(integer,jsonb)
|
|
_timescaledb_internal.policy_job_error_retention_check(jsonb)
|
|
_timescaledb_internal.policy_recompression(integer,jsonb)
|
|
_timescaledb_internal.policy_refresh_continuous_aggregate(integer,jsonb)
|
|
_timescaledb_internal.policy_refresh_continuous_aggregate_check(jsonb)
|
|
_timescaledb_internal.policy_reorder(integer,jsonb)
|
|
_timescaledb_internal.policy_reorder_check(jsonb)
|
|
_timescaledb_internal.policy_retention(integer,jsonb)
|
|
_timescaledb_internal.policy_retention_check(jsonb)
|
|
_timescaledb_internal.process_ddl_event()
|
|
_timescaledb_internal.range_value_to_pretty(bigint,regtype)
|
|
_timescaledb_internal.recompress_chunk_segmentwise(regclass,boolean)
|
|
_timescaledb_internal.relation_size(regclass)
|
|
_timescaledb_internal.remote_txn_heal_data_node(oid)
|
|
_timescaledb_internal.restart_background_workers()
|
|
_timescaledb_internal.rxid_in(cstring)
|
|
_timescaledb_internal.rxid_out(rxid)
|
|
_timescaledb_internal.set_chunk_default_data_node(regclass,name)
|
|
_timescaledb_internal.set_dist_id(uuid)
|
|
_timescaledb_internal.set_peer_dist_id(uuid)
|
|
_timescaledb_internal.show_chunk(regclass)
|
|
_timescaledb_internal.show_connection_cache()
|
|
_timescaledb_internal.start_background_workers()
|
|
_timescaledb_internal.stop_background_workers()
|
|
_timescaledb_internal.subtract_integer_from_now(regclass,bigint)
|
|
_timescaledb_internal.time_literal_sql(bigint,regtype)
|
|
_timescaledb_internal.time_to_internal(anyelement)
|
|
_timescaledb_internal.to_date(bigint)
|
|
_timescaledb_internal.to_interval(bigint)
|
|
_timescaledb_internal.to_timestamp(bigint)
|
|
_timescaledb_internal.to_timestamp_without_timezone(bigint)
|
|
_timescaledb_internal.to_unix_microseconds(timestamp with time zone)
|
|
_timescaledb_internal.tsl_loaded()
|
|
_timescaledb_internal.unfreeze_chunk(regclass)
|
|
_timescaledb_internal.validate_as_data_node()
|
|
_timescaledb_internal.wait_subscription_sync(name,name,integer,numeric)
|
|
add_compression_policy(regclass,"any",boolean,interval,timestamp with time zone,text)
|
|
add_continuous_aggregate_policy(regclass,"any","any",interval,boolean,timestamp with time zone,text)
|
|
add_data_node(name,text,name,integer,boolean,boolean,text)
|
|
add_dimension(regclass,name,integer,anyelement,regproc,boolean)
|
|
add_job(regproc,interval,jsonb,timestamp with time zone,boolean,regproc,boolean,text)
|
|
add_reorder_policy(regclass,name,boolean,timestamp with time zone,text)
|
|
add_retention_policy(regclass,"any",boolean,interval,timestamp with time zone,text)
|
|
alter_data_node(name,text,name,integer,boolean)
|
|
alter_job(integer,interval,interval,integer,interval,boolean,jsonb,timestamp with time zone,boolean,regproc)
|
|
approximate_row_count(regclass)
|
|
attach_data_node(name,regclass,boolean,boolean)
|
|
attach_tablespace(name,regclass,boolean)
|
|
cagg_migrate(regclass,boolean,boolean)
|
|
chunk_compression_stats(regclass)
|
|
chunks_detailed_size(regclass)
|
|
compress_chunk(regclass,boolean)
|
|
create_distributed_hypertable(regclass,name,name,integer,name,name,anyelement,boolean,boolean,regproc,boolean,text,regproc,regproc,integer,name[])
|
|
create_distributed_restore_point(text)
|
|
create_hypertable(regclass,name,name,integer,name,name,anyelement,boolean,boolean,regproc,boolean,text,regproc,regproc,integer,name[],boolean)
|
|
decompress_chunk(regclass,boolean)
|
|
delete_data_node(name,boolean,boolean,boolean,boolean)
|
|
delete_job(integer)
|
|
detach_data_node(name,regclass,boolean,boolean,boolean,boolean)
|
|
detach_tablespace(name,regclass,boolean)
|
|
detach_tablespaces(regclass)
|
|
distributed_exec(text,name[],boolean)
|
|
drop_chunks(regclass,"any","any",boolean)
|
|
first(anyelement,"any")
|
|
histogram(double precision,double precision,double precision,integer)
|
|
hypertable_compression_stats(regclass)
|
|
hypertable_detailed_size(regclass)
|
|
hypertable_index_size(regclass)
|
|
hypertable_size(regclass)
|
|
interpolate(bigint,record,record)
|
|
interpolate(double precision,record,record)
|
|
interpolate(integer,record,record)
|
|
interpolate(real,record,record)
|
|
interpolate(smallint,record,record)
|
|
last(anyelement,"any")
|
|
locf(anyelement,anyelement,boolean)
|
|
move_chunk(regclass,name,name,regclass,boolean)
|
|
recompress_chunk(regclass,boolean)
|
|
refresh_continuous_aggregate(regclass,"any","any")
|
|
remove_compression_policy(regclass,boolean)
|
|
remove_continuous_aggregate_policy(regclass,boolean,boolean)
|
|
remove_reorder_policy(regclass,boolean)
|
|
remove_retention_policy(regclass,boolean)
|
|
reorder_chunk(regclass,regclass,boolean)
|
|
run_job(integer)
|
|
set_adaptive_chunking(regclass,text,regproc)
|
|
set_chunk_time_interval(regclass,anyelement,name)
|
|
set_integer_now_func(regclass,regproc,boolean)
|
|
set_number_partitions(regclass,integer,name)
|
|
set_replication_factor(regclass,integer)
|
|
show_chunks(regclass,"any","any")
|
|
show_tablespaces(regclass)
|
|
time_bucket(bigint,bigint)
|
|
time_bucket(bigint,bigint,bigint)
|
|
time_bucket(integer,integer)
|
|
time_bucket(integer,integer,integer)
|
|
time_bucket(interval,date)
|
|
time_bucket(interval,date,date)
|
|
time_bucket(interval,date,interval)
|
|
time_bucket(interval,timestamp with time zone)
|
|
time_bucket(interval,timestamp with time zone,interval)
|
|
time_bucket(interval,timestamp with time zone,text,timestamp with time zone,interval)
|
|
time_bucket(interval,timestamp with time zone,timestamp with time zone)
|
|
time_bucket(interval,timestamp without time zone)
|
|
time_bucket(interval,timestamp without time zone,interval)
|
|
time_bucket(interval,timestamp without time zone,timestamp without time zone)
|
|
time_bucket(smallint,smallint)
|
|
time_bucket(smallint,smallint,smallint)
|
|
time_bucket_gapfill(bigint,bigint,bigint,bigint)
|
|
time_bucket_gapfill(integer,integer,integer,integer)
|
|
time_bucket_gapfill(interval,date,date,date)
|
|
time_bucket_gapfill(interval,timestamp with time zone,text,timestamp with time zone,timestamp with time zone)
|
|
time_bucket_gapfill(interval,timestamp with time zone,timestamp with time zone,timestamp with time zone)
|
|
time_bucket_gapfill(interval,timestamp without time zone,timestamp without time zone,timestamp without time zone)
|
|
time_bucket_gapfill(smallint,smallint,smallint,smallint)
|
|
timescaledb_fdw_handler()
|
|
timescaledb_fdw_validator(text[],oid)
|
|
timescaledb_post_restore()
|
|
timescaledb_pre_restore()
|
|
timescaledb_experimental.add_policies(regclass,boolean,"any","any","any","any")
|
|
timescaledb_experimental.allow_new_chunks(name,regclass)
|
|
timescaledb_experimental.alter_policies(regclass,boolean,"any","any","any","any")
|
|
timescaledb_experimental.block_new_chunks(name,regclass,boolean)
|
|
timescaledb_experimental.cleanup_copy_chunk_operation(name)
|
|
timescaledb_experimental.copy_chunk(regclass,name,name,name)
|
|
timescaledb_experimental.move_chunk(regclass,name,name,name)
|
|
timescaledb_experimental.remove_all_policies(regclass,boolean)
|
|
timescaledb_experimental.remove_policies(regclass,boolean,text[])
|
|
timescaledb_experimental.show_policies(regclass)
|
|
timescaledb_experimental.subscription_exec(text)
|
|
timescaledb_experimental.time_bucket_ng(interval,date)
|
|
timescaledb_experimental.time_bucket_ng(interval,date,date)
|
|
timescaledb_experimental.time_bucket_ng(interval,timestamp with time zone)
|
|
timescaledb_experimental.time_bucket_ng(interval,timestamp with time zone,text)
|
|
timescaledb_experimental.time_bucket_ng(interval,timestamp with time zone,timestamp with time zone)
|
|
timescaledb_experimental.time_bucket_ng(interval,timestamp with time zone,timestamp with time zone,text)
|
|
timescaledb_experimental.time_bucket_ng(interval,timestamp without time zone)
|
|
timescaledb_experimental.time_bucket_ng(interval,timestamp without time zone,timestamp without time zone)
|
|
|