| From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> | 
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> | 
| Cc: | Andrew Dunstan <andrew(at)dunslane(dot)net>, pgsql-committers(at)lists(dot)postgresql(dot)org | 
| Subject: | Re: pgsql: Cache by-reference missing values in a long lived context | 
| Date: | 2023-08-26 16:25:41 | 
| Message-ID: | 20230826162541.4cny4fb6z2cvpy4j@alvherre.pgsql | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-committers | 
On 2023-Aug-25, Tom Lane wrote:
> Another point that I wasn't thinking of yesterday is that 11 is
> still expected to compile on pre-C99 compilers.  I'm not sure
> to what extent we are still able to test that -- my old animals
> have all gone to buildfarm heaven, although I see that Noah's
> AIX menagerie is still soldiering on.  Were we relying on "{ 0 }"
> anywhere else pre-v12?
We have a few occurrences of {0} in initializations in pg11, so it
should work.
$ git grep '{\s*0\s*}' -- *.c
contrib/pgrowlocks/pgrowlocks.c:					values[Atnum_xids] = "{0}";
contrib/pgrowlocks/pgrowlocks.c:					values[Atnum_pids] = "{0}";
contrib/pgstattuple/pgstatapprox.c:	output_type stat = {0};
contrib/pgstattuple/pgstattuple.c:	pgstattuple_type stat = {0};
contrib/pgstattuple/pgstattuple.c:	pgstattuple_type stat = {0};
src/backend/access/transam/xloginsert.c:		XLogRecordBlockCompressHeader cbimg = {0};
src/backend/commands/explain.c:	JitInstrumentation ji = {0};
src/backend/commands/explain.c:	HashInstrumentation hinstrument = {0};
src/backend/commands/tablecmds.c:	static Node bogus_marker = {0}; /* marks conflicting defaults */
src/backend/executor/execExpr.c:	ExprEvalStep scratch = {0};
src/backend/executor/execExpr.c:	ExprEvalStep scratch = {0};
src/backend/executor/execExpr.c:	ExprEvalStep scratch = {0};
src/backend/executor/execExpr.c:	ExprEvalStep scratch = {0};
src/backend/executor/execExpr.c:	ExprEvalStep scratch = {0};
src/backend/executor/execExpr.c:	ExprEvalStep scratch = {0};
src/backend/executor/execExpr.c:	ExprEvalStep scratch2 = {0};
src/backend/executor/execExpr.c:	ExprEvalStep scratch = {0};
src/backend/executor/execExpr.c:	ExprEvalStep scratch = {0};
src/backend/regex/regcomp.c:			/* postpone everything else pending possible {0} */
src/backend/regex/regcomp.c:	/* annoying special case:  {0} or {0,0} cancels everything */
src/backend/utils/adt/jsonfuncs.c:		JsValue		field = {0};
src/backend/utils/adt/jsonfuncs.c:	JsValue		jsv = {0};
src/backend/utils/adt/numeric.c:static const NumericDigit const_zero_data[1] = {0};
src/bin/pg_dump/pg_dump.c:					  "CASE WHEN pol.polroles = '{0}' THEN NULL ELSE "
src/bin/psql/describe.c:						  "    || CASE WHEN polroles <> '{0}' THEN\n"
src/bin/psql/describe.c:						  "    || CASE WHEN polroles <> '{0}' THEN\n"
src/bin/psql/describe.c:							  "  CASE WHEN pol.polroles = '{0}' THEN NULL ELSE pg_catalog.array_to_string(array(select rolname from pg_catalog.pg_roles where oid = any (pol.polroles) order by 1),',') END,\n"
src/interfaces/ecpg/ecpglib/prepare.c:static stmtCacheEntry stmtCacheEntries[16384] = {{0, {0}, 0, 0, 0}};
-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2023-08-26 21:41:27 | Re: pgsql: Cache by-reference missing values in a long lived context | 
| Previous Message | Michael Paquier | 2023-08-26 11:13:16 | pgsql: Generate new LOG for "trust" connections under log_connections |