gitlab-pg_query 1.3.1 → 2.0.4
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 +217 -99
- data/README.md +92 -69
- data/Rakefile +85 -5
- data/ext/pg_query/extconf.rb +3 -40
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/amapi.h +246 -0
- data/ext/pg_query/include/access/attmap.h +52 -0
- data/ext/pg_query/include/access/attnum.h +64 -0
- data/ext/pg_query/include/access/clog.h +61 -0
- data/ext/pg_query/include/access/commit_ts.h +77 -0
- data/ext/pg_query/include/access/detoast.h +92 -0
- data/ext/pg_query/include/access/genam.h +228 -0
- data/ext/pg_query/include/access/gin.h +78 -0
- data/ext/pg_query/include/access/htup.h +89 -0
- data/ext/pg_query/include/access/htup_details.h +819 -0
- data/ext/pg_query/include/access/itup.h +161 -0
- data/ext/pg_query/include/access/parallel.h +82 -0
- data/ext/pg_query/include/access/printtup.h +35 -0
- data/ext/pg_query/include/access/relation.h +28 -0
- data/ext/pg_query/include/access/relscan.h +176 -0
- data/ext/pg_query/include/access/rmgr.h +35 -0
- data/ext/pg_query/include/access/rmgrlist.h +49 -0
- data/ext/pg_query/include/access/sdir.h +58 -0
- data/ext/pg_query/include/access/skey.h +151 -0
- data/ext/pg_query/include/access/stratnum.h +83 -0
- data/ext/pg_query/include/access/sysattr.h +29 -0
- data/ext/pg_query/include/access/table.h +27 -0
- data/ext/pg_query/include/access/tableam.h +1825 -0
- data/ext/pg_query/include/access/transam.h +265 -0
- data/ext/pg_query/include/access/tupconvert.h +51 -0
- data/ext/pg_query/include/access/tupdesc.h +154 -0
- data/ext/pg_query/include/access/tupmacs.h +247 -0
- data/ext/pg_query/include/access/twophase.h +61 -0
- data/ext/pg_query/include/access/xact.h +463 -0
- data/ext/pg_query/include/access/xlog.h +398 -0
- data/ext/pg_query/include/access/xlog_internal.h +330 -0
- data/ext/pg_query/include/access/xlogdefs.h +109 -0
- data/ext/pg_query/include/access/xloginsert.h +64 -0
- data/ext/pg_query/include/access/xlogreader.h +327 -0
- data/ext/pg_query/include/access/xlogrecord.h +227 -0
- data/ext/pg_query/include/bootstrap/bootstrap.h +62 -0
- data/ext/pg_query/include/c.h +1322 -0
- data/ext/pg_query/include/catalog/catalog.h +42 -0
- data/ext/pg_query/include/catalog/catversion.h +58 -0
- data/ext/pg_query/include/catalog/dependency.h +275 -0
- data/ext/pg_query/include/catalog/genbki.h +64 -0
- data/ext/pg_query/include/catalog/index.h +199 -0
- data/ext/pg_query/include/catalog/indexing.h +366 -0
- data/ext/pg_query/include/catalog/namespace.h +188 -0
- data/ext/pg_query/include/catalog/objectaccess.h +197 -0
- data/ext/pg_query/include/catalog/objectaddress.h +84 -0
- data/ext/pg_query/include/catalog/pg_aggregate.h +176 -0
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +77 -0
- data/ext/pg_query/include/catalog/pg_am.h +60 -0
- data/ext/pg_query/include/catalog/pg_am_d.h +45 -0
- data/ext/pg_query/include/catalog/pg_attribute.h +204 -0
- data/ext/pg_query/include/catalog/pg_attribute_d.h +59 -0
- data/ext/pg_query/include/catalog/pg_authid.h +58 -0
- data/ext/pg_query/include/catalog/pg_authid_d.h +49 -0
- data/ext/pg_query/include/catalog/pg_class.h +200 -0
- data/ext/pg_query/include/catalog/pg_class_d.h +103 -0
- data/ext/pg_query/include/catalog/pg_collation.h +73 -0
- data/ext/pg_query/include/catalog/pg_collation_d.h +45 -0
- data/ext/pg_query/include/catalog/pg_constraint.h +247 -0
- data/ext/pg_query/include/catalog/pg_constraint_d.h +67 -0
- data/ext/pg_query/include/catalog/pg_control.h +250 -0
- data/ext/pg_query/include/catalog/pg_conversion.h +72 -0
- data/ext/pg_query/include/catalog/pg_conversion_d.h +35 -0
- data/ext/pg_query/include/catalog/pg_depend.h +73 -0
- data/ext/pg_query/include/catalog/pg_depend_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_event_trigger.h +51 -0
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_index.h +80 -0
- data/ext/pg_query/include/catalog/pg_index_d.h +56 -0
- data/ext/pg_query/include/catalog/pg_language.h +67 -0
- data/ext/pg_query/include/catalog/pg_language_d.h +39 -0
- data/ext/pg_query/include/catalog/pg_namespace.h +59 -0
- data/ext/pg_query/include/catalog/pg_namespace_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_opclass.h +85 -0
- data/ext/pg_query/include/catalog/pg_opclass_d.h +49 -0
- data/ext/pg_query/include/catalog/pg_operator.h +102 -0
- data/ext/pg_query/include/catalog/pg_operator_d.h +106 -0
- data/ext/pg_query/include/catalog/pg_opfamily.h +60 -0
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +47 -0
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +63 -0
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +35 -0
- data/ext/pg_query/include/catalog/pg_proc.h +211 -0
- data/ext/pg_query/include/catalog/pg_proc_d.h +99 -0
- data/ext/pg_query/include/catalog/pg_publication.h +115 -0
- data/ext/pg_query/include/catalog/pg_publication_d.h +36 -0
- data/ext/pg_query/include/catalog/pg_replication_origin.h +57 -0
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +29 -0
- data/ext/pg_query/include/catalog/pg_statistic.h +275 -0
- data/ext/pg_query/include/catalog/pg_statistic_d.h +194 -0
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +74 -0
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +40 -0
- data/ext/pg_query/include/catalog/pg_transform.h +45 -0
- data/ext/pg_query/include/catalog/pg_transform_d.h +32 -0
- data/ext/pg_query/include/catalog/pg_trigger.h +137 -0
- data/ext/pg_query/include/catalog/pg_trigger_d.h +106 -0
- data/ext/pg_query/include/catalog/pg_ts_config.h +50 -0
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +32 -0
- data/ext/pg_query/include/catalog/pg_ts_dict.h +54 -0
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +33 -0
- data/ext/pg_query/include/catalog/pg_ts_parser.h +57 -0
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +35 -0
- data/ext/pg_query/include/catalog/pg_ts_template.h +48 -0
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +32 -0
- data/ext/pg_query/include/catalog/pg_type.h +372 -0
- data/ext/pg_query/include/catalog/pg_type_d.h +285 -0
- data/ext/pg_query/include/catalog/storage.h +48 -0
- data/ext/pg_query/include/commands/async.h +54 -0
- data/ext/pg_query/include/commands/dbcommands.h +35 -0
- data/ext/pg_query/include/commands/defrem.h +173 -0
- data/ext/pg_query/include/commands/event_trigger.h +88 -0
- data/ext/pg_query/include/commands/explain.h +127 -0
- data/ext/pg_query/include/commands/prepare.h +61 -0
- data/ext/pg_query/include/commands/tablespace.h +67 -0
- data/ext/pg_query/include/commands/trigger.h +277 -0
- data/ext/pg_query/include/commands/user.h +37 -0
- data/ext/pg_query/include/commands/vacuum.h +293 -0
- data/ext/pg_query/include/commands/variable.h +38 -0
- data/ext/pg_query/include/common/file_perm.h +56 -0
- data/ext/pg_query/include/common/hashfn.h +104 -0
- data/ext/pg_query/include/common/ip.h +37 -0
- data/ext/pg_query/include/common/keywords.h +33 -0
- data/ext/pg_query/include/common/kwlookup.h +44 -0
- data/ext/pg_query/include/common/relpath.h +90 -0
- data/ext/pg_query/include/common/string.h +19 -0
- data/ext/pg_query/include/common/unicode_combining_table.h +196 -0
- data/ext/pg_query/include/datatype/timestamp.h +197 -0
- data/ext/pg_query/include/executor/execdesc.h +70 -0
- data/ext/pg_query/include/executor/executor.h +614 -0
- data/ext/pg_query/include/executor/functions.h +41 -0
- data/ext/pg_query/include/executor/instrument.h +101 -0
- data/ext/pg_query/include/executor/spi.h +175 -0
- data/ext/pg_query/include/executor/tablefunc.h +67 -0
- data/ext/pg_query/include/executor/tuptable.h +487 -0
- data/ext/pg_query/include/fmgr.h +775 -0
- data/ext/pg_query/include/funcapi.h +348 -0
- data/ext/pg_query/include/getaddrinfo.h +162 -0
- data/ext/pg_query/include/jit/jit.h +105 -0
- data/ext/pg_query/include/kwlist_d.h +1072 -0
- data/ext/pg_query/include/lib/ilist.h +727 -0
- data/ext/pg_query/include/lib/pairingheap.h +102 -0
- data/ext/pg_query/include/lib/simplehash.h +1059 -0
- data/ext/pg_query/include/lib/stringinfo.h +161 -0
- data/ext/pg_query/include/libpq/auth.h +29 -0
- data/ext/pg_query/include/libpq/crypt.h +46 -0
- data/ext/pg_query/include/libpq/hba.h +140 -0
- data/ext/pg_query/include/libpq/libpq-be.h +326 -0
- data/ext/pg_query/include/libpq/libpq.h +133 -0
- data/ext/pg_query/include/libpq/pqcomm.h +208 -0
- data/ext/pg_query/include/libpq/pqformat.h +210 -0
- data/ext/pg_query/include/libpq/pqsignal.h +42 -0
- data/ext/pg_query/include/mb/pg_wchar.h +672 -0
- data/ext/pg_query/include/mb/stringinfo_mb.h +24 -0
- data/ext/pg_query/include/miscadmin.h +476 -0
- data/ext/pg_query/include/nodes/bitmapset.h +122 -0
- data/ext/pg_query/include/nodes/execnodes.h +2520 -0
- data/ext/pg_query/include/nodes/extensible.h +160 -0
- data/ext/pg_query/include/nodes/lockoptions.h +61 -0
- data/ext/pg_query/include/nodes/makefuncs.h +108 -0
- data/ext/pg_query/include/nodes/memnodes.h +108 -0
- data/ext/pg_query/include/nodes/nodeFuncs.h +162 -0
- data/ext/pg_query/include/nodes/nodes.h +842 -0
- data/ext/pg_query/include/nodes/params.h +170 -0
- data/ext/pg_query/include/nodes/parsenodes.h +3579 -0
- data/ext/pg_query/include/nodes/pathnodes.h +2556 -0
- data/ext/pg_query/include/nodes/pg_list.h +605 -0
- data/ext/pg_query/include/nodes/plannodes.h +1251 -0
- data/ext/pg_query/include/nodes/primnodes.h +1541 -0
- data/ext/pg_query/include/nodes/print.h +34 -0
- data/ext/pg_query/include/nodes/tidbitmap.h +75 -0
- data/ext/pg_query/include/nodes/value.h +61 -0
- data/ext/pg_query/include/optimizer/cost.h +206 -0
- data/ext/pg_query/include/optimizer/geqo.h +88 -0
- data/ext/pg_query/include/optimizer/geqo_gene.h +45 -0
- data/ext/pg_query/include/optimizer/optimizer.h +199 -0
- data/ext/pg_query/include/optimizer/paths.h +249 -0
- data/ext/pg_query/include/optimizer/planmain.h +119 -0
- data/ext/pg_query/include/parser/analyze.h +49 -0
- data/ext/pg_query/include/parser/gram.h +1067 -0
- data/ext/pg_query/include/parser/gramparse.h +75 -0
- data/ext/pg_query/include/parser/kwlist.h +477 -0
- data/ext/pg_query/include/parser/parse_agg.h +68 -0
- data/ext/pg_query/include/parser/parse_clause.h +54 -0
- data/ext/pg_query/include/parser/parse_coerce.h +97 -0
- data/ext/pg_query/include/parser/parse_collate.h +27 -0
- data/ext/pg_query/include/parser/parse_expr.h +26 -0
- data/ext/pg_query/include/parser/parse_func.h +73 -0
- data/ext/pg_query/include/parser/parse_node.h +327 -0
- data/ext/pg_query/include/parser/parse_oper.h +67 -0
- data/ext/pg_query/include/parser/parse_relation.h +123 -0
- data/ext/pg_query/include/parser/parse_target.h +46 -0
- data/ext/pg_query/include/parser/parse_type.h +60 -0
- data/ext/pg_query/include/parser/parser.h +41 -0
- data/ext/pg_query/include/parser/parsetree.h +61 -0
- data/ext/pg_query/include/parser/scanner.h +152 -0
- data/ext/pg_query/include/parser/scansup.h +30 -0
- data/ext/pg_query/include/partitioning/partdefs.h +26 -0
- data/ext/pg_query/include/pg_config.h +989 -0
- data/ext/pg_query/include/pg_config_ext.h +8 -0
- data/ext/pg_query/include/pg_config_manual.h +350 -0
- data/ext/pg_query/include/pg_config_os.h +8 -0
- data/ext/pg_query/include/pg_getopt.h +56 -0
- data/ext/pg_query/include/pg_query.h +121 -0
- data/ext/pg_query/include/pg_query_enum_defs.c +2454 -0
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +875 -0
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +12413 -0
- data/ext/pg_query/include/pg_query_json_helper.c +61 -0
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +686 -0
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +2437 -0
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +222 -0
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +2878 -0
- data/ext/pg_query/include/pg_trace.h +17 -0
- data/ext/pg_query/include/pgstat.h +1487 -0
- data/ext/pg_query/include/pgtime.h +84 -0
- data/ext/pg_query/include/pl_gram.h +385 -0
- data/ext/pg_query/include/pl_reserved_kwlist.h +52 -0
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +114 -0
- data/ext/pg_query/include/pl_unreserved_kwlist.h +112 -0
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +246 -0
- data/ext/pg_query/include/plerrcodes.h +990 -0
- data/ext/pg_query/include/plpgsql.h +1347 -0
- data/ext/pg_query/include/port.h +524 -0
- data/ext/pg_query/include/port/atomics.h +524 -0
- data/ext/pg_query/include/port/atomics/arch-arm.h +26 -0
- data/ext/pg_query/include/port/atomics/arch-ppc.h +254 -0
- data/ext/pg_query/include/port/atomics/arch-x86.h +252 -0
- data/ext/pg_query/include/port/atomics/fallback.h +170 -0
- data/ext/pg_query/include/port/atomics/generic-gcc.h +286 -0
- data/ext/pg_query/include/port/atomics/generic.h +401 -0
- data/ext/pg_query/include/port/pg_bitutils.h +226 -0
- data/ext/pg_query/include/port/pg_bswap.h +161 -0
- data/ext/pg_query/include/port/pg_crc32c.h +101 -0
- data/ext/pg_query/include/portability/instr_time.h +256 -0
- data/ext/pg_query/include/postgres.h +764 -0
- data/ext/pg_query/include/postgres_ext.h +74 -0
- data/ext/pg_query/include/postmaster/autovacuum.h +83 -0
- data/ext/pg_query/include/postmaster/bgworker.h +161 -0
- data/ext/pg_query/include/postmaster/bgworker_internals.h +64 -0
- data/ext/pg_query/include/postmaster/bgwriter.h +45 -0
- data/ext/pg_query/include/postmaster/fork_process.h +17 -0
- data/ext/pg_query/include/postmaster/interrupt.h +32 -0
- data/ext/pg_query/include/postmaster/pgarch.h +39 -0
- data/ext/pg_query/include/postmaster/postmaster.h +77 -0
- data/ext/pg_query/include/postmaster/syslogger.h +98 -0
- data/ext/pg_query/include/postmaster/walwriter.h +21 -0
- data/ext/pg_query/include/protobuf-c.h +1106 -0
- data/ext/pg_query/include/protobuf-c/protobuf-c.h +1106 -0
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +10846 -0
- data/ext/pg_query/include/protobuf/pg_query.pb.h +124718 -0
- data/ext/pg_query/include/regex/regex.h +184 -0
- data/ext/pg_query/include/replication/logicallauncher.h +31 -0
- data/ext/pg_query/include/replication/logicalproto.h +110 -0
- data/ext/pg_query/include/replication/logicalworker.h +19 -0
- data/ext/pg_query/include/replication/origin.h +73 -0
- data/ext/pg_query/include/replication/reorderbuffer.h +467 -0
- data/ext/pg_query/include/replication/slot.h +219 -0
- data/ext/pg_query/include/replication/syncrep.h +115 -0
- data/ext/pg_query/include/replication/walreceiver.h +340 -0
- data/ext/pg_query/include/replication/walsender.h +74 -0
- data/ext/pg_query/include/rewrite/prs2lock.h +46 -0
- data/ext/pg_query/include/rewrite/rewriteHandler.h +40 -0
- data/ext/pg_query/include/rewrite/rewriteManip.h +87 -0
- data/ext/pg_query/include/rewrite/rewriteSupport.h +26 -0
- data/ext/pg_query/include/storage/backendid.h +37 -0
- data/ext/pg_query/include/storage/block.h +121 -0
- data/ext/pg_query/include/storage/buf.h +46 -0
- data/ext/pg_query/include/storage/bufmgr.h +292 -0
- data/ext/pg_query/include/storage/bufpage.h +459 -0
- data/ext/pg_query/include/storage/condition_variable.h +62 -0
- data/ext/pg_query/include/storage/dsm.h +61 -0
- data/ext/pg_query/include/storage/dsm_impl.h +75 -0
- data/ext/pg_query/include/storage/fd.h +168 -0
- data/ext/pg_query/include/storage/ipc.h +81 -0
- data/ext/pg_query/include/storage/item.h +19 -0
- data/ext/pg_query/include/storage/itemid.h +184 -0
- data/ext/pg_query/include/storage/itemptr.h +206 -0
- data/ext/pg_query/include/storage/large_object.h +100 -0
- data/ext/pg_query/include/storage/latch.h +190 -0
- data/ext/pg_query/include/storage/lmgr.h +114 -0
- data/ext/pg_query/include/storage/lock.h +612 -0
- data/ext/pg_query/include/storage/lockdefs.h +59 -0
- data/ext/pg_query/include/storage/lwlock.h +232 -0
- data/ext/pg_query/include/storage/lwlocknames.h +51 -0
- data/ext/pg_query/include/storage/off.h +57 -0
- data/ext/pg_query/include/storage/pg_sema.h +61 -0
- data/ext/pg_query/include/storage/pg_shmem.h +90 -0
- data/ext/pg_query/include/storage/pmsignal.h +94 -0
- data/ext/pg_query/include/storage/predicate.h +87 -0
- data/ext/pg_query/include/storage/proc.h +333 -0
- data/ext/pg_query/include/storage/proclist_types.h +51 -0
- data/ext/pg_query/include/storage/procsignal.h +75 -0
- data/ext/pg_query/include/storage/relfilenode.h +99 -0
- data/ext/pg_query/include/storage/s_lock.h +1047 -0
- data/ext/pg_query/include/storage/sharedfileset.h +45 -0
- data/ext/pg_query/include/storage/shm_mq.h +85 -0
- data/ext/pg_query/include/storage/shm_toc.h +58 -0
- data/ext/pg_query/include/storage/shmem.h +81 -0
- data/ext/pg_query/include/storage/sinval.h +153 -0
- data/ext/pg_query/include/storage/sinvaladt.h +43 -0
- data/ext/pg_query/include/storage/smgr.h +109 -0
- data/ext/pg_query/include/storage/spin.h +77 -0
- data/ext/pg_query/include/storage/standby.h +91 -0
- data/ext/pg_query/include/storage/standbydefs.h +74 -0
- data/ext/pg_query/include/storage/sync.h +62 -0
- data/ext/pg_query/include/tcop/cmdtag.h +58 -0
- data/ext/pg_query/include/tcop/cmdtaglist.h +217 -0
- data/ext/pg_query/include/tcop/deparse_utility.h +108 -0
- data/ext/pg_query/include/tcop/dest.h +149 -0
- data/ext/pg_query/include/tcop/fastpath.h +21 -0
- data/ext/pg_query/include/tcop/pquery.h +45 -0
- data/ext/pg_query/include/tcop/tcopprot.h +89 -0
- data/ext/pg_query/include/tcop/utility.h +108 -0
- data/ext/pg_query/include/tsearch/ts_cache.h +98 -0
- data/ext/pg_query/include/utils/acl.h +312 -0
- data/ext/pg_query/include/utils/aclchk_internal.h +45 -0
- data/ext/pg_query/include/utils/array.h +458 -0
- data/ext/pg_query/include/utils/builtins.h +127 -0
- data/ext/pg_query/include/utils/bytea.h +27 -0
- data/ext/pg_query/include/utils/catcache.h +231 -0
- data/ext/pg_query/include/utils/date.h +90 -0
- data/ext/pg_query/include/utils/datetime.h +343 -0
- data/ext/pg_query/include/utils/datum.h +68 -0
- data/ext/pg_query/include/utils/dsa.h +123 -0
- data/ext/pg_query/include/utils/dynahash.h +19 -0
- data/ext/pg_query/include/utils/elog.h +439 -0
- data/ext/pg_query/include/utils/errcodes.h +352 -0
- data/ext/pg_query/include/utils/expandeddatum.h +159 -0
- data/ext/pg_query/include/utils/expandedrecord.h +231 -0
- data/ext/pg_query/include/utils/float.h +356 -0
- data/ext/pg_query/include/utils/fmgroids.h +2657 -0
- data/ext/pg_query/include/utils/fmgrprotos.h +2646 -0
- data/ext/pg_query/include/utils/fmgrtab.h +48 -0
- data/ext/pg_query/include/utils/guc.h +443 -0
- data/ext/pg_query/include/utils/guc_tables.h +272 -0
- data/ext/pg_query/include/utils/hsearch.h +149 -0
- data/ext/pg_query/include/utils/inval.h +64 -0
- data/ext/pg_query/include/utils/lsyscache.h +197 -0
- data/ext/pg_query/include/utils/memdebug.h +82 -0
- data/ext/pg_query/include/utils/memutils.h +225 -0
- data/ext/pg_query/include/utils/numeric.h +76 -0
- data/ext/pg_query/include/utils/palloc.h +136 -0
- data/ext/pg_query/include/utils/partcache.h +102 -0
- data/ext/pg_query/include/utils/pg_locale.h +119 -0
- data/ext/pg_query/include/utils/pg_lsn.h +29 -0
- data/ext/pg_query/include/utils/pidfile.h +56 -0
- data/ext/pg_query/include/utils/plancache.h +235 -0
- data/ext/pg_query/include/utils/portal.h +241 -0
- data/ext/pg_query/include/utils/probes.h +114 -0
- data/ext/pg_query/include/utils/ps_status.h +25 -0
- data/ext/pg_query/include/utils/queryenvironment.h +74 -0
- data/ext/pg_query/include/utils/regproc.h +28 -0
- data/ext/pg_query/include/utils/rel.h +644 -0
- data/ext/pg_query/include/utils/relcache.h +151 -0
- data/ext/pg_query/include/utils/reltrigger.h +81 -0
- data/ext/pg_query/include/utils/resowner.h +86 -0
- data/ext/pg_query/include/utils/rls.h +50 -0
- data/ext/pg_query/include/utils/ruleutils.h +44 -0
- data/ext/pg_query/include/utils/sharedtuplestore.h +61 -0
- data/ext/pg_query/include/utils/snapmgr.h +158 -0
- data/ext/pg_query/include/utils/snapshot.h +206 -0
- data/ext/pg_query/include/utils/sortsupport.h +276 -0
- data/ext/pg_query/include/utils/syscache.h +219 -0
- data/ext/pg_query/include/utils/timeout.h +88 -0
- data/ext/pg_query/include/utils/timestamp.h +116 -0
- data/ext/pg_query/include/utils/tuplesort.h +277 -0
- data/ext/pg_query/include/utils/tuplestore.h +91 -0
- data/ext/pg_query/include/utils/typcache.h +202 -0
- data/ext/pg_query/include/utils/tzparser.h +39 -0
- data/ext/pg_query/include/utils/varlena.h +39 -0
- data/ext/pg_query/include/utils/xml.h +84 -0
- data/ext/pg_query/include/xxhash.h +5445 -0
- data/ext/pg_query/include/xxhash/xxhash.h +5445 -0
- data/ext/pg_query/pg_query.c +104 -0
- data/ext/pg_query/pg_query.pb-c.c +37628 -0
- data/ext/pg_query/pg_query_deparse.c +9959 -0
- data/ext/pg_query/pg_query_fingerprint.c +295 -0
- data/ext/pg_query/pg_query_fingerprint.h +8 -0
- data/ext/pg_query/pg_query_internal.h +24 -0
- data/ext/pg_query/pg_query_json_plpgsql.c +738 -0
- data/ext/pg_query/pg_query_json_plpgsql.h +9 -0
- data/ext/pg_query/pg_query_normalize.c +439 -0
- data/ext/pg_query/pg_query_outfuncs.h +10 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +297 -0
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +237 -0
- data/ext/pg_query/pg_query_parse.c +148 -0
- data/ext/pg_query/pg_query_parse_plpgsql.c +460 -0
- data/ext/pg_query/pg_query_readfuncs.h +11 -0
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +142 -0
- data/ext/pg_query/pg_query_ruby.c +108 -12
- data/ext/pg_query/pg_query_scan.c +173 -0
- data/ext/pg_query/pg_query_split.c +221 -0
- data/ext/pg_query/protobuf-c.c +3660 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +1051 -0
- data/ext/pg_query/src_backend_catalog_pg_proc.c +142 -0
- data/ext/pg_query/src_backend_commands_define.c +117 -0
- data/ext/pg_query/src_backend_libpq_pqcomm.c +651 -0
- data/ext/pg_query/src_backend_nodes_bitmapset.c +513 -0
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +6013 -0
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +4003 -0
- data/ext/pg_query/src_backend_nodes_extensible.c +99 -0
- data/ext/pg_query/src_backend_nodes_list.c +922 -0
- data/ext/pg_query/src_backend_nodes_makefuncs.c +417 -0
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +1363 -0
- data/ext/pg_query/src_backend_nodes_value.c +84 -0
- data/ext/pg_query/src_backend_parser_gram.c +47456 -0
- data/ext/pg_query/src_backend_parser_parse_expr.c +313 -0
- data/ext/pg_query/src_backend_parser_parser.c +497 -0
- data/ext/pg_query/src_backend_parser_scan.c +7091 -0
- data/ext/pg_query/src_backend_parser_scansup.c +160 -0
- data/ext/pg_query/src_backend_postmaster_postmaster.c +2230 -0
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +192 -0
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +370 -0
- data/ext/pg_query/src_backend_tcop_postgres.c +776 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +326 -0
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +98 -0
- data/ext/pg_query/src_backend_utils_adt_format_type.c +136 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +1683 -0
- data/ext/pg_query/src_backend_utils_error_assert.c +74 -0
- data/ext/pg_query/src_backend_utils_error_elog.c +1748 -0
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +570 -0
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +1086 -0
- data/ext/pg_query/src_backend_utils_init_globals.c +168 -0
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +839 -0
- data/ext/pg_query/src_backend_utils_misc_guc.c +1831 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +1560 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +1006 -0
- data/ext/pg_query/src_common_encnames.c +158 -0
- data/ext/pg_query/src_common_keywords.c +39 -0
- data/ext/pg_query/src_common_kwlist_d.h +1081 -0
- data/ext/pg_query/src_common_kwlookup.c +91 -0
- data/ext/pg_query/src_common_psprintf.c +158 -0
- data/ext/pg_query/src_common_string.c +86 -0
- data/ext/pg_query/src_common_stringinfo.c +336 -0
- data/ext/pg_query/src_common_wchar.c +1651 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1133 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +877 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +6533 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +107 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +123 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +671 -0
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +255 -0
- data/ext/pg_query/src_port_erand48.c +127 -0
- data/ext/pg_query/src_port_pg_bitutils.c +246 -0
- data/ext/pg_query/src_port_pgsleep.c +69 -0
- data/ext/pg_query/src_port_pgstrcasecmp.c +83 -0
- data/ext/pg_query/src_port_qsort.c +240 -0
- data/ext/pg_query/src_port_random.c +31 -0
- data/ext/pg_query/src_port_snprintf.c +1449 -0
- data/ext/pg_query/src_port_strerror.c +324 -0
- data/ext/pg_query/src_port_strnlen.c +39 -0
- data/ext/pg_query/xxhash.c +43 -0
- data/lib/pg_query.rb +7 -4
- data/lib/pg_query/constants.rb +21 -0
- data/lib/pg_query/deparse.rb +15 -1581
- data/lib/pg_query/filter_columns.rb +88 -85
- data/lib/pg_query/fingerprint.rb +122 -87
- data/lib/pg_query/json_field_names.rb +1402 -0
- data/lib/pg_query/node.rb +31 -0
- data/lib/pg_query/param_refs.rb +42 -37
- data/lib/pg_query/parse.rb +220 -203
- data/lib/pg_query/parse_error.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +3211 -0
- data/lib/pg_query/scan.rb +23 -0
- data/lib/pg_query/treewalker.rb +24 -40
- data/lib/pg_query/truncate.rb +71 -42
- data/lib/pg_query/version.rb +2 -2
- metadata +472 -11
- data/ext/pg_query/pg_query_ruby.h +0 -10
- data/lib/pg_query/deep_dup.rb +0 -16
- data/lib/pg_query/deparse/alter_table.rb +0 -42
- data/lib/pg_query/deparse/interval.rb +0 -105
- data/lib/pg_query/deparse/keywords.rb +0 -159
- data/lib/pg_query/deparse/rename.rb +0 -41
- data/lib/pg_query/legacy_parsetree.rb +0 -109
- data/lib/pg_query/node_types.rb +0 -296
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* numeric.h
|
|
4
|
+
* Definitions for the exact numeric data type of Postgres
|
|
5
|
+
*
|
|
6
|
+
* Original coding 1998, Jan Wieck. Heavily revised 2003, Tom Lane.
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 1998-2020, PostgreSQL Global Development Group
|
|
9
|
+
*
|
|
10
|
+
* src/include/utils/numeric.h
|
|
11
|
+
*
|
|
12
|
+
*-------------------------------------------------------------------------
|
|
13
|
+
*/
|
|
14
|
+
#ifndef _PG_NUMERIC_H_
|
|
15
|
+
#define _PG_NUMERIC_H_
|
|
16
|
+
|
|
17
|
+
#include "fmgr.h"
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
* Limit on the precision (and hence scale) specifiable in a NUMERIC typmod.
|
|
21
|
+
* Note that the implementation limit on the length of a numeric value is
|
|
22
|
+
* much larger --- beware of what you use this for!
|
|
23
|
+
*/
|
|
24
|
+
#define NUMERIC_MAX_PRECISION 1000
|
|
25
|
+
|
|
26
|
+
/*
|
|
27
|
+
* Internal limits on the scales chosen for calculation results
|
|
28
|
+
*/
|
|
29
|
+
#define NUMERIC_MAX_DISPLAY_SCALE NUMERIC_MAX_PRECISION
|
|
30
|
+
#define NUMERIC_MIN_DISPLAY_SCALE 0
|
|
31
|
+
|
|
32
|
+
#define NUMERIC_MAX_RESULT_SCALE (NUMERIC_MAX_PRECISION * 2)
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* For inherently inexact calculations such as division and square root,
|
|
36
|
+
* we try to get at least this many significant digits; the idea is to
|
|
37
|
+
* deliver a result no worse than float8 would.
|
|
38
|
+
*/
|
|
39
|
+
#define NUMERIC_MIN_SIG_DIGITS 16
|
|
40
|
+
|
|
41
|
+
/* The actual contents of Numeric are private to numeric.c */
|
|
42
|
+
struct NumericData;
|
|
43
|
+
typedef struct NumericData *Numeric;
|
|
44
|
+
|
|
45
|
+
/*
|
|
46
|
+
* fmgr interface macros
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
#define DatumGetNumeric(X) ((Numeric) PG_DETOAST_DATUM(X))
|
|
50
|
+
#define DatumGetNumericCopy(X) ((Numeric) PG_DETOAST_DATUM_COPY(X))
|
|
51
|
+
#define NumericGetDatum(X) PointerGetDatum(X)
|
|
52
|
+
#define PG_GETARG_NUMERIC(n) DatumGetNumeric(PG_GETARG_DATUM(n))
|
|
53
|
+
#define PG_GETARG_NUMERIC_COPY(n) DatumGetNumericCopy(PG_GETARG_DATUM(n))
|
|
54
|
+
#define PG_RETURN_NUMERIC(x) return NumericGetDatum(x)
|
|
55
|
+
|
|
56
|
+
/*
|
|
57
|
+
* Utility functions in numeric.c
|
|
58
|
+
*/
|
|
59
|
+
extern bool numeric_is_nan(Numeric num);
|
|
60
|
+
int32 numeric_maximum_size(int32 typmod);
|
|
61
|
+
extern char *numeric_out_sci(Numeric num, int scale);
|
|
62
|
+
extern char *numeric_normalize(Numeric num);
|
|
63
|
+
|
|
64
|
+
extern Numeric numeric_add_opt_error(Numeric num1, Numeric num2,
|
|
65
|
+
bool *have_error);
|
|
66
|
+
extern Numeric numeric_sub_opt_error(Numeric num1, Numeric num2,
|
|
67
|
+
bool *have_error);
|
|
68
|
+
extern Numeric numeric_mul_opt_error(Numeric num1, Numeric num2,
|
|
69
|
+
bool *have_error);
|
|
70
|
+
extern Numeric numeric_div_opt_error(Numeric num1, Numeric num2,
|
|
71
|
+
bool *have_error);
|
|
72
|
+
extern Numeric numeric_mod_opt_error(Numeric num1, Numeric num2,
|
|
73
|
+
bool *have_error);
|
|
74
|
+
extern int32 numeric_int4_opt_error(Numeric num, bool *error);
|
|
75
|
+
|
|
76
|
+
#endif /* _PG_NUMERIC_H_ */
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* palloc.h
|
|
4
|
+
* POSTGRES memory allocator definitions.
|
|
5
|
+
*
|
|
6
|
+
* This file contains the basic memory allocation interface that is
|
|
7
|
+
* needed by almost every backend module. It is included directly by
|
|
8
|
+
* postgres.h, so the definitions here are automatically available
|
|
9
|
+
* everywhere. Keep it lean!
|
|
10
|
+
*
|
|
11
|
+
* Memory allocation occurs within "contexts". Every chunk obtained from
|
|
12
|
+
* palloc()/MemoryContextAlloc() is allocated within a specific context.
|
|
13
|
+
* The entire contents of a context can be freed easily and quickly by
|
|
14
|
+
* resetting or deleting the context --- this is both faster and less
|
|
15
|
+
* prone to memory-leakage bugs than releasing chunks individually.
|
|
16
|
+
* We organize contexts into context trees to allow fine-grain control
|
|
17
|
+
* over chunk lifetime while preserving the certainty that we will free
|
|
18
|
+
* everything that should be freed. See utils/mmgr/README for more info.
|
|
19
|
+
*
|
|
20
|
+
*
|
|
21
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
22
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
23
|
+
*
|
|
24
|
+
* src/include/utils/palloc.h
|
|
25
|
+
*
|
|
26
|
+
*-------------------------------------------------------------------------
|
|
27
|
+
*/
|
|
28
|
+
#ifndef PALLOC_H
|
|
29
|
+
#define PALLOC_H
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
* Type MemoryContextData is declared in nodes/memnodes.h. Most users
|
|
33
|
+
* of memory allocation should just treat it as an abstract type, so we
|
|
34
|
+
* do not provide the struct contents here.
|
|
35
|
+
*/
|
|
36
|
+
typedef struct MemoryContextData *MemoryContext;
|
|
37
|
+
|
|
38
|
+
/*
|
|
39
|
+
* A memory context can have callback functions registered on it. Any such
|
|
40
|
+
* function will be called once just before the context is next reset or
|
|
41
|
+
* deleted. The MemoryContextCallback struct describing such a callback
|
|
42
|
+
* typically would be allocated within the context itself, thereby avoiding
|
|
43
|
+
* any need to manage it explicitly (the reset/delete action will free it).
|
|
44
|
+
*/
|
|
45
|
+
typedef void (*MemoryContextCallbackFunction) (void *arg);
|
|
46
|
+
|
|
47
|
+
typedef struct MemoryContextCallback
|
|
48
|
+
{
|
|
49
|
+
MemoryContextCallbackFunction func; /* function to call */
|
|
50
|
+
void *arg; /* argument to pass it */
|
|
51
|
+
struct MemoryContextCallback *next; /* next in list of callbacks */
|
|
52
|
+
} MemoryContextCallback;
|
|
53
|
+
|
|
54
|
+
/*
|
|
55
|
+
* CurrentMemoryContext is the default allocation context for palloc().
|
|
56
|
+
* Avoid accessing it directly! Instead, use MemoryContextSwitchTo()
|
|
57
|
+
* to change the setting.
|
|
58
|
+
*/
|
|
59
|
+
extern PGDLLIMPORT __thread MemoryContext CurrentMemoryContext;
|
|
60
|
+
|
|
61
|
+
/*
|
|
62
|
+
* Flags for MemoryContextAllocExtended.
|
|
63
|
+
*/
|
|
64
|
+
#define MCXT_ALLOC_HUGE 0x01 /* allow huge allocation (> 1 GB) */
|
|
65
|
+
#define MCXT_ALLOC_NO_OOM 0x02 /* no failure if out-of-memory */
|
|
66
|
+
#define MCXT_ALLOC_ZERO 0x04 /* zero allocated memory */
|
|
67
|
+
|
|
68
|
+
/*
|
|
69
|
+
* Fundamental memory-allocation operations (more are in utils/memutils.h)
|
|
70
|
+
*/
|
|
71
|
+
extern void *MemoryContextAlloc(MemoryContext context, Size size);
|
|
72
|
+
extern void *MemoryContextAllocZero(MemoryContext context, Size size);
|
|
73
|
+
extern void *MemoryContextAllocZeroAligned(MemoryContext context, Size size);
|
|
74
|
+
extern void *MemoryContextAllocExtended(MemoryContext context,
|
|
75
|
+
Size size, int flags);
|
|
76
|
+
|
|
77
|
+
extern void *palloc(Size size);
|
|
78
|
+
extern void *palloc0(Size size);
|
|
79
|
+
extern void *palloc_extended(Size size, int flags);
|
|
80
|
+
extern void *repalloc(void *pointer, Size size);
|
|
81
|
+
extern void pfree(void *pointer);
|
|
82
|
+
|
|
83
|
+
/*
|
|
84
|
+
* The result of palloc() is always word-aligned, so we can skip testing
|
|
85
|
+
* alignment of the pointer when deciding which MemSet variant to use.
|
|
86
|
+
* Note that this variant does not offer any advantage, and should not be
|
|
87
|
+
* used, unless its "sz" argument is a compile-time constant; therefore, the
|
|
88
|
+
* issue that it evaluates the argument multiple times isn't a problem in
|
|
89
|
+
* practice.
|
|
90
|
+
*/
|
|
91
|
+
#define palloc0fast(sz) \
|
|
92
|
+
( MemSetTest(0, sz) ? \
|
|
93
|
+
MemoryContextAllocZeroAligned(CurrentMemoryContext, sz) : \
|
|
94
|
+
MemoryContextAllocZero(CurrentMemoryContext, sz) )
|
|
95
|
+
|
|
96
|
+
/* Higher-limit allocators. */
|
|
97
|
+
extern void *MemoryContextAllocHuge(MemoryContext context, Size size);
|
|
98
|
+
extern void *repalloc_huge(void *pointer, Size size);
|
|
99
|
+
|
|
100
|
+
/*
|
|
101
|
+
* Although this header file is nominally backend-only, certain frontend
|
|
102
|
+
* programs like pg_controldata include it via postgres.h. For some compilers
|
|
103
|
+
* it's necessary to hide the inline definition of MemoryContextSwitchTo in
|
|
104
|
+
* this scenario; hence the #ifndef FRONTEND.
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
#ifndef FRONTEND
|
|
108
|
+
static inline MemoryContext
|
|
109
|
+
MemoryContextSwitchTo(MemoryContext context)
|
|
110
|
+
{
|
|
111
|
+
MemoryContext old = CurrentMemoryContext;
|
|
112
|
+
|
|
113
|
+
CurrentMemoryContext = context;
|
|
114
|
+
return old;
|
|
115
|
+
}
|
|
116
|
+
#endif /* FRONTEND */
|
|
117
|
+
|
|
118
|
+
/* Registration of memory context reset/delete callbacks */
|
|
119
|
+
extern void MemoryContextRegisterResetCallback(MemoryContext context,
|
|
120
|
+
MemoryContextCallback *cb);
|
|
121
|
+
|
|
122
|
+
/*
|
|
123
|
+
* These are like standard strdup() except the copied string is
|
|
124
|
+
* allocated in a context, not with malloc().
|
|
125
|
+
*/
|
|
126
|
+
extern char *MemoryContextStrdup(MemoryContext context, const char *string);
|
|
127
|
+
extern char *pstrdup(const char *in);
|
|
128
|
+
extern char *pnstrdup(const char *in, Size len);
|
|
129
|
+
|
|
130
|
+
extern char *pchomp(const char *in);
|
|
131
|
+
|
|
132
|
+
/* sprintf into a palloc'd buffer --- these are in psprintf.c */
|
|
133
|
+
extern char *psprintf(const char *fmt,...) pg_attribute_printf(1, 2);
|
|
134
|
+
extern size_t pvsnprintf(char *buf, size_t len, const char *fmt, va_list args) pg_attribute_printf(3, 0);
|
|
135
|
+
|
|
136
|
+
#endif /* PALLOC_H */
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* partcache.h
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
6
|
+
*
|
|
7
|
+
* src/include/utils/partcache.h
|
|
8
|
+
*
|
|
9
|
+
*-------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
#ifndef PARTCACHE_H
|
|
12
|
+
#define PARTCACHE_H
|
|
13
|
+
|
|
14
|
+
#include "access/attnum.h"
|
|
15
|
+
#include "fmgr.h"
|
|
16
|
+
#include "nodes/pg_list.h"
|
|
17
|
+
#include "nodes/primnodes.h"
|
|
18
|
+
#include "partitioning/partdefs.h"
|
|
19
|
+
#include "utils/relcache.h"
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* Information about the partition key of a relation
|
|
23
|
+
*/
|
|
24
|
+
typedef struct PartitionKeyData
|
|
25
|
+
{
|
|
26
|
+
char strategy; /* partitioning strategy */
|
|
27
|
+
int16 partnatts; /* number of columns in the partition key */
|
|
28
|
+
AttrNumber *partattrs; /* attribute numbers of columns in the
|
|
29
|
+
* partition key or 0 if it's an expr */
|
|
30
|
+
List *partexprs; /* list of expressions in the partitioning
|
|
31
|
+
* key, one for each zero-valued partattrs */
|
|
32
|
+
|
|
33
|
+
Oid *partopfamily; /* OIDs of operator families */
|
|
34
|
+
Oid *partopcintype; /* OIDs of opclass declared input data types */
|
|
35
|
+
FmgrInfo *partsupfunc; /* lookup info for support funcs */
|
|
36
|
+
|
|
37
|
+
/* Partitioning collation per attribute */
|
|
38
|
+
Oid *partcollation;
|
|
39
|
+
|
|
40
|
+
/* Type information per attribute */
|
|
41
|
+
Oid *parttypid;
|
|
42
|
+
int32 *parttypmod;
|
|
43
|
+
int16 *parttyplen;
|
|
44
|
+
bool *parttypbyval;
|
|
45
|
+
char *parttypalign;
|
|
46
|
+
Oid *parttypcoll;
|
|
47
|
+
} PartitionKeyData;
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
extern PartitionKey RelationGetPartitionKey(Relation rel);
|
|
51
|
+
extern List *RelationGetPartitionQual(Relation rel);
|
|
52
|
+
extern Expr *get_partition_qual_relid(Oid relid);
|
|
53
|
+
|
|
54
|
+
/*
|
|
55
|
+
* PartitionKey inquiry functions
|
|
56
|
+
*/
|
|
57
|
+
static inline int
|
|
58
|
+
get_partition_strategy(PartitionKey key)
|
|
59
|
+
{
|
|
60
|
+
return key->strategy;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
static inline int
|
|
64
|
+
get_partition_natts(PartitionKey key)
|
|
65
|
+
{
|
|
66
|
+
return key->partnatts;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
static inline List *
|
|
70
|
+
get_partition_exprs(PartitionKey key)
|
|
71
|
+
{
|
|
72
|
+
return key->partexprs;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/*
|
|
76
|
+
* PartitionKey inquiry functions - one column
|
|
77
|
+
*/
|
|
78
|
+
static inline int16
|
|
79
|
+
get_partition_col_attnum(PartitionKey key, int col)
|
|
80
|
+
{
|
|
81
|
+
return key->partattrs[col];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
static inline Oid
|
|
85
|
+
get_partition_col_typid(PartitionKey key, int col)
|
|
86
|
+
{
|
|
87
|
+
return key->parttypid[col];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
static inline int32
|
|
91
|
+
get_partition_col_typmod(PartitionKey key, int col)
|
|
92
|
+
{
|
|
93
|
+
return key->parttypmod[col];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
static inline Oid
|
|
97
|
+
get_partition_col_collation(PartitionKey key, int col)
|
|
98
|
+
{
|
|
99
|
+
return key->partcollation[col];
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
#endif /* PARTCACHE_H */
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/*-----------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* PostgreSQL locale utilities
|
|
4
|
+
*
|
|
5
|
+
* src/include/utils/pg_locale.h
|
|
6
|
+
*
|
|
7
|
+
* Copyright (c) 2002-2020, PostgreSQL Global Development Group
|
|
8
|
+
*
|
|
9
|
+
*-----------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
#ifndef _PG_LOCALE_
|
|
13
|
+
#define _PG_LOCALE_
|
|
14
|
+
|
|
15
|
+
#if defined(LOCALE_T_IN_XLOCALE) || defined(WCSTOMBS_L_IN_XLOCALE)
|
|
16
|
+
#include <xlocale.h>
|
|
17
|
+
#endif
|
|
18
|
+
#ifdef USE_ICU
|
|
19
|
+
#include <unicode/ucol.h>
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
#include "utils/guc.h"
|
|
23
|
+
|
|
24
|
+
#ifdef USE_ICU
|
|
25
|
+
/*
|
|
26
|
+
* ucol_strcollUTF8() was introduced in ICU 50, but it is buggy before ICU 53.
|
|
27
|
+
* (see
|
|
28
|
+
* <https://www.postgresql.org/message-id/flat/f1438ec6-22aa-4029-9a3b-26f79d330e72%40manitou-mail.org>)
|
|
29
|
+
*/
|
|
30
|
+
#if U_ICU_VERSION_MAJOR_NUM >= 53
|
|
31
|
+
#define HAVE_UCOL_STRCOLLUTF8 1
|
|
32
|
+
#else
|
|
33
|
+
#undef HAVE_UCOL_STRCOLLUTF8
|
|
34
|
+
#endif
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
/* GUC settings */
|
|
39
|
+
extern char *locale_messages;
|
|
40
|
+
extern char *locale_monetary;
|
|
41
|
+
extern char *locale_numeric;
|
|
42
|
+
extern char *locale_time;
|
|
43
|
+
|
|
44
|
+
/* lc_time localization cache */
|
|
45
|
+
extern char *localized_abbrev_days[];
|
|
46
|
+
extern char *localized_full_days[];
|
|
47
|
+
extern char *localized_abbrev_months[];
|
|
48
|
+
extern char *localized_full_months[];
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
extern bool check_locale_messages(char **newval, void **extra, GucSource source);
|
|
52
|
+
extern void assign_locale_messages(const char *newval, void *extra);
|
|
53
|
+
extern bool check_locale_monetary(char **newval, void **extra, GucSource source);
|
|
54
|
+
extern void assign_locale_monetary(const char *newval, void *extra);
|
|
55
|
+
extern bool check_locale_numeric(char **newval, void **extra, GucSource source);
|
|
56
|
+
extern void assign_locale_numeric(const char *newval, void *extra);
|
|
57
|
+
extern bool check_locale_time(char **newval, void **extra, GucSource source);
|
|
58
|
+
extern void assign_locale_time(const char *newval, void *extra);
|
|
59
|
+
|
|
60
|
+
extern bool check_locale(int category, const char *locale, char **canonname);
|
|
61
|
+
extern char *pg_perm_setlocale(int category, const char *locale);
|
|
62
|
+
extern void check_strxfrm_bug(void);
|
|
63
|
+
|
|
64
|
+
extern bool lc_collate_is_c(Oid collation);
|
|
65
|
+
extern bool lc_ctype_is_c(Oid collation);
|
|
66
|
+
|
|
67
|
+
/*
|
|
68
|
+
* Return the POSIX lconv struct (contains number/money formatting
|
|
69
|
+
* information) with locale information for all categories.
|
|
70
|
+
*/
|
|
71
|
+
extern struct lconv *PGLC_localeconv(void);
|
|
72
|
+
|
|
73
|
+
extern void cache_locale_time(void);
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
* We define our own wrapper around locale_t so we can keep the same
|
|
78
|
+
* function signatures for all builds, while not having to create a
|
|
79
|
+
* fake version of the standard type locale_t in the global namespace.
|
|
80
|
+
* pg_locale_t is occasionally checked for truth, so make it a pointer.
|
|
81
|
+
*/
|
|
82
|
+
struct pg_locale_struct
|
|
83
|
+
{
|
|
84
|
+
char provider;
|
|
85
|
+
bool deterministic;
|
|
86
|
+
union
|
|
87
|
+
{
|
|
88
|
+
#ifdef HAVE_LOCALE_T
|
|
89
|
+
locale_t lt;
|
|
90
|
+
#endif
|
|
91
|
+
#ifdef USE_ICU
|
|
92
|
+
struct
|
|
93
|
+
{
|
|
94
|
+
const char *locale;
|
|
95
|
+
UCollator *ucol;
|
|
96
|
+
} icu;
|
|
97
|
+
#endif
|
|
98
|
+
int dummy; /* in case we have neither LOCALE_T nor ICU */
|
|
99
|
+
} info;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
typedef struct pg_locale_struct *pg_locale_t;
|
|
103
|
+
|
|
104
|
+
extern pg_locale_t pg_newlocale_from_collation(Oid collid);
|
|
105
|
+
|
|
106
|
+
extern char *get_collation_actual_version(char collprovider, const char *collcollate);
|
|
107
|
+
|
|
108
|
+
#ifdef USE_ICU
|
|
109
|
+
extern int32_t icu_to_uchar(UChar **buff_uchar, const char *buff, size_t nbytes);
|
|
110
|
+
extern int32_t icu_from_uchar(char **result, const UChar *buff_uchar, int32_t len_uchar);
|
|
111
|
+
#endif
|
|
112
|
+
|
|
113
|
+
/* These functions convert from/to libc's wchar_t, *not* pg_wchar_t */
|
|
114
|
+
extern size_t wchar2char(char *to, const wchar_t *from, size_t tolen,
|
|
115
|
+
pg_locale_t locale);
|
|
116
|
+
extern size_t char2wchar(wchar_t *to, size_t tolen,
|
|
117
|
+
const char *from, size_t fromlen, pg_locale_t locale);
|
|
118
|
+
|
|
119
|
+
#endif /* _PG_LOCALE_ */
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* pg_lsn.h
|
|
4
|
+
* Declarations for operations on log sequence numbers (LSNs) of
|
|
5
|
+
* PostgreSQL.
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
9
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
10
|
+
*
|
|
11
|
+
* src/include/utils/pg_lsn.h
|
|
12
|
+
*
|
|
13
|
+
*-------------------------------------------------------------------------
|
|
14
|
+
*/
|
|
15
|
+
#ifndef PG_LSN_H
|
|
16
|
+
#define PG_LSN_H
|
|
17
|
+
|
|
18
|
+
#include "access/xlogdefs.h"
|
|
19
|
+
#include "fmgr.h"
|
|
20
|
+
|
|
21
|
+
#define DatumGetLSN(X) ((XLogRecPtr) DatumGetInt64(X))
|
|
22
|
+
#define LSNGetDatum(X) (Int64GetDatum((int64) (X)))
|
|
23
|
+
|
|
24
|
+
#define PG_GETARG_LSN(n) DatumGetLSN(PG_GETARG_DATUM(n))
|
|
25
|
+
#define PG_RETURN_LSN(x) return LSNGetDatum(x)
|
|
26
|
+
|
|
27
|
+
extern XLogRecPtr pg_lsn_in_internal(const char *str, bool *have_error);
|
|
28
|
+
|
|
29
|
+
#endif /* PG_LSN_H */
|