postgresql/src/include
Tom Lane 4a0aab14dc Defend against self-referential views in relation_is_updatable().
While a self-referential view doesn't actually work, it's possible
to create one, and it turns out that this breaks some of the
information_schema views.  Those views call relation_is_updatable(),
which neglected to consider the hazards of being recursive.  In
older PG versions you get a "stack depth limit exceeded" error,
but since v10 it'd recurse to the point of stack overrun and crash,
because commit a4c35ea1c took out the expression_returns_set() call
that was incidentally checking the stack depth.

Since this function is only used by information_schema views, it
seems like it'd be better to return "not updatable" than suffer
an error.  Hence, add tracking of what views we're examining,
in just the same way that the nearby fireRIRrules() code detects
self-referential views.  I added a check_stack_depth() call too,
just to be defensive.

Per private report from Manuel Rigger.  Back-patch to all
supported versions.
2019-11-21 16:21:43 -05:00
..
access Bump WAL version. 2019-11-21 22:17:28 +09:00
bootstrap Remove more unreferenced function declarations 2019-07-07 09:58:33 +09:00
catalog Remove configure --disable-float4-byval 2019-11-21 18:29:21 +01:00
commands Make DROP DATABASE command generate less WAL records. 2019-11-21 21:10:37 +09:00
common Fix use of term "verifier" 2019-10-12 21:41:59 +02:00
datatype Update copyright for 2019 2019-01-02 12:44:25 -05:00
executor Minor code review for tuple slot rewrite. 2019-11-06 12:00:17 -05:00
fe_utils Fix parallel restore of FKs to partitioned tables 2019-10-17 09:58:01 +02:00
foreign Fix inconsistencies and typos in the tree 2019-07-16 13:23:53 +09:00
jit Remove fmgr.h includes from headers that don't really need it. 2019-08-16 10:35:31 -07:00
lib Add reusable routine for making arrays unique. 2019-11-07 17:00:48 +13:00
libpq In the postmaster, rely on the signal infrastructure to block signals. 2019-10-13 15:48:26 -04:00
mb Fix inconsistencies and typos in the tree, take 9 2019-08-05 12:14:58 +09:00
nodes Introduce the 'force' option for the Drop Database command. 2019-11-13 08:25:33 +05:30
optimizer Generate EquivalenceClass members for partitionwise child join rels. 2019-11-05 11:42:24 -05:00
parser Require the schema qualification in pg_temp.type_name(arg). 2019-08-05 07:48:41 -07:00
partitioning Improve pruning of a default partition 2019-08-04 11:18:45 -04:00
port Update comment about __sync_lock_test_and_set() bug. 2019-10-26 12:55:06 -07:00
portability Update copyright for 2019 2019-01-02 12:44:25 -05:00
postmaster Fix inconsistencies and typos in the tree 2019-07-16 13:23:53 +09:00
regex Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
replication Track statistics for spilling of changes from ReorderBuffer. 2019-11-21 08:06:51 +05:30
rewrite Defend against self-referential views in relation_is_updatable(). 2019-11-21 16:21:43 -05:00
snowball Sync our Snowball stemmer dictionaries with current upstream 2019-07-04 13:26:48 +02:00
statistics Allow setting statistics target for extended statistics 2019-09-11 00:25:51 +02:00
storage Introduce the 'force' option for the Drop Database command. 2019-11-13 08:25:33 +05:30
tcop Revert hooks for session start and end, take two 2019-10-02 09:55:27 +09:00
tsearch Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
utils Add backtrace support for error reporting 2019-11-08 15:44:20 -03:00
.gitignore Refactor dlopen() support 2018-09-06 11:33:04 +02:00
c.h Fix ecpglib.h to declare bool consistently with c.h. 2019-11-12 13:00:04 -05:00
fmgr.h Remove configure --disable-float4-byval 2019-11-21 18:29:21 +01:00
funcapi.h Fix many typos and inconsistencies 2019-07-01 10:00:23 +09:00
getaddrinfo.h Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
getopt_long.h Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
Makefile Get rid of jsonpath_gram.h and jsonpath_scanner.h 2019-03-20 11:13:34 +03:00
miscadmin.h Fix inconsistencies and typos in the tree, take 11 2019-08-19 16:21:39 +09:00
pg_config.h.in Remove configure --disable-float4-byval 2019-11-21 18:29:21 +01:00
pg_config.h.win32 Fix ecpglib.h to declare bool consistently with c.h. 2019-11-12 13:00:04 -05:00
pg_config_ext.h.in Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_ext.h.win32 Autoconfiscate selection of 64-bit int type for 64-bit large object API. 2012-10-07 21:52:43 -04:00
pg_config_manual.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
pg_getopt.h Use our own getopt() on OpenBSD. 2019-01-18 15:06:26 -05:00
pg_trace.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
pgstat.h Remove fmgr.h includes from headers that don't really need it. 2019-08-16 10:35:31 -07:00
pgtar.h Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
pgtime.h Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00
port.h In the postmaster, rely on the signal infrastructure to block signals. 2019-10-13 15:48:26 -04:00
postgres.h Remove configure --disable-float4-byval 2019-11-21 18:29:21 +01:00
postgres_ext.h Phase 2 of pgindent updates. 2017-06-21 15:19:25 -04:00
postgres_fe.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
rusagestub.h Update copyright for 2019 2019-01-02 12:44:25 -05:00
windowapi.h Phase 2 pgindent run for v12. 2019-05-22 13:04:48 -04:00