hi. the following script makes the server crash (Segmentation fault). create schema test; set search_path to test; DROP TABLE IF EXISTS temporal_rng; CREATE TABLE temporal_rng (id int4range, valid_at daterange); ALTER TABLE temporal_rng ADD CONSTRAINT temporal_rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS);
INSERT INTO temporal_rng VALUES ('[11,11]', daterange('2018-01-01', '2020-01-01')), ('[11,11]', daterange('2020-01-01', '2021-01-01')), ('[20,20]', daterange('2018-01-01', '2020-01-01')), ('[20,20]', daterange('2020-01-01', '2021-01-01')); DROP TABLE IF EXISTS temporal_fk_rng2rng; CREATE TABLE temporal_fk_rng2rng ( id int4range, valid_at tsrange, parent_id int4range, CONSTRAINT temporal_fk_rng2rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS) ); --------------------------------------------------------------- BEGIN; ALTER TABLE temporal_fk_rng2rng DROP CONSTRAINT IF EXISTS temporal_fk_rng2rng_fk; ALTER TABLE temporal_fk_rng2rng ALTER COLUMN parent_id SET DEFAULT '[-1,-1]', ALTER COLUMN valid_at SET DEFAULT tsrange('2018-01-01', '2019-11-11'); ALTER TABLE temporal_fk_rng2rng ADD CONSTRAINT temporal_fk_rng2rng_fk FOREIGN KEY (parent_id, PERIOD valid_at) REFERENCES temporal_rng on update set DEFAULT on delete set DEFAULT; ---------------------------------------------------------gdb related info:--------------- (gdb) continue Continuing. Program received signal SIGSEGV, Segmentation fault. FindFKComparisonOperators (fkconstraint=0x556450100bd8, tab=0x55644ff8f570, i=1, fkattnum=0x7ffeb3286ba0, old_check_ok=0x7ffeb3286b11, old_pfeqop_item=0x7ffeb3286b28, pktype=3912, fktype=3908, opclass=10078, is_temporal=true, for_overlaps=true, pfeqopOut=0x7ffeb3286da4, ppeqopOut=0x7ffeb3286e24, ffeqopOut=0x7ffeb3286ea4) at ../../Desktop/pg_sources/main/postgres/src/backend/commands/tablecmds.c:11582 11582 pkattr_name = strVal(fkconstraint->pk_period); (gdb) where #0 FindFKComparisonOperators (fkconstraint=0x556450100bd8, tab=0x55644ff8f570, i=1, fkattnum=0x7ffeb3286ba0, old_check_ok=0x7ffeb3286b11, old_pfeqop_item=0x7ffeb3286b28, pktype=3912, fktype=3908, opclass=10078, is_temporal=true, for_overlaps=true, pfeqopOut=0x7ffeb3286da4, ppeqopOut=0x7ffeb3286e24, ffeqopOut=0x7ffeb3286ea4) at ../../Desktop/pg_sources/main/postgres/src/backend/commands/tablecmds.c:11582 #1 0x000055644e53875a in ATAddForeignKeyConstraint (wqueue=0x7ffeb3287118, tab=0x55644ff8f570, rel=0x7fb2dc124430, fkconstraint=0x556450100bd8, recurse=true, recursing=false, lockmode=6) at ../../Desktop/pg_sources/main/postgres/src/backend/commands/tablecmds.c:10395 #2 0x000055644e536cc2 in ATExecAddConstraint (wqueue=0x7ffeb3287118, tab=0x55644ff8f570, rel=0x7fb2dc124430, newConstraint=0x556450100bd8, recurse=true, is_readd=false, lockmode=6) at ../../Desktop/pg_sources/main/postgres/src/backend/commands/tablecmds.c:9948 #3 0x000055644e528eaa in ATExecCmd (wqueue=0x7ffeb3287118, tab=0x55644ff8f570, cmd=0x5564500fae48, lockmode=6, cur_pass=10, context=0x7ffeb3287310) at ../../Desktop/pg_sources/main/postgres/src/backend/commands/tablecmds.c:5711 #4 0x000055644e5283f6 in ATRewriteCatalogs (wqueue=0x7ffeb3287118, lockmode=6, context=0x7ffeb3287310) at ../../Desktop/pg_sources/main/postgres/src/backend/commands/tablecmds.c:5569 #5 0x000055644e527031 in ATController (parsetree=0x55645000e228, rel=0x7fb2dc124430, cmds=0x55645000e1d8, recurse=true, lockmode=6, context=0x7ffeb3287310) at ../../Desktop/pg_sources/main/postgres/src/backend/commands/tablecmds.c:5136 #6 0x000055644e526a9d in AlterTable (stmt=0x55645000e228, lockmode=6, context=0x7ffeb3287310) at ../../Desktop/pg_sources/main/postgres/src/backend/commands/tablecmds.c:4789 #7 0x000055644e92eb65 in ProcessUtilitySlow (pstate=0x55644ff8f460, pstmt=0x55645000e2d8, --Type <RET> for more, q to quit, c to continue without paging-- 55645000d330 "ALTER TABLE temporal_fk_rng2rng\n\tADD CONSTRAINT temporal_fk_rng2rng_fk\n\tFOREIGN KEY (parent_id, PERIOD valid_at)\n\tREFERENCES temporal_rng\n on update set DEFAULT \n on delete set DEFAULT;", context=PROCESS_UTILITY_TOPLEVEL, params=0x0, queryEnv=0x0, dest=0x55645000e698, qc=0x7ffeb3287970) at ../../Desktop/pg_sources/main/postgres/src/backend/tcop/utility.c:1329 #8 0x000055644e92e24c in standard_ProcessUtility (pstmt=0x55645000e2d8, queryString=0x55645000d330 "ALTER TABLE temporal_fk_rng2rng\n\tADD CONSTRAINT temporal_fk_rng2rng_fk\n\tFOREIGN KEY (parent_id, PERIOD valid_at)\n\tREFERENCES temporal_rng\n on update set DEFAULT \n on delete set DEFAULT;", readOnlyTree=false, context=PROCESS_UTILITY_TOPLEVEL, params=0x0, queryEnv=0x0, dest=0x55645000e698, qc=0x7ffeb3287970) at ../../Desktop/pg_sources/main/postgres/src/backend/tcop/utility.c:1078 #9 0x000055644e92c921 in ProcessUtility (pstmt=0x55645000e2d8, queryString=0x55645000d330 "ALTER TABLE temporal_fk_rng2rng\n\tADD CONSTRAINT temporal_fk_rng2rng_fk\n\tFOREIGN KEY (parent_id, PERIOD valid_at)\n\tREFERENCES temporal_rng\n on update set DEFAULT \n on delete set DEFAULT;", readOnlyTree=false, context=PROCESS_UTILITY_TOPLEVEL, params=0x0, queryEnv=0x0, dest=0x55645000e698, qc=0x7ffeb3287970) at ../../Desktop/pg_sources/main/postgres/src/backend/tcop/utility.c:530 #10 0x000055644e92a83e in PortalRunUtility (portal=0x5564500a9840, pstmt=0x55645000e2d8, isTopLevel=true, setHoldSnapshot=false, dest=0x55645000e698, qc=0x7ffeb3287970) at ../../Desktop/pg_sources/main/postgres/src/backend/tcop/pquery.c:1158 #11 0x000055644e92abdb in PortalRunMulti (portal=0x5564500a9840, isTopLevel=true, setHoldSnapshot=false, dest=0x55645000e698, altdest=0x55645000e698, qc=0x7ffeb3287970) at ../../Desktop/pg_sources/main/postgres/src/backend/tcop/pquery.c:1315 #12 0x000055644e929b53 in PortalRun (portal=0x5564500a9840, count=9223372036854775807, isTopLevel=true, run_once=true, dest=0x55645000e698, altdest=0x55645000e698, qc=0x7ffeb3287970) at ../../Desktop/pg_sources/main/postgres/src/backend/tcop/pquery.c:791 #13 0x000055644e91f206 in exec_simple_query ( query_string=0x55645000d330 "ALTER TABLE temporal_fk_rng2rng\n\tADD CONSTRAINT temporal_fk_rng2rng_fk\n\tFOREIGN KEY (parent_id, PERIOD valid_at)\n\tREFERENCES temporal_rng\n on update set DEFAULT \n on delete set DEFAULT;") at ../../Desktop/pg_sources/main/postgres/src/backend/tcop/postgres.c:1274 --Type <RET> for more, q to quit, c to continue without paging-- #14 0x000055644e926c49 in PostgresMain (dbname=0x556450045610 "regression", username=0x5564500455f8 "jian") at ../../Desktop/pg_sources/main/postgres/src/backend/tcop/postgres.c:4637 #15 0x000055644e7ff0e9 in BackendRun (port=0x5564500394f0) at ../../Desktop/pg_sources/main/postgres/src/backend/postmaster/postmaster.c:4438 #16 0x000055644e7fe6a1 in BackendStartup (port=0x5564500394f0) at ../../Desktop/pg_sources/main/postgres/src/backend/postmaster/postmaster.c:4166 #17 0x000055644e7f8aa0 in ServerLoop () at ../../Desktop/pg_sources/main/postgres/src/backend/postmaster/postmaster.c:1780 #18 0x000055644e7f8042 in PostmasterMain (argc=3, argv=0x55644ff77e60) at ../../Desktop/pg_sources/main/postgres/src/backend/postmaster/postmaster.c:1464 #19 0x000055644e67f884 in main (argc=3, argv=0x55644ff77e60) at ../../Desktop/pg_sources/main/postgres/src/backend/main/main.c:198