pg_query 1.1.0 → 2.0.1
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 +163 -52
- data/README.md +80 -69
- data/Rakefile +82 -1
- data/ext/pg_query/extconf.rb +3 -31
- 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 +988 -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 +9953 -0
- data/ext/pg_query/pg_query_fingerprint.c +292 -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 +437 -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 +16 -1117
- data/lib/pg_query/filter_columns.rb +86 -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 -200
- 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 +64 -43
- data/lib/pg_query/version.rb +2 -2
- metadata +473 -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/legacy_parsetree.rb +0 -109
- data/lib/pg_query/node_types.rb +0 -284
@@ -0,0 +1,343 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* datetime.h
|
4
|
+
* Definitions for date/time support code.
|
5
|
+
* The support code is shared with other date data types,
|
6
|
+
* including date, and time.
|
7
|
+
*
|
8
|
+
*
|
9
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
10
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
11
|
+
*
|
12
|
+
* src/include/utils/datetime.h
|
13
|
+
*
|
14
|
+
*-------------------------------------------------------------------------
|
15
|
+
*/
|
16
|
+
#ifndef DATETIME_H
|
17
|
+
#define DATETIME_H
|
18
|
+
|
19
|
+
#include "nodes/nodes.h"
|
20
|
+
#include "utils/timestamp.h"
|
21
|
+
|
22
|
+
/* this struct is declared in utils/tzparser.h: */
|
23
|
+
struct tzEntry;
|
24
|
+
|
25
|
+
|
26
|
+
/* ----------------------------------------------------------------
|
27
|
+
* time types + support macros
|
28
|
+
*
|
29
|
+
* String definitions for standard time quantities.
|
30
|
+
*
|
31
|
+
* These strings are the defaults used to form output time strings.
|
32
|
+
* Other alternative forms are hardcoded into token tables in datetime.c.
|
33
|
+
* ----------------------------------------------------------------
|
34
|
+
*/
|
35
|
+
|
36
|
+
#define DAGO "ago"
|
37
|
+
#define DCURRENT "current"
|
38
|
+
#define EPOCH "epoch"
|
39
|
+
#define INVALID "invalid"
|
40
|
+
#define EARLY "-infinity"
|
41
|
+
#define LATE "infinity"
|
42
|
+
#define NOW "now"
|
43
|
+
#define TODAY "today"
|
44
|
+
#define TOMORROW "tomorrow"
|
45
|
+
#define YESTERDAY "yesterday"
|
46
|
+
#define ZULU "zulu"
|
47
|
+
|
48
|
+
#define DMICROSEC "usecond"
|
49
|
+
#define DMILLISEC "msecond"
|
50
|
+
#define DSECOND "second"
|
51
|
+
#define DMINUTE "minute"
|
52
|
+
#define DHOUR "hour"
|
53
|
+
#define DDAY "day"
|
54
|
+
#define DWEEK "week"
|
55
|
+
#define DMONTH "month"
|
56
|
+
#define DQUARTER "quarter"
|
57
|
+
#define DYEAR "year"
|
58
|
+
#define DDECADE "decade"
|
59
|
+
#define DCENTURY "century"
|
60
|
+
#define DMILLENNIUM "millennium"
|
61
|
+
#define DA_D "ad"
|
62
|
+
#define DB_C "bc"
|
63
|
+
#define DTIMEZONE "timezone"
|
64
|
+
|
65
|
+
/*
|
66
|
+
* Fundamental time field definitions for parsing.
|
67
|
+
*
|
68
|
+
* Meridian: am, pm, or 24-hour style.
|
69
|
+
* Millennium: ad, bc
|
70
|
+
*/
|
71
|
+
|
72
|
+
#define AM 0
|
73
|
+
#define PM 1
|
74
|
+
#define HR24 2
|
75
|
+
|
76
|
+
#define AD 0
|
77
|
+
#define BC 1
|
78
|
+
|
79
|
+
/*
|
80
|
+
* Field types for time decoding.
|
81
|
+
*
|
82
|
+
* Can't have more of these than there are bits in an unsigned int
|
83
|
+
* since these are turned into bit masks during parsing and decoding.
|
84
|
+
*
|
85
|
+
* Furthermore, the values for YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
|
86
|
+
* must be in the range 0..14 so that the associated bitmasks can fit
|
87
|
+
* into the left half of an INTERVAL's typmod value. Since those bits
|
88
|
+
* are stored in typmods, you can't change them without initdb!
|
89
|
+
*/
|
90
|
+
|
91
|
+
#define RESERV 0
|
92
|
+
#define MONTH 1
|
93
|
+
#define YEAR 2
|
94
|
+
#define DAY 3
|
95
|
+
#define JULIAN 4
|
96
|
+
#define TZ 5 /* fixed-offset timezone abbreviation */
|
97
|
+
#define DTZ 6 /* fixed-offset timezone abbrev, DST */
|
98
|
+
#define DYNTZ 7 /* dynamic timezone abbreviation */
|
99
|
+
#define IGNORE_DTF 8
|
100
|
+
#define AMPM 9
|
101
|
+
#define HOUR 10
|
102
|
+
#define MINUTE 11
|
103
|
+
#define SECOND 12
|
104
|
+
#define MILLISECOND 13
|
105
|
+
#define MICROSECOND 14
|
106
|
+
#define DOY 15
|
107
|
+
#define DOW 16
|
108
|
+
#define UNITS 17
|
109
|
+
#define ADBC 18
|
110
|
+
/* these are only for relative dates */
|
111
|
+
#define AGO 19
|
112
|
+
#define ABS_BEFORE 20
|
113
|
+
#define ABS_AFTER 21
|
114
|
+
/* generic fields to help with parsing */
|
115
|
+
#define ISODATE 22
|
116
|
+
#define ISOTIME 23
|
117
|
+
/* these are only for parsing intervals */
|
118
|
+
#define WEEK 24
|
119
|
+
#define DECADE 25
|
120
|
+
#define CENTURY 26
|
121
|
+
#define MILLENNIUM 27
|
122
|
+
/* hack for parsing two-word timezone specs "MET DST" etc */
|
123
|
+
#define DTZMOD 28 /* "DST" as a separate word */
|
124
|
+
/* reserved for unrecognized string values */
|
125
|
+
#define UNKNOWN_FIELD 31
|
126
|
+
|
127
|
+
/*
|
128
|
+
* Token field definitions for time parsing and decoding.
|
129
|
+
*
|
130
|
+
* Some field type codes (see above) use these as the "value" in datetktbl[].
|
131
|
+
* These are also used for bit masks in DecodeDateTime and friends
|
132
|
+
* so actually restrict them to within [0,31] for now.
|
133
|
+
* - thomas 97/06/19
|
134
|
+
* Not all of these fields are used for masks in DecodeDateTime
|
135
|
+
* so allow some larger than 31. - thomas 1997-11-17
|
136
|
+
*
|
137
|
+
* Caution: there are undocumented assumptions in the code that most of these
|
138
|
+
* values are not equal to IGNORE_DTF nor RESERV. Be very careful when
|
139
|
+
* renumbering values in either of these apparently-independent lists :-(
|
140
|
+
*/
|
141
|
+
|
142
|
+
#define DTK_NUMBER 0
|
143
|
+
#define DTK_STRING 1
|
144
|
+
|
145
|
+
#define DTK_DATE 2
|
146
|
+
#define DTK_TIME 3
|
147
|
+
#define DTK_TZ 4
|
148
|
+
#define DTK_AGO 5
|
149
|
+
|
150
|
+
#define DTK_SPECIAL 6
|
151
|
+
#define DTK_EARLY 9
|
152
|
+
#define DTK_LATE 10
|
153
|
+
#define DTK_EPOCH 11
|
154
|
+
#define DTK_NOW 12
|
155
|
+
#define DTK_YESTERDAY 13
|
156
|
+
#define DTK_TODAY 14
|
157
|
+
#define DTK_TOMORROW 15
|
158
|
+
#define DTK_ZULU 16
|
159
|
+
|
160
|
+
#define DTK_DELTA 17
|
161
|
+
#define DTK_SECOND 18
|
162
|
+
#define DTK_MINUTE 19
|
163
|
+
#define DTK_HOUR 20
|
164
|
+
#define DTK_DAY 21
|
165
|
+
#define DTK_WEEK 22
|
166
|
+
#define DTK_MONTH 23
|
167
|
+
#define DTK_QUARTER 24
|
168
|
+
#define DTK_YEAR 25
|
169
|
+
#define DTK_DECADE 26
|
170
|
+
#define DTK_CENTURY 27
|
171
|
+
#define DTK_MILLENNIUM 28
|
172
|
+
#define DTK_MILLISEC 29
|
173
|
+
#define DTK_MICROSEC 30
|
174
|
+
#define DTK_JULIAN 31
|
175
|
+
|
176
|
+
#define DTK_DOW 32
|
177
|
+
#define DTK_DOY 33
|
178
|
+
#define DTK_TZ_HOUR 34
|
179
|
+
#define DTK_TZ_MINUTE 35
|
180
|
+
#define DTK_ISOYEAR 36
|
181
|
+
#define DTK_ISODOW 37
|
182
|
+
|
183
|
+
|
184
|
+
/*
|
185
|
+
* Bit mask definitions for time parsing.
|
186
|
+
*/
|
187
|
+
|
188
|
+
#define DTK_M(t) (0x01 << (t))
|
189
|
+
|
190
|
+
/* Convenience: a second, plus any fractional component */
|
191
|
+
#define DTK_ALL_SECS_M (DTK_M(SECOND) | DTK_M(MILLISECOND) | DTK_M(MICROSECOND))
|
192
|
+
#define DTK_DATE_M (DTK_M(YEAR) | DTK_M(MONTH) | DTK_M(DAY))
|
193
|
+
#define DTK_TIME_M (DTK_M(HOUR) | DTK_M(MINUTE) | DTK_ALL_SECS_M)
|
194
|
+
|
195
|
+
/*
|
196
|
+
* Working buffer size for input and output of interval, timestamp, etc.
|
197
|
+
* Inputs that need more working space will be rejected early. Longer outputs
|
198
|
+
* will overrun buffers, so this must suffice for all possible output. As of
|
199
|
+
* this writing, interval_out() needs the most space at ~90 bytes.
|
200
|
+
*/
|
201
|
+
#define MAXDATELEN 128
|
202
|
+
/* maximum possible number of fields in a date string */
|
203
|
+
#define MAXDATEFIELDS 25
|
204
|
+
/* only this many chars are stored in datetktbl */
|
205
|
+
#define TOKMAXLEN 10
|
206
|
+
|
207
|
+
/* keep this struct small; it gets used a lot */
|
208
|
+
typedef struct
|
209
|
+
{
|
210
|
+
char token[TOKMAXLEN + 1]; /* always NUL-terminated */
|
211
|
+
char type; /* see field type codes above */
|
212
|
+
int32 value; /* meaning depends on type */
|
213
|
+
} datetkn;
|
214
|
+
|
215
|
+
/* one of its uses is in tables of time zone abbreviations */
|
216
|
+
typedef struct TimeZoneAbbrevTable
|
217
|
+
{
|
218
|
+
Size tblsize; /* size in bytes of TimeZoneAbbrevTable */
|
219
|
+
int numabbrevs; /* number of entries in abbrevs[] array */
|
220
|
+
datetkn abbrevs[FLEXIBLE_ARRAY_MEMBER];
|
221
|
+
/* DynamicZoneAbbrev(s) may follow the abbrevs[] array */
|
222
|
+
} TimeZoneAbbrevTable;
|
223
|
+
|
224
|
+
/* auxiliary data for a dynamic time zone abbreviation (non-fixed-offset) */
|
225
|
+
typedef struct DynamicZoneAbbrev
|
226
|
+
{
|
227
|
+
pg_tz *tz; /* NULL if not yet looked up */
|
228
|
+
char zone[FLEXIBLE_ARRAY_MEMBER]; /* NUL-terminated zone name */
|
229
|
+
} DynamicZoneAbbrev;
|
230
|
+
|
231
|
+
|
232
|
+
/* FMODULO()
|
233
|
+
* Macro to replace modf(), which is broken on some platforms.
|
234
|
+
* t = input and remainder
|
235
|
+
* q = integer part
|
236
|
+
* u = divisor
|
237
|
+
*/
|
238
|
+
#define FMODULO(t,q,u) \
|
239
|
+
do { \
|
240
|
+
(q) = (((t) < 0) ? ceil((t) / (u)) : floor((t) / (u))); \
|
241
|
+
if ((q) != 0) (t) -= rint((q) * (u)); \
|
242
|
+
} while(0)
|
243
|
+
|
244
|
+
/* TMODULO()
|
245
|
+
* Like FMODULO(), but work on the timestamp datatype (now always int64).
|
246
|
+
* We assume that int64 follows the C99 semantics for division (negative
|
247
|
+
* quotients truncate towards zero).
|
248
|
+
*/
|
249
|
+
#define TMODULO(t,q,u) \
|
250
|
+
do { \
|
251
|
+
(q) = ((t) / (u)); \
|
252
|
+
if ((q) != 0) (t) -= ((q) * (u)); \
|
253
|
+
} while(0)
|
254
|
+
|
255
|
+
/*
|
256
|
+
* Date/time validation
|
257
|
+
* Include check for leap year.
|
258
|
+
*/
|
259
|
+
|
260
|
+
extern const char *const months[]; /* months (3-char abbreviations) */
|
261
|
+
extern const char *const days[]; /* days (full names) */
|
262
|
+
extern const int day_tab[2][13];
|
263
|
+
|
264
|
+
/*
|
265
|
+
* These are the rules for the Gregorian calendar, which was adopted in 1582.
|
266
|
+
* However, we use this calculation for all prior years as well because the
|
267
|
+
* SQL standard specifies use of the Gregorian calendar. This prevents the
|
268
|
+
* date 1500-02-29 from being stored, even though it is valid in the Julian
|
269
|
+
* calendar.
|
270
|
+
*/
|
271
|
+
#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
|
272
|
+
|
273
|
+
|
274
|
+
/*
|
275
|
+
* Datetime input parsing routines (ParseDateTime, DecodeDateTime, etc)
|
276
|
+
* return zero or a positive value on success. On failure, they return
|
277
|
+
* one of these negative code values. DateTimeParseError may be used to
|
278
|
+
* produce a correct ereport.
|
279
|
+
*/
|
280
|
+
#define DTERR_BAD_FORMAT (-1)
|
281
|
+
#define DTERR_FIELD_OVERFLOW (-2)
|
282
|
+
#define DTERR_MD_FIELD_OVERFLOW (-3) /* triggers hint about DateStyle */
|
283
|
+
#define DTERR_INTERVAL_OVERFLOW (-4)
|
284
|
+
#define DTERR_TZDISP_OVERFLOW (-5)
|
285
|
+
|
286
|
+
|
287
|
+
extern void GetCurrentDateTime(struct pg_tm *tm);
|
288
|
+
extern void GetCurrentTimeUsec(struct pg_tm *tm, fsec_t *fsec, int *tzp);
|
289
|
+
extern void j2date(int jd, int *year, int *month, int *day);
|
290
|
+
extern int date2j(int year, int month, int day);
|
291
|
+
|
292
|
+
extern int ParseDateTime(const char *timestr, char *workbuf, size_t buflen,
|
293
|
+
char **field, int *ftype,
|
294
|
+
int maxfields, int *numfields);
|
295
|
+
extern int DecodeDateTime(char **field, int *ftype,
|
296
|
+
int nf, int *dtype,
|
297
|
+
struct pg_tm *tm, fsec_t *fsec, int *tzp);
|
298
|
+
extern int DecodeTimezone(char *str, int *tzp);
|
299
|
+
extern int DecodeTimeOnly(char **field, int *ftype,
|
300
|
+
int nf, int *dtype,
|
301
|
+
struct pg_tm *tm, fsec_t *fsec, int *tzp);
|
302
|
+
extern int DecodeInterval(char **field, int *ftype, int nf, int range,
|
303
|
+
int *dtype, struct pg_tm *tm, fsec_t *fsec);
|
304
|
+
extern int DecodeISO8601Interval(char *str,
|
305
|
+
int *dtype, struct pg_tm *tm, fsec_t *fsec);
|
306
|
+
|
307
|
+
extern void DateTimeParseError(int dterr, const char *str,
|
308
|
+
const char *datatype) pg_attribute_noreturn();
|
309
|
+
|
310
|
+
extern int DetermineTimeZoneOffset(struct pg_tm *tm, pg_tz *tzp);
|
311
|
+
extern int DetermineTimeZoneAbbrevOffset(struct pg_tm *tm, const char *abbr, pg_tz *tzp);
|
312
|
+
extern int DetermineTimeZoneAbbrevOffsetTS(TimestampTz ts, const char *abbr,
|
313
|
+
pg_tz *tzp, int *isdst);
|
314
|
+
|
315
|
+
extern void EncodeDateOnly(struct pg_tm *tm, int style, char *str);
|
316
|
+
extern void EncodeTimeOnly(struct pg_tm *tm, fsec_t fsec, bool print_tz, int tz, int style, char *str);
|
317
|
+
extern void EncodeDateTime(struct pg_tm *tm, fsec_t fsec, bool print_tz, int tz, const char *tzn, int style, char *str);
|
318
|
+
extern void EncodeInterval(struct pg_tm *tm, fsec_t fsec, int style, char *str);
|
319
|
+
extern void EncodeSpecialTimestamp(Timestamp dt, char *str);
|
320
|
+
|
321
|
+
extern int ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc,
|
322
|
+
struct pg_tm *tm);
|
323
|
+
|
324
|
+
extern int DecodeTimezoneAbbrev(int field, char *lowtoken,
|
325
|
+
int *offset, pg_tz **tz);
|
326
|
+
extern int DecodeSpecial(int field, char *lowtoken, int *val);
|
327
|
+
extern int DecodeUnits(int field, char *lowtoken, int *val);
|
328
|
+
|
329
|
+
extern int j2day(int jd);
|
330
|
+
|
331
|
+
extern Node *TemporalSimplify(int32 max_precis, Node *node);
|
332
|
+
|
333
|
+
extern bool CheckDateTokenTables(void);
|
334
|
+
|
335
|
+
extern TimeZoneAbbrevTable *ConvertTimeZoneAbbrevs(struct tzEntry *abbrevs,
|
336
|
+
int n);
|
337
|
+
extern void InstallTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl);
|
338
|
+
|
339
|
+
extern void AdjustTimestampForTypmod(Timestamp *time, int32 typmod);
|
340
|
+
extern bool AdjustTimestampForTypmodError(Timestamp *time, int32 typmod,
|
341
|
+
bool *error);
|
342
|
+
|
343
|
+
#endif /* DATETIME_H */
|
@@ -0,0 +1,68 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* datum.h
|
4
|
+
* POSTGRES Datum (abstract data type) manipulation routines.
|
5
|
+
*
|
6
|
+
* These routines are driven by the 'typbyval' and 'typlen' information,
|
7
|
+
* which must previously have been obtained by the caller for the datatype
|
8
|
+
* of the Datum. (We do it this way because in most situations the caller
|
9
|
+
* can look up the info just once and use it for many per-datum operations.)
|
10
|
+
*
|
11
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
12
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
13
|
+
*
|
14
|
+
* src/include/utils/datum.h
|
15
|
+
*
|
16
|
+
*-------------------------------------------------------------------------
|
17
|
+
*/
|
18
|
+
#ifndef DATUM_H
|
19
|
+
#define DATUM_H
|
20
|
+
|
21
|
+
/*
|
22
|
+
* datumGetSize - find the "real" length of a datum
|
23
|
+
*/
|
24
|
+
extern Size datumGetSize(Datum value, bool typByVal, int typLen);
|
25
|
+
|
26
|
+
/*
|
27
|
+
* datumCopy - make a copy of a non-NULL datum.
|
28
|
+
*
|
29
|
+
* If the datatype is pass-by-reference, memory is obtained with palloc().
|
30
|
+
*/
|
31
|
+
extern Datum datumCopy(Datum value, bool typByVal, int typLen);
|
32
|
+
|
33
|
+
/*
|
34
|
+
* datumTransfer - transfer a non-NULL datum into the current memory context.
|
35
|
+
*
|
36
|
+
* Differs from datumCopy() in its handling of read-write expanded objects.
|
37
|
+
*/
|
38
|
+
extern Datum datumTransfer(Datum value, bool typByVal, int typLen);
|
39
|
+
|
40
|
+
/*
|
41
|
+
* datumIsEqual
|
42
|
+
* return true if two datums of the same type are equal, false otherwise.
|
43
|
+
*
|
44
|
+
* XXX : See comments in the code for restrictions!
|
45
|
+
*/
|
46
|
+
extern bool datumIsEqual(Datum value1, Datum value2,
|
47
|
+
bool typByVal, int typLen);
|
48
|
+
|
49
|
+
/*
|
50
|
+
* datum_image_eq
|
51
|
+
*
|
52
|
+
* Compares two datums for identical contents, based on byte images. Return
|
53
|
+
* true if the two datums are equal, false otherwise.
|
54
|
+
*/
|
55
|
+
extern bool datum_image_eq(Datum value1, Datum value2,
|
56
|
+
bool typByVal, int typLen);
|
57
|
+
|
58
|
+
/*
|
59
|
+
* Serialize and restore datums so that we can transfer them to parallel
|
60
|
+
* workers.
|
61
|
+
*/
|
62
|
+
extern Size datumEstimateSpace(Datum value, bool isnull, bool typByVal,
|
63
|
+
int typLen);
|
64
|
+
extern void datumSerialize(Datum value, bool isnull, bool typByVal,
|
65
|
+
int typLen, char **start_address);
|
66
|
+
extern Datum datumRestore(char **start_address, bool *isnull);
|
67
|
+
|
68
|
+
#endif /* DATUM_H */
|
@@ -0,0 +1,123 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* dsa.h
|
4
|
+
* Dynamic shared memory areas.
|
5
|
+
*
|
6
|
+
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
8
|
+
*
|
9
|
+
* IDENTIFICATION
|
10
|
+
* src/include/utils/dsa.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef DSA_H
|
15
|
+
#define DSA_H
|
16
|
+
|
17
|
+
#include "port/atomics.h"
|
18
|
+
#include "storage/dsm.h"
|
19
|
+
|
20
|
+
/* The opaque type used for an area. */
|
21
|
+
struct dsa_area;
|
22
|
+
typedef struct dsa_area dsa_area;
|
23
|
+
|
24
|
+
/*
|
25
|
+
* If this system only uses a 32-bit value for size_t, then use the 32-bit
|
26
|
+
* implementation of DSA. This limits the amount of DSA that can be created
|
27
|
+
* to something significantly less than the entire 4GB address space because
|
28
|
+
* the DSA pointer must encode both a segment identifier and an offset, but
|
29
|
+
* that shouldn't be a significant limitation in practice.
|
30
|
+
*
|
31
|
+
* If this system doesn't support atomic operations on 64-bit values, then
|
32
|
+
* we fall back to 32-bit dsa_pointer for lack of other options.
|
33
|
+
*
|
34
|
+
* For testing purposes, USE_SMALL_DSA_POINTER can be defined to force the use
|
35
|
+
* of 32-bit dsa_pointer even on systems capable of supporting a 64-bit
|
36
|
+
* dsa_pointer.
|
37
|
+
*/
|
38
|
+
#if SIZEOF_SIZE_T == 4 || !defined(PG_HAVE_ATOMIC_U64_SUPPORT) || \
|
39
|
+
defined(USE_SMALL_DSA_POINTER)
|
40
|
+
#define SIZEOF_DSA_POINTER 4
|
41
|
+
#else
|
42
|
+
#define SIZEOF_DSA_POINTER 8
|
43
|
+
#endif
|
44
|
+
|
45
|
+
/*
|
46
|
+
* The type of 'relative pointers' to memory allocated by a dynamic shared
|
47
|
+
* area. dsa_pointer values can be shared with other processes, but must be
|
48
|
+
* converted to backend-local pointers before they can be dereferenced. See
|
49
|
+
* dsa_get_address. Also, an atomic version and appropriately sized atomic
|
50
|
+
* operations.
|
51
|
+
*/
|
52
|
+
#if SIZEOF_DSA_POINTER == 4
|
53
|
+
typedef uint32 dsa_pointer;
|
54
|
+
typedef pg_atomic_uint32 dsa_pointer_atomic;
|
55
|
+
#define dsa_pointer_atomic_init pg_atomic_init_u32
|
56
|
+
#define dsa_pointer_atomic_read pg_atomic_read_u32
|
57
|
+
#define dsa_pointer_atomic_write pg_atomic_write_u32
|
58
|
+
#define dsa_pointer_atomic_fetch_add pg_atomic_fetch_add_u32
|
59
|
+
#define dsa_pointer_atomic_compare_exchange pg_atomic_compare_exchange_u32
|
60
|
+
#define DSA_POINTER_FORMAT "%08x"
|
61
|
+
#else
|
62
|
+
typedef uint64 dsa_pointer;
|
63
|
+
typedef pg_atomic_uint64 dsa_pointer_atomic;
|
64
|
+
#define dsa_pointer_atomic_init pg_atomic_init_u64
|
65
|
+
#define dsa_pointer_atomic_read pg_atomic_read_u64
|
66
|
+
#define dsa_pointer_atomic_write pg_atomic_write_u64
|
67
|
+
#define dsa_pointer_atomic_fetch_add pg_atomic_fetch_add_u64
|
68
|
+
#define dsa_pointer_atomic_compare_exchange pg_atomic_compare_exchange_u64
|
69
|
+
#define DSA_POINTER_FORMAT "%016" INT64_MODIFIER "x"
|
70
|
+
#endif
|
71
|
+
|
72
|
+
/* Flags for dsa_allocate_extended. */
|
73
|
+
#define DSA_ALLOC_HUGE 0x01 /* allow huge allocation (> 1 GB) */
|
74
|
+
#define DSA_ALLOC_NO_OOM 0x02 /* no failure if out-of-memory */
|
75
|
+
#define DSA_ALLOC_ZERO 0x04 /* zero allocated memory */
|
76
|
+
|
77
|
+
/* A sentinel value for dsa_pointer used to indicate failure to allocate. */
|
78
|
+
#define InvalidDsaPointer ((dsa_pointer) 0)
|
79
|
+
|
80
|
+
/* Check if a dsa_pointer value is valid. */
|
81
|
+
#define DsaPointerIsValid(x) ((x) != InvalidDsaPointer)
|
82
|
+
|
83
|
+
/* Allocate uninitialized memory with error on out-of-memory. */
|
84
|
+
#define dsa_allocate(area, size) \
|
85
|
+
dsa_allocate_extended(area, size, 0)
|
86
|
+
|
87
|
+
/* Allocate zero-initialized memory with error on out-of-memory. */
|
88
|
+
#define dsa_allocate0(area, size) \
|
89
|
+
dsa_allocate_extended(area, size, DSA_ALLOC_ZERO)
|
90
|
+
|
91
|
+
/*
|
92
|
+
* The type used for dsa_area handles. dsa_handle values can be shared with
|
93
|
+
* other processes, so that they can attach to them. This provides a way to
|
94
|
+
* share allocated storage with other processes.
|
95
|
+
*
|
96
|
+
* The handle for a dsa_area is currently implemented as the dsm_handle
|
97
|
+
* for the first DSM segment backing this dynamic storage area, but client
|
98
|
+
* code shouldn't assume that is true.
|
99
|
+
*/
|
100
|
+
typedef dsm_handle dsa_handle;
|
101
|
+
|
102
|
+
extern dsa_area *dsa_create(int tranche_id);
|
103
|
+
extern dsa_area *dsa_create_in_place(void *place, size_t size,
|
104
|
+
int tranche_id, dsm_segment *segment);
|
105
|
+
extern dsa_area *dsa_attach(dsa_handle handle);
|
106
|
+
extern dsa_area *dsa_attach_in_place(void *place, dsm_segment *segment);
|
107
|
+
extern void dsa_release_in_place(void *place);
|
108
|
+
extern void dsa_on_dsm_detach_release_in_place(dsm_segment *, Datum);
|
109
|
+
extern void dsa_on_shmem_exit_release_in_place(int, Datum);
|
110
|
+
extern void dsa_pin_mapping(dsa_area *area);
|
111
|
+
extern void dsa_detach(dsa_area *area);
|
112
|
+
extern void dsa_pin(dsa_area *area);
|
113
|
+
extern void dsa_unpin(dsa_area *area);
|
114
|
+
extern void dsa_set_size_limit(dsa_area *area, size_t limit);
|
115
|
+
extern size_t dsa_minimum_size(void);
|
116
|
+
extern dsa_handle dsa_get_handle(dsa_area *area);
|
117
|
+
extern dsa_pointer dsa_allocate_extended(dsa_area *area, size_t size, int flags);
|
118
|
+
extern void dsa_free(dsa_area *area, dsa_pointer dp);
|
119
|
+
extern void *dsa_get_address(dsa_area *area, dsa_pointer dp);
|
120
|
+
extern void dsa_trim(dsa_area *area);
|
121
|
+
extern void dsa_dump(dsa_area *area);
|
122
|
+
|
123
|
+
#endif /* DSA_H */
|