diff options
author | Sergey Uzhakov <uzhastik@gmail.com> | 2022-05-02 12:04:26 +0300 |
---|---|---|
committer | Sergey Uzhakov <uzhastik@gmail.com> | 2022-05-02 12:04:26 +0300 |
commit | f07a7df3e0cbb8ad22b97824ccfeebbc433b84a1 (patch) | |
tree | 5e6dcc5120ac7c6785918b5d0ce537dcd63079d8 | |
parent | 6d4102c808d949679abef976da125ce9add38a4b (diff) | |
download | ydb-f07a7df3e0cbb8ad22b97824ccfeebbc433b84a1.tar.gz |
CLOUD-95996: add pg patch 03, tune scripts
ref:edb9916f2fe9d75e1994a28567ec61761801e2ec
-rwxr-xr-x | ydb/library/yql/parser/pg_wrapper/copy_src.sh | 2 | ||||
-rwxr-xr-x | ydb/library/yql/parser/pg_wrapper/generate_patch.sh | 4 | ||||
-rw-r--r-- | ydb/library/yql/parser/pg_wrapper/patches/03.coverity.patch | 81 |
3 files changed, 86 insertions, 1 deletions
diff --git a/ydb/library/yql/parser/pg_wrapper/copy_src.sh b/ydb/library/yql/parser/pg_wrapper/copy_src.sh index 0e3e86936dc..46a0f3fc1e1 100755 --- a/ydb/library/yql/parser/pg_wrapper/copy_src.sh +++ b/ydb/library/yql/parser/pg_wrapper/copy_src.sh @@ -2,5 +2,7 @@ set -eux rm -f ../../../../../contrib/libs/postgresql/libpostgres.a ya make ../../../../../contrib/libs/postgresql --checkout + +export LANG=ru_RU.UTF-8 python3 copy_src.py for i in $(ls patches/); do (cd postgresql && patch -p1 < ../patches/$i); done diff --git a/ydb/library/yql/parser/pg_wrapper/generate_patch.sh b/ydb/library/yql/parser/pg_wrapper/generate_patch.sh index 28352afe0c2..8cae98d99d1 100755 --- a/ydb/library/yql/parser/pg_wrapper/generate_patch.sh +++ b/ydb/library/yql/parser/pg_wrapper/generate_patch.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash -set -u +set -eEu +trap 'echo Script failed!' ERR + rm -rf postgresql.patched cp -a postgresql postgresql.patched ./copy_src.sh > /dev/null 2>&1 diff --git a/ydb/library/yql/parser/pg_wrapper/patches/03.coverity.patch b/ydb/library/yql/parser/pg_wrapper/patches/03.coverity.patch new file mode 100644 index 00000000000..85acdabcdd5 --- /dev/null +++ b/ydb/library/yql/parser/pg_wrapper/patches/03.coverity.patch @@ -0,0 +1,81 @@ +diff -ruN postgresql/src/backend/access/transam/timeline.c postgresql.patched/src/backend/access/transam/timeline.c +--- postgresql/src/backend/access/transam/timeline.c 2022-05-01 17:51:47.220765000 +0300 ++++ postgresql.patched/src/backend/access/transam/timeline.c 2022-05-01 17:51:30.428749000 +0300 +@@ -405,6 +405,7 @@ + LSN_FORMAT_ARGS(switchpoint), + reason); + ++ buffer[BLCKSZ - 1] = 0; + nbytes = strlen(buffer); + errno = 0; + pgstat_report_wait_start(WAIT_EVENT_TIMELINE_HISTORY_WRITE); +diff -ruN postgresql/src/backend/access/transam/twophase.c postgresql.patched/src/backend/access/transam/twophase.c +--- postgresql/src/backend/access/transam/twophase.c 2022-05-01 17:51:56.457044000 +0300 ++++ postgresql.patched/src/backend/access/transam/twophase.c 2022-05-01 17:51:30.432134000 +0300 +@@ -1074,6 +1074,7 @@ + &hdr.initfileinval); + hdr.gidlen = strlen(gxact->gid) + 1; /* Include '\0' */ + hdr.origin_lsn = 0; ++ hdr.origin_timestamp = 0; + + save_state_data(&hdr, sizeof(TwoPhaseFileHeader)); + save_state_data(gxact->gid, hdr.gidlen); +diff -ruN postgresql/src/backend/storage/ipc/standby.c postgresql.patched/src/backend/storage/ipc/standby.c +--- postgresql/src/backend/storage/ipc/standby.c 2022-05-01 17:51:51.003468000 +0300 ++++ postgresql.patched/src/backend/storage/ipc/standby.c 2022-05-01 17:51:30.512070000 +0300 +@@ -651,6 +651,7 @@ + timeouts[cnt].id = STANDBY_DEADLOCK_TIMEOUT; + timeouts[cnt].type = TMPARAM_AFTER; + timeouts[cnt].delay_ms = DeadlockTimeout; ++ timeouts[cnt].fin_time = 0; + cnt++; + + enable_timeouts(timeouts, cnt); +diff -ruN postgresql/src/backend/utils/mmgr/dsa.c postgresql.patched/src/backend/utils/mmgr/dsa.c +--- postgresql/src/backend/utils/mmgr/dsa.c 2022-05-01 17:51:56.486991000 +0300 ++++ postgresql.patched/src/backend/utils/mmgr/dsa.c 2022-05-01 17:51:30.552088000 +0300 +@@ -839,7 +839,13 @@ + superblock = dsa_get_address(area, span->start); + object = dsa_get_address(area, dp); + size_class = span->size_class; +- Assert(size_class < lengthof(dsa_size_classes)); ++ if (size_class >= lengthof(dsa_size_classes)) ++ { ++ ereport(ERROR, ++ (errcode(ERRCODE_DATA_CORRUPTED), ++ errmsg("invalid span size"), ++ errdetail("Invalid span->size_class value %zu, but dsa_size_classes size is %zu.", size_class, lengthof(dsa_size_classes)))); ++ } + size = dsa_size_classes[size_class]; + + /* +diff -ruN postgresql/src/backend/utils/sort/tuplesort.c postgresql.patched/src/backend/utils/sort/tuplesort.c +--- postgresql/src/backend/utils/sort/tuplesort.c 2022-05-01 17:51:53.472504000 +0300 ++++ postgresql.patched/src/backend/utils/sort/tuplesort.c 2022-05-01 17:51:30.555163000 +0300 +@@ -3777,8 +3777,10 @@ + /* Compare additional sort keys */ + ltup.t_len = ((MinimalTuple) a->tuple)->t_len + MINIMAL_TUPLE_OFFSET; + ltup.t_data = (HeapTupleHeader) ((char *) a->tuple - MINIMAL_TUPLE_OFFSET); ++ ltup.t_tableOid = 0; + rtup.t_len = ((MinimalTuple) b->tuple)->t_len + MINIMAL_TUPLE_OFFSET; + rtup.t_data = (HeapTupleHeader) ((char *) b->tuple - MINIMAL_TUPLE_OFFSET); ++ rtup.t_tableOid = 0; + tupDesc = state->tupDesc; + + if (sortKey->abbrev_converter) +@@ -3833,6 +3835,7 @@ + /* set up first-column key value */ + htup.t_len = tuple->t_len + MINIMAL_TUPLE_OFFSET; + htup.t_data = (HeapTupleHeader) ((char *) tuple - MINIMAL_TUPLE_OFFSET); ++ htup.t_tableOid = 0; + original = heap_getattr(&htup, + state->sortKeys[0].ssup_attno, + state->tupDesc, +@@ -3939,6 +3942,7 @@ + /* set up first-column key value */ + htup.t_len = tuple->t_len + MINIMAL_TUPLE_OFFSET; + htup.t_data = (HeapTupleHeader) ((char *) tuple - MINIMAL_TUPLE_OFFSET); ++ htup.t_tableOid = 0; + stup->datum1 = heap_getattr(&htup, + state->sortKeys[0].ssup_attno, + state->tupDesc, |