postgresql/src/include/utils
Tom Lane e69d3a82e4 Avoid caching expression state trees for domain constraints across queries.
In commit 8abb3cda0d I attempted to cache
the expression state trees constructed for domain CHECK constraints for
the life of the backend (assuming the domain's constraints don't get
redefined).  However, this turns out not to work very well, because
execQual.c will run those state trees with ecxt_per_query_memory pointing
to a query-lifespan context, and in some situations we'll end up with
pointers into that context getting stored into the state trees.  This
happens in particular with SQL-language functions, as reported by
Emre Hasegeli, but there are many other cases.

To fix, keep only the expression plan trees for domain CHECK constraints
in the typcache's data structure, and revert to performing ExecInitExpr
(at least) once per query to set up expression state trees in the query's
context.

Eventually it'd be nice to undo this, but that will require some careful
thought about memory management for expression state trees, and it seems
far too late for any such redesign in 9.5.  This way is still much more
efficient than what happened before 8abb3cda0.
2015-11-29 18:18:42 -05:00
..
.gitignore Avoid maintaining three separate copies of the error codes list. 2011-02-03 22:32:49 -05:00
acl.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
aclchk_internal.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
array.h Support "expanded" objects, particularly arrays, for better performance. 2015-05-14 12:08:49 -04:00
arrayaccess.h Support "expanded" objects, particularly arrays, for better performance. 2015-05-14 12:08:49 -04:00
ascii.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
attoptcache.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
builtins.h Plug RLS related information leak in pg_stats view. 2015-07-28 13:21:37 -07:00
bytea.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
cash.h Add casts from int4 and int8 to numeric. 2011-04-05 09:35:43 -04:00
catcache.h Use FLEXIBLE_ARRAY_MEMBER in a bunch more places. 2015-02-20 00:11:42 -05:00
combocid.h Create an infrastructure for parallel computation in PostgreSQL. 2015-04-30 15:02:14 -04:00
date.h Fix incorrect translation of minus-infinity datetimes for json/jsonb. 2015-10-20 11:07:05 -07:00
datetime.h Fix incorrect translation of minus-infinity datetimes for json/jsonb. 2015-10-20 11:07:05 -07:00
datum.h Support "expanded" objects, particularly arrays, for better performance. 2015-05-14 12:08:49 -04:00
dynahash.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
dynamic_loader.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
elog.h Tweak __attribute__-wrapping macros for better pgindent results. 2015-03-26 14:03:25 -04:00
evtcache.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
expandeddatum.h Support "expanded" objects, particularly arrays, for better performance. 2015-05-14 12:08:49 -04:00
fmgrtab.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
formatting.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
geo_decls.h Allow GiST distance function to return merely a lower-bound. 2015-05-15 14:26:51 +03:00
guc.h Improve design and implementation of pg_file_settings view. 2015-06-28 18:06:14 -04:00
guc_tables.h Group cluster_name and update_process_title settings together 2015-10-04 12:29:50 -04:00
help_config.h Tweak __attribute__-wrapping macros for better pgindent results. 2015-03-26 14:03:25 -04:00
hsearch.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
inet.h Add index-only scan support to inet GiST opclass. 2015-03-28 15:11:53 +02:00
int8.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
inval.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
json.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
jsonapi.h Support JSON negative array subscripts everywhere 2015-07-17 21:06:39 -04:00
jsonb.h Rename jsonb_replace to jsonb_set and allow it to add new values 2015-05-31 20:34:10 -04:00
logtape.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
lsyscache.h Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
memdebug.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
memutils.h Fix bogus "out of memory" reports in tuplestore.c. 2015-08-04 18:18:46 -04:00
nabstime.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
numeric.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
palloc.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
pg_crc.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
pg_locale.h Revoke support for strxfrm() that write past the specified array length. 2015-07-08 20:44:25 -04:00
pg_lsn.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
pg_rusage.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
plancache.h Remove the SECURITY_ROW_LEVEL_DISABLED security context bit. 2015-09-20 20:47:36 -04:00
portal.h Fix subtransaction cleanup after an outer-subtransaction portal fails. 2015-09-04 13:37:16 -04:00
ps_status.h Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
rangetypes.h Move strategy numbers to include/access/stratnum.h 2015-05-15 17:03:16 -03:00
rel.h Fix more typos in comments. 2015-05-20 19:45:43 +03:00
relcache.h Fix the logic for putting relations into the relcache init file. 2015-06-25 14:39:05 -04:00
relfilenodemap.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
relmapper.h Use FLEXIBLE_ARRAY_MEMBER in a bunch more places. 2015-02-20 00:11:42 -05:00
reltrigger.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
resowner.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
resowner_private.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
rls.h Remove the row_security=force GUC value. 2015-09-20 20:45:54 -04:00
ruleutils.h Fix handling of inherited check constraints in ALTER COLUMN TYPE (again). 2015-11-20 14:55:28 -05:00
sampling.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
selfuncs.h Allow planner to use expression-index stats for function calls in WHERE. 2015-09-24 18:35:46 -04:00
snapmgr.h Create an infrastructure for parallel computation in PostgreSQL. 2015-04-30 15:02:14 -04:00
snapshot.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
sortsupport.h pgindent run for 9.5 2015-05-23 21:35:49 -04:00
spccache.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
syscache.h Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
timeout.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
timestamp.h Add transform functions for AT TIME ZONE. 2015-03-01 13:22:34 -05:00
tqual.h Add opaque declaration of HTAB to tqual.h. 2015-06-27 09:55:06 -05:00
tuplesort.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
tuplestore.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
typcache.h Avoid caching expression state trees for domain constraints across queries. 2015-11-29 18:18:42 -05:00
tzparser.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
uuid.h Update copyright for 2015 2015-01-06 11:43:47 -05:00
varbit.h Use FLEXIBLE_ARRAY_MEMBER in a bunch more places. 2015-02-20 00:11:42 -05:00
xml.h Update copyright for 2015 2015-01-06 11:43:47 -05:00