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
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* polluting the namespace with lots of stuff...
|
|
10
10
|
*
|
|
11
11
|
*
|
|
12
|
-
* Portions Copyright (c) 1996-
|
|
12
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
13
13
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
14
14
|
*
|
|
15
15
|
* src/include/c.h
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* 2) bool, true, false
|
|
31
31
|
* 3) standard system types
|
|
32
32
|
* 4) IsValid macros for system types
|
|
33
|
-
* 5)
|
|
33
|
+
* 5) lengthof, alignment
|
|
34
34
|
* 6) assertions
|
|
35
35
|
* 7) widely useful macros
|
|
36
36
|
* 8) random stuff
|
|
@@ -98,11 +98,21 @@
|
|
|
98
98
|
*
|
|
99
99
|
* GCC: https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
|
|
100
100
|
* GCC: https://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html
|
|
101
|
+
* Clang: https://clang.llvm.org/docs/AttributeReference.html
|
|
101
102
|
* Sunpro: https://docs.oracle.com/cd/E18659_01/html/821-1384/gjzke.html
|
|
102
103
|
* XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/function_attributes.html
|
|
103
104
|
* XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/type_attrib.html
|
|
104
105
|
*/
|
|
105
106
|
|
|
107
|
+
/*
|
|
108
|
+
* For compilers which don't support __has_attribute, we just define
|
|
109
|
+
* __has_attribute(x) to 0 so that we can define macros for various
|
|
110
|
+
* __attribute__s more easily below.
|
|
111
|
+
*/
|
|
112
|
+
#ifndef __has_attribute
|
|
113
|
+
#define __has_attribute(attribute) 0
|
|
114
|
+
#endif
|
|
115
|
+
|
|
106
116
|
/* only GCC supports the unused attribute */
|
|
107
117
|
#ifdef __GNUC__
|
|
108
118
|
#define pg_attribute_unused() __attribute__((unused))
|
|
@@ -110,6 +120,41 @@
|
|
|
110
120
|
#define pg_attribute_unused()
|
|
111
121
|
#endif
|
|
112
122
|
|
|
123
|
+
/*
|
|
124
|
+
* pg_nodiscard means the compiler should warn if the result of a function
|
|
125
|
+
* call is ignored. The name "nodiscard" is chosen in alignment with
|
|
126
|
+
* (possibly future) C and C++ standards. For maximum compatibility, use it
|
|
127
|
+
* as a function declaration specifier, so it goes before the return type.
|
|
128
|
+
*/
|
|
129
|
+
#ifdef __GNUC__
|
|
130
|
+
#define pg_nodiscard __attribute__((warn_unused_result))
|
|
131
|
+
#else
|
|
132
|
+
#define pg_nodiscard
|
|
133
|
+
#endif
|
|
134
|
+
|
|
135
|
+
/*
|
|
136
|
+
* Place this macro before functions that should be allowed to make misaligned
|
|
137
|
+
* accesses. Think twice before using it on non-x86-specific code!
|
|
138
|
+
* Testing can be done with "-fsanitize=alignment -fsanitize-trap=alignment"
|
|
139
|
+
* on clang, or "-fsanitize=alignment -fno-sanitize-recover=alignment" on gcc.
|
|
140
|
+
*/
|
|
141
|
+
#if __clang_major__ >= 7 || __GNUC__ >= 8
|
|
142
|
+
#define pg_attribute_no_sanitize_alignment() __attribute__((no_sanitize("alignment")))
|
|
143
|
+
#else
|
|
144
|
+
#define pg_attribute_no_sanitize_alignment()
|
|
145
|
+
#endif
|
|
146
|
+
|
|
147
|
+
/*
|
|
148
|
+
* pg_attribute_nonnull means the compiler should warn if the function is
|
|
149
|
+
* called with the listed arguments set to NULL. If no arguments are
|
|
150
|
+
* listed, the compiler should warn if any pointer arguments are set to NULL.
|
|
151
|
+
*/
|
|
152
|
+
#if __has_attribute (nonnull)
|
|
153
|
+
#define pg_attribute_nonnull(...) __attribute__((nonnull(__VA_ARGS__)))
|
|
154
|
+
#else
|
|
155
|
+
#define pg_attribute_nonnull(...)
|
|
156
|
+
#endif
|
|
157
|
+
|
|
113
158
|
/*
|
|
114
159
|
* Append PG_USED_FOR_ASSERTS_ONLY to definitions of variables that are only
|
|
115
160
|
* used in assert-enabled builds, to avoid compiler warnings about unused
|
|
@@ -136,6 +181,17 @@
|
|
|
136
181
|
#define pg_attribute_noreturn() __attribute__((noreturn))
|
|
137
182
|
#define pg_attribute_packed() __attribute__((packed))
|
|
138
183
|
#define HAVE_PG_ATTRIBUTE_NORETURN 1
|
|
184
|
+
#elif defined(_MSC_VER)
|
|
185
|
+
/*
|
|
186
|
+
* MSVC supports aligned. noreturn is also possible but in MSVC it is
|
|
187
|
+
* declared before the definition while pg_attribute_noreturn() macro
|
|
188
|
+
* is currently used after the definition.
|
|
189
|
+
*
|
|
190
|
+
* Packing is also possible but only by wrapping the entire struct definition
|
|
191
|
+
* which doesn't fit into our current macro declarations.
|
|
192
|
+
*/
|
|
193
|
+
#define pg_attribute_aligned(a) __declspec(align(a))
|
|
194
|
+
#define pg_attribute_noreturn()
|
|
139
195
|
#else
|
|
140
196
|
/*
|
|
141
197
|
* NB: aligned and packed are not given default definitions because they
|
|
@@ -178,6 +234,39 @@
|
|
|
178
234
|
#define pg_noinline
|
|
179
235
|
#endif
|
|
180
236
|
|
|
237
|
+
/*
|
|
238
|
+
* For now, just define pg_attribute_cold and pg_attribute_hot to be empty
|
|
239
|
+
* macros on minGW 8.1. There appears to be a compiler bug that results in
|
|
240
|
+
* compilation failure. At this time, we still have at least one buildfarm
|
|
241
|
+
* animal running that compiler, so this should make that green again. It's
|
|
242
|
+
* likely this compiler is not popular enough to warrant keeping this code
|
|
243
|
+
* around forever, so let's just remove it once the last buildfarm animal
|
|
244
|
+
* upgrades.
|
|
245
|
+
*/
|
|
246
|
+
#if defined(__MINGW64__) && __GNUC__ == 8 && __GNUC_MINOR__ == 1
|
|
247
|
+
|
|
248
|
+
#define pg_attribute_cold
|
|
249
|
+
#define pg_attribute_hot
|
|
250
|
+
|
|
251
|
+
#else
|
|
252
|
+
/*
|
|
253
|
+
* Marking certain functions as "hot" or "cold" can be useful to assist the
|
|
254
|
+
* compiler in arranging the assembly code in a more efficient way.
|
|
255
|
+
*/
|
|
256
|
+
#if __has_attribute (cold)
|
|
257
|
+
#define pg_attribute_cold __attribute__((cold))
|
|
258
|
+
#else
|
|
259
|
+
#define pg_attribute_cold
|
|
260
|
+
#endif
|
|
261
|
+
|
|
262
|
+
#if __has_attribute (hot)
|
|
263
|
+
#define pg_attribute_hot __attribute__((hot))
|
|
264
|
+
#else
|
|
265
|
+
#define pg_attribute_hot
|
|
266
|
+
#endif
|
|
267
|
+
|
|
268
|
+
#endif /* defined(__MINGW64__) && __GNUC__ == 8 &&
|
|
269
|
+
* __GNUC_MINOR__ == 1 */
|
|
181
270
|
/*
|
|
182
271
|
* Mark a point as unreachable in a portable fashion. This should preferably
|
|
183
272
|
* be something that the compiler understands, to aid code generation.
|
|
@@ -235,7 +324,25 @@
|
|
|
235
324
|
* pretty trivial: VA_ARGS_NARGS_() returns its 64th argument, and we set up
|
|
236
325
|
* the call so that that is the appropriate one of the list of constants.
|
|
237
326
|
* This idea is due to Laurent Deniau.
|
|
327
|
+
*
|
|
328
|
+
* MSVC has an implementation of __VA_ARGS__ that doesn't conform to the
|
|
329
|
+
* standard unless you use the /Zc:preprocessor compiler flag, but that
|
|
330
|
+
* isn't available before Visual Studio 2019. For now, use a different
|
|
331
|
+
* definition that also works on older compilers.
|
|
238
332
|
*/
|
|
333
|
+
#ifdef _MSC_VER
|
|
334
|
+
#define EXPAND(args) args
|
|
335
|
+
#define VA_ARGS_NARGS(...) \
|
|
336
|
+
VA_ARGS_NARGS_ EXPAND((__VA_ARGS__, \
|
|
337
|
+
63,62,61,60, \
|
|
338
|
+
59,58,57,56,55,54,53,52,51,50, \
|
|
339
|
+
49,48,47,46,45,44,43,42,41,40, \
|
|
340
|
+
39,38,37,36,35,34,33,32,31,30, \
|
|
341
|
+
29,28,27,26,25,24,23,22,21,20, \
|
|
342
|
+
19,18,17,16,15,14,13,12,11,10, \
|
|
343
|
+
9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
|
|
344
|
+
#else
|
|
345
|
+
|
|
239
346
|
#define VA_ARGS_NARGS(...) \
|
|
240
347
|
VA_ARGS_NARGS_(__VA_ARGS__, \
|
|
241
348
|
63,62,61,60, \
|
|
@@ -245,6 +352,8 @@
|
|
|
245
352
|
29,28,27,26,25,24,23,22,21,20, \
|
|
246
353
|
19,18,17,16,15,14,13,12,11,10, \
|
|
247
354
|
9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
|
|
355
|
+
#endif
|
|
356
|
+
|
|
248
357
|
#define VA_ARGS_NARGS_( \
|
|
249
358
|
_01,_02,_03,_04,_05,_06,_07,_08,_09,_10, \
|
|
250
359
|
_11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \
|
|
@@ -256,14 +365,11 @@
|
|
|
256
365
|
(N)
|
|
257
366
|
|
|
258
367
|
/*
|
|
259
|
-
*
|
|
260
|
-
*
|
|
368
|
+
* Generic function pointer. This can be used in the rare cases where it's
|
|
369
|
+
* necessary to cast a function pointer to a seemingly incompatible function
|
|
370
|
+
* pointer type while avoiding gcc's -Wcast-function-type warnings.
|
|
261
371
|
*/
|
|
262
|
-
|
|
263
|
-
#define dummyret void
|
|
264
|
-
#else
|
|
265
|
-
#define dummyret char
|
|
266
|
-
#endif
|
|
372
|
+
typedef void (*pg_funcptr_t) (void);
|
|
267
373
|
|
|
268
374
|
/*
|
|
269
375
|
* We require C99, hence the compiler should understand flexible array
|
|
@@ -275,15 +381,32 @@
|
|
|
275
381
|
*/
|
|
276
382
|
#define FLEXIBLE_ARRAY_MEMBER /* empty */
|
|
277
383
|
|
|
278
|
-
/*
|
|
279
|
-
#
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
#
|
|
285
|
-
|
|
286
|
-
|
|
384
|
+
/*
|
|
385
|
+
* Does the compiler support #pragma GCC system_header? We optionally use it
|
|
386
|
+
* to avoid warnings that we can't fix (e.g. in the perl headers).
|
|
387
|
+
* See https://gcc.gnu.org/onlinedocs/cpp/System-Headers.html
|
|
388
|
+
*
|
|
389
|
+
* Headers for which we do not want to show compiler warnings can,
|
|
390
|
+
* conditionally, use #pragma GCC system_header to avoid warnings. Obviously
|
|
391
|
+
* this should only be used for external headers over which we do not have
|
|
392
|
+
* control.
|
|
393
|
+
*
|
|
394
|
+
* Support for the pragma is tested here, instead of during configure, as gcc
|
|
395
|
+
* also warns about the pragma being used in a .c file. It's surprisingly hard
|
|
396
|
+
* to get autoconf to use .h as the file-ending. Looks like gcc has
|
|
397
|
+
* implemented the pragma since the 2000, so this test should suffice.
|
|
398
|
+
*
|
|
399
|
+
*
|
|
400
|
+
* Alternatively, we could add the include paths for problematic headers with
|
|
401
|
+
* -isystem, but that is a larger hammer and is harder to search for.
|
|
402
|
+
*
|
|
403
|
+
* A more granular alternative would be to use #pragma GCC diagnostic
|
|
404
|
+
* push/ignored/pop, but gcc warns about unknown warnings being ignored, so
|
|
405
|
+
* every to-be-ignored-temporarily compiler warning would require its own
|
|
406
|
+
* pg_config.h symbol and #ifdef.
|
|
407
|
+
*/
|
|
408
|
+
#ifdef __GNUC__
|
|
409
|
+
#define HAVE_PRAGMA_GCC_SYSTEM_HEADER 1
|
|
287
410
|
#endif
|
|
288
411
|
|
|
289
412
|
|
|
@@ -529,14 +652,6 @@ typedef uint32 CommandId;
|
|
|
529
652
|
#define FirstCommandId ((CommandId) 0)
|
|
530
653
|
#define InvalidCommandId (~(CommandId)0)
|
|
531
654
|
|
|
532
|
-
/*
|
|
533
|
-
* Array indexing support
|
|
534
|
-
*/
|
|
535
|
-
#define MAXDIM 6
|
|
536
|
-
typedef struct
|
|
537
|
-
{
|
|
538
|
-
int indx[MAXDIM];
|
|
539
|
-
} IntArray;
|
|
540
655
|
|
|
541
656
|
/* ----------------
|
|
542
657
|
* Variable-length datatypes all share the 'struct varlena' header.
|
|
@@ -647,20 +762,9 @@ typedef NameData *Name;
|
|
|
647
762
|
|
|
648
763
|
|
|
649
764
|
/* ----------------------------------------------------------------
|
|
650
|
-
* Section 5:
|
|
765
|
+
* Section 5: lengthof, alignment
|
|
651
766
|
* ----------------------------------------------------------------
|
|
652
767
|
*/
|
|
653
|
-
/*
|
|
654
|
-
* offsetof
|
|
655
|
-
* Offset of a structure/union field within that structure/union.
|
|
656
|
-
*
|
|
657
|
-
* XXX This is supposed to be part of stddef.h, but isn't on
|
|
658
|
-
* some systems (like SunOS 4).
|
|
659
|
-
*/
|
|
660
|
-
#ifndef offsetof
|
|
661
|
-
#define offsetof(type, field) ((long) &((type *)0)->field)
|
|
662
|
-
#endif /* offsetof */
|
|
663
|
-
|
|
664
768
|
/*
|
|
665
769
|
* lengthof
|
|
666
770
|
* Number of elements in an array.
|
|
@@ -737,80 +841,42 @@ typedef NameData *Name;
|
|
|
737
841
|
|
|
738
842
|
#define Assert(condition) ((void)true)
|
|
739
843
|
#define AssertMacro(condition) ((void)true)
|
|
740
|
-
#define AssertArg(condition) ((void)true)
|
|
741
|
-
#define AssertState(condition) ((void)true)
|
|
742
|
-
#define AssertPointerAlignment(ptr, bndr) ((void)true)
|
|
743
|
-
#define Trap(condition, errorType) ((void)true)
|
|
744
|
-
#define TrapMacro(condition, errorType) (true)
|
|
745
844
|
|
|
746
845
|
#elif defined(FRONTEND)
|
|
747
846
|
|
|
748
847
|
#include <assert.h>
|
|
749
848
|
#define Assert(p) assert(p)
|
|
750
849
|
#define AssertMacro(p) ((void) assert(p))
|
|
751
|
-
#define AssertArg(condition) assert(condition)
|
|
752
|
-
#define AssertState(condition) assert(condition)
|
|
753
|
-
#define AssertPointerAlignment(ptr, bndr) ((void)true)
|
|
754
850
|
|
|
755
851
|
#else /* USE_ASSERT_CHECKING && !FRONTEND */
|
|
756
852
|
|
|
757
853
|
/*
|
|
758
|
-
*
|
|
759
|
-
* Generates
|
|
854
|
+
* Assert
|
|
855
|
+
* Generates a fatal exception if the given condition is false.
|
|
760
856
|
*/
|
|
761
|
-
#define
|
|
857
|
+
#define Assert(condition) \
|
|
762
858
|
do { \
|
|
763
|
-
if (condition) \
|
|
764
|
-
ExceptionalCondition(#condition,
|
|
765
|
-
__FILE__, __LINE__); \
|
|
859
|
+
if (!(condition)) \
|
|
860
|
+
ExceptionalCondition(#condition, __FILE__, __LINE__); \
|
|
766
861
|
} while (0)
|
|
767
862
|
|
|
768
863
|
/*
|
|
769
|
-
*
|
|
864
|
+
* AssertMacro is the same as Assert but it's suitable for use in
|
|
865
|
+
* expression-like macros, for example:
|
|
770
866
|
*
|
|
771
867
|
* #define foo(x) (AssertMacro(x != 0), bar(x))
|
|
772
|
-
*
|
|
773
|
-
* Isn't CPP fun?
|
|
774
868
|
*/
|
|
775
|
-
#define TrapMacro(condition, errorType) \
|
|
776
|
-
((bool) (! (condition) || \
|
|
777
|
-
(ExceptionalCondition(#condition, (errorType), \
|
|
778
|
-
__FILE__, __LINE__), 0)))
|
|
779
|
-
|
|
780
|
-
#define Assert(condition) \
|
|
781
|
-
do { \
|
|
782
|
-
if (!(condition)) \
|
|
783
|
-
ExceptionalCondition(#condition, "FailedAssertion", \
|
|
784
|
-
__FILE__, __LINE__); \
|
|
785
|
-
} while (0)
|
|
786
|
-
|
|
787
869
|
#define AssertMacro(condition) \
|
|
788
870
|
((void) ((condition) || \
|
|
789
|
-
(ExceptionalCondition(#condition,
|
|
790
|
-
__FILE__, __LINE__), 0)))
|
|
791
|
-
|
|
792
|
-
#define AssertArg(condition) \
|
|
793
|
-
do { \
|
|
794
|
-
if (!(condition)) \
|
|
795
|
-
ExceptionalCondition(#condition, "BadArgument", \
|
|
796
|
-
__FILE__, __LINE__); \
|
|
797
|
-
} while (0)
|
|
871
|
+
(ExceptionalCondition(#condition, __FILE__, __LINE__), 0)))
|
|
798
872
|
|
|
799
|
-
#
|
|
800
|
-
do { \
|
|
801
|
-
if (!(condition)) \
|
|
802
|
-
ExceptionalCondition(#condition, "BadState", \
|
|
803
|
-
__FILE__, __LINE__); \
|
|
804
|
-
} while (0)
|
|
873
|
+
#endif /* USE_ASSERT_CHECKING && !FRONTEND */
|
|
805
874
|
|
|
806
875
|
/*
|
|
807
876
|
* Check that `ptr' is `bndr' aligned.
|
|
808
877
|
*/
|
|
809
878
|
#define AssertPointerAlignment(ptr, bndr) \
|
|
810
|
-
|
|
811
|
-
"UnalignedPointer")
|
|
812
|
-
|
|
813
|
-
#endif /* USE_ASSERT_CHECKING && !FRONTEND */
|
|
879
|
+
Assert(TYPEALIGN(bndr, (uintptr_t)(ptr)) == (uintptr_t)(ptr))
|
|
814
880
|
|
|
815
881
|
/*
|
|
816
882
|
* ExceptionalCondition is compiled into the backend whether or not
|
|
@@ -820,7 +886,6 @@ typedef NameData *Name;
|
|
|
820
886
|
*/
|
|
821
887
|
#ifndef FRONTEND
|
|
822
888
|
extern void ExceptionalCondition(const char *conditionName,
|
|
823
|
-
const char *errorType,
|
|
824
889
|
const char *fileName, int lineNumber) pg_attribute_noreturn();
|
|
825
890
|
#endif
|
|
826
891
|
|
|
@@ -830,47 +895,50 @@ extern void ExceptionalCondition(const char *conditionName,
|
|
|
830
895
|
* If the "condition" (a compile-time-constant expression) evaluates to false,
|
|
831
896
|
* throw a compile error using the "errmessage" (a string literal).
|
|
832
897
|
*
|
|
833
|
-
*
|
|
834
|
-
*
|
|
898
|
+
* C11 has _Static_assert(), and most C99 compilers already support that. For
|
|
899
|
+
* portability, we wrap it into StaticAssertDecl(). _Static_assert() is a
|
|
900
|
+
* "declaration", and so it must be placed where for example a variable
|
|
901
|
+
* declaration would be valid. As long as we compile with
|
|
902
|
+
* -Wno-declaration-after-statement, that also means it cannot be placed after
|
|
903
|
+
* statements in a function. Macros StaticAssertStmt() and StaticAssertExpr()
|
|
835
904
|
* make it safe to use as a statement or in an expression, respectively.
|
|
836
|
-
* The macro StaticAssertDecl() is suitable for use at file scope (outside of
|
|
837
|
-
* any function).
|
|
838
905
|
*
|
|
839
|
-
*
|
|
840
|
-
* about a negative width for a struct
|
|
841
|
-
* helpful error message, but it beats not
|
|
906
|
+
* For compilers without _Static_assert(), we fall back on a kluge that
|
|
907
|
+
* assumes the compiler will complain about a negative width for a struct
|
|
908
|
+
* bit-field. This will not include a helpful error message, but it beats not
|
|
909
|
+
* getting an error at all.
|
|
842
910
|
*/
|
|
843
911
|
#ifndef __cplusplus
|
|
844
912
|
#ifdef HAVE__STATIC_ASSERT
|
|
913
|
+
#define StaticAssertDecl(condition, errmessage) \
|
|
914
|
+
_Static_assert(condition, errmessage)
|
|
845
915
|
#define StaticAssertStmt(condition, errmessage) \
|
|
846
916
|
do { _Static_assert(condition, errmessage); } while(0)
|
|
847
917
|
#define StaticAssertExpr(condition, errmessage) \
|
|
848
918
|
((void) ({ StaticAssertStmt(condition, errmessage); true; }))
|
|
849
|
-
#define StaticAssertDecl(condition, errmessage) \
|
|
850
|
-
_Static_assert(condition, errmessage)
|
|
851
919
|
#else /* !HAVE__STATIC_ASSERT */
|
|
920
|
+
#define StaticAssertDecl(condition, errmessage) \
|
|
921
|
+
extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1])
|
|
852
922
|
#define StaticAssertStmt(condition, errmessage) \
|
|
853
923
|
((void) sizeof(struct { int static_assert_failure : (condition) ? 1 : -1; }))
|
|
854
924
|
#define StaticAssertExpr(condition, errmessage) \
|
|
855
925
|
StaticAssertStmt(condition, errmessage)
|
|
856
|
-
#define StaticAssertDecl(condition, errmessage) \
|
|
857
|
-
extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1])
|
|
858
926
|
#endif /* HAVE__STATIC_ASSERT */
|
|
859
927
|
#else /* C++ */
|
|
860
928
|
#if defined(__cpp_static_assert) && __cpp_static_assert >= 200410
|
|
929
|
+
#define StaticAssertDecl(condition, errmessage) \
|
|
930
|
+
static_assert(condition, errmessage)
|
|
861
931
|
#define StaticAssertStmt(condition, errmessage) \
|
|
862
932
|
static_assert(condition, errmessage)
|
|
863
933
|
#define StaticAssertExpr(condition, errmessage) \
|
|
864
934
|
({ static_assert(condition, errmessage); })
|
|
865
|
-
#define StaticAssertDecl(condition, errmessage) \
|
|
866
|
-
static_assert(condition, errmessage)
|
|
867
935
|
#else /* !__cpp_static_assert */
|
|
936
|
+
#define StaticAssertDecl(condition, errmessage) \
|
|
937
|
+
extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1])
|
|
868
938
|
#define StaticAssertStmt(condition, errmessage) \
|
|
869
939
|
do { struct static_assert_struct { int static_assert_failure : (condition) ? 1 : -1; }; } while(0)
|
|
870
940
|
#define StaticAssertExpr(condition, errmessage) \
|
|
871
941
|
((void) ({ StaticAssertStmt(condition, errmessage); }))
|
|
872
|
-
#define StaticAssertDecl(condition, errmessage) \
|
|
873
|
-
extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1])
|
|
874
942
|
#endif /* __cpp_static_assert */
|
|
875
943
|
#endif /* C++ */
|
|
876
944
|
|
|
@@ -919,41 +987,6 @@ extern void ExceptionalCondition(const char *conditionName,
|
|
|
919
987
|
*/
|
|
920
988
|
#define Min(x, y) ((x) < (y) ? (x) : (y))
|
|
921
989
|
|
|
922
|
-
/*
|
|
923
|
-
* Abs
|
|
924
|
-
* Return the absolute value of the argument.
|
|
925
|
-
*/
|
|
926
|
-
#define Abs(x) ((x) >= 0 ? (x) : -(x))
|
|
927
|
-
|
|
928
|
-
/*
|
|
929
|
-
* StrNCpy
|
|
930
|
-
* Like standard library function strncpy(), except that result string
|
|
931
|
-
* is guaranteed to be null-terminated --- that is, at most N-1 bytes
|
|
932
|
-
* of the source string will be kept.
|
|
933
|
-
* Also, the macro returns no result (too hard to do that without
|
|
934
|
-
* evaluating the arguments multiple times, which seems worse).
|
|
935
|
-
*
|
|
936
|
-
* BTW: when you need to copy a non-null-terminated string (like a text
|
|
937
|
-
* datum) and add a null, do not do it with StrNCpy(..., len+1). That
|
|
938
|
-
* might seem to work, but it fetches one byte more than there is in the
|
|
939
|
-
* text object. One fine day you'll have a SIGSEGV because there isn't
|
|
940
|
-
* another byte before the end of memory. Don't laugh, we've had real
|
|
941
|
-
* live bug reports from real live users over exactly this mistake.
|
|
942
|
-
* Do it honestly with "memcpy(dst,src,len); dst[len] = '\0';", instead.
|
|
943
|
-
*/
|
|
944
|
-
#define StrNCpy(dst,src,len) \
|
|
945
|
-
do \
|
|
946
|
-
{ \
|
|
947
|
-
char * _dst = (dst); \
|
|
948
|
-
Size _len = (len); \
|
|
949
|
-
\
|
|
950
|
-
if (_len > 0) \
|
|
951
|
-
{ \
|
|
952
|
-
strncpy(_dst, (src), _len); \
|
|
953
|
-
_dst[_len-1] = '\0'; \
|
|
954
|
-
} \
|
|
955
|
-
} while (0)
|
|
956
|
-
|
|
957
990
|
|
|
958
991
|
/* Get a bit mask of the bits set in non-long aligned addresses */
|
|
959
992
|
#define LONG_ALIGN_MASK (sizeof(long) - 1)
|
|
@@ -1076,10 +1109,6 @@ extern void ExceptionalCondition(const char *conditionName,
|
|
|
1076
1109
|
* ----------------------------------------------------------------
|
|
1077
1110
|
*/
|
|
1078
1111
|
|
|
1079
|
-
#ifdef HAVE_STRUCT_SOCKADDR_UN
|
|
1080
|
-
#define HAVE_UNIX_SOCKETS 1
|
|
1081
|
-
#endif
|
|
1082
|
-
|
|
1083
1112
|
/*
|
|
1084
1113
|
* Invert the sign of a qsort-style comparison result, ie, exchange negative
|
|
1085
1114
|
* and positive integer values, being careful not to get the wrong answer
|
|
@@ -1090,14 +1119,11 @@ extern void ExceptionalCondition(const char *conditionName,
|
|
|
1090
1119
|
|
|
1091
1120
|
/*
|
|
1092
1121
|
* Use this, not "char buf[BLCKSZ]", to declare a field or local variable
|
|
1093
|
-
* holding a page buffer, if that page might be accessed as a page
|
|
1094
|
-
*
|
|
1095
|
-
*
|
|
1096
|
-
*
|
|
1097
|
-
*
|
|
1098
|
-
* using unaligned buffers.) We include both "double" and "int64" in the
|
|
1099
|
-
* union to ensure that the compiler knows the value must be MAXALIGN'ed
|
|
1100
|
-
* (cf. configure's computation of MAXIMUM_ALIGNOF).
|
|
1122
|
+
* holding a page buffer, if that page might be accessed as a page. Otherwise
|
|
1123
|
+
* the variable might be under-aligned, causing problems on alignment-picky
|
|
1124
|
+
* hardware. We include both "double" and "int64" in the union to ensure that
|
|
1125
|
+
* the compiler knows the value must be MAXALIGN'ed (cf. configure's
|
|
1126
|
+
* computation of MAXIMUM_ALIGNOF).
|
|
1101
1127
|
*/
|
|
1102
1128
|
typedef union PGAlignedBlock
|
|
1103
1129
|
{
|
|
@@ -1106,9 +1132,30 @@ typedef union PGAlignedBlock
|
|
|
1106
1132
|
int64 force_align_i64;
|
|
1107
1133
|
} PGAlignedBlock;
|
|
1108
1134
|
|
|
1135
|
+
/*
|
|
1136
|
+
* Use this to declare a field or local variable holding a page buffer, if that
|
|
1137
|
+
* page might be accessed as a page or passed to an SMgr I/O function. If
|
|
1138
|
+
* allocating using the MemoryContext API, the aligned allocation functions
|
|
1139
|
+
* should be used with PG_IO_ALIGN_SIZE. This alignment may be more efficient
|
|
1140
|
+
* for I/O in general, but may be strictly required on some platforms when
|
|
1141
|
+
* using direct I/O.
|
|
1142
|
+
*/
|
|
1143
|
+
typedef union PGIOAlignedBlock
|
|
1144
|
+
{
|
|
1145
|
+
#ifdef pg_attribute_aligned
|
|
1146
|
+
pg_attribute_aligned(PG_IO_ALIGN_SIZE)
|
|
1147
|
+
#endif
|
|
1148
|
+
char data[BLCKSZ];
|
|
1149
|
+
double force_align_d;
|
|
1150
|
+
int64 force_align_i64;
|
|
1151
|
+
} PGIOAlignedBlock;
|
|
1152
|
+
|
|
1109
1153
|
/* Same, but for an XLOG_BLCKSZ-sized buffer */
|
|
1110
1154
|
typedef union PGAlignedXLogBlock
|
|
1111
1155
|
{
|
|
1156
|
+
#ifdef pg_attribute_aligned
|
|
1157
|
+
pg_attribute_aligned(PG_IO_ALIGN_SIZE)
|
|
1158
|
+
#endif
|
|
1112
1159
|
char data[XLOG_BLCKSZ];
|
|
1113
1160
|
double force_align_d;
|
|
1114
1161
|
int64 force_align_i64;
|
|
@@ -1133,7 +1180,6 @@ typedef union PGAlignedXLogBlock
|
|
|
1133
1180
|
#define STATUS_OK (0)
|
|
1134
1181
|
#define STATUS_ERROR (-1)
|
|
1135
1182
|
#define STATUS_EOF (-2)
|
|
1136
|
-
#define STATUS_WAITING (2)
|
|
1137
1183
|
|
|
1138
1184
|
/*
|
|
1139
1185
|
* gettext support
|
|
@@ -1155,7 +1201,8 @@ typedef union PGAlignedXLogBlock
|
|
|
1155
1201
|
* access to the original string and translated string, and for cases where
|
|
1156
1202
|
* immediate translation is not possible, like when initializing global
|
|
1157
1203
|
* variables.
|
|
1158
|
-
*
|
|
1204
|
+
*
|
|
1205
|
+
* https://www.gnu.org/software/gettext/manual/html_node/Special-cases.html
|
|
1159
1206
|
*/
|
|
1160
1207
|
#define gettext_noop(x) (x)
|
|
1161
1208
|
|
|
@@ -1242,46 +1289,56 @@ typedef union PGAlignedXLogBlock
|
|
|
1242
1289
|
* standard C library.
|
|
1243
1290
|
*/
|
|
1244
1291
|
|
|
1245
|
-
#if
|
|
1292
|
+
#if !HAVE_DECL_FDATASYNC
|
|
1246
1293
|
extern int fdatasync(int fildes);
|
|
1247
1294
|
#endif
|
|
1248
1295
|
|
|
1249
|
-
/*
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
#
|
|
1256
|
-
#define
|
|
1257
|
-
#
|
|
1258
|
-
#
|
|
1259
|
-
|
|
1260
|
-
#if !defined(HAVE_STRTOULL) && defined(HAVE___STRTOULL)
|
|
1261
|
-
#define strtoull __strtoull
|
|
1262
|
-
#define HAVE_STRTOULL 1
|
|
1263
|
-
#endif
|
|
1264
|
-
|
|
1265
|
-
#if !defined(HAVE_STRTOULL) && defined(HAVE_STRTOUQ)
|
|
1266
|
-
#define strtoull strtouq
|
|
1267
|
-
#define HAVE_STRTOULL 1
|
|
1268
|
-
#endif
|
|
1269
|
-
|
|
1270
|
-
#if defined(HAVE_STRTOLL) && !HAVE_DECL_STRTOLL
|
|
1271
|
-
extern long long strtoll(const char *str, char **endptr, int base);
|
|
1296
|
+
/*
|
|
1297
|
+
* Thin wrappers that convert strings to exactly 64-bit integers, matching our
|
|
1298
|
+
* definition of int64. (For the naming, compare that POSIX has
|
|
1299
|
+
* strtoimax()/strtoumax() which return intmax_t/uintmax_t.)
|
|
1300
|
+
*/
|
|
1301
|
+
#ifdef HAVE_LONG_INT_64
|
|
1302
|
+
#define strtoi64(str, endptr, base) ((int64) strtol(str, endptr, base))
|
|
1303
|
+
#define strtou64(str, endptr, base) ((uint64) strtoul(str, endptr, base))
|
|
1304
|
+
#else
|
|
1305
|
+
#define strtoi64(str, endptr, base) ((int64) strtoll(str, endptr, base))
|
|
1306
|
+
#define strtou64(str, endptr, base) ((uint64) strtoull(str, endptr, base))
|
|
1272
1307
|
#endif
|
|
1273
1308
|
|
|
1274
|
-
|
|
1275
|
-
|
|
1309
|
+
/*
|
|
1310
|
+
* Similarly, wrappers around labs()/llabs() matching our int64.
|
|
1311
|
+
*/
|
|
1312
|
+
#ifdef HAVE_LONG_INT_64
|
|
1313
|
+
#define i64abs(i) labs(i)
|
|
1314
|
+
#else
|
|
1315
|
+
#define i64abs(i) llabs(i)
|
|
1276
1316
|
#endif
|
|
1277
1317
|
|
|
1278
|
-
/*
|
|
1318
|
+
/*
|
|
1319
|
+
* Use "extern PGDLLIMPORT ..." to declare variables that are defined
|
|
1320
|
+
* in the core backend and need to be accessible by loadable modules.
|
|
1321
|
+
* No special marking is required on most ports.
|
|
1322
|
+
*/
|
|
1279
1323
|
#ifndef PGDLLIMPORT
|
|
1280
1324
|
#define PGDLLIMPORT
|
|
1281
1325
|
#endif
|
|
1326
|
+
|
|
1327
|
+
/*
|
|
1328
|
+
* Use "extern PGDLLEXPORT ..." to declare functions that are defined in
|
|
1329
|
+
* loadable modules and need to be callable by the core backend or other
|
|
1330
|
+
* loadable modules.
|
|
1331
|
+
* If the compiler knows __attribute__((visibility("*"))), we use that,
|
|
1332
|
+
* unless we already have a platform-specific definition. Otherwise,
|
|
1333
|
+
* no special marking is required.
|
|
1334
|
+
*/
|
|
1282
1335
|
#ifndef PGDLLEXPORT
|
|
1336
|
+
#ifdef HAVE_VISIBILITY_ATTRIBUTE
|
|
1337
|
+
#define PGDLLEXPORT __attribute__((visibility("default")))
|
|
1338
|
+
#else
|
|
1283
1339
|
#define PGDLLEXPORT
|
|
1284
1340
|
#endif
|
|
1341
|
+
#endif
|
|
1285
1342
|
|
|
1286
1343
|
/*
|
|
1287
1344
|
* The following is used as the arg list for signal handlers. Any ports
|
|
@@ -1298,21 +1355,21 @@ extern unsigned long long strtoull(const char *str, char **endptr, int base);
|
|
|
1298
1355
|
|
|
1299
1356
|
/*
|
|
1300
1357
|
* When there is no sigsetjmp, its functionality is provided by plain
|
|
1301
|
-
* setjmp.
|
|
1302
|
-
* that
|
|
1358
|
+
* setjmp. We now support the case only on Windows. However, it seems
|
|
1359
|
+
* that MinGW-64 has some longstanding issues in its setjmp support,
|
|
1360
|
+
* so on that toolchain we cheat and use gcc's builtins.
|
|
1303
1361
|
*/
|
|
1304
1362
|
#ifdef WIN32
|
|
1363
|
+
#ifdef __MINGW64__
|
|
1364
|
+
typedef intptr_t sigjmp_buf[5];
|
|
1365
|
+
#define sigsetjmp(x,y) __builtin_setjmp(x)
|
|
1366
|
+
#define siglongjmp __builtin_longjmp
|
|
1367
|
+
#else /* !__MINGW64__ */
|
|
1305
1368
|
#define sigjmp_buf jmp_buf
|
|
1306
1369
|
#define sigsetjmp(x,y) setjmp(x)
|
|
1307
1370
|
#define siglongjmp longjmp
|
|
1308
|
-
#endif
|
|
1309
|
-
|
|
1310
|
-
/* EXEC_BACKEND defines */
|
|
1311
|
-
#ifdef EXEC_BACKEND
|
|
1312
|
-
#define NON_EXEC_STATIC
|
|
1313
|
-
#else
|
|
1314
|
-
#define NON_EXEC_STATIC static
|
|
1315
|
-
#endif
|
|
1371
|
+
#endif /* __MINGW64__ */
|
|
1372
|
+
#endif /* WIN32 */
|
|
1316
1373
|
|
|
1317
1374
|
/* /port compatibility functions */
|
|
1318
1375
|
#include "port.h"
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* prototypes for functions in backend/catalog/catalog.c
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/catalog/catalog.h
|
|
@@ -34,9 +34,12 @@ extern bool IsReservedName(const char *name);
|
|
|
34
34
|
|
|
35
35
|
extern bool IsSharedRelation(Oid relationId);
|
|
36
36
|
|
|
37
|
+
extern bool IsPinnedObject(Oid classId, Oid objectId);
|
|
38
|
+
|
|
37
39
|
extern Oid GetNewOidWithIndex(Relation relation, Oid indexId,
|
|
38
40
|
AttrNumber oidcolumn);
|
|
39
|
-
extern
|
|
40
|
-
|
|
41
|
+
extern RelFileNumber GetNewRelFileNumber(Oid reltablespace,
|
|
42
|
+
Relation pg_class,
|
|
43
|
+
char relpersistence);
|
|
41
44
|
|
|
42
45
|
#endif /* CATALOG_H */
|