Re: SQL-standard function body

From: Noah Misch <noah(at)leadboat(dot)com>
To: Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>
Cc: Julien Rouhaud <rjuju123(at)gmail(dot)com>, Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: SQL-standard function body
Date: 2021-06-06 04:44:18
Message-ID: 20210606044418.GA297923@rfd.leadboat.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Apr 07, 2021 at 09:55:40PM +0200, Peter Eisentraut wrote:
> Committed. Thanks!

I get a NULL pointer dereference if the function body has a doubled semicolon:

create function f() returns int language sql begin atomic select 1;; end;

Program received signal SIGSEGV, Segmentation fault.
transformStmt (pstate=pstate(at)entry=0x2623978, parseTree=parseTree(at)entry=0x0) at analyze.c:297
297 switch (nodeTag(parseTree))
#0 transformStmt (pstate=pstate(at)entry=0x2623978, parseTree=parseTree(at)entry=0x0) at analyze.c:297
#1 0x00000000006132a4 in interpret_AS_clause (queryString=<optimized out>, sql_body_out=<synthetic pointer>, probin_str_p=<synthetic pointer>, prosrc_str_p=<synthetic pointer>, inParameterNames=<optimized out>, parameterTypes=<optimized out>,
sql_body_in=<optimized out>, as=<optimized out>, funcname=<optimized out>, languageName=<optimized out>, languageOid=14) at functioncmds.c:937
#2 CreateFunction (pstate=pstate(at)entry=0x26213e0, stmt=stmt(at)entry=0x25fd048) at functioncmds.c:1227
#3 0x0000000000813e23 in ProcessUtilitySlow (pstate=pstate(at)entry=0x26213e0, pstmt=pstmt(at)entry=0x25fd3b8, queryString=queryString(at)entry=0x25fc040 "create function f() returns int language sql begin atomic select 1;; end;",
context=context(at)entry=PROCESS_UTILITY_TOPLEVEL, params=params(at)entry=0x0, queryEnv=queryEnv(at)entry=0x0, qc=qc(at)entry=0x7fff4b715b70, dest=0x25fd4a8) at utility.c:1607
#4 0x0000000000812944 in standard_ProcessUtility (pstmt=0x25fd3b8, queryString=0x25fc040 "create function f() returns int language sql begin atomic select 1;; end;", context=PROCESS_UTILITY_TOPLEVEL, params=0x0, queryEnv=0x0, dest=0x25fd4a8,
qc=0x7fff4b715b70) at utility.c:1034
#5 0x0000000000810efe in PortalRunUtility (portal=portal(at)entry=0x265fb60, pstmt=0x25fd3b8, isTopLevel=isTopLevel(at)entry=true, setHoldSnapshot=setHoldSnapshot(at)entry=false, dest=0x25fd4a8, qc=0x7fff4b715b70) at pquery.c:1147
#6 0x0000000000811053 in PortalRunMulti (portal=portal(at)entry=0x265fb60, isTopLevel=isTopLevel(at)entry=true, setHoldSnapshot=setHoldSnapshot(at)entry=false, dest=dest(at)entry=0x25fd4a8, altdest=altdest(at)entry=0x25fd4a8, qc=qc(at)entry=0x7fff4b715b70) at pquery.c:1310
#7 0x00000000008115e4 in PortalRun (portal=portal(at)entry=0x265fb60, count=count(at)entry=9223372036854775807, isTopLevel=isTopLevel(at)entry=true, run_once=run_once(at)entry=true, dest=dest(at)entry=0x25fd4a8, altdest=altdest(at)entry=0x25fd4a8, qc=qc(at)entry=0x7fff4b715b70)
at pquery.c:786
#8 0x000000000080d004 in exec_simple_query (query_string=0x25fc040 "create function f() returns int language sql begin atomic select 1;; end;") at postgres.c:1214
#9 0x000000000080ee1f in PostgresMain (argc=argc(at)entry=1, argv=argv(at)entry=0x7fff4b716030, dbname=0x2627788 "test", username=<optimized out>) at postgres.c:4486
#10 0x000000000048bc97 in BackendRun (port=<optimized out>, port=<optimized out>) at postmaster.c:4507
#11 BackendStartup (port=0x261f480) at postmaster.c:4229
#12 ServerLoop () at postmaster.c:1745
#13 0x000000000077c278 in PostmasterMain (argc=argc(at)entry=1, argv=argv(at)entry=0x25f6a00) at postmaster.c:1417
#14 0x000000000048d51e in main (argc=1, argv=0x25f6a00) at main.c:209
(gdb) p parseTree
$1 = (Node *) 0x0

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Noah Misch 2021-06-06 05:37:40 Re: PoC/WIP: Extended statistics on expressions
Previous Message Michael Paquier 2021-06-06 03:07:35 Re: Move pg_attribute.attcompression to earlier in struct for reduced size?