pg_query 2.0.3 → 5.1.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 +165 -0
- data/README.md +67 -29
- data/Rakefile +8 -23
- data/ext/pg_query/extconf.rb +21 -3
- data/ext/pg_query/include/pg_query.h +29 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
- data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
- data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +80 -88
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +17 -2
- data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +60 -100
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
- data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
- data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +11 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +6 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +2 -6
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/postgres/common/string.h +44 -0
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +50 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +98 -32
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +33 -8
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +12 -12
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
- data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +125 -25
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +100 -496
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +678 -207
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
- data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +2 -5
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +778 -0
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +10 -10
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
- data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +129 -16
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +107 -111
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +17 -20
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +96 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
- data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +9 -7
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
- data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
- data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +48 -27
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
- data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +13 -12
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +38 -9
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
- data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
- data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
- data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
- data/ext/pg_query/include/protobuf-c.h +7 -3
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +21026 -17002
- data/ext/pg_query/pg_query_deparse.c +1 -9896
- data/ext/pg_query/pg_query_fingerprint.c +162 -50
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
- data/ext/pg_query/pg_query_normalize.c +259 -64
- data/ext/pg_query/pg_query_outfuncs.h +1 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
- data/ext/pg_query/pg_query_ruby.c +6 -1
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +3 -2
- data/ext/pg_query/pg_query_split.c +6 -5
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/protobuf-c.c +34 -27
- data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
- data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
- data/ext/pg_query/src_backend_commands_define.c +11 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +13 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +99 -12
- data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
- data/ext/pg_query/src_backend_parser_parser.c +53 -8
- data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
- data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
- data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
- data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +453 -314
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
- 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 +420 -0
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +545 -498
- 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 +717 -113
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
- 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 +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
- data/ext/pg_query/src_port_pg_bitutils.c +103 -40
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +51 -29
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/deparse.rb +7 -1
- data/lib/pg_query/filter_columns.rb +7 -5
- data/lib/pg_query/fingerprint.rb +21 -9
- data/lib/pg_query/node.rb +18 -13
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +141 -50
- data/lib/pg_query/pg_query_pb.rb +175 -3031
- data/lib/pg_query/treewalker.rb +26 -2
- data/lib/pg_query/truncate.rb +54 -8
- data/lib/pg_query/version.rb +1 -1
- data/lib/pg_query.rb +0 -1
- metadata +443 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/rmgr.h +0 -35
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/catalog/genbki.h +0 -64
- data/ext/pg_query/include/catalog/indexing.h +0 -366
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -37
- data/ext/pg_query/include/common/string.h +0 -19
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1072
- data/ext/pg_query/include/nodes/value.h +0 -61
- data/ext/pg_query/include/parser/gram.h +0 -1067
- data/ext/pg_query/include/parser/kwlist.h +0 -477
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/include/parser/parser.h +0 -41
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pgstat.h +0 -1487
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/replication/logicalproto.h +0 -110
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -19
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/regproc.h +0 -28
- 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_libpq_pqcomm.c +0 -651
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
- data/ext/pg_query/src_common_string.c +0 -86
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_random.c +0 -31
- data/ext/pg_query/src_port_strnlen.c +0 -39
- data/lib/pg_query/json_field_names.rb +0 -1402
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
|
@@ -1,240 +1,28 @@
|
|
|
1
1
|
/*--------------------------------------------------------------------
|
|
2
2
|
* Symbols referenced in this file:
|
|
3
|
-
* -
|
|
4
|
-
* - pg_qsort
|
|
5
|
-
* - swapfunc
|
|
6
|
-
* - med3
|
|
3
|
+
* - pg_qsort_strcmp
|
|
7
4
|
*--------------------------------------------------------------------
|
|
8
5
|
*/
|
|
9
6
|
|
|
10
7
|
/*
|
|
11
8
|
* qsort.c: standard quicksort algorithm
|
|
12
|
-
*
|
|
13
|
-
* Modifications from vanilla NetBSD source:
|
|
14
|
-
* Add do ... while() macro fix
|
|
15
|
-
* Remove __inline, _DIAGASSERTs, __P
|
|
16
|
-
* Remove ill-considered "swap_cnt" switch to insertion sort,
|
|
17
|
-
* in favor of a simple check for presorted input.
|
|
18
|
-
* Take care to recurse on the smaller partition, to bound stack usage.
|
|
19
|
-
*
|
|
20
|
-
* CAUTION: if you change this file, see also qsort_arg.c, gen_qsort_tuple.pl
|
|
21
|
-
*
|
|
22
|
-
* src/port/qsort.c
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
/* $NetBSD: qsort.c,v 1.13 2003/08/07 16:43:42 agc Exp $ */
|
|
26
|
-
|
|
27
|
-
/*-
|
|
28
|
-
* Copyright (c) 1992, 1993
|
|
29
|
-
* The Regents of the University of California. All rights reserved.
|
|
30
|
-
*
|
|
31
|
-
* Redistribution and use in source and binary forms, with or without
|
|
32
|
-
* modification, are permitted provided that the following conditions
|
|
33
|
-
* are met:
|
|
34
|
-
* 1. Redistributions of source code must retain the above copyright
|
|
35
|
-
* notice, this list of conditions and the following disclaimer.
|
|
36
|
-
* 2. Redistributions in binary form must reproduce the above copyright
|
|
37
|
-
* notice, this list of conditions and the following disclaimer in the
|
|
38
|
-
* documentation and/or other materials provided with the distribution.
|
|
39
|
-
* 3. Neither the name of the University nor the names of its contributors
|
|
40
|
-
* may be used to endorse or promote products derived from this software
|
|
41
|
-
* without specific prior written permission.
|
|
42
|
-
*
|
|
43
|
-
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
44
|
-
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
45
|
-
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
46
|
-
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
47
|
-
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
48
|
-
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
49
|
-
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
50
|
-
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
51
|
-
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
52
|
-
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
53
|
-
* SUCH DAMAGE.
|
|
54
9
|
*/
|
|
55
10
|
|
|
56
11
|
#include "c.h"
|
|
57
12
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
13
|
+
#define ST_SORT pg_qsort
|
|
14
|
+
#define ST_ELEMENT_TYPE_VOID
|
|
15
|
+
#define ST_COMPARE_RUNTIME_POINTER
|
|
16
|
+
#define ST_SCOPE
|
|
17
|
+
#define ST_DECLARE
|
|
18
|
+
#define ST_DEFINE
|
|
19
|
+
#include "lib/sort_template.h"
|
|
62
20
|
|
|
63
21
|
/*
|
|
64
|
-
*
|
|
65
|
-
* "Engineering a sort function",
|
|
66
|
-
* Software--Practice and Experience 23 (1993) 1249-1265.
|
|
67
|
-
*
|
|
68
|
-
* We have modified their original by adding a check for already-sorted input,
|
|
69
|
-
* which seems to be a win per discussions on pgsql-hackers around 2006-03-21.
|
|
70
|
-
*
|
|
71
|
-
* Also, we recurse on the smaller partition and iterate on the larger one,
|
|
72
|
-
* which ensures we cannot recurse more than log(N) levels (since the
|
|
73
|
-
* partition recursed to is surely no more than half of the input). Bentley
|
|
74
|
-
* and McIlroy explicitly rejected doing this on the grounds that it's "not
|
|
75
|
-
* worth the effort", but we have seen crashes in the field due to stack
|
|
76
|
-
* overrun, so that judgment seems wrong.
|
|
22
|
+
* qsort comparator wrapper for strcmp.
|
|
77
23
|
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
do { \
|
|
81
|
-
size_t i = (n) / sizeof (TYPE); \
|
|
82
|
-
TYPE *pi = (TYPE *)(void *)(parmi); \
|
|
83
|
-
TYPE *pj = (TYPE *)(void *)(parmj); \
|
|
84
|
-
do { \
|
|
85
|
-
TYPE t = *pi; \
|
|
86
|
-
*pi++ = *pj; \
|
|
87
|
-
*pj++ = t; \
|
|
88
|
-
} while (--i > 0); \
|
|
89
|
-
} while (0)
|
|
90
|
-
|
|
91
|
-
#define SWAPINIT(a, es) swaptype = ((char *)(a) - (char *)0) % sizeof(long) || \
|
|
92
|
-
(es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1
|
|
93
|
-
|
|
94
|
-
static void
|
|
95
|
-
swapfunc(char *a, char *b, size_t n, int swaptype)
|
|
24
|
+
int
|
|
25
|
+
pg_qsort_strcmp(const void *a, const void *b)
|
|
96
26
|
{
|
|
97
|
-
|
|
98
|
-
swapcode(long, a, b, n);
|
|
99
|
-
else
|
|
100
|
-
swapcode(char, a, b, n);
|
|
27
|
+
return strcmp(*(const char *const *) a, *(const char *const *) b);
|
|
101
28
|
}
|
|
102
|
-
|
|
103
|
-
#define swap(a, b) \
|
|
104
|
-
if (swaptype == 0) { \
|
|
105
|
-
long t = *(long *)(void *)(a); \
|
|
106
|
-
*(long *)(void *)(a) = *(long *)(void *)(b); \
|
|
107
|
-
*(long *)(void *)(b) = t; \
|
|
108
|
-
} else \
|
|
109
|
-
swapfunc(a, b, es, swaptype)
|
|
110
|
-
|
|
111
|
-
#define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n, swaptype)
|
|
112
|
-
|
|
113
|
-
static char *
|
|
114
|
-
med3(char *a, char *b, char *c, int (*cmp) (const void *, const void *))
|
|
115
|
-
{
|
|
116
|
-
return cmp(a, b) < 0 ?
|
|
117
|
-
(cmp(b, c) < 0 ? b : (cmp(a, c) < 0 ? c : a))
|
|
118
|
-
: (cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c));
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
void
|
|
122
|
-
pg_qsort(void *a, size_t n, size_t es, int (*cmp) (const void *, const void *))
|
|
123
|
-
{
|
|
124
|
-
char *pa,
|
|
125
|
-
*pb,
|
|
126
|
-
*pc,
|
|
127
|
-
*pd,
|
|
128
|
-
*pl,
|
|
129
|
-
*pm,
|
|
130
|
-
*pn;
|
|
131
|
-
size_t d1,
|
|
132
|
-
d2;
|
|
133
|
-
int r,
|
|
134
|
-
swaptype,
|
|
135
|
-
presorted;
|
|
136
|
-
|
|
137
|
-
loop:SWAPINIT(a, es);
|
|
138
|
-
if (n < 7)
|
|
139
|
-
{
|
|
140
|
-
for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es)
|
|
141
|
-
for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0;
|
|
142
|
-
pl -= es)
|
|
143
|
-
swap(pl, pl - es);
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
presorted = 1;
|
|
147
|
-
for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es)
|
|
148
|
-
{
|
|
149
|
-
if (cmp(pm - es, pm) > 0)
|
|
150
|
-
{
|
|
151
|
-
presorted = 0;
|
|
152
|
-
break;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
if (presorted)
|
|
156
|
-
return;
|
|
157
|
-
pm = (char *) a + (n / 2) * es;
|
|
158
|
-
if (n > 7)
|
|
159
|
-
{
|
|
160
|
-
pl = (char *) a;
|
|
161
|
-
pn = (char *) a + (n - 1) * es;
|
|
162
|
-
if (n > 40)
|
|
163
|
-
{
|
|
164
|
-
size_t d = (n / 8) * es;
|
|
165
|
-
|
|
166
|
-
pl = med3(pl, pl + d, pl + 2 * d, cmp);
|
|
167
|
-
pm = med3(pm - d, pm, pm + d, cmp);
|
|
168
|
-
pn = med3(pn - 2 * d, pn - d, pn, cmp);
|
|
169
|
-
}
|
|
170
|
-
pm = med3(pl, pm, pn, cmp);
|
|
171
|
-
}
|
|
172
|
-
swap(a, pm);
|
|
173
|
-
pa = pb = (char *) a + es;
|
|
174
|
-
pc = pd = (char *) a + (n - 1) * es;
|
|
175
|
-
for (;;)
|
|
176
|
-
{
|
|
177
|
-
while (pb <= pc && (r = cmp(pb, a)) <= 0)
|
|
178
|
-
{
|
|
179
|
-
if (r == 0)
|
|
180
|
-
{
|
|
181
|
-
swap(pa, pb);
|
|
182
|
-
pa += es;
|
|
183
|
-
}
|
|
184
|
-
pb += es;
|
|
185
|
-
}
|
|
186
|
-
while (pb <= pc && (r = cmp(pc, a)) >= 0)
|
|
187
|
-
{
|
|
188
|
-
if (r == 0)
|
|
189
|
-
{
|
|
190
|
-
swap(pc, pd);
|
|
191
|
-
pd -= es;
|
|
192
|
-
}
|
|
193
|
-
pc -= es;
|
|
194
|
-
}
|
|
195
|
-
if (pb > pc)
|
|
196
|
-
break;
|
|
197
|
-
swap(pb, pc);
|
|
198
|
-
pb += es;
|
|
199
|
-
pc -= es;
|
|
200
|
-
}
|
|
201
|
-
pn = (char *) a + n * es;
|
|
202
|
-
d1 = Min(pa - (char *) a, pb - pa);
|
|
203
|
-
vecswap(a, pb - d1, d1);
|
|
204
|
-
d1 = Min(pd - pc, pn - pd - es);
|
|
205
|
-
vecswap(pb, pn - d1, d1);
|
|
206
|
-
d1 = pb - pa;
|
|
207
|
-
d2 = pd - pc;
|
|
208
|
-
if (d1 <= d2)
|
|
209
|
-
{
|
|
210
|
-
/* Recurse on left partition, then iterate on right partition */
|
|
211
|
-
if (d1 > es)
|
|
212
|
-
pg_qsort(a, d1 / es, es, cmp);
|
|
213
|
-
if (d2 > es)
|
|
214
|
-
{
|
|
215
|
-
/* Iterate rather than recurse to save stack space */
|
|
216
|
-
/* pg_qsort(pn - d2, d2 / es, es, cmp); */
|
|
217
|
-
a = pn - d2;
|
|
218
|
-
n = d2 / es;
|
|
219
|
-
goto loop;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
else
|
|
223
|
-
{
|
|
224
|
-
/* Recurse on right partition, then iterate on left partition */
|
|
225
|
-
if (d2 > es)
|
|
226
|
-
pg_qsort(pn - d2, d2 / es, es, cmp);
|
|
227
|
-
if (d1 > es)
|
|
228
|
-
{
|
|
229
|
-
/* Iterate rather than recurse to save stack space */
|
|
230
|
-
/* pg_qsort(a, d1 / es, es, cmp); */
|
|
231
|
-
n = d1 / es;
|
|
232
|
-
goto loop;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/*
|
|
238
|
-
* qsort comparator wrapper for strcmp.
|
|
239
|
-
*/
|
|
240
|
-
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*--------------------------------------------------------------------
|
|
2
2
|
* Symbols referenced in this file:
|
|
3
|
-
* -
|
|
3
|
+
* - pg_vsnprintf
|
|
4
4
|
* - dopr
|
|
5
5
|
* - pg_snprintf
|
|
6
|
-
* - pg_vsnprintf
|
|
7
6
|
* - strchrnul
|
|
8
7
|
* - dostr
|
|
8
|
+
* - flushbuffer
|
|
9
9
|
* - find_arguments
|
|
10
10
|
* - fmtint
|
|
11
11
|
* - adjust_sign
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
* - fmtptr
|
|
19
19
|
* - fmtfloat
|
|
20
20
|
* - dopr_outch
|
|
21
|
-
* - flushbuffer
|
|
22
21
|
* - pg_fprintf
|
|
22
|
+
* - pg_vfprintf
|
|
23
23
|
* - pg_sprintf
|
|
24
24
|
* - pg_vsprintf
|
|
25
25
|
* - pg_printf
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* Copyright (c) 1983, 1995, 1996 Eric P. Allman
|
|
31
31
|
* Copyright (c) 1988, 1993
|
|
32
32
|
* The Regents of the University of California. All rights reserved.
|
|
33
|
-
* Portions Copyright (c) 1996-
|
|
33
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
34
34
|
*
|
|
35
35
|
* Redistribution and use in source and binary forms, with or without
|
|
36
36
|
* modification, are permitted provided that the following conditions
|
|
@@ -344,7 +344,7 @@ static bool find_arguments(const char *format, va_list args,
|
|
|
344
344
|
PrintfArgValue *argvalues);
|
|
345
345
|
static void fmtstr(const char *value, int leftjust, int minlen, int maxwidth,
|
|
346
346
|
int pointflag, PrintfTarget *target);
|
|
347
|
-
static void fmtptr(void *value, PrintfTarget *target);
|
|
347
|
+
static void fmtptr(const void *value, PrintfTarget *target);
|
|
348
348
|
static void fmtint(long long value, char type, int forcesign,
|
|
349
349
|
int leftjust, int minlen, int zpad, int precision, int pointflag,
|
|
350
350
|
PrintfTarget *target);
|
|
@@ -418,7 +418,7 @@ dopr(PrintfTarget *target, const char *format, va_list args)
|
|
|
418
418
|
int cvalue;
|
|
419
419
|
long long numvalue;
|
|
420
420
|
double fvalue;
|
|
421
|
-
char
|
|
421
|
+
const char *strvalue;
|
|
422
422
|
PrintfArgValue argvalues[PG_NL_ARGMAX + 1];
|
|
423
423
|
|
|
424
424
|
/*
|
|
@@ -463,7 +463,8 @@ dopr(PrintfTarget *target, const char *format, va_list args)
|
|
|
463
463
|
{
|
|
464
464
|
format++;
|
|
465
465
|
strvalue = va_arg(args, char *);
|
|
466
|
-
|
|
466
|
+
if (strvalue == NULL)
|
|
467
|
+
strvalue = "(null)";
|
|
467
468
|
dostr(strvalue, strlen(strvalue), target);
|
|
468
469
|
if (target->failed)
|
|
469
470
|
break;
|
|
@@ -694,8 +695,9 @@ nextch2:
|
|
|
694
695
|
strvalue = argvalues[fmtpos].cptr;
|
|
695
696
|
else
|
|
696
697
|
strvalue = va_arg(args, char *);
|
|
697
|
-
/*
|
|
698
|
-
|
|
698
|
+
/* If string is NULL, silently substitute "(null)" */
|
|
699
|
+
if (strvalue == NULL)
|
|
700
|
+
strvalue = "(null)";
|
|
699
701
|
fmtstr(strvalue, leftjust, fieldwidth, precision, pointflag,
|
|
700
702
|
target);
|
|
701
703
|
break;
|
|
@@ -705,7 +707,7 @@ nextch2:
|
|
|
705
707
|
strvalue = argvalues[fmtpos].cptr;
|
|
706
708
|
else
|
|
707
709
|
strvalue = va_arg(args, char *);
|
|
708
|
-
fmtptr((void *) strvalue, target);
|
|
710
|
+
fmtptr((const void *) strvalue, target);
|
|
709
711
|
break;
|
|
710
712
|
case 'e':
|
|
711
713
|
case 'E':
|
|
@@ -778,12 +780,8 @@ find_arguments(const char *format, va_list args,
|
|
|
778
780
|
int longflag;
|
|
779
781
|
int fmtpos;
|
|
780
782
|
int i;
|
|
781
|
-
int last_dollar;
|
|
782
|
-
PrintfArgType argtypes[PG_NL_ARGMAX + 1];
|
|
783
|
-
|
|
784
|
-
/* Initialize to "no dollar arguments known" */
|
|
785
|
-
last_dollar = 0;
|
|
786
|
-
MemSet(argtypes, 0, sizeof(argtypes));
|
|
783
|
+
int last_dollar = 0; /* Init to "no dollar arguments known" */
|
|
784
|
+
PrintfArgType argtypes[PG_NL_ARGMAX + 1] = {0};
|
|
787
785
|
|
|
788
786
|
/*
|
|
789
787
|
* This loop must accept the same format strings as the one in dopr().
|
|
@@ -1019,13 +1017,13 @@ fmtstr(const char *value, int leftjust, int minlen, int maxwidth,
|
|
|
1019
1017
|
}
|
|
1020
1018
|
|
|
1021
1019
|
static void
|
|
1022
|
-
fmtptr(void *value, PrintfTarget *target)
|
|
1020
|
+
fmtptr(const void *value, PrintfTarget *target)
|
|
1023
1021
|
{
|
|
1024
1022
|
int vallen;
|
|
1025
1023
|
char convert[64];
|
|
1026
1024
|
|
|
1027
|
-
/* we rely on regular C library's
|
|
1028
|
-
vallen =
|
|
1025
|
+
/* we rely on regular C library's snprintf to do the basic conversion */
|
|
1026
|
+
vallen = snprintf(convert, sizeof(convert), "%p", value);
|
|
1029
1027
|
if (vallen < 0)
|
|
1030
1028
|
target->failed = true;
|
|
1031
1029
|
else
|
|
@@ -1037,8 +1035,8 @@ fmtint(long long value, char type, int forcesign, int leftjust,
|
|
|
1037
1035
|
int minlen, int zpad, int precision, int pointflag,
|
|
1038
1036
|
PrintfTarget *target)
|
|
1039
1037
|
{
|
|
1040
|
-
unsigned long long base;
|
|
1041
1038
|
unsigned long long uvalue;
|
|
1039
|
+
int base;
|
|
1042
1040
|
int dosign;
|
|
1043
1041
|
const char *cvt = "0123456789abcdef";
|
|
1044
1042
|
int signvalue = 0;
|
|
@@ -1097,12 +1095,36 @@ fmtint(long long value, char type, int forcesign, int leftjust,
|
|
|
1097
1095
|
vallen = 0;
|
|
1098
1096
|
else
|
|
1099
1097
|
{
|
|
1100
|
-
/*
|
|
1101
|
-
|
|
1098
|
+
/*
|
|
1099
|
+
* Convert integer to string. We special-case each of the possible
|
|
1100
|
+
* base values so as to avoid general-purpose divisions. On most
|
|
1101
|
+
* machines, division by a fixed constant can be done much more
|
|
1102
|
+
* cheaply than a general divide.
|
|
1103
|
+
*/
|
|
1104
|
+
if (base == 10)
|
|
1102
1105
|
{
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
+
do
|
|
1107
|
+
{
|
|
1108
|
+
convert[sizeof(convert) - (++vallen)] = cvt[uvalue % 10];
|
|
1109
|
+
uvalue = uvalue / 10;
|
|
1110
|
+
} while (uvalue);
|
|
1111
|
+
}
|
|
1112
|
+
else if (base == 16)
|
|
1113
|
+
{
|
|
1114
|
+
do
|
|
1115
|
+
{
|
|
1116
|
+
convert[sizeof(convert) - (++vallen)] = cvt[uvalue % 16];
|
|
1117
|
+
uvalue = uvalue / 16;
|
|
1118
|
+
} while (uvalue);
|
|
1119
|
+
}
|
|
1120
|
+
else /* base == 8 */
|
|
1121
|
+
{
|
|
1122
|
+
do
|
|
1123
|
+
{
|
|
1124
|
+
convert[sizeof(convert) - (++vallen)] = cvt[uvalue % 8];
|
|
1125
|
+
uvalue = uvalue / 8;
|
|
1126
|
+
} while (uvalue);
|
|
1127
|
+
}
|
|
1106
1128
|
}
|
|
1107
1129
|
|
|
1108
1130
|
zeropad = Max(0, precision - vallen);
|
|
@@ -1151,11 +1173,11 @@ fmtfloat(double value, char type, int forcesign, int leftjust,
|
|
|
1151
1173
|
int padlen; /* amount to pad with spaces */
|
|
1152
1174
|
|
|
1153
1175
|
/*
|
|
1154
|
-
* We rely on the regular C library's
|
|
1176
|
+
* We rely on the regular C library's snprintf to do the basic conversion,
|
|
1155
1177
|
* then handle padding considerations here.
|
|
1156
1178
|
*
|
|
1157
1179
|
* The dynamic range of "double" is about 1E+-308 for IEEE math, and not
|
|
1158
|
-
* too wildly more than that with other hardware. In "f" format,
|
|
1180
|
+
* too wildly more than that with other hardware. In "f" format, snprintf
|
|
1159
1181
|
* could therefore generate at most 308 characters to the left of the
|
|
1160
1182
|
* decimal point; while we need to allow the precision to get as high as
|
|
1161
1183
|
* 308+17 to ensure that we don't truncate significant digits from very
|
|
@@ -1207,14 +1229,14 @@ fmtfloat(double value, char type, int forcesign, int leftjust,
|
|
|
1207
1229
|
fmt[2] = '*';
|
|
1208
1230
|
fmt[3] = type;
|
|
1209
1231
|
fmt[4] = '\0';
|
|
1210
|
-
vallen =
|
|
1232
|
+
vallen = snprintf(convert, sizeof(convert), fmt, prec, value);
|
|
1211
1233
|
}
|
|
1212
1234
|
else
|
|
1213
1235
|
{
|
|
1214
1236
|
fmt[0] = '%';
|
|
1215
1237
|
fmt[1] = type;
|
|
1216
1238
|
fmt[2] = '\0';
|
|
1217
|
-
vallen =
|
|
1239
|
+
vallen = snprintf(convert, sizeof(convert), fmt, value);
|
|
1218
1240
|
}
|
|
1219
1241
|
if (vallen < 0)
|
|
1220
1242
|
goto fail;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* strerror.c
|
|
12
12
|
* Replacements for standard strerror() and strerror_r() functions
|
|
13
13
|
*
|
|
14
|
-
* Portions Copyright (c) 1996-
|
|
14
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
15
15
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
16
16
|
*
|
|
17
17
|
*
|
|
@@ -120,14 +120,10 @@ get_errno_symbol(int errnum)
|
|
|
120
120
|
return "E2BIG";
|
|
121
121
|
case EACCES:
|
|
122
122
|
return "EACCES";
|
|
123
|
-
#ifdef EADDRINUSE
|
|
124
123
|
case EADDRINUSE:
|
|
125
124
|
return "EADDRINUSE";
|
|
126
|
-
#endif
|
|
127
|
-
#ifdef EADDRNOTAVAIL
|
|
128
125
|
case EADDRNOTAVAIL:
|
|
129
126
|
return "EADDRNOTAVAIL";
|
|
130
|
-
#endif
|
|
131
127
|
case EAFNOSUPPORT:
|
|
132
128
|
return "EAFNOSUPPORT";
|
|
133
129
|
#ifdef EAGAIN
|
|
@@ -148,16 +144,12 @@ get_errno_symbol(int errnum)
|
|
|
148
144
|
return "EBUSY";
|
|
149
145
|
case ECHILD:
|
|
150
146
|
return "ECHILD";
|
|
151
|
-
#ifdef ECONNABORTED
|
|
152
147
|
case ECONNABORTED:
|
|
153
148
|
return "ECONNABORTED";
|
|
154
|
-
#endif
|
|
155
149
|
case ECONNREFUSED:
|
|
156
150
|
return "ECONNREFUSED";
|
|
157
|
-
#ifdef ECONNRESET
|
|
158
151
|
case ECONNRESET:
|
|
159
152
|
return "ECONNRESET";
|
|
160
|
-
#endif
|
|
161
153
|
case EDEADLK:
|
|
162
154
|
return "EDEADLK";
|
|
163
155
|
case EDOM:
|
|
@@ -168,10 +160,10 @@ get_errno_symbol(int errnum)
|
|
|
168
160
|
return "EFAULT";
|
|
169
161
|
case EFBIG:
|
|
170
162
|
return "EFBIG";
|
|
171
|
-
|
|
163
|
+
case EHOSTDOWN:
|
|
164
|
+
return "EHOSTDOWN";
|
|
172
165
|
case EHOSTUNREACH:
|
|
173
166
|
return "EHOSTUNREACH";
|
|
174
|
-
#endif
|
|
175
167
|
case EIDRM:
|
|
176
168
|
return "EIDRM";
|
|
177
169
|
case EINPROGRESS:
|
|
@@ -182,10 +174,8 @@ get_errno_symbol(int errnum)
|
|
|
182
174
|
return "EINVAL";
|
|
183
175
|
case EIO:
|
|
184
176
|
return "EIO";
|
|
185
|
-
#ifdef EISCONN
|
|
186
177
|
case EISCONN:
|
|
187
178
|
return "EISCONN";
|
|
188
|
-
#endif
|
|
189
179
|
case EISDIR:
|
|
190
180
|
return "EISDIR";
|
|
191
181
|
#ifdef ELOOP
|
|
@@ -200,6 +190,12 @@ get_errno_symbol(int errnum)
|
|
|
200
190
|
return "EMSGSIZE";
|
|
201
191
|
case ENAMETOOLONG:
|
|
202
192
|
return "ENAMETOOLONG";
|
|
193
|
+
case ENETDOWN:
|
|
194
|
+
return "ENETDOWN";
|
|
195
|
+
case ENETRESET:
|
|
196
|
+
return "ENETRESET";
|
|
197
|
+
case ENETUNREACH:
|
|
198
|
+
return "ENETUNREACH";
|
|
203
199
|
case ENFILE:
|
|
204
200
|
return "ENFILE";
|
|
205
201
|
case ENOBUFS:
|
|
@@ -216,20 +212,16 @@ get_errno_symbol(int errnum)
|
|
|
216
212
|
return "ENOSPC";
|
|
217
213
|
case ENOSYS:
|
|
218
214
|
return "ENOSYS";
|
|
219
|
-
#ifdef ENOTCONN
|
|
220
215
|
case ENOTCONN:
|
|
221
216
|
return "ENOTCONN";
|
|
222
|
-
#endif
|
|
223
217
|
case ENOTDIR:
|
|
224
218
|
return "ENOTDIR";
|
|
225
219
|
#if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */
|
|
226
220
|
case ENOTEMPTY:
|
|
227
221
|
return "ENOTEMPTY";
|
|
228
222
|
#endif
|
|
229
|
-
#ifdef ENOTSOCK
|
|
230
223
|
case ENOTSOCK:
|
|
231
224
|
return "ENOTSOCK";
|
|
232
|
-
#endif
|
|
233
225
|
#ifdef ENOTSUP
|
|
234
226
|
case ENOTSUP:
|
|
235
227
|
return "ENOTSUP";
|
|
@@ -260,10 +252,8 @@ get_errno_symbol(int errnum)
|
|
|
260
252
|
#endif
|
|
261
253
|
case ESRCH:
|
|
262
254
|
return "ESRCH";
|
|
263
|
-
#ifdef ETIMEDOUT
|
|
264
255
|
case ETIMEDOUT:
|
|
265
256
|
return "ETIMEDOUT";
|
|
266
|
-
#endif
|
|
267
257
|
#ifdef ETXTBSY
|
|
268
258
|
case ETXTBSY:
|
|
269
259
|
return "ETXTBSY";
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
* Symbols referenced in this file:
|
|
3
|
+
* - strlcpy
|
|
4
|
+
*--------------------------------------------------------------------
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/*-------------------------------------------------------------------------
|
|
8
|
+
*
|
|
9
|
+
* strlcpy.c
|
|
10
|
+
* strncpy done right
|
|
11
|
+
*
|
|
12
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
13
|
+
*
|
|
14
|
+
*
|
|
15
|
+
* IDENTIFICATION
|
|
16
|
+
* src/port/strlcpy.c
|
|
17
|
+
*
|
|
18
|
+
* This file was taken from OpenBSD and is used on platforms that don't
|
|
19
|
+
* provide strlcpy(). The OpenBSD copyright terms follow.
|
|
20
|
+
*-------------------------------------------------------------------------
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */
|
|
24
|
+
|
|
25
|
+
/*
|
|
26
|
+
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
|
27
|
+
*
|
|
28
|
+
* Permission to use, copy, modify, and distribute this software for any
|
|
29
|
+
* purpose with or without fee is hereby granted, provided that the above
|
|
30
|
+
* copyright notice and this permission notice appear in all copies.
|
|
31
|
+
*
|
|
32
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
33
|
+
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
34
|
+
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
35
|
+
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
36
|
+
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
37
|
+
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
38
|
+
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
#include "c.h"
|
|
42
|
+
#if HAVE_DECL_STRLCPY == 0
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
/*
|
|
46
|
+
* Copy src to string dst of size siz. At most siz-1 characters
|
|
47
|
+
* will be copied. Always NUL terminates (unless siz == 0).
|
|
48
|
+
* Returns strlen(src); if retval >= siz, truncation occurred.
|
|
49
|
+
* Function creation history: http://www.gratisoft.us/todd/papers/strlcpy.html
|
|
50
|
+
*/
|
|
51
|
+
size_t
|
|
52
|
+
strlcpy(char *dst, const char *src, size_t siz)
|
|
53
|
+
{
|
|
54
|
+
char *d = dst;
|
|
55
|
+
const char *s = src;
|
|
56
|
+
size_t n = siz;
|
|
57
|
+
|
|
58
|
+
/* Copy as many bytes as will fit */
|
|
59
|
+
if (n != 0)
|
|
60
|
+
{
|
|
61
|
+
while (--n != 0)
|
|
62
|
+
{
|
|
63
|
+
if ((*d++ = *s++) == '\0')
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Not enough room in dst, add NUL and traverse rest of src */
|
|
69
|
+
if (n == 0)
|
|
70
|
+
{
|
|
71
|
+
if (siz != 0)
|
|
72
|
+
*d = '\0'; /* NUL-terminate dst */
|
|
73
|
+
while (*s++)
|
|
74
|
+
;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return (s - src - 1); /* count does not include NUL */
|
|
78
|
+
}
|
|
79
|
+
#endif // HAVE_DECL_STRLCPY == 0
|
data/lib/pg_query/deparse.rb
CHANGED
|
@@ -7,7 +7,13 @@ module PgQuery
|
|
|
7
7
|
|
|
8
8
|
# Reconstruct all of the parsed queries into their original form
|
|
9
9
|
def self.deparse(tree)
|
|
10
|
-
PgQuery
|
|
10
|
+
if PgQuery::ParseResult.method(:encode).arity == 1
|
|
11
|
+
PgQuery.deparse_protobuf(PgQuery::ParseResult.encode(tree)).force_encoding('UTF-8')
|
|
12
|
+
elsif PgQuery::ParseResult.method(:encode).arity == -1
|
|
13
|
+
PgQuery.deparse_protobuf(PgQuery::ParseResult.encode(tree, recursion_limit: 1_000)).force_encoding('UTF-8')
|
|
14
|
+
else
|
|
15
|
+
raise ArgumentError, 'Unsupported protobuf Ruby API'
|
|
16
|
+
end
|
|
11
17
|
end
|
|
12
18
|
|
|
13
19
|
# Convenience method for deparsing a statement of a specific type
|
|
@@ -5,7 +5,7 @@ module PgQuery
|
|
|
5
5
|
#
|
|
6
6
|
# Note: This also traverses into sub-selects.
|
|
7
7
|
def filter_columns # rubocop:disable Metrics/CyclomaticComplexity
|
|
8
|
-
|
|
8
|
+
load_objects! if @aliases.nil?
|
|
9
9
|
|
|
10
10
|
# Get condition items from the parsetree
|
|
11
11
|
statements = @tree.stmts.dup.to_a.map(&:stmt)
|
|
@@ -42,14 +42,16 @@ module PgQuery
|
|
|
42
42
|
statements << item.common_table_expr.ctequery if item.node == :common_table_expr
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
|
-
when :SETOP_UNION
|
|
46
|
-
statements << statement.select_stmt.larg if statement.select_stmt.larg
|
|
47
|
-
statements << statement.select_stmt.rarg if statement.select_stmt.rarg
|
|
45
|
+
when :SETOP_UNION, :SETOP_EXCEPT, :SETOP_INTERSECT
|
|
46
|
+
statements << PgQuery::Node.new(select_stmt: statement.select_stmt.larg) if statement.select_stmt.larg
|
|
47
|
+
statements << PgQuery::Node.new(select_stmt: statement.select_stmt.rarg) if statement.select_stmt.rarg
|
|
48
48
|
end
|
|
49
49
|
when :update_stmt
|
|
50
50
|
condition_items << statement.update_stmt.where_clause if statement.update_stmt.where_clause
|
|
51
51
|
when :delete_stmt
|
|
52
52
|
condition_items << statement.delete_stmt.where_clause if statement.delete_stmt.where_clause
|
|
53
|
+
when :index_stmt
|
|
54
|
+
condition_items << statement.index_stmt.where_clause if statement.index_stmt.where_clause
|
|
53
55
|
end
|
|
54
56
|
end
|
|
55
57
|
|
|
@@ -67,7 +69,7 @@ module PgQuery
|
|
|
67
69
|
when :row_expr
|
|
68
70
|
condition_items += next_item.row_expr.args
|
|
69
71
|
when :column_ref
|
|
70
|
-
column, table = next_item.column_ref.fields.map { |f| f.string.
|
|
72
|
+
column, table = next_item.column_ref.fields.map { |f| f.string.sval }.reverse
|
|
71
73
|
filter_columns << [@aliases[table] || table, column]
|
|
72
74
|
when :null_test
|
|
73
75
|
condition_items << next_item.null_test.arg
|