pg_query 5.1.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/README.md +1 -1
- data/Rakefile +2 -2
- data/ext/pg_query/include/pg_query.h +4 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
- data/ext/pg_query/include/postgres/access/amapi.h +10 -3
- data/ext/pg_query/include/postgres/access/attmap.h +1 -1
- data/ext/pg_query/include/postgres/access/attnum.h +1 -1
- data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
- data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
- data/ext/pg_query/include/postgres/access/clog.h +2 -3
- data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
- data/ext/pg_query/include/postgres/access/detoast.h +1 -1
- data/ext/pg_query/include/postgres/access/genam.h +8 -4
- data/ext/pg_query/include/postgres/access/gin.h +1 -1
- data/ext/pg_query/include/postgres/access/htup.h +1 -1
- data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
- data/ext/pg_query/include/postgres/access/itup.h +3 -3
- data/ext/pg_query/include/postgres/access/parallel.h +1 -2
- data/ext/pg_query/include/postgres/access/printtup.h +1 -1
- data/ext/pg_query/include/postgres/access/relation.h +1 -1
- data/ext/pg_query/include/postgres/access/relscan.h +1 -1
- data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
- data/ext/pg_query/include/postgres/access/sdir.h +1 -1
- data/ext/pg_query/include/postgres/access/skey.h +1 -1
- data/ext/pg_query/include/postgres/access/slru.h +221 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
- data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
- data/ext/pg_query/include/postgres/access/table.h +1 -1
- data/ext/pg_query/include/postgres/access/tableam.h +33 -24
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
- data/ext/pg_query/include/postgres/access/transam.h +7 -7
- data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
- data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
- data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
- data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
- data/ext/pg_query/include/postgres/access/twophase.h +2 -2
- data/ext/pg_query/include/postgres/access/xact.h +5 -5
- data/ext/pg_query/include/postgres/access/xlog.h +20 -12
- data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
- data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
- data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
- data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
- data/ext/pg_query/include/postgres/c.h +31 -36
- data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
- data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
- data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
- data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
- data/ext/pg_query/include/postgres/catalog/index.h +22 -18
- data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
- data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +2 -6
- data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
- data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
- data/ext/pg_query/include/postgres/commands/event_trigger.h +5 -2
- data/ext/pg_query/include/postgres/commands/explain.h +19 -3
- data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
- data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
- data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
- data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
- data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
- data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +453 -0
- data/ext/pg_query/include/postgres/common/int.h +79 -4
- data/ext/pg_query/include/postgres/common/keywords.h +1 -1
- data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
- data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
- data/ext/pg_query/include/postgres/common/relpath.h +4 -4
- data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
- data/ext/pg_query/include/postgres/common/sha2.h +1 -1
- data/ext/pg_query/include/postgres/common/string.h +1 -1
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/datatype/timestamp.h +28 -2
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/executor/execdesc.h +1 -1
- data/ext/pg_query/include/postgres/executor/executor.h +6 -5
- data/ext/pg_query/include/postgres/executor/functions.h +2 -1
- data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
- data/ext/pg_query/include/postgres/executor/spi.h +2 -8
- data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
- data/ext/pg_query/include/postgres/fmgr.h +2 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
- data/ext/pg_query/include/postgres/funcapi.h +2 -2
- data/ext/pg_query/include/postgres/gram.h +871 -830
- data/ext/pg_query/include/postgres/gramparse.h +1 -1
- data/ext/pg_query/include/postgres/jit/jit.h +4 -3
- data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
- data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
- data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
- data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
- data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
- data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
- data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
- data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
- data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +29 -25
- data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
- data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
- data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
- data/ext/pg_query/include/postgres/mb/pg_wchar.h +102 -82
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/postgres/miscadmin.h +64 -52
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
- data/ext/pg_query/include/postgres/nodes/execnodes.h +109 -25
- data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
- data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
- data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
- data/ext/pg_query/include/postgres/nodes/params.h +1 -1
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +60 -9
- data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
- data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
- data/ext/pg_query/include/postgres/nodes/primnodes.h +344 -50
- data/ext/pg_query/include/postgres/nodes/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
- data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
- data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
- data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
- data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
- data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
- data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
- data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +2 -2
- data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
- data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
- data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
- data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
- data/ext/pg_query/include/postgres/parser/parser.h +3 -3
- data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
- data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
- data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/postgres/pg_config.h +34 -34
- data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
- data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
- data/ext/pg_query/include/postgres/pg_trace.h +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +13 -11
- data/ext/pg_query/include/postgres/pgtime.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
- data/ext/pg_query/include/postgres/plpgsql.h +15 -13
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
- data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
- data/ext/pg_query/include/postgres/port/atomics.h +93 -6
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
- data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +48 -1
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +1 -11
- data/ext/pg_query/include/postgres/port.h +7 -3
- data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres/postgres.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
- data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
- data/ext/pg_query/include/postgres/regex/regex.h +92 -9
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
- data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
- data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
- data/ext/pg_query/include/postgres/replication/origin.h +1 -1
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +18 -28
- data/ext/pg_query/include/postgres/replication/slot.h +41 -5
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
- data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
- data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/postgres/storage/block.h +1 -1
- data/ext/pg_query/include/postgres/storage/buf.h +1 -1
- data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
- data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
- data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
- data/ext/pg_query/include/postgres/storage/fd.h +30 -13
- data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
- data/ext/pg_query/include/postgres/storage/item.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
- data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
- data/ext/pg_query/include/postgres/storage/latch.h +4 -2
- data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
- data/ext/pg_query/include/postgres/storage/lock.h +19 -19
- data/ext/pg_query/include/postgres/storage/lockdefs.h +1 -1
- data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
- data/ext/pg_query/include/postgres/storage/off.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
- data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
- data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
- data/ext/pg_query/include/postgres/storage/proc.h +48 -23
- data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
- data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
- data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
- data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
- data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
- data/ext/pg_query/include/postgres/storage/smgr.h +41 -27
- data/ext/pg_query/include/postgres/storage/spin.h +1 -1
- data/ext/pg_query/include/postgres/storage/standby.h +13 -3
- data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/postgres/storage/sync.h +4 -4
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
- data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
- data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
- data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
- data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
- data/ext/pg_query/include/postgres/utils/acl.h +19 -7
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/postgres/utils/array.h +1 -2
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
- data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
- data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
- data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
- data/ext/pg_query/include/postgres/utils/catcache.h +5 -6
- data/ext/pg_query/include/postgres/utils/date.h +1 -1
- data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
- data/ext/pg_query/include/postgres/utils/datum.h +1 -1
- data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
- data/ext/pg_query/include/postgres/utils/elog.h +3 -8
- data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/postgres/utils/float.h +1 -1
- data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
- data/ext/pg_query/include/postgres/utils/guc.h +20 -6
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
- data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
- data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +1 -1
- data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
- data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
- data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
- data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
- data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
- data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
- data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
- data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +11 -17
- data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
- data/ext/pg_query/include/postgres/utils/portal.h +9 -9
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
- data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
- data/ext/pg_query/include/postgres/utils/rel.h +14 -15
- data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
- data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
- data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
- data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
- data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
- data/ext/pg_query/include/postgres/utils/syscache.h +2 -98
- data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
- data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
- data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
- data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
- data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
- data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
- data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +4 -4
- data/ext/pg_query/include/postgres/varatt.h +1 -1
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
- data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
- data/ext/pg_query/pg_query.pb-c.c +6598 -3739
- data/ext/pg_query/pg_query_normalize.c +42 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
- data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -1
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/postgres_deparse.c +409 -21
- data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
- data/ext/pg_query/src_backend_commands_define.c +2 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +3 -7
- data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +34490 -32135
- data/ext/pg_query/src_backend_parser_parser.c +8 -8
- data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
- data/ext/pg_query/src_backend_parser_scansup.c +2 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
- data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
- data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
- data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
- data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
- data/ext/pg_query/src_common_encnames.c +43 -44
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +511 -466
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +3 -3
- data/ext/pg_query/src_common_stringinfo.c +18 -1
- data/ext/pg_query/src_common_wchar.c +45 -108
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_port_pg_bitutils.c +173 -28
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +1 -1
- data/ext/pg_query/src_port_strerror.c +1 -3
- data/ext/pg_query/src_port_strlcpy.c +1 -1
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +26 -3
- data/lib/pg_query/treewalker.rb +38 -11
- data/lib/pg_query/truncate.rb +1 -1
- data/lib/pg_query/version.rb +1 -1
- metadata +25 -11
- data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
- data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
- data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
|
@@ -196,6 +196,20 @@ static void deparseJsonArrayAgg(StringInfo str, JsonArrayAgg *json_array_agg);
|
|
|
196
196
|
static void deparseJsonObjectConstructor(StringInfo str, JsonObjectConstructor *json_object_constructor);
|
|
197
197
|
static void deparseJsonArrayConstructor(StringInfo str, JsonArrayConstructor *json_array_constructor);
|
|
198
198
|
static void deparseJsonArrayQueryConstructor(StringInfo str, JsonArrayQueryConstructor *json_array_query_constructor);
|
|
199
|
+
static void deparseJsonValueExpr(StringInfo str, JsonValueExpr *json_value_expr);
|
|
200
|
+
static void deparseJsonOutput(StringInfo str, JsonOutput *json_output);
|
|
201
|
+
static void deparseJsonParseExpr(StringInfo str, JsonParseExpr *json_parse_expr);
|
|
202
|
+
static void deparseJsonScalarExpr(StringInfo str, JsonScalarExpr *json_scalar_expr);
|
|
203
|
+
static void deparseJsonSerializeExpr(StringInfo str, JsonSerializeExpr *json_serialize_expr);
|
|
204
|
+
static void deparseJsonTable(StringInfo str, JsonTable *json_table);
|
|
205
|
+
static void deparseJsonTableColumn(StringInfo str, JsonTableColumn *json_table_column);
|
|
206
|
+
static void deparseJsonTableColumns(StringInfo str, List *json_table_columns);
|
|
207
|
+
static void deparseJsonTablePathSpec(StringInfo str, JsonTablePathSpec *json_table_path_spec);
|
|
208
|
+
static void deparseJsonBehavior(StringInfo str, JsonBehavior *json_behavior);
|
|
209
|
+
static void deparseJsonFuncExpr(StringInfo str, JsonFuncExpr *json_func_expr);
|
|
210
|
+
static void deparseJsonQuotesClauseOpt(StringInfo str, JsonQuotes quotes);
|
|
211
|
+
static void deparseJsonOnErrorClauseOpt(StringInfo str, JsonBehavior *behavior);
|
|
212
|
+
static void deparseJsonOnEmptyClauseOpt(StringInfo str, JsonBehavior *behavior);
|
|
199
213
|
static void deparseConstraint(StringInfo str, Constraint *constraint);
|
|
200
214
|
static void deparseSchemaStmt(StringInfo str, Node *node);
|
|
201
215
|
static void deparseExecuteStmt(StringInfo str, ExecuteStmt *execute_stmt);
|
|
@@ -340,6 +354,21 @@ static void deparseExpr(StringInfo str, Node *node)
|
|
|
340
354
|
case T_SetToDefault:
|
|
341
355
|
deparseSetToDefault(str, castNode(SetToDefault, node));
|
|
342
356
|
break;
|
|
357
|
+
case T_MergeSupportFunc:
|
|
358
|
+
appendStringInfoString(str, "merge_action() ");
|
|
359
|
+
break;
|
|
360
|
+
case T_JsonParseExpr:
|
|
361
|
+
deparseJsonParseExpr(str, castNode(JsonParseExpr, node));
|
|
362
|
+
break;
|
|
363
|
+
case T_JsonScalarExpr:
|
|
364
|
+
deparseJsonScalarExpr(str, castNode(JsonScalarExpr, node));
|
|
365
|
+
break;
|
|
366
|
+
case T_JsonSerializeExpr:
|
|
367
|
+
deparseJsonSerializeExpr(str, castNode(JsonSerializeExpr, node));
|
|
368
|
+
break;
|
|
369
|
+
case T_JsonFuncExpr:
|
|
370
|
+
deparseJsonFuncExpr(str, castNode(JsonFuncExpr, node));
|
|
371
|
+
break;
|
|
343
372
|
case T_FuncCall:
|
|
344
373
|
case T_SQLValueFunction:
|
|
345
374
|
case T_MinMaxExpr:
|
|
@@ -1654,6 +1683,9 @@ static void deparseTableRef(StringInfo str, Node *node)
|
|
|
1654
1683
|
case T_JoinExpr:
|
|
1655
1684
|
deparseJoinExpr(str, castNode(JoinExpr, node));
|
|
1656
1685
|
break;
|
|
1686
|
+
case T_JsonTable:
|
|
1687
|
+
deparseJsonTable(str, castNode(JsonTable, node));
|
|
1688
|
+
break;
|
|
1657
1689
|
default:
|
|
1658
1690
|
Assert(false);
|
|
1659
1691
|
}
|
|
@@ -2661,14 +2693,21 @@ static void deparseFuncCall(StringInfo str, FuncCall *func_call)
|
|
|
2661
2693
|
list_length(func_call->funcname) == 2 &&
|
|
2662
2694
|
strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 &&
|
|
2663
2695
|
strcmp(strVal(lsecond(func_call->funcname)), "timezone") == 0 &&
|
|
2664
|
-
list_length(func_call->args)
|
|
2696
|
+
list_length(func_call->args) > 0 &&
|
|
2697
|
+
list_length(func_call->args) <= 2)
|
|
2665
2698
|
{
|
|
2666
2699
|
/*
|
|
2667
2700
|
* "AT TIME ZONE" is a keyword on its own merit, and only accepts the
|
|
2668
2701
|
* keyword parameter style when its called as a keyword, not as a regular function (i.e. pg_catalog.timezone)
|
|
2669
2702
|
* Note that the arguments are swapped in this case
|
|
2670
2703
|
*/
|
|
2671
|
-
Expr* e
|
|
2704
|
+
Expr* e;
|
|
2705
|
+
bool isLocal = list_length(func_call->args) == 1;
|
|
2706
|
+
|
|
2707
|
+
if (isLocal)
|
|
2708
|
+
e = linitial(func_call->args);
|
|
2709
|
+
else
|
|
2710
|
+
e = lsecond(func_call->args);
|
|
2672
2711
|
|
|
2673
2712
|
if (IsA(e, A_Expr)) {
|
|
2674
2713
|
appendStringInfoChar(str, '(');
|
|
@@ -2680,8 +2719,12 @@ static void deparseFuncCall(StringInfo str, FuncCall *func_call)
|
|
|
2680
2719
|
appendStringInfoChar(str, ')');
|
|
2681
2720
|
}
|
|
2682
2721
|
|
|
2683
|
-
|
|
2684
|
-
|
|
2722
|
+
if (isLocal)
|
|
2723
|
+
appendStringInfoString(str, " AT LOCAL");
|
|
2724
|
+
else {
|
|
2725
|
+
appendStringInfoString(str, " AT TIME ZONE ");
|
|
2726
|
+
deparseExpr(str, linitial(func_call->args));
|
|
2727
|
+
}
|
|
2685
2728
|
return;
|
|
2686
2729
|
} else if (func_call->funcformat == COERCE_SQL_SYNTAX &&
|
|
2687
2730
|
list_length(func_call->funcname) == 2 &&
|
|
@@ -4006,7 +4049,8 @@ static void deparseAIndirection(StringInfo str, A_Indirection *a_indirection)
|
|
|
4006
4049
|
IsA(a_indirection->arg, A_Expr) ||
|
|
4007
4050
|
IsA(a_indirection->arg, TypeCast) ||
|
|
4008
4051
|
IsA(a_indirection->arg, RowExpr) ||
|
|
4009
|
-
(IsA(a_indirection->arg, ColumnRef) && !IsA(linitial(a_indirection->indirection), A_Indices))
|
|
4052
|
+
(IsA(a_indirection->arg, ColumnRef) && !IsA(linitial(a_indirection->indirection), A_Indices)) ||
|
|
4053
|
+
IsA(a_indirection->arg, JsonFuncExpr);
|
|
4010
4054
|
|
|
4011
4055
|
if (need_parens)
|
|
4012
4056
|
appendStringInfoChar(str, '(');
|
|
@@ -4332,20 +4376,26 @@ static void deparseMergeStmt(StringInfo str, MergeStmt *merge_stmt)
|
|
|
4332
4376
|
deparseExpr(str, merge_stmt->joinCondition);
|
|
4333
4377
|
appendStringInfoChar(str, ' ');
|
|
4334
4378
|
|
|
4335
|
-
ListCell *lc
|
|
4379
|
+
ListCell *lc;
|
|
4336
4380
|
foreach (lc, merge_stmt->mergeWhenClauses)
|
|
4337
4381
|
{
|
|
4338
4382
|
MergeWhenClause *clause = castNode(MergeWhenClause, lfirst(lc));
|
|
4339
4383
|
|
|
4340
4384
|
appendStringInfoString(str, "WHEN ");
|
|
4341
4385
|
|
|
4342
|
-
|
|
4386
|
+
switch (clause->matchKind)
|
|
4343
4387
|
{
|
|
4344
|
-
|
|
4388
|
+
case MERGE_WHEN_MATCHED:
|
|
4389
|
+
appendStringInfoString(str, "MATCHED ");
|
|
4390
|
+
break;
|
|
4391
|
+
case MERGE_WHEN_NOT_MATCHED_BY_SOURCE:
|
|
4392
|
+
appendStringInfoString(str, "NOT MATCHED BY SOURCE ");
|
|
4393
|
+
break;
|
|
4394
|
+
case MERGE_WHEN_NOT_MATCHED_BY_TARGET:
|
|
4395
|
+
appendStringInfoString(str, "NOT MATCHED ");
|
|
4396
|
+
break;
|
|
4345
4397
|
}
|
|
4346
4398
|
|
|
4347
|
-
appendStringInfoString(str, "MATCHED ");
|
|
4348
|
-
|
|
4349
4399
|
if (clause->condition)
|
|
4350
4400
|
{
|
|
4351
4401
|
appendStringInfoString(str, "AND ");
|
|
@@ -4394,6 +4444,12 @@ static void deparseMergeStmt(StringInfo str, MergeStmt *merge_stmt)
|
|
|
4394
4444
|
if (lfirst(lc) != llast(merge_stmt->mergeWhenClauses))
|
|
4395
4445
|
appendStringInfoChar(str, ' ');
|
|
4396
4446
|
}
|
|
4447
|
+
|
|
4448
|
+
if (merge_stmt->returningList)
|
|
4449
|
+
{
|
|
4450
|
+
appendStringInfoString(str, " RETURNING ");
|
|
4451
|
+
deparseTargetList(str, merge_stmt->returningList);
|
|
4452
|
+
}
|
|
4397
4453
|
}
|
|
4398
4454
|
|
|
4399
4455
|
static void deparseDeleteStmt(StringInfo str, DeleteStmt *delete_stmt)
|
|
@@ -4823,9 +4879,18 @@ static void deparseConstraint(StringInfo str, Constraint *constraint)
|
|
|
4823
4879
|
|
|
4824
4880
|
if (list_length(constraint->keys) > 0)
|
|
4825
4881
|
{
|
|
4826
|
-
|
|
4827
|
-
|
|
4828
|
-
|
|
4882
|
+
bool valueOnly = false;
|
|
4883
|
+
|
|
4884
|
+
if (list_length(constraint->keys) == 1) {
|
|
4885
|
+
Node* firstKey = constraint->keys->elements[0].ptr_value;
|
|
4886
|
+
valueOnly = IsA(firstKey, String) && !strcmp("value", ((String*)firstKey)->sval);
|
|
4887
|
+
}
|
|
4888
|
+
|
|
4889
|
+
if (!valueOnly) {
|
|
4890
|
+
appendStringInfoChar(str, '(');
|
|
4891
|
+
deparseColumnList(str, constraint->keys);
|
|
4892
|
+
appendStringInfoString(str, ") ");
|
|
4893
|
+
}
|
|
4829
4894
|
}
|
|
4830
4895
|
|
|
4831
4896
|
if (list_length(constraint->fk_attrs) > 0)
|
|
@@ -6525,6 +6590,9 @@ static void deparseAlterTableCmd(StringInfo str, AlterTableCmd *alter_table_cmd,
|
|
|
6525
6590
|
options = "DROP IDENTITY";
|
|
6526
6591
|
trailing_missing_ok = true;
|
|
6527
6592
|
break;
|
|
6593
|
+
case AT_SetExpression:
|
|
6594
|
+
appendStringInfoString(str, "ALTER COLUMN ");
|
|
6595
|
+
break;
|
|
6528
6596
|
}
|
|
6529
6597
|
|
|
6530
6598
|
if (alter_table_cmd->missing_ok && !trailing_missing_ok)
|
|
@@ -6539,6 +6607,9 @@ static void deparseAlterTableCmd(StringInfo str, AlterTableCmd *alter_table_cmd,
|
|
|
6539
6607
|
{
|
|
6540
6608
|
appendStringInfoString(str, quote_identifier(alter_table_cmd->name));
|
|
6541
6609
|
appendStringInfoChar(str, ' ');
|
|
6610
|
+
} else if (alter_table_cmd->subtype == AT_SetAccessMethod)
|
|
6611
|
+
{
|
|
6612
|
+
appendStringInfoString(str, " DEFAULT");
|
|
6542
6613
|
}
|
|
6543
6614
|
|
|
6544
6615
|
if (alter_table_cmd->num > 0)
|
|
@@ -6626,6 +6697,11 @@ static void deparseAlterTableCmd(StringInfo str, AlterTableCmd *alter_table_cmd,
|
|
|
6626
6697
|
deparseReplicaIdentityStmt(str, castNode(ReplicaIdentityStmt, alter_table_cmd->def));
|
|
6627
6698
|
appendStringInfoChar(str, ' ');
|
|
6628
6699
|
break;
|
|
6700
|
+
case AT_SetExpression:
|
|
6701
|
+
appendStringInfoString(str, "SET EXPRESSION AS (");
|
|
6702
|
+
deparseExpr(str, alter_table_cmd->def);
|
|
6703
|
+
appendStringInfoChar(str, ')');
|
|
6704
|
+
break;
|
|
6629
6705
|
default:
|
|
6630
6706
|
Assert(alter_table_cmd->def == NULL);
|
|
6631
6707
|
break;
|
|
@@ -7509,15 +7585,29 @@ static void deparseCopyStmt(StringInfo str, CopyStmt *copy_stmt)
|
|
|
7509
7585
|
}
|
|
7510
7586
|
else if (strcmp(def_elem->defname, "force_not_null") == 0)
|
|
7511
7587
|
{
|
|
7512
|
-
appendStringInfoString(str, "FORCE_NOT_NULL
|
|
7513
|
-
|
|
7514
|
-
|
|
7588
|
+
appendStringInfoString(str, "FORCE_NOT_NULL ");
|
|
7589
|
+
|
|
7590
|
+
if (IsA(def_elem->arg, A_Star))
|
|
7591
|
+
deparseAStar(str, castNode(A_Star, def_elem->arg));
|
|
7592
|
+
else
|
|
7593
|
+
{
|
|
7594
|
+
appendStringInfoChar(str, '(');
|
|
7595
|
+
deparseColumnList(str, castNode(List, def_elem->arg));
|
|
7596
|
+
appendStringInfoChar(str, ')');
|
|
7597
|
+
}
|
|
7515
7598
|
}
|
|
7516
7599
|
else if (strcmp(def_elem->defname, "force_null") == 0)
|
|
7517
7600
|
{
|
|
7518
|
-
appendStringInfoString(str, "FORCE_NULL
|
|
7519
|
-
|
|
7520
|
-
|
|
7601
|
+
appendStringInfoString(str, "FORCE_NULL ");
|
|
7602
|
+
|
|
7603
|
+
if (IsA(def_elem->arg, A_Star))
|
|
7604
|
+
deparseAStar(str, castNode(A_Star, def_elem->arg));
|
|
7605
|
+
else
|
|
7606
|
+
{
|
|
7607
|
+
appendStringInfoChar(str, '(');
|
|
7608
|
+
deparseColumnList(str, castNode(List, def_elem->arg));
|
|
7609
|
+
appendStringInfoChar(str, ')');
|
|
7610
|
+
}
|
|
7521
7611
|
}
|
|
7522
7612
|
else if (strcmp(def_elem->defname, "encoding") == 0)
|
|
7523
7613
|
{
|
|
@@ -8617,7 +8707,7 @@ static void deparseFetchStmt(StringInfo str, FetchStmt *fetch_stmt)
|
|
|
8617
8707
|
appendStringInfo(str, "RELATIVE %ld ", fetch_stmt->howMany);
|
|
8618
8708
|
}
|
|
8619
8709
|
|
|
8620
|
-
appendStringInfoString(str, fetch_stmt->portalname);
|
|
8710
|
+
appendStringInfoString(str, quote_identifier(fetch_stmt->portalname));
|
|
8621
8711
|
}
|
|
8622
8712
|
|
|
8623
8713
|
static void deparseAlterDefaultPrivilegesStmt(StringInfo str, AlterDefaultPrivilegesStmt *alter_default_privileges_stmt)
|
|
@@ -9559,7 +9649,10 @@ static void deparseAlterStatsStmt(StringInfo str, AlterStatsStmt *alter_stats_st
|
|
|
9559
9649
|
deparseAnyName(str, alter_stats_stmt->defnames);
|
|
9560
9650
|
appendStringInfoChar(str, ' ');
|
|
9561
9651
|
|
|
9562
|
-
|
|
9652
|
+
if (alter_stats_stmt->stxstattarget)
|
|
9653
|
+
appendStringInfo(str, "SET STATISTICS %d", castNode(Integer, alter_stats_stmt->stxstattarget)->ival);
|
|
9654
|
+
else
|
|
9655
|
+
appendStringInfo(str, "SET STATISTICS DEFAULT");
|
|
9563
9656
|
}
|
|
9564
9657
|
|
|
9565
9658
|
static void deparseAlterTSDictionaryStmt(StringInfo str, AlterTSDictionaryStmt *alter_ts_dictionary_stmt)
|
|
@@ -10506,6 +10599,301 @@ static void deparseJsonArrayQueryConstructor(StringInfo str, JsonArrayQueryConst
|
|
|
10506
10599
|
appendStringInfoChar(str, ')');
|
|
10507
10600
|
}
|
|
10508
10601
|
|
|
10602
|
+
static void deparseJsonParseExpr(StringInfo str, JsonParseExpr *json_parse_expr)
|
|
10603
|
+
{
|
|
10604
|
+
appendStringInfoString(str, "JSON(");
|
|
10605
|
+
|
|
10606
|
+
deparseJsonValueExpr(str, json_parse_expr->expr);
|
|
10607
|
+
|
|
10608
|
+
if (json_parse_expr->unique_keys)
|
|
10609
|
+
appendStringInfoString(str, " WITH UNIQUE KEYS");
|
|
10610
|
+
|
|
10611
|
+
appendStringInfoString(str, ")");
|
|
10612
|
+
}
|
|
10613
|
+
|
|
10614
|
+
static void deparseJsonScalarExpr(StringInfo str, JsonScalarExpr *json_scalar_expr)
|
|
10615
|
+
{
|
|
10616
|
+
appendStringInfoString(str, "JSON_SCALAR(");
|
|
10617
|
+
deparseExpr(str, (Node*) json_scalar_expr->expr);
|
|
10618
|
+
appendStringInfoString(str, ")");
|
|
10619
|
+
}
|
|
10620
|
+
|
|
10621
|
+
static void deparseJsonSerializeExpr(StringInfo str, JsonSerializeExpr *json_serialize_expr)
|
|
10622
|
+
{
|
|
10623
|
+
appendStringInfoString(str, "JSON_SERIALIZE(");
|
|
10624
|
+
|
|
10625
|
+
deparseJsonValueExpr(str, json_serialize_expr->expr);
|
|
10626
|
+
|
|
10627
|
+
if (json_serialize_expr->output)
|
|
10628
|
+
deparseJsonOutput(str, json_serialize_expr->output);
|
|
10629
|
+
|
|
10630
|
+
appendStringInfoString(str, ")");
|
|
10631
|
+
}
|
|
10632
|
+
|
|
10633
|
+
static void deparseJsonQuotesClauseOpt(StringInfo str, JsonQuotes quotes)
|
|
10634
|
+
{
|
|
10635
|
+
switch (quotes)
|
|
10636
|
+
{
|
|
10637
|
+
case JS_QUOTES_UNSPEC:
|
|
10638
|
+
break;
|
|
10639
|
+
case JS_QUOTES_KEEP:
|
|
10640
|
+
appendStringInfoString(str, " KEEP QUOTES");
|
|
10641
|
+
break;
|
|
10642
|
+
case JS_QUOTES_OMIT:
|
|
10643
|
+
appendStringInfoString(str, " OMIT QUOTES");
|
|
10644
|
+
break;
|
|
10645
|
+
}
|
|
10646
|
+
}
|
|
10647
|
+
|
|
10648
|
+
static void deparseJsonOnErrorClauseOpt(StringInfo str, JsonBehavior *behavior)
|
|
10649
|
+
{
|
|
10650
|
+
if (!behavior)
|
|
10651
|
+
return;
|
|
10652
|
+
|
|
10653
|
+
appendStringInfoChar(str, ' ');
|
|
10654
|
+
deparseJsonBehavior(str, behavior);
|
|
10655
|
+
appendStringInfoString(str, " ON ERROR");
|
|
10656
|
+
}
|
|
10657
|
+
|
|
10658
|
+
static void deparseJsonOnEmptyClauseOpt(StringInfo str, JsonBehavior *behavior)
|
|
10659
|
+
{
|
|
10660
|
+
if (behavior)
|
|
10661
|
+
{
|
|
10662
|
+
appendStringInfoChar(str, ' ');
|
|
10663
|
+
deparseJsonBehavior(str, behavior);
|
|
10664
|
+
appendStringInfoString(str, " ON EMPTY");
|
|
10665
|
+
}
|
|
10666
|
+
}
|
|
10667
|
+
|
|
10668
|
+
static void deparseJsonFuncExpr(StringInfo str, JsonFuncExpr *json_func_expr)
|
|
10669
|
+
{
|
|
10670
|
+
switch (json_func_expr->op)
|
|
10671
|
+
{
|
|
10672
|
+
case JSON_EXISTS_OP:
|
|
10673
|
+
appendStringInfoString(str, "JSON_EXISTS(");
|
|
10674
|
+
break;
|
|
10675
|
+
case JSON_QUERY_OP:
|
|
10676
|
+
appendStringInfoString(str, "JSON_QUERY(");
|
|
10677
|
+
break;
|
|
10678
|
+
case JSON_VALUE_OP:
|
|
10679
|
+
appendStringInfoString(str, "JSON_VALUE(");
|
|
10680
|
+
break;
|
|
10681
|
+
case JSON_TABLE_OP:
|
|
10682
|
+
appendStringInfoString(str, "JSON_TABLE(");
|
|
10683
|
+
break;
|
|
10684
|
+
}
|
|
10685
|
+
|
|
10686
|
+
deparseJsonValueExpr(str, json_func_expr->context_item);
|
|
10687
|
+
appendStringInfoString(str, ", ");
|
|
10688
|
+
deparseExpr(str, json_func_expr->pathspec);
|
|
10689
|
+
|
|
10690
|
+
if (json_func_expr->passing)
|
|
10691
|
+
appendStringInfoString(str, " PASSING ");
|
|
10692
|
+
|
|
10693
|
+
ListCell *lc = NULL;
|
|
10694
|
+
foreach (lc, json_func_expr->passing)
|
|
10695
|
+
{
|
|
10696
|
+
JsonArgument *json_argument = castNode(JsonArgument, lfirst(lc));
|
|
10697
|
+
deparseJsonValueExpr(str, json_argument->val);
|
|
10698
|
+
appendStringInfoString(str, " AS ");
|
|
10699
|
+
deparseColLabel(str, json_argument->name);
|
|
10700
|
+
|
|
10701
|
+
if (lnext(json_func_expr->passing, lc))
|
|
10702
|
+
appendStringInfoString(str, ", ");
|
|
10703
|
+
}
|
|
10704
|
+
|
|
10705
|
+
if (json_func_expr->output)
|
|
10706
|
+
{
|
|
10707
|
+
appendStringInfoChar(str, ' ');
|
|
10708
|
+
deparseJsonOutput(str, json_func_expr->output);
|
|
10709
|
+
}
|
|
10710
|
+
|
|
10711
|
+
switch (json_func_expr->wrapper)
|
|
10712
|
+
{
|
|
10713
|
+
case JSW_UNSPEC:
|
|
10714
|
+
break;
|
|
10715
|
+
case JSW_NONE:
|
|
10716
|
+
appendStringInfoString(str, " WITHOUT WRAPPER");
|
|
10717
|
+
break;
|
|
10718
|
+
case JSW_CONDITIONAL:
|
|
10719
|
+
appendStringInfoString(str, " WITH CONDITIONAL WRAPPER");
|
|
10720
|
+
break;
|
|
10721
|
+
case JSW_UNCONDITIONAL:
|
|
10722
|
+
appendStringInfoString(str, " WITH UNCONDITIONAL WRAPPER");
|
|
10723
|
+
break;
|
|
10724
|
+
}
|
|
10725
|
+
|
|
10726
|
+
deparseJsonQuotesClauseOpt(str, json_func_expr->quotes);
|
|
10727
|
+
deparseJsonOnEmptyClauseOpt(str, json_func_expr->on_empty);
|
|
10728
|
+
deparseJsonOnErrorClauseOpt(str, json_func_expr->on_error);
|
|
10729
|
+
|
|
10730
|
+
appendStringInfoChar(str, ')');
|
|
10731
|
+
}
|
|
10732
|
+
|
|
10733
|
+
static void deparseJsonTablePathSpec(StringInfo str, JsonTablePathSpec *json_table_path_spec)
|
|
10734
|
+
{
|
|
10735
|
+
deparseStringLiteral(str, castNode(A_Const, json_table_path_spec->string)->val.sval.sval);
|
|
10736
|
+
|
|
10737
|
+
if (json_table_path_spec->name)
|
|
10738
|
+
{
|
|
10739
|
+
appendStringInfoString(str, " AS ");
|
|
10740
|
+
deparseColLabel(str, json_table_path_spec->name);
|
|
10741
|
+
}
|
|
10742
|
+
}
|
|
10743
|
+
|
|
10744
|
+
static void deparseJsonBehavior(StringInfo str, JsonBehavior *json_behavior)
|
|
10745
|
+
{
|
|
10746
|
+
switch (json_behavior->btype)
|
|
10747
|
+
{
|
|
10748
|
+
case JSON_BEHAVIOR_NULL:
|
|
10749
|
+
appendStringInfoString(str, "NULL");
|
|
10750
|
+
break;
|
|
10751
|
+
case JSON_BEHAVIOR_ERROR:
|
|
10752
|
+
appendStringInfoString(str, "ERROR");
|
|
10753
|
+
break;
|
|
10754
|
+
case JSON_BEHAVIOR_EMPTY:
|
|
10755
|
+
appendStringInfoString(str, "EMPTY");
|
|
10756
|
+
break;
|
|
10757
|
+
case JSON_BEHAVIOR_TRUE:
|
|
10758
|
+
appendStringInfoString(str, "TRUE");
|
|
10759
|
+
break;
|
|
10760
|
+
case JSON_BEHAVIOR_FALSE:
|
|
10761
|
+
appendStringInfoString(str, "FALSE");
|
|
10762
|
+
break;
|
|
10763
|
+
case JSON_BEHAVIOR_EMPTY_ARRAY:
|
|
10764
|
+
appendStringInfoString(str, "EMPTY ARRAY");
|
|
10765
|
+
break;
|
|
10766
|
+
case JSON_BEHAVIOR_EMPTY_OBJECT:
|
|
10767
|
+
appendStringInfoString(str, "EMPTY OBJECT");
|
|
10768
|
+
break;
|
|
10769
|
+
case JSON_BEHAVIOR_DEFAULT:
|
|
10770
|
+
appendStringInfoString(str, "DEFAULT ");
|
|
10771
|
+
deparseExpr(str, (Node*) json_behavior->expr);
|
|
10772
|
+
break;
|
|
10773
|
+
case JSON_BEHAVIOR_UNKNOWN:
|
|
10774
|
+
appendStringInfoString(str, "UNKNOWN");
|
|
10775
|
+
break;
|
|
10776
|
+
}
|
|
10777
|
+
}
|
|
10778
|
+
|
|
10779
|
+
static void deparseJsonTableColumn(StringInfo str, JsonTableColumn *json_table_column)
|
|
10780
|
+
{
|
|
10781
|
+
if (json_table_column->coltype == JTC_NESTED)
|
|
10782
|
+
{
|
|
10783
|
+
appendStringInfoString(str, "NESTED PATH ");
|
|
10784
|
+
deparseJsonTablePathSpec(str, json_table_column->pathspec);
|
|
10785
|
+
deparseJsonTableColumns(str, json_table_column->columns);
|
|
10786
|
+
return;
|
|
10787
|
+
}
|
|
10788
|
+
|
|
10789
|
+
deparseColLabel(str, json_table_column->name);
|
|
10790
|
+
appendStringInfoChar(str, ' ');
|
|
10791
|
+
|
|
10792
|
+
switch (json_table_column->coltype)
|
|
10793
|
+
{
|
|
10794
|
+
case JTC_FOR_ORDINALITY:
|
|
10795
|
+
appendStringInfoString(str, " FOR ORDINALITY");
|
|
10796
|
+
break;
|
|
10797
|
+
case JTC_EXISTS:
|
|
10798
|
+
case JTC_FORMATTED:
|
|
10799
|
+
case JTC_REGULAR:
|
|
10800
|
+
deparseTypeName(str, json_table_column->typeName);
|
|
10801
|
+
|
|
10802
|
+
if (json_table_column->coltype == JTC_EXISTS)
|
|
10803
|
+
appendStringInfoString(str, " EXISTS ");
|
|
10804
|
+
else
|
|
10805
|
+
appendStringInfoChar(str, ' ');
|
|
10806
|
+
|
|
10807
|
+
if (json_table_column->format)
|
|
10808
|
+
deparseJsonFormat(str, json_table_column->format);
|
|
10809
|
+
|
|
10810
|
+
if (json_table_column->pathspec)
|
|
10811
|
+
{
|
|
10812
|
+
appendStringInfoString(str, "PATH ");
|
|
10813
|
+
deparseJsonTablePathSpec(str, json_table_column->pathspec);
|
|
10814
|
+
}
|
|
10815
|
+
break;
|
|
10816
|
+
case JTC_NESTED:
|
|
10817
|
+
Assert(false);
|
|
10818
|
+
}
|
|
10819
|
+
|
|
10820
|
+
switch (json_table_column->wrapper)
|
|
10821
|
+
{
|
|
10822
|
+
case JSW_UNSPEC:
|
|
10823
|
+
break;
|
|
10824
|
+
case JSW_NONE:
|
|
10825
|
+
if (json_table_column->coltype == JTC_REGULAR || json_table_column->coltype == JTC_FORMATTED)
|
|
10826
|
+
appendStringInfoString(str, " WITHOUT WRAPPER");
|
|
10827
|
+
break;
|
|
10828
|
+
case JSW_CONDITIONAL:
|
|
10829
|
+
appendStringInfoString(str, " WITH CONDITIONAL WRAPPER");
|
|
10830
|
+
break;
|
|
10831
|
+
case JSW_UNCONDITIONAL:
|
|
10832
|
+
appendStringInfoString(str, " WITH UNCONDITIONAL WRAPPER");
|
|
10833
|
+
break;
|
|
10834
|
+
}
|
|
10835
|
+
|
|
10836
|
+
deparseJsonQuotesClauseOpt(str, json_table_column->quotes);
|
|
10837
|
+
deparseJsonOnEmptyClauseOpt(str, json_table_column->on_empty);
|
|
10838
|
+
deparseJsonOnErrorClauseOpt(str, json_table_column->on_error);
|
|
10839
|
+
}
|
|
10840
|
+
|
|
10841
|
+
static void deparseJsonTableColumns(StringInfo str, List *json_table_columns)
|
|
10842
|
+
{
|
|
10843
|
+
appendStringInfoString(str, " COLUMNS (");
|
|
10844
|
+
|
|
10845
|
+
ListCell *lc = NULL;
|
|
10846
|
+
foreach(lc, json_table_columns)
|
|
10847
|
+
{
|
|
10848
|
+
deparseJsonTableColumn(str, castNode(JsonTableColumn, lfirst(lc)));
|
|
10849
|
+
|
|
10850
|
+
if (lnext(json_table_columns, lc))
|
|
10851
|
+
appendStringInfoString(str, ", ");
|
|
10852
|
+
}
|
|
10853
|
+
|
|
10854
|
+
appendStringInfoChar(str, ')');
|
|
10855
|
+
}
|
|
10856
|
+
|
|
10857
|
+
static void deparseJsonTable(StringInfo str, JsonTable *json_table)
|
|
10858
|
+
{
|
|
10859
|
+
appendStringInfoString(str, "JSON_TABLE(");
|
|
10860
|
+
|
|
10861
|
+
deparseJsonValueExpr(str, json_table->context_item);
|
|
10862
|
+
appendStringInfoString(str, ", ");
|
|
10863
|
+
deparseJsonTablePathSpec(str, json_table->pathspec);
|
|
10864
|
+
|
|
10865
|
+
if (json_table->passing)
|
|
10866
|
+
appendStringInfoString(str, " PASSING ");
|
|
10867
|
+
|
|
10868
|
+
ListCell *lc = NULL;
|
|
10869
|
+
foreach (lc, json_table->passing)
|
|
10870
|
+
{
|
|
10871
|
+
JsonArgument *json_argument = castNode(JsonArgument, lfirst(lc));
|
|
10872
|
+
deparseJsonValueExpr(str, json_argument->val);
|
|
10873
|
+
appendStringInfoString(str, " AS ");
|
|
10874
|
+
deparseColLabel(str, json_argument->name);
|
|
10875
|
+
|
|
10876
|
+
if (lnext(json_table->passing, lc))
|
|
10877
|
+
appendStringInfoString(str, ", ");
|
|
10878
|
+
}
|
|
10879
|
+
|
|
10880
|
+
deparseJsonTableColumns(str, json_table->columns);
|
|
10881
|
+
|
|
10882
|
+
if (json_table->on_error)
|
|
10883
|
+
{
|
|
10884
|
+
deparseJsonBehavior(str, json_table->on_error);
|
|
10885
|
+
appendStringInfoString(str, " ON ERROR");
|
|
10886
|
+
}
|
|
10887
|
+
|
|
10888
|
+
appendStringInfoChar(str, ')');
|
|
10889
|
+
|
|
10890
|
+
if (json_table->alias)
|
|
10891
|
+
{
|
|
10892
|
+
appendStringInfoChar(str, ' ');
|
|
10893
|
+
deparseAlias(str, json_table->alias);
|
|
10894
|
+
}
|
|
10895
|
+
}
|
|
10896
|
+
|
|
10509
10897
|
static void deparseGroupingFunc(StringInfo str, GroupingFunc *grouping_func)
|
|
10510
10898
|
{
|
|
10511
10899
|
appendStringInfoString(str, "GROUPING(");
|