pg_query 4.2.3 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +6 -8
- data/Rakefile +3 -3
- data/ext/pg_query/extconf.rb +1 -3
- data/ext/pg_query/include/access/amapi.h +3 -1
- data/ext/pg_query/include/access/attmap.h +5 -3
- data/ext/pg_query/include/access/attnum.h +1 -1
- data/ext/pg_query/include/access/clog.h +1 -1
- data/ext/pg_query/include/access/commit_ts.h +1 -1
- data/ext/pg_query/include/access/detoast.h +1 -1
- data/ext/pg_query/include/access/genam.h +7 -5
- data/ext/pg_query/include/access/gin.h +16 -3
- data/ext/pg_query/include/access/htup.h +1 -1
- data/ext/pg_query/include/access/htup_details.h +6 -2
- data/ext/pg_query/include/access/itup.h +61 -58
- data/ext/pg_query/include/access/parallel.h +2 -2
- data/ext/pg_query/include/access/printtup.h +1 -1
- data/ext/pg_query/include/access/relation.h +1 -1
- data/ext/pg_query/include/access/relscan.h +1 -1
- data/ext/pg_query/include/access/rmgrlist.h +2 -2
- data/ext/pg_query/include/access/sdir.h +12 -3
- data/ext/pg_query/include/access/skey.h +1 -1
- data/ext/pg_query/include/access/stratnum.h +1 -1
- data/ext/pg_query/include/access/sysattr.h +1 -1
- data/ext/pg_query/include/access/table.h +1 -1
- data/ext/pg_query/include/access/tableam.h +68 -45
- data/ext/pg_query/include/access/toast_compression.h +1 -1
- data/ext/pg_query/include/access/transam.h +1 -1
- data/ext/pg_query/include/access/tsmapi.h +82 -0
- data/ext/pg_query/include/access/tupconvert.h +5 -2
- data/ext/pg_query/include/access/tupdesc.h +2 -2
- data/ext/pg_query/include/access/tupmacs.h +58 -98
- data/ext/pg_query/include/access/twophase.h +2 -2
- data/ext/pg_query/include/access/xact.h +25 -18
- data/ext/pg_query/include/access/xlog.h +15 -16
- data/ext/pg_query/include/access/xlog_internal.h +100 -62
- data/ext/pg_query/include/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/access/xlogdefs.h +6 -25
- data/ext/pg_query/include/access/xlogprefetcher.h +1 -1
- data/ext/pg_query/include/access/xlogreader.h +7 -6
- data/ext/pg_query/include/access/xlogrecord.h +17 -5
- data/ext/pg_query/include/access/xlogrecovery.h +4 -3
- data/ext/pg_query/include/archive/archive_module.h +59 -0
- data/ext/pg_query/include/c.h +144 -156
- data/ext/pg_query/include/catalog/catalog.h +4 -3
- data/ext/pg_query/include/catalog/catversion.h +6 -2
- data/ext/pg_query/include/catalog/dependency.h +5 -4
- data/ext/pg_query/include/catalog/genbki.h +7 -6
- data/ext/pg_query/include/catalog/index.h +4 -4
- data/ext/pg_query/include/catalog/indexing.h +1 -1
- data/ext/pg_query/include/catalog/namespace.h +2 -2
- data/ext/pg_query/include/catalog/objectaccess.h +10 -8
- data/ext/pg_query/include/catalog/objectaddress.h +3 -3
- data/ext/pg_query/include/catalog/pg_aggregate.h +1 -1
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_am.h +1 -1
- data/ext/pg_query/include/catalog/pg_am_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_attribute.h +19 -17
- data/ext/pg_query/include/catalog/pg_attribute_d.h +19 -19
- data/ext/pg_query/include/catalog/pg_authid.h +1 -1
- data/ext/pg_query/include/catalog/pg_authid_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_class.h +1 -1
- data/ext/pg_query/include/catalog/pg_class_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_collation.h +3 -1
- data/ext/pg_query/include/catalog/pg_collation_d.h +4 -3
- data/ext/pg_query/include/catalog/pg_constraint.h +2 -2
- data/ext/pg_query/include/catalog/pg_constraint_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_control.h +9 -1
- data/ext/pg_query/include/catalog/pg_conversion.h +2 -2
- data/ext/pg_query/include/catalog/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/catalog/pg_depend.h +1 -1
- data/ext/pg_query/include/catalog/pg_depend_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_event_trigger.h +1 -1
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_index.h +1 -1
- data/ext/pg_query/include/catalog/pg_index_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_language.h +1 -1
- data/ext/pg_query/include/catalog/pg_language_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_namespace.h +1 -1
- data/ext/pg_query/include/catalog/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_opclass.h +1 -1
- data/ext/pg_query/include/catalog/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_operator.h +1 -1
- data/ext/pg_query/include/catalog/pg_operator_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_opfamily.h +3 -2
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +4 -2
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +1 -1
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_proc.h +1 -1
- data/ext/pg_query/include/catalog/pg_proc_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_publication.h +2 -5
- data/ext/pg_query/include/catalog/pg_publication_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_replication_origin.h +1 -1
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_statistic.h +1 -1
- data/ext/pg_query/include/catalog/pg_statistic_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +1 -1
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_transform.h +1 -1
- data/ext/pg_query/include/catalog/pg_transform_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_trigger.h +1 -1
- data/ext/pg_query/include/catalog/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_config.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_dict.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_parser.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_template.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_type.h +1 -1
- data/ext/pg_query/include/catalog/pg_type_d.h +1 -1
- data/ext/pg_query/include/catalog/storage.h +6 -6
- data/ext/pg_query/include/commands/async.h +1 -1
- data/ext/pg_query/include/commands/dbcommands.h +2 -1
- data/ext/pg_query/include/commands/defrem.h +2 -1
- data/ext/pg_query/include/commands/event_trigger.h +1 -1
- data/ext/pg_query/include/commands/explain.h +3 -1
- data/ext/pg_query/include/commands/prepare.h +1 -1
- data/ext/pg_query/include/commands/tablespace.h +4 -4
- data/ext/pg_query/include/commands/trigger.h +15 -14
- data/ext/pg_query/include/commands/user.h +9 -3
- data/ext/pg_query/include/commands/vacuum.h +60 -14
- data/ext/pg_query/include/common/cryptohash.h +39 -0
- data/ext/pg_query/include/common/file_perm.h +1 -1
- data/ext/pg_query/include/common/hashfn.h +1 -1
- data/ext/pg_query/include/common/int.h +437 -0
- data/ext/pg_query/include/common/ip.h +4 -2
- data/ext/pg_query/include/common/keywords.h +1 -1
- data/ext/pg_query/include/common/kwlookup.h +2 -2
- data/ext/pg_query/include/common/pg_prng.h +3 -2
- data/ext/pg_query/include/common/relpath.h +20 -13
- data/ext/pg_query/include/common/scram-common.h +70 -0
- data/ext/pg_query/include/common/sha2.h +32 -0
- data/ext/pg_query/include/common/string.h +5 -3
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +10 -10
- data/ext/pg_query/include/common/{unicode_combining_table.h → unicode_nonspacing_table.h} +31 -13
- data/ext/pg_query/include/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/datatype/timestamp.h +11 -4
- data/ext/pg_query/include/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/executor/execdesc.h +1 -1
- data/ext/pg_query/include/executor/executor.h +34 -17
- data/ext/pg_query/include/executor/functions.h +1 -1
- data/ext/pg_query/include/executor/instrument.h +1 -1
- data/ext/pg_query/include/executor/spi.h +2 -2
- data/ext/pg_query/include/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/executor/tuptable.h +18 -11
- data/ext/pg_query/include/fmgr.h +21 -2
- data/ext/pg_query/include/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/funcapi.h +12 -12
- data/ext/pg_query/include/gram.h +1127 -0
- data/ext/pg_query/include/{parser/gramparse.h → gramparse.h} +4 -4
- data/ext/pg_query/include/jit/jit.h +2 -2
- data/ext/pg_query/include/kwlist_d.h +534 -510
- data/ext/pg_query/include/lib/dshash.h +4 -1
- data/ext/pg_query/include/lib/ilist.h +435 -22
- data/ext/pg_query/include/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/lib/simplehash.h +9 -9
- data/ext/pg_query/include/lib/sort_template.h +1 -1
- data/ext/pg_query/include/lib/stringinfo.h +3 -3
- data/ext/pg_query/include/libpq/auth.h +8 -2
- data/ext/pg_query/include/libpq/crypt.h +1 -1
- data/ext/pg_query/include/libpq/hba.h +24 -17
- data/ext/pg_query/include/libpq/libpq-be.h +36 -25
- data/ext/pg_query/include/libpq/libpq.h +1 -1
- data/ext/pg_query/include/libpq/pqcomm.h +10 -41
- data/ext/pg_query/include/libpq/pqformat.h +2 -2
- data/ext/pg_query/include/libpq/pqsignal.h +22 -10
- data/ext/pg_query/include/libpq/sasl.h +136 -0
- data/ext/pg_query/include/libpq/scram.h +37 -0
- data/ext/pg_query/include/mb/pg_wchar.h +35 -18
- data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/miscadmin.h +26 -14
- data/ext/pg_query/include/nodes/bitmapset.h +11 -7
- data/ext/pg_query/include/nodes/execnodes.h +83 -30
- data/ext/pg_query/include/nodes/extensible.h +5 -3
- data/ext/pg_query/include/nodes/lockoptions.h +1 -1
- data/ext/pg_query/include/nodes/makefuncs.h +14 -2
- data/ext/pg_query/include/nodes/memnodes.h +7 -4
- data/ext/pg_query/include/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/nodes/nodeFuncs.h +89 -29
- data/ext/pg_query/include/nodes/nodes.h +95 -510
- data/ext/pg_query/include/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/nodes/params.h +3 -3
- data/ext/pg_query/include/nodes/parsenodes.h +377 -139
- data/ext/pg_query/include/nodes/pathnodes.h +1090 -440
- data/ext/pg_query/include/nodes/pg_list.h +30 -7
- data/ext/pg_query/include/nodes/plannodes.h +367 -124
- data/ext/pg_query/include/nodes/primnodes.h +670 -222
- data/ext/pg_query/include/nodes/print.h +1 -1
- data/ext/pg_query/include/{utils → nodes}/queryjumble.h +5 -7
- data/ext/pg_query/include/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/nodes/value.h +12 -2
- data/ext/pg_query/include/optimizer/cost.h +6 -4
- data/ext/pg_query/include/optimizer/geqo.h +1 -1
- data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/optimizer/optimizer.h +8 -8
- data/ext/pg_query/include/optimizer/paths.h +16 -7
- data/ext/pg_query/include/optimizer/planmain.h +3 -6
- data/ext/pg_query/include/parser/analyze.h +4 -3
- data/ext/pg_query/include/parser/kwlist.h +12 -1
- data/ext/pg_query/include/parser/parse_agg.h +4 -2
- data/ext/pg_query/include/parser/parse_coerce.h +3 -1
- data/ext/pg_query/include/parser/parse_expr.h +1 -1
- data/ext/pg_query/include/parser/parse_func.h +1 -1
- data/ext/pg_query/include/parser/parse_node.h +22 -4
- data/ext/pg_query/include/parser/parse_oper.h +3 -3
- data/ext/pg_query/include/parser/parse_relation.h +8 -3
- data/ext/pg_query/include/parser/parse_type.h +4 -3
- data/ext/pg_query/include/parser/parser.h +1 -1
- data/ext/pg_query/include/parser/parsetree.h +1 -1
- data/ext/pg_query/include/parser/scanner.h +2 -2
- data/ext/pg_query/include/parser/scansup.h +1 -1
- data/ext/pg_query/include/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/pg_config.h +21 -216
- data/ext/pg_query/include/pg_config_manual.h +8 -46
- data/ext/pg_query/include/pg_getopt.h +1 -1
- data/ext/pg_query/include/pg_query.h +27 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
- data/ext/pg_query/include/pg_trace.h +1 -1
- data/ext/pg_query/include/pgstat.h +172 -93
- data/ext/pg_query/include/pgtime.h +3 -3
- data/ext/pg_query/include/pl_gram.h +64 -62
- data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -1
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/include/plpgsql.h +17 -22
- data/ext/pg_query/include/port/atomics/arch-arm.h +3 -3
- data/ext/pg_query/include/port/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/port/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/port/atomics/fallback.h +3 -3
- data/ext/pg_query/include/port/atomics/generic-gcc.h +1 -1
- data/ext/pg_query/include/port/atomics/generic.h +1 -1
- data/ext/pg_query/include/port/atomics.h +2 -7
- data/ext/pg_query/include/port/pg_bitutils.h +62 -25
- data/ext/pg_query/include/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/port/pg_crc32c.h +1 -1
- data/ext/pg_query/include/port/simd.h +375 -0
- data/ext/pg_query/include/port.h +42 -75
- data/ext/pg_query/include/portability/instr_time.h +81 -140
- data/ext/pg_query/include/postgres.h +205 -434
- data/ext/pg_query/include/postgres_ext.h +0 -1
- data/ext/pg_query/include/postmaster/autovacuum.h +1 -4
- data/ext/pg_query/include/postmaster/auxprocess.h +1 -1
- data/ext/pg_query/include/postmaster/bgworker.h +2 -2
- data/ext/pg_query/include/postmaster/bgworker_internals.h +1 -1
- data/ext/pg_query/include/postmaster/bgwriter.h +2 -2
- data/ext/pg_query/include/postmaster/fork_process.h +1 -1
- data/ext/pg_query/include/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postmaster/pgarch.h +1 -38
- data/ext/pg_query/include/postmaster/postmaster.h +5 -2
- data/ext/pg_query/include/postmaster/startup.h +3 -1
- data/ext/pg_query/include/postmaster/syslogger.h +2 -2
- data/ext/pg_query/include/postmaster/walwriter.h +3 -1
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
- data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
- data/ext/pg_query/include/regex/regex.h +9 -6
- data/ext/pg_query/include/replication/logicallauncher.h +6 -1
- data/ext/pg_query/include/replication/logicalproto.h +30 -10
- data/ext/pg_query/include/replication/logicalworker.h +14 -1
- data/ext/pg_query/include/replication/origin.h +4 -4
- data/ext/pg_query/include/replication/reorderbuffer.h +113 -45
- data/ext/pg_query/include/replication/slot.h +25 -6
- data/ext/pg_query/include/replication/syncrep.h +2 -8
- data/ext/pg_query/include/replication/walreceiver.h +15 -9
- data/ext/pg_query/include/replication/walsender.h +13 -13
- data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -4
- data/ext/pg_query/include/rewrite/rewriteManip.h +11 -2
- data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/src_backend_nodes_copyfuncs.funcs.c +5321 -0
- data/ext/pg_query/include/src_backend_nodes_equalfuncs.funcs.c +3354 -0
- data/ext/pg_query/include/storage/backendid.h +1 -1
- data/ext/pg_query/include/storage/block.h +24 -31
- data/ext/pg_query/include/storage/buf.h +1 -1
- data/ext/pg_query/include/storage/bufmgr.h +183 -87
- data/ext/pg_query/include/storage/bufpage.h +146 -93
- data/ext/pg_query/include/storage/condition_variable.h +2 -2
- data/ext/pg_query/include/storage/dsm.h +3 -6
- data/ext/pg_query/include/storage/dsm_impl.h +4 -1
- data/ext/pg_query/include/storage/fd.h +24 -20
- data/ext/pg_query/include/storage/fileset.h +1 -1
- data/ext/pg_query/include/storage/ipc.h +1 -1
- data/ext/pg_query/include/storage/item.h +1 -1
- data/ext/pg_query/include/storage/itemid.h +1 -1
- data/ext/pg_query/include/storage/itemptr.h +94 -57
- data/ext/pg_query/include/storage/large_object.h +1 -1
- data/ext/pg_query/include/storage/latch.h +9 -1
- data/ext/pg_query/include/storage/lmgr.h +6 -1
- data/ext/pg_query/include/storage/lock.h +21 -13
- data/ext/pg_query/include/storage/lockdefs.h +3 -3
- data/ext/pg_query/include/storage/lwlock.h +16 -2
- data/ext/pg_query/include/storage/off.h +1 -1
- data/ext/pg_query/include/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/storage/pg_shmem.h +1 -1
- data/ext/pg_query/include/storage/pmsignal.h +1 -1
- data/ext/pg_query/include/storage/predicate.h +2 -2
- data/ext/pg_query/include/storage/proc.h +22 -17
- data/ext/pg_query/include/storage/procarray.h +3 -2
- data/ext/pg_query/include/storage/proclist_types.h +1 -1
- data/ext/pg_query/include/storage/procsignal.h +3 -1
- data/ext/pg_query/include/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/storage/s_lock.h +66 -309
- data/ext/pg_query/include/storage/sharedfileset.h +1 -1
- data/ext/pg_query/include/storage/shm_mq.h +1 -1
- data/ext/pg_query/include/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/storage/shmem.h +1 -23
- data/ext/pg_query/include/storage/sinval.h +3 -3
- data/ext/pg_query/include/storage/sinvaladt.h +4 -2
- data/ext/pg_query/include/storage/smgr.h +12 -10
- data/ext/pg_query/include/storage/spin.h +1 -1
- data/ext/pg_query/include/storage/standby.h +9 -8
- data/ext/pg_query/include/storage/standbydefs.h +1 -1
- data/ext/pg_query/include/storage/sync.h +3 -3
- data/ext/pg_query/include/tcop/cmdtag.h +7 -2
- data/ext/pg_query/include/tcop/cmdtaglist.h +1 -1
- data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
- data/ext/pg_query/include/tcop/dest.h +1 -3
- data/ext/pg_query/include/tcop/fastpath.h +1 -1
- data/ext/pg_query/include/tcop/pquery.h +1 -1
- data/ext/pg_query/include/tcop/tcopprot.h +1 -4
- data/ext/pg_query/include/tcop/utility.h +1 -1
- data/ext/pg_query/include/tsearch/ts_cache.h +2 -4
- data/ext/pg_query/include/utils/acl.h +26 -81
- data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/utils/array.h +19 -1
- data/ext/pg_query/include/utils/backend_progress.h +2 -1
- data/ext/pg_query/include/utils/backend_status.h +24 -3
- data/ext/pg_query/include/utils/builtins.h +14 -5
- data/ext/pg_query/include/utils/bytea.h +1 -1
- data/ext/pg_query/include/utils/catcache.h +1 -1
- data/ext/pg_query/include/utils/date.h +37 -9
- data/ext/pg_query/include/utils/datetime.h +41 -21
- data/ext/pg_query/include/utils/datum.h +1 -1
- data/ext/pg_query/include/utils/dsa.h +5 -1
- data/ext/pg_query/include/utils/elog.h +101 -26
- data/ext/pg_query/include/utils/expandeddatum.h +14 -3
- data/ext/pg_query/include/utils/expandedrecord.h +14 -4
- data/ext/pg_query/include/utils/float.h +7 -6
- data/ext/pg_query/include/utils/fmgroids.h +54 -1
- data/ext/pg_query/include/utils/fmgrprotos.h +45 -3
- data/ext/pg_query/include/utils/fmgrtab.h +1 -1
- data/ext/pg_query/include/utils/guc.h +55 -82
- data/ext/pg_query/include/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/utils/guc_tables.h +49 -3
- data/ext/pg_query/include/utils/hsearch.h +1 -1
- data/ext/pg_query/include/utils/inval.h +3 -3
- data/ext/pg_query/include/utils/logtape.h +77 -0
- data/ext/pg_query/include/utils/lsyscache.h +5 -1
- data/ext/pg_query/include/utils/memdebug.h +1 -1
- data/ext/pg_query/include/utils/memutils.h +5 -49
- data/ext/pg_query/include/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/utils/numeric.h +20 -5
- data/ext/pg_query/include/utils/palloc.h +8 -1
- data/ext/pg_query/include/utils/partcache.h +3 -2
- data/ext/pg_query/include/utils/pg_locale.h +22 -14
- data/ext/pg_query/include/utils/pgstat_internal.h +37 -7
- data/ext/pg_query/include/utils/pidfile.h +1 -1
- data/ext/pg_query/include/utils/plancache.h +1 -1
- data/ext/pg_query/include/utils/portal.h +1 -1
- data/ext/pg_query/include/utils/probes.h +6 -6
- data/ext/pg_query/include/utils/ps_status.h +23 -1
- data/ext/pg_query/include/utils/queryenvironment.h +1 -1
- data/ext/pg_query/include/utils/regproc.h +3 -3
- data/ext/pg_query/include/utils/rel.h +60 -43
- data/ext/pg_query/include/utils/relcache.h +13 -8
- data/ext/pg_query/include/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/utils/resowner.h +1 -1
- data/ext/pg_query/include/utils/ruleutils.h +6 -1
- data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/utils/snapmgr.h +4 -2
- data/ext/pg_query/include/utils/snapshot.h +1 -1
- data/ext/pg_query/include/utils/sortsupport.h +2 -2
- data/ext/pg_query/include/utils/syscache.h +4 -1
- data/ext/pg_query/include/utils/timeout.h +1 -1
- data/ext/pg_query/include/utils/timestamp.h +41 -11
- data/ext/pg_query/include/utils/tuplesort.h +189 -35
- data/ext/pg_query/include/utils/tuplestore.h +1 -1
- data/ext/pg_query/include/utils/typcache.h +1 -1
- data/ext/pg_query/include/utils/varlena.h +13 -1
- data/ext/pg_query/include/utils/wait_event.h +9 -4
- data/ext/pg_query/include/utils/xml.h +15 -5
- data/ext/pg_query/include/varatt.h +358 -0
- data/ext/pg_query/pg_query.c +1 -1
- data/ext/pg_query/pg_query.pb-c.c +19755 -17757
- data/ext/pg_query/pg_query_fingerprint.c +8 -3
- data/ext/pg_query/pg_query_fingerprint.h +1 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +2 -2
- data/ext/pg_query/pg_query_parse.c +46 -4
- data/ext/pg_query/pg_query_parse_plpgsql.c +1 -1
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/pg_query_split.c +2 -2
- data/ext/pg_query/postgres_deparse.c +503 -105
- data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
- data/ext/pg_query/src_backend_commands_define.c +1 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +14 -2
- data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
- data/ext/pg_query/src_backend_parser_parser.c +28 -2
- data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
- data/ext/pg_query/src_backend_parser_scansup.c +1 -1
- data/ext/pg_query/src_backend_postmaster_postmaster.c +129 -110
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
- data/ext/pg_query/src_backend_utils_error_elog.c +354 -97
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
- data/ext/pg_query/src_backend_utils_init_globals.c +5 -2
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +13 -4
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +494 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +534 -510
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +9 -8
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/src_port_pg_bitutils.c +1 -1
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +3 -7
- data/ext/pg_query/src_port_strerror.c +1 -1
- data/ext/pg_query/src_port_strnlen.c +1 -1
- data/lib/pg_query/pg_query_pb.rb +166 -3191
- data/lib/pg_query/treewalker.rb +7 -2
- data/lib/pg_query/version.rb +1 -1
- metadata +43 -24
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -20
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
- data/ext/pg_query/src_common_pg_prng.c +0 -152
- data/ext/pg_query/src_common_string.c +0 -92
- data/ext/pg_query/src_port_pgsleep.c +0 -69
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
/*--------------------------------------------------------------------
|
|
2
|
-
* Symbols referenced in this file:
|
|
3
|
-
* - pg_prng_double
|
|
4
|
-
* - xoroshiro128ss
|
|
5
|
-
* - rotl
|
|
6
|
-
* - pg_global_prng_state
|
|
7
|
-
*--------------------------------------------------------------------
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/*-------------------------------------------------------------------------
|
|
11
|
-
*
|
|
12
|
-
* Pseudo-Random Number Generator
|
|
13
|
-
*
|
|
14
|
-
* We use Blackman and Vigna's xoroshiro128** 1.0 algorithm
|
|
15
|
-
* to have a small, fast PRNG suitable for generating reasonably
|
|
16
|
-
* good-quality 64-bit data. This should not be considered
|
|
17
|
-
* cryptographically strong, however.
|
|
18
|
-
*
|
|
19
|
-
* About these generators: https://prng.di.unimi.it/
|
|
20
|
-
* See also https://en.wikipedia.org/wiki/List_of_random_number_generators
|
|
21
|
-
*
|
|
22
|
-
* Copyright (c) 2021-2022, PostgreSQL Global Development Group
|
|
23
|
-
*
|
|
24
|
-
* src/common/pg_prng.c
|
|
25
|
-
*
|
|
26
|
-
*-------------------------------------------------------------------------
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
#include "c.h"
|
|
30
|
-
|
|
31
|
-
#include <math.h> /* for ldexp() */
|
|
32
|
-
|
|
33
|
-
#include "common/pg_prng.h"
|
|
34
|
-
#include "port/pg_bitutils.h"
|
|
35
|
-
|
|
36
|
-
/* process-wide state vector */
|
|
37
|
-
__thread pg_prng_state pg_global_prng_state;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
/*
|
|
42
|
-
* 64-bit rotate left
|
|
43
|
-
*/
|
|
44
|
-
static inline uint64
|
|
45
|
-
rotl(uint64 x, int bits)
|
|
46
|
-
{
|
|
47
|
-
return (x << bits) | (x >> (64 - bits));
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/*
|
|
51
|
-
* The basic xoroshiro128** algorithm.
|
|
52
|
-
* Generates and returns a 64-bit uniformly distributed number,
|
|
53
|
-
* updating the state vector for next time.
|
|
54
|
-
*
|
|
55
|
-
* Note: the state vector must not be all-zeroes, as that is a fixed point.
|
|
56
|
-
*/
|
|
57
|
-
static uint64
|
|
58
|
-
xoroshiro128ss(pg_prng_state *state)
|
|
59
|
-
{
|
|
60
|
-
uint64 s0 = state->s0,
|
|
61
|
-
sx = state->s1 ^ s0,
|
|
62
|
-
val = rotl(s0 * 5, 7) * 9;
|
|
63
|
-
|
|
64
|
-
/* update state */
|
|
65
|
-
state->s0 = rotl(s0, 24) ^ sx ^ (sx << 16);
|
|
66
|
-
state->s1 = rotl(sx, 37);
|
|
67
|
-
|
|
68
|
-
return val;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/*
|
|
72
|
-
* We use this generator just to fill the xoroshiro128** state vector
|
|
73
|
-
* from a 64-bit seed.
|
|
74
|
-
*/
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
/*
|
|
78
|
-
* Initialize the PRNG state from a 64-bit integer,
|
|
79
|
-
* taking care that we don't produce all-zeroes.
|
|
80
|
-
*/
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
/*
|
|
84
|
-
* Initialize the PRNG state from a double in the range [-1.0, 1.0],
|
|
85
|
-
* taking care that we don't produce all-zeroes.
|
|
86
|
-
*/
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
/*
|
|
90
|
-
* Validate a PRNG seed value.
|
|
91
|
-
*/
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
/*
|
|
95
|
-
* Select a random uint64 uniformly from the range [0, PG_UINT64_MAX].
|
|
96
|
-
*/
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
/*
|
|
100
|
-
* Select a random uint64 uniformly from the range [rmin, rmax].
|
|
101
|
-
* If the range is empty, rmin is always produced.
|
|
102
|
-
*/
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
/*
|
|
106
|
-
* Select a random int64 uniformly from the range [PG_INT64_MIN, PG_INT64_MAX].
|
|
107
|
-
*/
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
/*
|
|
111
|
-
* Select a random int64 uniformly from the range [0, PG_INT64_MAX].
|
|
112
|
-
*/
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
/*
|
|
116
|
-
* Select a random uint32 uniformly from the range [0, PG_UINT32_MAX].
|
|
117
|
-
*/
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
/*
|
|
121
|
-
* Select a random int32 uniformly from the range [PG_INT32_MIN, PG_INT32_MAX].
|
|
122
|
-
*/
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
/*
|
|
126
|
-
* Select a random int32 uniformly from the range [0, PG_INT32_MAX].
|
|
127
|
-
*/
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
/*
|
|
131
|
-
* Select a random double uniformly from the range [0.0, 1.0).
|
|
132
|
-
*
|
|
133
|
-
* Note: if you want a result in the range (0.0, 1.0], the standard way
|
|
134
|
-
* to get that is "1.0 - pg_prng_double(state)".
|
|
135
|
-
*/
|
|
136
|
-
double
|
|
137
|
-
pg_prng_double(pg_prng_state *state)
|
|
138
|
-
{
|
|
139
|
-
uint64 v = xoroshiro128ss(state);
|
|
140
|
-
|
|
141
|
-
/*
|
|
142
|
-
* As above, assume there's 52 mantissa bits in a double. This result
|
|
143
|
-
* could round to 1.0 if double's precision is less than that; but we
|
|
144
|
-
* assume IEEE float arithmetic elsewhere in Postgres, so this seems OK.
|
|
145
|
-
*/
|
|
146
|
-
return ldexp((double) (v >> (64 - 52)), -52);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/*
|
|
150
|
-
* Select a random boolean value.
|
|
151
|
-
*/
|
|
152
|
-
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/*--------------------------------------------------------------------
|
|
2
|
-
* Symbols referenced in this file:
|
|
3
|
-
* - strtoint
|
|
4
|
-
*--------------------------------------------------------------------
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/*-------------------------------------------------------------------------
|
|
8
|
-
*
|
|
9
|
-
* string.c
|
|
10
|
-
* string handling helpers
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
14
|
-
* Portions Copyright (c) 1994, Regents of the University of California
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* IDENTIFICATION
|
|
18
|
-
* src/common/string.c
|
|
19
|
-
*
|
|
20
|
-
*-------------------------------------------------------------------------
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
#ifndef FRONTEND
|
|
25
|
-
#include "postgres.h"
|
|
26
|
-
#else
|
|
27
|
-
#include "postgres_fe.h"
|
|
28
|
-
#endif
|
|
29
|
-
|
|
30
|
-
#include "common/string.h"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
/*
|
|
34
|
-
* Returns whether the string `str' has the postfix `end'.
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
/*
|
|
40
|
-
* strtoint --- just like strtol, but returns int not long
|
|
41
|
-
*/
|
|
42
|
-
int
|
|
43
|
-
strtoint(const char *pg_restrict str, char **pg_restrict endptr, int base)
|
|
44
|
-
{
|
|
45
|
-
long val;
|
|
46
|
-
|
|
47
|
-
val = strtol(str, endptr, base);
|
|
48
|
-
if (val != (int) val)
|
|
49
|
-
errno = ERANGE;
|
|
50
|
-
return (int) val;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
/*
|
|
55
|
-
* pg_clean_ascii -- Replace any non-ASCII chars with a '?' char
|
|
56
|
-
*
|
|
57
|
-
* Modifies the string passed in which must be '\0'-terminated.
|
|
58
|
-
*
|
|
59
|
-
* This function exists specifically to deal with filtering out
|
|
60
|
-
* non-ASCII characters in a few places where the client can provide an almost
|
|
61
|
-
* arbitrary string (and it isn't checked to ensure it's a valid username or
|
|
62
|
-
* database name or similar) and we don't want to have control characters or other
|
|
63
|
-
* things ending up in the log file where server admins might end up with a
|
|
64
|
-
* messed up terminal when looking at them.
|
|
65
|
-
*
|
|
66
|
-
* In general, this function should NOT be used- instead, consider how to handle
|
|
67
|
-
* the string without needing to filter out the non-ASCII characters.
|
|
68
|
-
*
|
|
69
|
-
* Ultimately, we'd like to improve the situation to not require stripping out
|
|
70
|
-
* all non-ASCII but perform more intelligent filtering which would allow UTF or
|
|
71
|
-
* similar, but it's unclear exactly what we should allow, so stick to ASCII only
|
|
72
|
-
* for now.
|
|
73
|
-
*/
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
/*
|
|
78
|
-
* pg_is_ascii -- Check if string is made only of ASCII characters
|
|
79
|
-
*/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
/*
|
|
84
|
-
* pg_strip_crlf -- Remove any trailing newline and carriage return
|
|
85
|
-
*
|
|
86
|
-
* Removes any trailing newline and carriage return characters (\r on
|
|
87
|
-
* Windows) in the input string, zero-terminating it.
|
|
88
|
-
*
|
|
89
|
-
* The passed in string must be zero-terminated. This function returns
|
|
90
|
-
* the new length of the string.
|
|
91
|
-
*/
|
|
92
|
-
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/*--------------------------------------------------------------------
|
|
2
|
-
* Symbols referenced in this file:
|
|
3
|
-
* - pg_usleep
|
|
4
|
-
*--------------------------------------------------------------------
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/*-------------------------------------------------------------------------
|
|
8
|
-
*
|
|
9
|
-
* pgsleep.c
|
|
10
|
-
* Portable delay handling.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
14
|
-
*
|
|
15
|
-
* src/port/pgsleep.c
|
|
16
|
-
*
|
|
17
|
-
*-------------------------------------------------------------------------
|
|
18
|
-
*/
|
|
19
|
-
#include "c.h"
|
|
20
|
-
|
|
21
|
-
#include <unistd.h>
|
|
22
|
-
#include <sys/time.h>
|
|
23
|
-
#ifdef HAVE_SYS_SELECT_H
|
|
24
|
-
#include <sys/select.h>
|
|
25
|
-
#endif
|
|
26
|
-
|
|
27
|
-
/*
|
|
28
|
-
* In a Windows backend, we don't use this implementation, but rather
|
|
29
|
-
* the signal-aware version in src/backend/port/win32/signal.c.
|
|
30
|
-
*/
|
|
31
|
-
#if defined(FRONTEND) || !defined(WIN32)
|
|
32
|
-
|
|
33
|
-
/*
|
|
34
|
-
* pg_usleep --- delay the specified number of microseconds.
|
|
35
|
-
*
|
|
36
|
-
* NOTE: although the delay is specified in microseconds, the effective
|
|
37
|
-
* resolution is only 1/HZ, or 10 milliseconds, on most Unixen. Expect
|
|
38
|
-
* the requested delay to be rounded up to the next resolution boundary.
|
|
39
|
-
*
|
|
40
|
-
* On machines where "long" is 32 bits, the maximum delay is ~2000 seconds.
|
|
41
|
-
*
|
|
42
|
-
* CAUTION: the behavior when a signal arrives during the sleep is platform
|
|
43
|
-
* dependent. On most Unix-ish platforms, a signal does not terminate the
|
|
44
|
-
* sleep; but on some, it will (the Windows implementation also allows signals
|
|
45
|
-
* to terminate pg_usleep). And there are platforms where not only does a
|
|
46
|
-
* signal not terminate the sleep, but it actually resets the timeout counter
|
|
47
|
-
* so that the sleep effectively starts over! It is therefore rather hazardous
|
|
48
|
-
* to use this for long sleeps; a continuing stream of signal events could
|
|
49
|
-
* prevent the sleep from ever terminating. Better practice for long sleeps
|
|
50
|
-
* is to use WaitLatch() with a timeout.
|
|
51
|
-
*/
|
|
52
|
-
void
|
|
53
|
-
pg_usleep(long microsec)
|
|
54
|
-
{
|
|
55
|
-
if (microsec > 0)
|
|
56
|
-
{
|
|
57
|
-
#ifndef WIN32
|
|
58
|
-
struct timeval delay;
|
|
59
|
-
|
|
60
|
-
delay.tv_sec = microsec / 1000000L;
|
|
61
|
-
delay.tv_usec = microsec % 1000000L;
|
|
62
|
-
(void) select(0, NULL, NULL, NULL, &delay);
|
|
63
|
-
#else
|
|
64
|
-
SleepEx((microsec < 500 ? 1 : (microsec + 500) / 1000), FALSE);
|
|
65
|
-
#endif
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
#endif /* defined(FRONTEND) || !defined(WIN32) */
|