Re: Shared detoast Datum proposal

Поиск
Список
Период
Сортировка
От vignesh C
Тема Re: Shared detoast Datum proposal
Дата
Msg-id CALDaNm2EtgXGd+w81ZjTZBD_rLSURyGqXRoz7EFfhxEneOmWig@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Shared detoast Datum proposal  (Andy Fan <zhihuifan1213@163.com>)
Ответы Re: Shared detoast Datum proposal
Список pgsql-hackers
On Mon, 1 Jan 2024 at 19:26, Andy Fan <zhihuifan1213@163.com> wrote:
>
>
> Andy Fan <zhihuifan1213@163.com> writes:
>
> >
> > Some Known issues:
> > ------------------
> >
> > 1. Currently only Scan & Join nodes are considered for this feature.
> > 2. JIT is not adapted for this purpose yet.
>
> JIT is adapted for this feature in v2. Any feedback is welcome.

One of the tests was aborted at CFBOT [1] with:
[09:47:00.735] dumping /tmp/cores/postgres-11-28182.core for
/tmp/cirrus-ci-build/build/tmp_install//usr/local/pgsql/bin/postgres
[09:47:01.035] [New LWP 28182]
[09:47:01.748] [Thread debugging using libthread_db enabled]
[09:47:01.748] Using host libthread_db library
"/lib/x86_64-linux-gnu/libthread_db.so.1".
[09:47:09.392] Core was generated by `postgres: postgres regression
[local] SELECT                                  '.
[09:47:09.392] Program terminated with signal SIGSEGV, Segmentation fault.
[09:47:09.392] #0  0x00007fa4eed4a5a1 in ?? ()
[09:47:11.123]
[09:47:11.123] Thread 1 (Thread 0x7fa4f8050a40 (LWP 28182)):
[09:47:11.123] #0  0x00007fa4eed4a5a1 in ?? ()
[09:47:11.123] No symbol table info available.
...
...
[09:47:11.123] #4  0x00007fa4ebc7a186 in LLVMOrcGetSymbolAddress () at
/build/llvm-toolchain-11-HMpQvg/llvm-toolchain-11-11.0.1/llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp:124
[09:47:11.123] No locals.
[09:47:11.123] #5  0x00007fa4eed6fc7a in llvm_get_function
(context=0x564b1813a8a0, funcname=0x7fa4eed4a570 "AWAVATSH\201",
<incomplete sequence \354\210>) at
../src/backend/jit/llvm/llvmjit.c:460
[09:47:11.123]         addr = 94880527996960
[09:47:11.123]         __func__ = "llvm_get_function"
[09:47:11.123] #6  0x00007fa4eed902e1 in ExecRunCompiledExpr
(state=0x0, econtext=0x564b18269d20, isNull=0x7ffc11054d5f) at
../src/backend/jit/llvm/llvmjit_expr.c:2577
[09:47:11.123]         cstate = <optimized out>
[09:47:11.123]         func = 0x564b18269d20
[09:47:11.123] #7  0x0000564b1698e614 in ExecEvalExprSwitchContext
(isNull=0x7ffc11054d5f, econtext=0x564b18269d20, state=0x564b182ad820)
at ../src/include/executor/executor.h:355
[09:47:11.123]         retDatum = <optimized out>
[09:47:11.123]         oldContext = 0x564b182680d0
[09:47:11.123]         retDatum = <optimized out>
[09:47:11.123]         oldContext = <optimized out>
[09:47:11.123] #8  ExecProject (projInfo=0x564b182ad818) at
../src/include/executor/executor.h:389
[09:47:11.123]         econtext = 0x564b18269d20
[09:47:11.123]         state = 0x564b182ad820
[09:47:11.123]         slot = 0x564b182ad788
[09:47:11.123]         isnull = false
[09:47:11.123]         econtext = <optimized out>
[09:47:11.123]         state = <optimized out>
[09:47:11.123]         slot = <optimized out>
[09:47:11.123]         isnull = <optimized out>
[09:47:11.123] #9  ExecMergeJoin (pstate=<optimized out>) at
../src/backend/executor/nodeMergejoin.c:836
[09:47:11.123]         node = <optimized out>
[09:47:11.123]         joinqual = 0x0
[09:47:11.123]         otherqual = 0x0
[09:47:11.123]         qualResult = <optimized out>
[09:47:11.123]         compareResult = <optimized out>
[09:47:11.123]         innerPlan = <optimized out>
[09:47:11.123]         innerTupleSlot = <optimized out>
[09:47:11.123]         outerPlan = <optimized out>
[09:47:11.123]         outerTupleSlot = <optimized out>
[09:47:11.123]         econtext = 0x564b18269d20
[09:47:11.123]         doFillOuter = false
[09:47:11.123]         doFillInner = false
[09:47:11.123]         __func__ = "ExecMergeJoin"
[09:47:11.123] #10 0x0000564b169275b9 in ExecProcNodeFirst
(node=0x564b18269db0) at ../src/backend/executor/execProcnode.c:464
[09:47:11.123] No locals.
[09:47:11.123] #11 0x0000564b169a2675 in ExecProcNode
(node=0x564b18269db0) at ../src/include/executor/executor.h:273
[09:47:11.123] No locals.
[09:47:11.123] #12 ExecRecursiveUnion (pstate=0x564b182684a0) at
../src/backend/executor/nodeRecursiveunion.c:115
[09:47:11.123]         node = 0x564b182684a0
[09:47:11.123]         outerPlan = 0x564b18268d00
[09:47:11.123]         innerPlan = 0x564b18269db0
[09:47:11.123]         plan = 0x564b182ddc78
[09:47:11.123]         slot = <optimized out>
[09:47:11.123]         isnew = false
[09:47:11.123] #13 0x0000564b1695a421 in ExecProcNode
(node=0x564b182684a0) at ../src/include/executor/executor.h:273
[09:47:11.123] No locals.
[09:47:11.123] #14 CteScanNext (node=0x564b183a6830) at
../src/backend/executor/nodeCtescan.c:103
[09:47:11.123]         cteslot = <optimized out>
[09:47:11.123]         estate = <optimized out>
[09:47:11.123]         dir = ForwardScanDirection
[09:47:11.123]         forward = true
[09:47:11.123]         tuplestorestate = 0x564b183a5cd0
[09:47:11.123]         eof_tuplestore = <optimized out>
[09:47:11.123]         slot = 0x564b183a6be0
[09:47:11.123] #15 0x0000564b1692e22b in ExecScanFetch
(node=node@entry=0x564b183a6830,
accessMtd=accessMtd@entry=0x564b1695a183 <CteScanNext>,
recheckMtd=recheckMtd@entry=0x564b16959db3 <CteScanRecheck>) at
../src/backend/executor/execScan.c:132
[09:47:11.123]         estate = <optimized out>
[09:47:11.123] #16 0x0000564b1692e332 in ExecScan
(node=0x564b183a6830, accessMtd=accessMtd@entry=0x564b1695a183
<CteScanNext>, recheckMtd=recheckMtd@entry=0x564b16959db3
<CteScanRecheck>) at ../src/backend/executor/execScan.c:181
[09:47:11.123]         econtext = 0x564b183a6b50
[09:47:11.123]         qual = 0x0
[09:47:11.123]         projInfo = 0x0
[09:47:11.123] #17 0x0000564b1695a5ea in ExecCteScan
(pstate=<optimized out>) at ../src/backend/executor/nodeCtescan.c:164
[09:47:11.123]         node = <optimized out>
[09:47:11.123] #18 0x0000564b169a81da in ExecProcNode
(node=0x564b183a6830) at ../src/include/executor/executor.h:273
[09:47:11.123] No locals.
[09:47:11.123] #19 ExecSort (pstate=0x564b183a6620) at
../src/backend/executor/nodeSort.c:149
[09:47:11.123]         plannode = 0x564b182dfb78
[09:47:11.123]         outerNode = 0x564b183a6830
[09:47:11.123]         tupDesc = <optimized out>
[09:47:11.123]         tuplesortopts = <optimized out>
[09:47:11.123]         node = 0x564b183a6620
[09:47:11.123]         estate = 0x564b182681d0
[09:47:11.123]         dir = ForwardScanDirection
[09:47:11.123]         tuplesortstate = 0x564b18207ff0
[09:47:11.123]         slot = <optimized out>
[09:47:11.123] #20 0x0000564b169275b9 in ExecProcNodeFirst
(node=0x564b183a6620) at ../src/backend/executor/execProcnode.c:464
[09:47:11.123] No locals.
[09:47:11.123] #21 0x0000564b16913d01 in ExecProcNode
(node=0x564b183a6620) at ../src/include/executor/executor.h:273
[09:47:11.123] No locals.
[09:47:11.123] #22 ExecutePlan (estate=estate@entry=0x564b182681d0,
planstate=0x564b183a6620, use_parallel_mode=<optimized out>,
operation=operation@entry=CMD_SELECT,
sendTuples=sendTuples@entry=true, numberTuples=numberTuples@entry=0,
direction=ForwardScanDirection, dest=0x564b182e2728,
execute_once=true) at ../src/backend/executor/execMain.c:1670
[09:47:11.123]         slot = <optimized out>
[09:47:11.123]         current_tuple_count = 0
[09:47:11.123] #23 0x0000564b16914024 in standard_ExecutorRun
(queryDesc=0x564b181ba200, direction=ForwardScanDirection, count=0,
execute_once=<optimized out>) at
../src/backend/executor/execMain.c:365
[09:47:11.123]         estate = 0x564b182681d0
[09:47:11.123]         operation = CMD_SELECT
[09:47:11.123]         dest = 0x564b182e2728
[09:47:11.123]         sendTuples = true
[09:47:11.123]         oldcontext = 0x564b181ba100
[09:47:11.123]         __func__ = "standard_ExecutorRun"
[09:47:11.123] #24 0x0000564b1691418f in ExecutorRun
(queryDesc=queryDesc@entry=0x564b181ba200,
direction=direction@entry=ForwardScanDirection, count=count@entry=0,
execute_once=<optimized out>) at
../src/backend/executor/execMain.c:309
[09:47:11.123] No locals.
[09:47:11.123] #25 0x0000564b16d208af in PortalRunSelect
(portal=portal@entry=0x564b1817ae10, forward=forward@entry=true,
count=0, count@entry=9223372036854775807,
dest=dest@entry=0x564b182e2728) at ../src/backend/tcop/pquery.c:924
[09:47:11.123]         queryDesc = 0x564b181ba200
[09:47:11.123]         direction = <optimized out>
[09:47:11.123]         nprocessed = <optimized out>
[09:47:11.123]         __func__ = "PortalRunSelect"
[09:47:11.123] #26 0x0000564b16d2405b in PortalRun
(portal=portal@entry=0x564b1817ae10,
count=count@entry=9223372036854775807,
isTopLevel=isTopLevel@entry=true, run_once=run_once@entry=true,
dest=dest@entry=0x564b182e2728, altdest=altdest@entry=0x564b182e2728,
qc=0x7ffc110551e0) at ../src/backend/tcop/pquery.c:768
[09:47:11.123]         _save_exception_stack = 0x7ffc11055290
[09:47:11.123]         _save_context_stack = 0x0
[09:47:11.123]         _local_sigjmp_buf = {{__jmpbuf = {1,
3431825231787999889, 94880528213800, 94880526221072, 94880526741008,
94880526221000, -3433879442176195951, -8991885832768699759},
__mask_was_saved = 0, __saved_mask = {__val = {140720594047343, 688,
94880526749216, 94880511205302, 1, 140720594047343, 94880526999808, 8,
94880526213088, 112, 179, 94880526221072, 94880526221048,
94880526221000, 94880508502828, 2}}}}
[09:47:11.123]         _do_rethrow = <optimized out>
[09:47:11.123]         result = <optimized out>
[09:47:11.123]         nprocessed = <optimized out>
[09:47:11.123]         saveTopTransactionResourceOwner = 0x564b18139ad8
[09:47:11.123]         saveTopTransactionContext = 0x564b181229f0
[09:47:11.123]         saveActivePortal = 0x0
[09:47:11.123]         saveResourceOwner = 0x564b18139ad8
[09:47:11.123]         savePortalContext = 0x0
[09:47:11.123]         saveMemoryContext = 0x564b181229f0
[09:47:11.123]         __func__ = "PortalRun"
[09:47:11.123] #27 0x0000564b16d1d098 in exec_simple_query
(query_string=query_string@entry=0x564b180fa0e0 "with recursive
search_graph(f, t, label) as (\n\tselect * from graph0 g\n\tunion
all\n\tselect g.*\n\tfrom graph0 g, search_graph sg\n\twhere g.f =
sg.t\n) search depth first by f, t set seq\nselect * from search"...)
at ../src/backend/tcop/postgres.c:1273
[09:47:11.123]         cmdtaglen = 6
[09:47:11.123]         snapshot_set = <optimized out>
[09:47:11.123]         per_parsetree_context = 0x0
[09:47:11.123]         plantree_list = 0x564b182e26d8
[09:47:11.123]         parsetree = 0x564b180fbec8
[09:47:11.123]         commandTag = <optimized out>
[09:47:11.123]         qc = {commandTag = CMDTAG_UNKNOWN, nprocessed = 0}
[09:47:11.123]         querytree_list = <optimized out>
[09:47:11.123]         portal = 0x564b1817ae10
[09:47:11.123]         receiver = 0x564b182e2728
[09:47:11.123]         format = 0
[09:47:11.123]         cmdtagname = <optimized out>
[09:47:11.123]         parsetree_item__state = {l = <optimized out>, i
= <optimized out>}
[09:47:11.123]         dest = DestRemote
[09:47:11.123]         oldcontext = 0x564b181229f0
[09:47:11.123]         parsetree_list = 0x564b180fbef8
[09:47:11.123]         parsetree_item = 0x564b180fbf10
[09:47:11.123]         save_log_statement_stats = false
[09:47:11.123]         was_logged = false
[09:47:11.123]         use_implicit_block = false
[09:47:11.123]         msec_str =
"\004\000\000\000\000\000\000\000\346[\376\026KV\000\000pR\005\021\374\177\000\000\335\000\000\000\000\000\000"
[09:47:11.123]         __func__ = "exec_simple_query"
[09:47:11.123] #28 0x0000564b16d1fe33 in PostgresMain
(dbname=<optimized out>, username=<optimized out>) at
../src/backend/tcop/postgres.c:4653
[09:47:11.123]         query_string = 0x564b180fa0e0 "with recursive
search_graph(f, t, label) as (\n\tselect * from graph0 g\n\tunion
all\n\tselect g.*\n\tfrom graph0 g, search_graph sg\n\twhere g.f =
sg.t\n) search depth first by f, t set seq\nselect * from search"...
[09:47:11.123]         firstchar = <optimized out>
[09:47:11.123]         input_message = {data = 0x564b180fa0e0 "with
recursive search_graph(f, t, label) as (\n\tselect * from graph0
g\n\tunion all\n\tselect g.*\n\tfrom graph0 g, search_graph
sg\n\twhere g.f = sg.t\n) search depth first by f, t set seq\nselect *
from search"..., len = 221, maxlen = 1024, cursor = 221}
[09:47:11.123]         local_sigjmp_buf = {{__jmpbuf =
{94880520543032, -8991887800862096751, 0, 4, 140720594048004, 1,
-3433879442247499119, -8991885813233991023}, __mask_was_saved = 1,
__saved_mask = {__val = {4194304, 1, 140346553036196, 94880526187920,
15616, 15680, 94880508418872, 0, 94880526187920, 15616,
94880520537224, 4, 140720594048004, 1, 94880508502235, 1}}}}
[09:47:11.123]         send_ready_for_query = false
[09:47:11.123]         idle_in_transaction_timeout_enabled = false
[09:47:11.123]         idle_session_timeout_enabled = false
[09:47:11.123]         __func__ = "PostgresMain"
[09:47:11.123] #29 0x0000564b16bcc4e4 in BackendRun
(port=port@entry=0x564b18126f50) at
../src/backend/postmaster/postmaster.c:4464

[1] - https://cirrus-ci.com/task/4765094966460416

Regards,
Vignesh



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bharath Rupireddy
Дата:
Сообщение: Re: introduce dynamic shared memory registry
Следующее
От: vignesh C
Дата:
Сообщение: Re: [PATCH] pgbench log file headers