From 372728b0d49552641f0ea83d9d2e08817de038fa Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 8 Apr 2018 13:16:50 -0400 Subject: [PATCH] Replace our traditional initial-catalog-data format with a better design. Historically, the initial catalog data to be installed during bootstrap has been written in DATA() lines in the catalog header files. This had lots of disadvantages: the format was badly underdocumented, it was very difficult to edit the data in any mechanized way, and due to the lack of any abstraction the data was verbose, hard to read/understand, and easy to get wrong. Hence, move this data into separate ".dat" files and represent it in a way that can easily be read and rewritten by Perl scripts. The new format is essentially "key => value" for each column; while it's a bit repetitive, explicit labeling of each value makes the data far more readable and less error-prone. Provide a way to abbreviate entries by omitting field values that match a specified default value for their column. This allows removal of a large amount of repetitive boilerplate and also lowers the barrier to adding new columns. Also teach genbki.pl how to translate symbolic OID references into numeric OIDs for more cases than just "regproc"-like pg_proc references. It can now do that for regprocedure-like references (thus solving the problem that regproc is ambiguous for overloaded functions), operators, types, opfamilies, opclasses, and access methods. Use this to turn nearly all OID cross-references in the initial data into symbolic form. This represents a very large step forward in readability and error resistance of the initial catalog data. It should also reduce the difficulty of renumbering OID assignments in uncommitted patches. Also, solve the longstanding problem that frontend code that would like to use OID macros and other information from the catalog headers often had difficulty with backend-only code in the headers. To do this, arrange for all generated macros, plus such other declarations as we deem fit, to be placed in "derived" header files that are safe for frontend inclusion. (Once clients migrate to using these pg_*_d.h headers, it will be possible to get rid of the pg_*_fn.h headers, which only exist to quarantine code away from clients. That is left for follow-on patches, however.) The now-automatically-generated macros include the Anum_xxx and Natts_xxx constants that we used to have to update by hand when adding or removing catalog columns. Replace the former manual method of generating OID macros for pg_type entries with an automatic method, ensuring that all built-in types have OID macros. (But note that this patch does not change the way that OID macros for pg_proc entries are built and used. It's not clear that making that match the other catalogs would be worth extra code churn.) Add SGML documentation explaining what the new data format is and how to work with it. Despite being a very large change in the catalog headers, there is no catversion bump here, because postgres.bki and related output files haven't changed at all. John Naylor, based on ideas from various people; review and minor additional coding by me; previous review by Alvaro Herrera Discussion: https://postgr.es/m/CAJVSVGWO48JbbwXkJz_yBFyGYW-M9YWxnPdxJBUosDC9ou_F0Q@mail.gmail.com --- doc/src/sgml/bki.sgml | 661 +- doc/src/sgml/libpq.sgml | 2 +- src/Makefile | 5 + src/backend/Makefile | 34 +- src/backend/catalog/.gitignore | 2 + src/backend/catalog/Catalog.pm | 313 +- src/backend/catalog/Makefile | 85 +- src/backend/catalog/README | 111 - src/backend/catalog/genbki.pl | 478 +- src/backend/utils/Gen_fmgrtab.pl | 64 +- src/backend/utils/Makefile | 15 +- src/include/Makefile | 6 +- src/include/catalog/.gitignore | 2 + src/include/catalog/Makefile | 31 + src/include/catalog/duplicate_oids | 6 +- src/include/catalog/genbki.h | 29 +- src/include/catalog/indexing.h | 2 +- src/include/catalog/pg_aggregate.dat | 598 + src/include/catalog/pg_aggregate.h | 336 +- src/include/catalog/pg_am.dat | 34 + src/include/catalog/pg_am.h | 62 +- src/include/catalog/pg_amop.dat | 2472 ++++ src/include/catalog/pg_amop.h | 1150 +- src/include/catalog/pg_amproc.dat | 1277 ++ src/include/catalog/pg_amproc.h | 554 +- src/include/catalog/pg_attrdef.h | 20 +- src/include/catalog/pg_attribute.h | 59 +- src/include/catalog/pg_auth_members.h | 22 +- src/include/catalog/pg_authid.dat | 67 + src/include/catalog/pg_authid.h | 71 +- src/include/catalog/pg_cast.dat | 535 + src/include/catalog/pg_cast.h | 368 +- src/include/catalog/pg_class.dat | 68 + src/include/catalog/pg_class.h | 76 +- src/include/catalog/pg_collation.dat | 31 + src/include/catalog/pg_collation.h | 42 +- src/include/catalog/pg_constraint.h | 56 +- src/include/catalog/pg_conversion.h | 29 +- src/include/catalog/pg_database.dat | 26 + src/include/catalog/pg_database.h | 34 +- src/include/catalog/pg_db_role_setting.h | 29 +- src/include/catalog/pg_default_acl.h | 27 +- src/include/catalog/pg_depend.h | 49 +- src/include/catalog/pg_description.h | 37 +- src/include/catalog/pg_enum.h | 27 +- src/include/catalog/pg_event_trigger.h | 22 +- src/include/catalog/pg_extension.h | 29 +- src/include/catalog/pg_foreign_data_wrapper.h | 23 +- src/include/catalog/pg_foreign_server.h | 23 +- src/include/catalog/pg_foreign_table.h | 19 +- src/include/catalog/pg_index.h | 38 +- src/include/catalog/pg_inherits.h | 24 +- src/include/catalog/pg_init_privs.h | 42 +- src/include/catalog/pg_language.dat | 31 + src/include/catalog/pg_language.h | 39 +- src/include/catalog/pg_largeobject.h | 19 +- src/include/catalog/pg_largeobject_metadata.h | 18 +- src/include/catalog/pg_namespace.dat | 25 + src/include/catalog/pg_namespace.h | 37 +- src/include/catalog/pg_opclass.dat | 357 + src/include/catalog/pg_opclass.h | 222 +- src/include/catalog/pg_operator.dat | 3340 +++++ src/include/catalog/pg_operator.h | 1868 +-- src/include/catalog/pg_opfamily.dat | 248 + src/include/catalog/pg_opfamily.h | 170 +- src/include/catalog/pg_partitioned_table.h | 24 +- src/include/catalog/pg_pltemplate.dat | 51 + src/include/catalog/pg_pltemplate.h | 39 +- src/include/catalog/pg_policy.h | 29 +- src/include/catalog/pg_proc.dat | 10210 ++++++++++++++++ src/include/catalog/pg_proc.h | 5667 +-------- src/include/catalog/pg_publication.h | 24 +- src/include/catalog/pg_publication_rel.h | 19 +- src/include/catalog/pg_range.dat | 31 + src/include/catalog/pg_range.h | 61 +- src/include/catalog/pg_replication_origin.h | 22 +- src/include/catalog/pg_rewrite.h | 23 +- src/include/catalog/pg_seclabel.h | 16 +- src/include/catalog/pg_sequence.h | 20 +- src/include/catalog/pg_shdepend.h | 42 +- src/include/catalog/pg_shdescription.h | 36 +- src/include/catalog/pg_shseclabel.h | 18 +- src/include/catalog/pg_statistic.h | 44 +- src/include/catalog/pg_statistic_ext.h | 26 +- src/include/catalog/pg_subscription.h | 20 +- src/include/catalog/pg_subscription_rel.h | 19 +- src/include/catalog/pg_tablespace.dat | 22 + src/include/catalog/pg_tablespace.h | 26 +- src/include/catalog/pg_transform.h | 25 +- src/include/catalog/pg_trigger.h | 35 +- src/include/catalog/pg_ts_config.dat | 19 + src/include/catalog/pg_ts_config.h | 29 +- src/include/catalog/pg_ts_config_map.dat | 35 + src/include/catalog/pg_ts_config_map.h | 47 +- src/include/catalog/pg_ts_dict.dat | 20 + src/include/catalog/pg_ts_dict.h | 31 +- src/include/catalog/pg_ts_parser.dat | 20 + src/include/catalog/pg_ts_parser.h | 60 +- src/include/catalog/pg_ts_template.dat | 30 + src/include/catalog/pg_ts_template.h | 51 +- src/include/catalog/pg_type.dat | 942 ++ src/include/catalog/pg_type.h | 565 +- src/include/catalog/pg_user_mapping.h | 19 +- src/include/catalog/reformat_dat_file.pl | 311 + src/include/catalog/toasting.h | 2 +- src/include/catalog/unused_oids | 8 +- src/interfaces/ecpg/ecpglib/pg_type.h | 65 +- src/tools/msvc/Solution.pm | 49 +- src/tools/msvc/clean.bat | 2 + src/tools/pgindent/pgindent | 8 +- 110 files changed, 22953 insertions(+), 12505 deletions(-) delete mode 100644 src/backend/catalog/README create mode 100644 src/include/catalog/Makefile create mode 100644 src/include/catalog/pg_aggregate.dat create mode 100644 src/include/catalog/pg_am.dat create mode 100644 src/include/catalog/pg_amop.dat create mode 100644 src/include/catalog/pg_amproc.dat create mode 100644 src/include/catalog/pg_authid.dat create mode 100644 src/include/catalog/pg_cast.dat create mode 100644 src/include/catalog/pg_class.dat create mode 100644 src/include/catalog/pg_collation.dat create mode 100644 src/include/catalog/pg_database.dat create mode 100644 src/include/catalog/pg_language.dat create mode 100644 src/include/catalog/pg_namespace.dat create mode 100644 src/include/catalog/pg_opclass.dat create mode 100644 src/include/catalog/pg_operator.dat create mode 100644 src/include/catalog/pg_opfamily.dat create mode 100644 src/include/catalog/pg_pltemplate.dat create mode 100644 src/include/catalog/pg_proc.dat create mode 100644 src/include/catalog/pg_range.dat create mode 100644 src/include/catalog/pg_tablespace.dat create mode 100644 src/include/catalog/pg_ts_config.dat create mode 100644 src/include/catalog/pg_ts_config_map.dat create mode 100644 src/include/catalog/pg_ts_dict.dat create mode 100644 src/include/catalog/pg_ts_parser.dat create mode 100644 src/include/catalog/pg_ts_template.dat create mode 100644 src/include/catalog/pg_type.dat create mode 100644 src/include/catalog/reformat_dat_file.pl diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml index 33378b46ea..c4ffc61b84 100644 --- a/doc/src/sgml/bki.sgml +++ b/doc/src/sgml/bki.sgml @@ -1,38 +1,647 @@ - <acronym>BKI</acronym> Backend Interface + System Catalog Declarations and Initial Contents - Backend Interface (BKI) files are scripts in a - special language that is understood by the - PostgreSQL backend when running in the - bootstrap mode. The bootstrap mode allows system catalogs - to be created and filled from scratch, whereas ordinary SQL commands - require the catalogs to exist already. - BKI files can therefore be used to create the - database system in the first place. (And they are probably not - useful for anything else.) + PostgreSQL uses many different system catalogs + to keep track of the existence and properties of database objects, such as + tables and functions. Physically there is no difference between a system + catalog and a plain user table, but the backend C code knows the structure + and properties of each catalog, and can manipulate it directly at a low + level. Thus, for example, it is inadvisable to attempt to alter the + structure of a catalog on-the-fly; that would break assumptions built into + the C code about how rows of the catalog are laid out. But the structure + of the catalogs can change between major versions. - initdb uses a BKI file - to do part of its job when creating a new database cluster. The - input file used by initdb is created as - part of building and installing PostgreSQL - by a program named genbki.pl, which reads some - specially formatted C header files in the src/include/catalog/ - directory of the source tree. The created BKI file - is called postgres.bki and is - normally installed in the - share subdirectory of the installation tree. + The structures of the catalogs are declared in specially formatted C + header files in the src/include/catalog/ directory of + the source tree. In particular, for each catalog there is a header file + named after the catalog (e.g., pg_class.h + for pg_class), which defines the set of columns + the catalog has, as well as some other basic properties such as its OID. + Other critical files defining the catalog structure + include indexing.h, which defines the indexes present + on all the system catalogs, and toasting.h, which + defines TOAST tables for catalogs that need one. - Related information can be found in the documentation for - initdb. + Many of the catalogs have initial data that must be loaded into them + during the bootstrap phase + of initdb, to bring the system up to a point + where it is capable of executing SQL commands. (For + example, pg_class.h must contain an entry for itself, + as well as one for each other system catalog and index.) This + initial data is kept in editable form in data files that are also stored + in the src/include/catalog/ directory. For example, + pg_proc.dat describes all the initial rows that must + be inserted into the pg_proc catalog. + + To create the catalog files and load this initial data into them, a + backend running in bootstrap mode reads a BKI + (Backend Interface) file containing commands and initial data. + The postgres.bki file used in this mode is prepared + from the aforementioned header and data files, while building + a PostgreSQL distribution, by a Perl script + named genbki.pl. + Although it's specific to a particular PostgreSQL + release, postgres.bki is platform-independent and is + installed in the share subdirectory of the + installation tree. + + + + genbki.pl also produces a derived header file for + each catalog, for example pg_class_d.h for + the pg_class catalog. This file contains + automatically-generated macro definitions, and may contain other macros, + enum declarations, and so on that can be useful for client C code that + reads a particular catalog. + + + + Most Postgres developers don't need to be directly concerned with + the BKI file, but almost any nontrivial feature + addition in the backend will require modifying the catalog header files + and/or initial data files. The rest of this chapter gives some + information about that, and for completeness describes + the BKI file format. + + + + System Catalog Declaration Rules + + + The key part of a catalog header file is a C structure definition + describing the layout of each row of the catalog. This begins with + a CATALOG macro, which so far as the C compiler is + concerned is just shorthand for typedef struct + FormData_catalogname. + Each field in the struct gives rise to a catalog column. + Fields can be annotated using the BKI property macros described + in genbki.h, for example to define a default value + for a field or mark it as nullable or not nullable. + The CATALOG line can also be annotated, with some + other BKI property macros described in genbki.h, to + define other properties of the catalog as a whole, such as whether + it has OIDs (by default, it does). + + + + The system catalog cache code (and most catalog-munging code in general) + assumes that the fixed-length portions of all system catalog tuples are + in fact present, because it maps this C struct declaration onto them. + Thus, all variable-length fields and nullable fields must be placed at + the end, and they cannot be accessed as struct fields. + For example, if you tried to + set pg_type.typrelid + to be NULL, it would fail when some piece of code tried to reference + typetup->typrelid (or worse, + typetup->typelem, because that follows + typrelid). This would result in + random errors or even segmentation violations. + + + + As a partial guard against this type of error, variable-length or + nullable fields should not be made directly visible to the C compiler. + This is accomplished by wrapping them in #ifdef + CATALOG_VARLEN ... #endif (where + CATALOG_VARLEN is a symbol that is never defined). + This prevents C code from carelessly trying to access fields that might + not be there or might be at some other offset. + As an independent guard against creating incorrect rows, we + require all columns that should be non-nullable to be marked so + in pg_attribute. The bootstrap code will + automatically mark catalog columns as NOT NULL + if they are fixed-width and are not preceded by any nullable column. + Where this rule is inadequate, you can force correct marking by using + BKI_FORCE_NOT_NULL + and BKI_FORCE_NULL annotations as needed. But note + that NOT NULL constraints are only enforced in the + executor, not against tuples that are generated by random C code, + so care is still needed when manually creating or updating catalog rows. + + + + Frontend code should not include any pg_xxx.h + catalog header file, as these files may contain C code that won't compile + outside the backend. (Typically, that happens because these files also + contain declarations for functions + in src/backend/catalog/ files.) + Instead, frontend code may include the corresponding + generated pg_xxx_d.h header, which will contain + OID #defines and any other data that might be of use + on the client side. If you want macros or other code in a catalog header + to be visible to frontend code, write #ifdef + EXPOSE_TO_CLIENT_CODE ... #endif around that + section to instruct genbki.pl to copy that section + to the pg_xxx_d.h header. + + + + A few of the catalogs are so fundamental that they can't even be created + by the BKI create command that's + used for most catalogs, because that command needs to write information + into these catalogs to describe the new catalog. These are + called bootstrap catalogs, and defining one takes + a lot of extra work: you have to manually prepare appropriate entries for + them in the pre-loaded contents of pg_class + and pg_type, and those entries will need to be + updated for subsequent changes to the catalog's structure. + (Bootstrap catalogs also need pre-loaded entries + in pg_attribute, but + fortunately genbki.pl handles that chore nowadays.) + Avoid making new catalogs be bootstrap catalogs if at all possible. + + + + + System Catalog Initial Data + + + Each catalog that has any manually-created initial data (some do not) + has a corresponding .dat file that contains its + initial data in an editable format. + + + + Data File Format + + + Each .dat file contains Perl data structure literals + that are simply eval'd to produce an in-memory data structure consisting + of an array of hash references, one per catalog row. + A slightly modified excerpt from pg_database.dat + will demonstrate the key features: + + + +[ + +# LC_COLLATE and LC_CTYPE will be replaced at initdb time with user choices +# that might contain non-word characters, so we must double-quote them. + +{ oid => '1', oid_symbol => 'TemplateDbOid', + descr => 'database\'s default template', + datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', + datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't', + datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', + datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', + datacl => '_null_' }, + +] + + + + Points to note: + + + + + + + The overall file layout is: open square bracket, one or more sets of + curly braces each of which represents a catalog row, close square + bracket. Write a comma after each closing curly brace. + + + + + + Within each catalog row, write comma-separated + key => + value pairs. The + allowed keys are the names of the catalog's + columns, plus the metadata keys oid, + oid_symbol, and descr. + (The use of oid and oid_symbol + is described in + below. descr supplies a description string for + the object, which will be inserted + into pg_description + or pg_shdescription as appropriate.) + While the metadata keys are optional, the catalog's defined columns + must all be provided, except when the catalog's .h + file specifies a default value for the column. + + + + + + All values must be single-quoted. Escape single quotes used within + a value with a backslash. (Backslashes meant as data need not be + doubled, however; this follows Perl's rules for simple quoted + literals.) + + + + + + Null values are represented by _null_. + + + + + + If a value is a macro to be expanded + by initdb, it should also contain double + quotes as shown above, unless we know that no special characters can + appear within the string that will be substituted. + + + + + + Comments are preceded by #, and must be on their + own lines. + + + + + + To aid readability, field values that are OIDs of other catalog + entries can be represented by names rather than numeric OIDs. + This is described in + below. + + + + + + Since hashes are unordered data structures, field order and line + layout aren't semantically significant. However, to maintain a + consistent appearance, we set a few rules that are applied by the + formatting script reformat_dat_file.pl: + + + + + + Within each pair of curly braces, the metadata + fields oid, oid_symbol, + and descr (if present) come first, in that + order, then the catalog's own fields appear in their defined order. + + + + + + Newlines are inserted between fields as needed to limit line length + to 80 characters, if possible. A newline is also inserted between + the metadata fields and the regular fields. + + + + + + If the catalog's .h file specifies a default + value for a column, and a data entry has that same + value, reformat_dat_file.pl will omit it from + the data file. This keeps the data representation compact. + + + + + + reformat_dat_file.pl preserves blank lines + and comment lines as-is. + + + + + + It's recommended to run reformat_dat_file.pl + before submitting catalog data patches. For convenience, you can + simply change to src/include/catalog/ and + run make reformat-dat-files. + + + + + + If you want to add a new method of making the data representation + smaller, you must implement it + in reformat_dat_file.pl and also + teach Catalog::ParseData() how to expand the + data back into the full representation. + + + + + + + + OID Assignment + + + A catalog row appearing in the initial data can be given a + manually-assigned OID by writing an oid + => nnnn metadata field. + Furthermore, if an OID is assigned, a C macro for that OID can be + created by writing an oid_symbol + => name metadata field. + + + + Pre-loaded catalog rows must have preassigned OIDs if there are OID + references to them in other pre-loaded rows. A preassigned OID is + also needed if the row's OID must be referenced from C code. + If neither case applies, the oid metadata field can + be omitted, in which case the bootstrap code assigns an OID + automatically, or leaves it zero in a catalog that has no OIDs. + In practice we usually preassign OIDs for all or none of the pre-loaded + rows in a given catalog, even if only some of them are actually + cross-referenced. + + + + Writing the actual numeric value of any OID in C code is considered + very bad form; always use a macro, instead. Direct references + to pg_proc OIDs are common enough that there's + a special mechanism to create the necessary macros automatically; + see src/backend/utils/Gen_fmgrtab.pl. Similarly + — but, for historical reasons, not done the same way — + there's an automatic method for creating macros + for pg_type + OIDs. oid_symbol entries are therefore not + necessary in those two catalogs. Likewise, macros for + the pg_class OIDs of system catalogs and + indexes are set up automatically. For all other system catalogs, you + have to manually specify any macros you need + via oid_symbol entries. + + + + To find an available OID for a new pre-loaded row, run the + script src/include/catalog/unused_oids. + It prints inclusive ranges of unused OIDs (e.g., the output + line 45-900 means OIDs 45 through 900 have not been + allocated yet). Currently, OIDs 1-9999 are reserved for manual + assignment; the unused_oids script simply looks + through the catalog headers and .dat files + to see which ones do not appear. You can also use + the duplicate_oids script to check for mistakes. + (That script is run automatically at compile time, and will stop the + build if a duplicate is found.) + + + + The OID counter starts at 10000 at the beginning of a bootstrap run. + If a catalog row is in a table that requires OIDs, but no OID was + preassigned by an oid field, then it will + receive an OID of 10000 or above. + + + + + OID Reference Lookup + + + Cross-references from one initial catalog row to another can be written + by just writing the preassigned OID of the referenced row. But + that's error-prone and hard to understand, so for frequently-referenced + catalogs, genbki.pl provides mechanisms to write + symbolic references instead. Currently this is possible for references + to access methods, functions, operators, opclasses, opfamilies, and + types. The rules are as follows: + + + + + + + Use of symbolic references is enabled in a particular catalog column + by attaching BKI_LOOKUP(lookuprule) + to the column's definition, where lookuprule + is pg_am, pg_proc, + pg_operator, + pg_opclass, + pg_opfamily, + or pg_type. + BKI_LOOKUP can be attached to columns of + type Oid, regproc, oidvector, + or Oid[]; in the latter two cases it implies performing a + lookup on each element of the array. + + + + + + In such a column, all entries must use the symbolic format except + when writing 0 for InvalidOid. (If the column is + declared regproc, you can optionally + write - instead of 0.) + genbki.pl will warn about unrecognized names. + + + + + + Access methods are just represented by their names, as are types. + Type names must match the referenced pg_type + entry's typname; you do not get to use any + aliases such as integer + for int4. + + + + + + A function can be represented by + its proname, if that is unique among + the pg_proc.dat entries (this works like regproc + input). Otherwise, write it + as proname(argtypename,argtypename,...), + like regprocedure. The argument type names must be spelled exactly as + they are in the pg_proc.dat entry's + proargtypes field. Do not insert any + spaces. + + + + + + Operators are represented + by oprname(lefttype,righttype), + writing the type names exactly as they appear in + the pg_operator.dat + entry's oprleft + and oprright fields. + (Write 0 for the omitted operand of a unary + operator.) + + + + + + The names of opclasses and opfamilies are only unique within an + access method, so they are represented + by access_method_name/object_name. + + + + + + In none of these cases is there any provision for + schema-qualification; all objects created during bootstrap are + expected to be in the pg_catalog schema. + + + + + + genbki.pl resolves all symbolic references while it + runs, and puts simple numeric OIDs into the emitted BKI file. There is + therefore no need for the bootstrap backend to deal with symbolic + references. + + + + + Recipes for Editing Data Files + + + Here are some suggestions about the easiest ways to perform common tasks + when updating catalog data files. + + + + Add a new column with a default to a catalog: + + Add the column to the header file with + a BKI_DEFAULT(value) + annotation. The data file need only be adjusted by adding the field + in existing rows where a non-default value is needed. + + + + + Add a default value to an existing column that doesn't have + one: + + Add a BKI_DEFAULT annotation to the header file, + then run make reformat-dat-files to remove + now-redundant field entries. + + + + + Remove a column, whether it has a default or not: + + Remove the column from the header, then run make + reformat-dat-files to remove now-useless field entries. + + + + + Change or remove an existing default value: + + You cannot simply change the header file, since that will cause the + current data to be interpreted incorrectly. First run make + expand-dat-files to rewrite the data files with all + default values inserted explicitly, then change or remove + the BKI_DEFAULT annotation, then run make + reformat-dat-files to remove superfluous fields again. + + + + + Ad-hoc bulk editing: + + reformat_dat_file.pl can be adapted to perform + many kinds of bulk changes. Look for its block comments showing where + one-off code can be inserted. In the following example, we are going + to consolidate two boolean fields in pg_proc + into a char field: + + + + + Add the new column, with a default, + to pg_proc.h: + ++ /* see PROKIND_ categories below */ ++ char prokind BKI_DEFAULT(f); + + + + + + + Create a new script based on reformat_dat_file.pl + to insert appropriate values on-the-fly: + +- # At this point we have the full row in memory as a hash +- # and can do any operations we want. As written, it only +- # removes default values, but this script can be adapted to +- # do one-off bulk-editing. ++ # One-off change to migrate to prokind ++ # Default has already been filled in by now, so change to other ++ # values as appropriate ++ if ($values{proisagg} eq 't') ++ { ++ $values{prokind} = 'a'; ++ } ++ elsif ($values{proiswindow} eq 't') ++ { ++ $values{prokind} = 'w'; ++ } + + + + + + + Run the new script: + +$ cd src/include/catalog +$ perl -I ../../backend/catalog rewrite_dat_with_prokind.pl pg_proc.dat + + At this point pg_proc.dat has all three + columns, prokind, + proisagg, + and proiswindow, though they will appear + only in rows where they have non-default values. + + + + + + Remove the old columns from pg_proc.h: + +- /* is it an aggregate? */ +- bool proisagg BKI_DEFAULT(f); +- +- /* is it a window function? */ +- bool proiswindow BKI_DEFAULT(f); + + + + + + + Finally, run make reformat-dat-files to remove + the useless old entries from pg_proc.dat. + + + + + For further examples of scripts used for bulk editing, see + convert_oid2name.pl + and remove_pg_type_oid_symbols.pl attached to this + message: + + + + + + <acronym>BKI</acronym> File Format @@ -76,10 +685,10 @@ rowtype_oid oid (name1 = type1 - FORCE NOT NULL | FORCE NULL , + FORCE NOT NULL | FORCE NULL , name2 = type2 - FORCE NOT NULL | FORCE NULL , + FORCE NOT NULL | FORCE NULL , ...) @@ -106,7 +715,7 @@ tables containing columns of other types, this cannot be done until after pg_type has been created and filled with appropriate entries. (That effectively means that only these - column types can be used in bootstrapped tables, but non-bootstrap + column types can be used in bootstrap catalogs, but non-bootstrap catalogs can contain any built-in type.) @@ -340,7 +949,7 @@ - Example + BKI Example The following sequence of commands will create the diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index 8729ccd5c5..1626999a70 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -3566,7 +3566,7 @@ Oid PQftype(const PGresult *res, You can query the system table pg_type to obtain the names and properties of the various data types. The OIDs of the built-in data types are defined - in the file src/include/catalog/pg_type.h + in the file src/include/catalog/pg_type_d.h in the source tree. diff --git a/src/Makefile b/src/Makefile index bcdbd9588a..0e56399cb9 100644 --- a/src/Makefile +++ b/src/Makefile @@ -41,6 +41,11 @@ endif $(recurse) +# Update the commonly used headers before building the subdirectories; +# otherwise, in a parallel build, several different sub-jobs will try to +# remake them concurrently +$(SUBDIRS:%=all-%-recurse): | submake-generated-headers + install: install-local install-local: installdirs-local diff --git a/src/backend/Makefile b/src/backend/Makefile index 42a0748ade..82a59eac2d 100644 --- a/src/backend/Makefile +++ b/src/backend/Makefile @@ -53,7 +53,7 @@ endif ########################################################################## -all: submake-libpgport submake-schemapg postgres $(POSTGRES_IMP) +all: submake-libpgport submake-catalog-headers postgres $(POSTGRES_IMP) ifneq ($(PORTNAME), cygwin) ifneq ($(PORTNAME), win32) @@ -151,19 +151,17 @@ utils/errcodes.h: utils/generate-errcodes.pl utils/errcodes.txt utils/fmgrprotos.h: utils/fmgroids.h touch $@ -utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h +utils/fmgroids.h: utils/Gen_fmgrtab.pl catalog/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.dat $(top_srcdir)/src/include/access/transam.h $(MAKE) -C utils fmgroids.h fmgrprotos.h utils/probes.h: utils/probes.d $(MAKE) -C utils probes.h # run this unconditionally to avoid needing to know its dependencies here: -catalog/schemapg.h: | submake-schemapg +submake-catalog-headers: + $(MAKE) -C catalog distprep generated-header-symlinks -submake-schemapg: - $(MAKE) -C catalog schemapg.h - -.PHONY: submake-schemapg +.PHONY: submake-catalog-headers # Make symlinks for these headers in the include directory. That way # we can cut down on the -I options. Also, a symlink is automatically @@ -178,18 +176,13 @@ submake-schemapg: .PHONY: generated-headers -generated-headers: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/catalog/schemapg.h $(top_builddir)/src/include/storage/lwlocknames.h $(top_builddir)/src/include/utils/errcodes.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/fmgrprotos.h $(top_builddir)/src/include/utils/probes.h +generated-headers: $(top_builddir)/src/include/parser/gram.h $(top_builddir)/src/include/storage/lwlocknames.h $(top_builddir)/src/include/utils/errcodes.h $(top_builddir)/src/include/utils/fmgroids.h $(top_builddir)/src/include/utils/fmgrprotos.h $(top_builddir)/src/include/utils/probes.h submake-catalog-headers $(top_builddir)/src/include/parser/gram.h: parser/gram.h prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \ cd '$(dir $@)' && rm -f $(notdir $@) && \ $(LN_S) "$$prereqdir/$(notdir $<)" . -$(top_builddir)/src/include/catalog/schemapg.h: catalog/schemapg.h - prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \ - cd '$(dir $@)' && rm -f $(notdir $@) && \ - $(LN_S) "$$prereqdir/$(notdir $<)" . - $(top_builddir)/src/include/storage/lwlocknames.h: storage/lmgr/lwlocknames.h prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \ cd '$(dir $@)' && rm -f $(notdir $@) && \ @@ -225,7 +218,7 @@ utils/probes.o: utils/probes.d $(SUBDIROBJS) distprep: $(MAKE) -C parser gram.c gram.h scan.c $(MAKE) -C bootstrap bootparse.c bootscanner.c - $(MAKE) -C catalog schemapg.h postgres.bki postgres.description postgres.shdescription + $(MAKE) -C catalog distprep $(MAKE) -C replication repl_gram.c repl_scanner.c syncrep_gram.c syncrep_scanner.c $(MAKE) -C storage/lmgr lwlocknames.h lwlocknames.c $(MAKE) -C utils fmgrtab.c fmgroids.h fmgrprotos.h errcodes.h @@ -327,13 +320,7 @@ endif ########################################################################## clean: - rm -f $(LOCALOBJS) postgres$(X) $(POSTGRES_IMP) \ - $(top_builddir)/src/include/parser/gram.h \ - $(top_builddir)/src/include/catalog/schemapg.h \ - $(top_builddir)/src/include/storage/lwlocknames.h \ - $(top_builddir)/src/include/utils/fmgroids.h \ - $(top_builddir)/src/include/utils/fmgrprotos.h \ - $(top_builddir)/src/include/utils/probes.h + rm -f $(LOCALOBJS) postgres$(X) $(POSTGRES_IMP) ifeq ($(PORTNAME), cygwin) rm -f postgres.dll libpostgres.a endif @@ -345,15 +332,12 @@ distclean: clean rm -f port/tas.s port/dynloader.c port/pg_sema.c port/pg_shmem.c maintainer-clean: distclean + $(MAKE) -C catalog $@ rm -f bootstrap/bootparse.c \ bootstrap/bootscanner.c \ parser/gram.c \ parser/gram.h \ parser/scan.c \ - catalog/schemapg.h \ - catalog/postgres.bki \ - catalog/postgres.description \ - catalog/postgres.shdescription \ replication/repl_gram.c \ replication/repl_scanner.c \ replication/syncrep_gram.c \ diff --git a/src/backend/catalog/.gitignore b/src/backend/catalog/.gitignore index 557af3c0e5..9abe91d6e6 100644 --- a/src/backend/catalog/.gitignore +++ b/src/backend/catalog/.gitignore @@ -2,3 +2,5 @@ /postgres.description /postgres.shdescription /schemapg.h +/pg_*_d.h +/bki-stamp diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm index 9ced1547f6..3b3bb6bc6c 100644 --- a/src/backend/catalog/Catalog.pm +++ b/src/backend/catalog/Catalog.pm @@ -1,7 +1,7 @@ #---------------------------------------------------------------------- # # Catalog.pm -# Perl module that extracts info from catalog headers into Perl +# Perl module that extracts info from catalog files into Perl # data structures # # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -16,12 +16,11 @@ package Catalog; use strict; use warnings; -# Call this function with an array of names of header files to parse. -# Returns a nested data structure describing the data in the headers. -sub Catalogs +# Parses a catalog header file into a data structure describing the schema +# of the catalog. +sub ParseHeader { - my (%catalogs, $catname, $declaring_attributes, $most_recent); - $catalogs{names} = []; + my $input_file = shift; # There are a few types which are given one name in the C source, but a # different name at the SQL level. These are enumerated here. @@ -34,108 +33,68 @@ sub Catalogs 'TransactionId' => 'xid', 'XLogRecPtr' => 'pg_lsn'); - foreach my $input_file (@_) - { my %catalog; + my $declaring_attributes = 0; my $is_varlen = 0; + my $is_client_code = 0; $catalog{columns} = []; - $catalog{data} = []; + $catalog{toasting} = []; + $catalog{indexing} = []; + $catalog{client_code} = []; open(my $ifh, '<', $input_file) || die "$input_file: $!"; - my ($filename) = ($input_file =~ m/(\w+)\.h$/); - my $natts_pat = "Natts_$filename"; - # Scan the input file. while (<$ifh>) { - # Strip C-style comments. - s;/\*(.|\n)*\*/;;g; - if (m;/\*;) + # Set appropriate flag when we're in certain code sections. + if (/^#/) { - - # handle multi-line comments properly. - my $next_line = <$ifh>; - die "$input_file: ends within C-style comment\n" - if !defined $next_line; - $_ .= $next_line; - redo; + $is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/; + if (/^#ifdef\s+EXPOSE_TO_CLIENT_CODE/) + { + $is_client_code = 1; + next; + } + next if !$is_client_code; } - # Remember input line number for later. - my $input_line_number = $.; + if (!$is_client_code) + { + # Strip C-style comments. + s;/\*(.|\n)*\*/;;g; + if (m;/\*;) + { - # Strip useless whitespace and trailing semicolons. - chomp; - s/^\s+//; - s/;\s*$//; - s/\s+/ /g; + # handle multi-line comments properly. + my $next_line = <$ifh>; + die "$input_file: ends within C-style comment\n" + if !defined $next_line; + $_ .= $next_line; + redo; + } + + # Strip useless whitespace and trailing semicolons. + chomp; + s/^\s+//; + s/;\s*$//; + s/\s+/ /g; + } # Push the data into the appropriate data structure. - if (/$natts_pat\s+(\d+)/) + if (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/) { - $catalog{natts} = $1; - } - elsif ( - /^DATA\(insert(\s+OID\s+=\s+(\d+))?\s+\(\s*(.*)\s*\)\s*\)$/) - { - check_natts($filename, $catalog{natts}, $3, $input_file, - $input_line_number); - - push @{ $catalog{data} }, { oid => $2, bki_values => $3 }; - } - elsif (/^DESCR\(\"(.*)\"\)$/) - { - $most_recent = $catalog{data}->[-1]; - - # this tests if most recent line is not a DATA() statement - if (ref $most_recent ne 'HASH') - { - die "DESCR() does not apply to any catalog ($input_file)"; - } - if (!defined $most_recent->{oid}) - { - die "DESCR() does not apply to any oid ($input_file)"; - } - elsif ($1 ne '') - { - $most_recent->{descr} = $1; - } - } - elsif (/^SHDESCR\(\"(.*)\"\)$/) - { - $most_recent = $catalog{data}->[-1]; - - # this tests if most recent line is not a DATA() statement - if (ref $most_recent ne 'HASH') - { - die - "SHDESCR() does not apply to any catalog ($input_file)"; - } - if (!defined $most_recent->{oid}) - { - die "SHDESCR() does not apply to any oid ($input_file)"; - } - elsif ($1 ne '') - { - $most_recent->{shdescr} = $1; - } - } - elsif (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/) - { - $catname = 'toasting'; my ($toast_name, $toast_oid, $index_oid) = ($1, $2, $3); - push @{ $catalog{data} }, + push @{ $catalog{toasting} }, "declare toast $toast_oid $index_oid on $toast_name\n"; } elsif (/^DECLARE_(UNIQUE_)?INDEX\(\s*(\w+),\s*(\d+),\s*(.+)\)/) { - $catname = 'indexing'; my ($is_unique, $index_name, $index_oid, $using) = ($1, $2, $3, $4); - push @{ $catalog{data} }, + push @{ $catalog{indexing} }, sprintf( "declare %sindex %s %s %s\n", $is_unique ? 'unique ' : '', @@ -143,37 +102,51 @@ sub Catalogs } elsif (/^BUILD_INDICES/) { - push @{ $catalog{data} }, "build indices\n"; + push @{ $catalog{indexing} }, "build indices\n"; } - elsif (/^CATALOG\(([^,]*),(\d+)\)/) + elsif (/^CATALOG\((\w+),(\d+),(\w+)\)/) { - $catname = $1; + $catalog{catname} = $1; $catalog{relation_oid} = $2; - - # Store pg_* catalog names in the same order we receive them - push @{ $catalogs{names} }, $catname; + $catalog{relation_oid_macro} = $3; $catalog{bootstrap} = /BKI_BOOTSTRAP/ ? ' bootstrap' : ''; $catalog{shared_relation} = /BKI_SHARED_RELATION/ ? ' shared_relation' : ''; $catalog{without_oids} = /BKI_WITHOUT_OIDS/ ? ' without_oids' : ''; - $catalog{rowtype_oid} = - /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : ''; + if (/BKI_ROWTYPE_OID\((\d+),(\w+)\)/) + { + $catalog{rowtype_oid} = $1; + $catalog{rowtype_oid_clause} = " rowtype_oid $1"; + $catalog{rowtype_oid_macro} = $2; + } + else + { + $catalog{rowtype_oid} = ''; + $catalog{rowtype_oid_clause} = ''; + $catalog{rowtype_oid_macro} = ''; + } $catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0; $declaring_attributes = 1; } + elsif ($is_client_code) + { + if (/^#endif/) + { + $is_client_code = 0; + } + else + { + push @{ $catalog{client_code} }, $_; + } + } elsif ($declaring_attributes) { next if (/^{|^$/); - if (/^#/) - { - $is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/; - next; - } if (/^}/) { - undef $declaring_attributes; + $declaring_attributes = 0; } else { @@ -208,10 +181,17 @@ sub Catalogs { $column{forcenotnull} = 1; } - elsif ($attopt =~ /BKI_DEFAULT\((\S+)\)/) + # We use quotes for values like \0 and \054, to + # make sure all compilers and syntax highlighters + # can recognize them properly. + elsif ($attopt =~ /BKI_DEFAULT\(['"]?([^'"]+)['"]?\)/) { $column{default} = $1; } + elsif ($attopt =~ /BKI_LOOKUP\((\w+)\)/) + { + $column{lookup} = $1; + } else { die @@ -227,41 +207,89 @@ sub Catalogs } } } - $catalogs{$catname} = \%catalog; close $ifh; - } - return \%catalogs; + return \%catalog; } -# Split a DATA line into fields. -# Call this on the bki_values element of a DATA item returned by Catalogs(); -# it returns a list of field values. We don't strip quoting from the fields. -# Note: it should be safe to assign the result to a list of length equal to -# the nominal number of catalog fields, because check_natts already checked -# the number of fields. -sub SplitDataLine +# Parses a file containing Perl data structure literals, returning live data. +# +# The parameter $preserve_formatting needs to be set for callers that want +# to work with non-data lines in the data files, such as comments and blank +# lines. If a caller just wants to consume the data, leave it unset. +sub ParseData { - my $bki_values = shift; + my ($input_file, $schema, $preserve_formatting) = @_; - # This handling of quoted strings might look too simplistic, but it - # matches what bootscanner.l does: that has no provision for quote marks - # inside quoted strings, either. If we don't have a quoted string, just - # snarf everything till next whitespace. That will accept some things - # that bootscanner.l will see as erroneous tokens; but it seems wiser - # to do that and let bootscanner.l complain than to silently drop - # non-whitespace characters. - my @result = $bki_values =~ /"[^"]*"|\S+/g; + open(my $ifd, '<', $input_file) || die "$input_file: $!"; + $input_file =~ /(\w+)\.dat$/ + or die "Input file needs to be a .dat file.\n"; + my $catname = $1; + my $data = []; - return @result; + # Scan the input file. + while (<$ifd>) + { + my $hash_ref; + + if (/{/) + { + # Capture the hash ref + # NB: Assumes that the next hash ref can't start on the + # same line where the present one ended. + # Not foolproof, but we shouldn't need a full parser, + # since we expect relatively well-behaved input. + + # Quick hack to detect when we have a full hash ref to + # parse. We can't just use a regex because of values in + # pg_aggregate and pg_proc like '{0,0}'. + my $lcnt = tr/{//; + my $rcnt = tr/}//; + + if ($lcnt == $rcnt) + { + eval '$hash_ref = ' . $_; + if (!ref $hash_ref) + { + die "Error parsing $_\n$!"; + } + + # Expand tuples to their full representation. + AddDefaultValues($hash_ref, $schema, $catname); + } + else + { + my $next_line = <$ifd>; + die "$input_file: ends within Perl hash\n" + if !defined $next_line; + $_ .= $next_line; + redo; + } + } + + # If we found a hash reference, keep it + # and annotate the line number. + # Only keep non-data strings if we + # are told to preserve formatting. + if (defined $hash_ref) + { + $hash_ref->{line_number} = $.; + push @$data, $hash_ref; + } + elsif ($preserve_formatting) + { + push @$data, $_; + } + } + close $ifd; + return $data; } -# Fill in default values of a record using the given schema. It's the -# caller's responsibility to specify other values beforehand. +# Fill in default values of a record using the given schema. +# It's the caller's responsibility to specify other values beforehand. sub AddDefaultValues { - my ($row, $schema) = @_; + my ($row, $schema, $catname) = @_; my @missing_fields; - my $msg; foreach my $column (@$schema) { @@ -276,6 +304,13 @@ sub AddDefaultValues { $row->{$attname} = $column->{default}; } + elsif ($catname eq 'pg_proc' && $attname eq 'pronargs' && + defined($row->{proargtypes})) + { + # pg_proc.pronargs can be derived from proargtypes. + my @proargtypes = split /\s+/, $row->{proargtypes}; + $row->{$attname} = scalar(@proargtypes); + } else { # Failed to find a value. @@ -285,14 +320,15 @@ sub AddDefaultValues if (@missing_fields) { - $msg = "Missing values for: " . join(', ', @missing_fields); - $msg .= "\nShowing other values for context:\n"; + my $msg = "Failed to form full tuple for $catname\n"; + $msg .= "Missing values for: " . join(', ', @missing_fields); + $msg .= "\nOther values for row:\n"; while (my($key, $value) = each %$row) { $msg .= "$key => $value, "; } + die $msg; } - return $msg; } # Rename temporary files to final names. @@ -308,7 +344,6 @@ sub RenameTempFile rename($temp_name, $final_name) || die "rename: $temp_name: $!"; } - # Find a symbol defined in a particular header file and extract the value. # # The include path has to be passed as a reference to an array. @@ -340,22 +375,18 @@ sub FindDefinedSymbol die "$catalog_header: not found in any include directory\n"; } - -# verify the number of fields in the passed-in DATA line -sub check_natts +# Similar to FindDefinedSymbol, but looks in the bootstrap metadata. +sub FindDefinedSymbolFromData { - my ($catname, $natts, $bki_val, $file, $line) = @_; - - die -"Could not find definition for Natts_${catname} before start of DATA() in $file\n" - unless defined $natts; - - my $nfields = scalar(SplitDataLine($bki_val)); - - die sprintf -"Wrong number of attributes in DATA() entry at %s:%d (expected %d but got %d)\n", - $file, $line, $natts, $nfields - unless $natts == $nfields; + my ($data, $symbol) = @_; + foreach my $row (@{ $data }) + { + if ($row->{oid_symbol} eq $symbol) + { + return $row->{oid}; + } + } + die "no definition found for $symbol\n"; } 1; diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile index 30ca509534..d25d98a40b 100644 --- a/src/backend/catalog/Makefile +++ b/src/backend/catalog/Makefile @@ -2,6 +2,9 @@ # # Makefile for backend/catalog # +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# # src/backend/catalog/Makefile # #------------------------------------------------------------------------- @@ -22,13 +25,11 @@ BKIFILES = postgres.bki postgres.description postgres.shdescription include $(top_srcdir)/src/backend/common.mk -all: $(BKIFILES) schemapg.h - -# Note: there are some undocumented dependencies on the ordering in which -# the catalog header files are assembled into postgres.bki. In particular, -# indexing.h had better be last, and toasting.h just before it. - -POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\ +# Note: the order of this list determines the order in which the catalog +# header files are assembled into postgres.bki. BKI_BOOTSTRAP catalogs +# must appear first, and there are reputedly other, undocumented ordering +# dependencies. +CATALOG_HEADERS := \ pg_proc.h pg_type.h pg_attribute.h pg_class.h \ pg_attrdef.h pg_constraint.h pg_inherits.h pg_index.h pg_operator.h \ pg_opfamily.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h \ @@ -45,34 +46,63 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\ pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \ pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \ pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \ - pg_subscription_rel.h \ - toasting.h indexing.h \ - ) + pg_subscription_rel.h + +GENERATED_HEADERS := $(CATALOG_HEADERS:%.h=%_d.h) schemapg.h + +# In the list of headers used to assemble postgres.bki, indexing.h needs +# be last, and toasting.h just before it. This ensures we don't try to +# create indexes or toast tables before their catalogs exist. +POSTGRES_BKI_SRCS := $(addprefix $(top_srcdir)/src/include/catalog/,\ + $(CATALOG_HEADERS) toasting.h indexing.h \ + ) + +# The .dat files we need can just be listed alphabetically. +POSTGRES_BKI_DATA = $(addprefix $(top_srcdir)/src/include/catalog/,\ + pg_aggregate.dat pg_am.dat pg_amop.dat pg_amproc.dat pg_authid.dat \ + pg_cast.dat pg_class.dat pg_collation.dat \ + pg_database.dat pg_language.dat \ + pg_namespace.dat pg_opclass.dat pg_operator.dat pg_opfamily.dat \ + pg_pltemplate.dat pg_proc.dat pg_range.dat pg_tablespace.dat \ + pg_ts_config.dat pg_ts_config_map.dat pg_ts_dict.dat pg_ts_parser.dat \ + pg_ts_template.dat pg_type.dat \ + ) # location of Catalog.pm catalogdir = $(top_srcdir)/src/backend/catalog -# locations of headers that genbki.pl needs to read -pg_includes = -I$(top_srcdir)/src/include/catalog -I$(top_builddir)/src/include/catalog +all: distprep generated-header-symlinks -# see explanation in ../parser/Makefile -postgres.description: postgres.bki ; +distprep: bki-stamp -postgres.shdescription: postgres.bki ; +.PHONY: generated-header-symlinks -schemapg.h: postgres.bki ; +generated-header-symlinks: $(top_builddir)/src/include/catalog/header-stamp -# Technically, this should depend on Makefile.global, but then -# postgres.bki would need to be rebuilt after every configure run, -# even in distribution tarballs. So this is cheating a bit, but it -# will achieve the goal of updating the version number when it -# changes. -postgres.bki: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(top_srcdir)/configure $(top_srcdir)/src/include/catalog/duplicate_oids +# Technically, this should depend on Makefile.global which supplies +# $(MAJORVERSION); but then postgres.bki would need to be rebuilt after every +# configure run, even in distribution tarballs. So depending on configure.in +# instead is cheating a bit, but it will achieve the goal of updating the +# version number when it changes. +bki-stamp: genbki.pl Catalog.pm $(POSTGRES_BKI_SRCS) $(POSTGRES_BKI_DATA) $(top_srcdir)/configure.in $(top_srcdir)/src/include/catalog/duplicate_oids cd $(top_srcdir)/src/include/catalog && $(PERL) ./duplicate_oids - $(PERL) -I $(catalogdir) $< $(pg_includes) --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS) + $(PERL) -I $(catalogdir) $< --set-version=$(MAJORVERSION) $(POSTGRES_BKI_SRCS) + touch $@ +# The generated headers must all be symlinked into builddir/src/include/, +# using absolute links for the reasons explained in src/backend/Makefile. +# We use header-stamp to record that we've done this because the symlinks +# themselves may appear older than bki-stamp. +$(top_builddir)/src/include/catalog/header-stamp: bki-stamp + prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \ + cd '$(dir $@)' && for file in $(GENERATED_HEADERS); do \ + rm -f $$file && $(LN_S) "$$prereqdir/$$file" . ; \ + done + touch $@ + +# Note: installation of generated headers is handled elsewhere .PHONY: install-data -install-data: $(BKIFILES) installdirs +install-data: bki-stamp installdirs $(INSTALL_DATA) $(call vpathsearch,postgres.bki) '$(DESTDIR)$(datadir)/postgres.bki' $(INSTALL_DATA) $(call vpathsearch,postgres.description) '$(DESTDIR)$(datadir)/postgres.description' $(INSTALL_DATA) $(call vpathsearch,postgres.shdescription) '$(DESTDIR)$(datadir)/postgres.shdescription' @@ -87,9 +117,10 @@ installdirs: uninstall-data: rm -f $(addprefix '$(DESTDIR)$(datadir)'/, $(BKIFILES) system_views.sql information_schema.sql sql_features.txt) -# postgres.bki, postgres.description, postgres.shdescription, and schemapg.h -# are in the distribution tarball, so they are not cleaned here. +# postgres.bki, postgres.description, postgres.shdescription, +# and the generated headers are in the distribution tarball, +# so they are not cleaned here. clean: maintainer-clean: clean - rm -f $(BKIFILES) + rm -f bki-stamp $(BKIFILES) $(GENERATED_HEADERS) diff --git a/src/backend/catalog/README b/src/backend/catalog/README deleted file mode 100644 index 7e0ddf312d..0000000000 --- a/src/backend/catalog/README +++ /dev/null @@ -1,111 +0,0 @@ -src/backend/catalog/README - -System Catalog -============== - -This directory contains .c files that manipulate the system catalogs; -src/include/catalog contains the .h files that define the structure -of the system catalogs. - -When the compile-time scripts (Gen_fmgrtab.pl and genbki.pl) -execute, they grep the DATA statements out of the .h files and munge -these in order to generate the postgres.bki file. The .bki file is then -used as input to initdb (which is just a wrapper around postgres -running single-user in bootstrapping mode) in order to generate the -initial (template) system catalog relation files. - ------------------------------------------------------------------ - -People who are going to hose around with the .h files should be aware -of the following facts: - -- It is very important that the DATA statements be properly formatted -(e.g., no broken lines, proper use of white-space and _null_). The -scripts are line-oriented and break easily. In addition, the only -documentation on the proper format for them is the code in the -bootstrap/ directory. Just be careful when adding new DATA -statements. - -- Some catalogs require that OIDs be preallocated to tuples because -of cross-references from other pre-loaded tuples. For example, pg_type -contains pointers into pg_proc (e.g., pg_type.typinput), and pg_proc -contains back-pointers into pg_type (pg_proc.proargtypes). For such -cases, the OID assigned to a tuple may be explicitly set by use of the -"OID = n" clause of the .bki insert statement. If no such pointers are -required to a given tuple, then the OID = n clause may be omitted -(then the system generates an OID in the usual way, or leaves it 0 in a -catalog that has no OIDs). In practice we usually preassign OIDs -for all or none of the pre-loaded tuples in a given catalog, even if only -some of them are actually cross-referenced. - -- We also sometimes preallocate OIDs for catalog tuples whose OIDs must -be known directly in the C code. In such cases, put a #define in the -catalog's .h file, and use the #define symbol in the C code. Writing -the actual numeric value of any OID in C code is considered very bad form. -Direct references to pg_proc OIDs are common enough that there's a special -mechanism to create the necessary #define's automatically: see -backend/utils/Gen_fmgrtab.pl. We also have standard conventions for setting -up #define's for the pg_class OIDs of system catalogs and indexes. For all -the other system catalogs, you have to manually create any #define's you -need. - -- If you need to find a valid OID for a new predefined tuple, -use the unused_oids script. It generates inclusive ranges of -*unused* OIDs (e.g., the line "45-900" means OIDs 45 through 900 have -not been allocated yet). Currently, OIDs 1-9999 are reserved for manual -assignment; the unused_oids script simply looks through the include/catalog -headers to see which ones do not appear in "OID =" clauses in DATA lines. -(As of Postgres 8.1, it also looks at CATALOG and DECLARE_INDEX lines.) -You can also use the duplicate_oids script to check for mistakes. - -- The OID counter starts at 10000 at bootstrap. If a catalog row is in a -table that requires OIDs, but no OID was preassigned by an "OID =" clause, -then it will receive an OID of 10000 or above. - -- To create a "BOOTSTRAP" table you have to do a lot of extra work: these -tables are not created through a normal CREATE TABLE operation, but spring -into existence when first written to during initdb. Therefore, you must -manually create appropriate entries for them in the pre-loaded contents of -pg_class, pg_attribute, and pg_type. Avoid making new catalogs be bootstrap -catalogs if at all possible; generally, only tables that must be written to -in order to create a table should be bootstrapped. - -- Certain BOOTSTRAP tables must be at the start of the Makefile -POSTGRES_BKI_SRCS variable, as these cannot be created through the standard -heap_create_with_catalog process, because it needs these tables to exist -already. The list of files this currently includes is: - pg_proc.h pg_type.h pg_attribute.h pg_class.h -Within this list, pg_type.h must come before pg_attribute.h. -Also, indexing.h must be last, since the indexes can't be created until all -the tables are in place, and toasting.h should probably be next-to-last -(or at least after all the tables that need toast tables). There are -reputedly some other order dependencies in the .bki list, too. - ------------------------------------------------------------------ - -When munging the .c files, you should be aware of certain conventions: - -- The system catalog cache code (and most catalog-munging code in -general) assumes that the fixed-length portions of all system catalog -tuples are in fact present, because it maps C struct declarations onto -them. Thus, the variable-length fields must all be at the end, and -only the variable-length fields of a catalog tuple are permitted to be -NULL. For example, if you set pg_type.typrelid to be NULL, a -piece of code will likely perform "typetup->typrelid" (or, worse, -"typetup->typelem", which follows typrelid). This will result in -random errors or even segmentation violations. Hence, do NOT insert -catalog tuples that contain NULL attributes except in their -variable-length portions! (The bootstrapping code is fairly good about -marking NOT NULL each of the columns that can legally be referenced via -C struct declarations ... but those markings won't be enforced against -DATA commands, so you must get it right in a DATA line.) - -- Modification of the catalogs must be performed with the proper -updating of catalog indexes! That is, most catalogs have indexes -on them; when you munge them using the executor, the executor will -take care of doing the index updates, but if you make direct access -method calls to insert new or modified tuples into a heap, you must -also make the calls to insert the tuple into ALL of its indexes! If -not, the new tuple will generally be "invisible" to the system because -most of the accesses to the catalogs in question will be through the -associated indexes. diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl index b4abbff101..56312ded8a 100644 --- a/src/backend/catalog/genbki.pl +++ b/src/backend/catalog/genbki.pl @@ -3,9 +3,9 @@ # # genbki.pl # Perl script that generates postgres.bki, postgres.description, -# postgres.shdescription, and schemapg.h from specially formatted -# header files. The .bki files are used to initialize the postgres -# template database. +# postgres.shdescription, and symbol definition headers from specially +# formatted header files and data files. The BKI files are used to +# initialize the postgres template database. # # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group # Portions Copyright (c) 1994, Regents of the University of California @@ -20,7 +20,6 @@ use strict; use warnings; my @input_files; -my @include_path; my $output_path = ''; my $major_version; @@ -36,10 +35,6 @@ while (@ARGV) { $output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV; } - elsif ($arg =~ /^-I/) - { - push @include_path, length($arg) > 2 ? substr($arg, 2) : shift @ARGV; - } elsif ($arg =~ /^--set-version=(.*)$/) { $major_version = $1; @@ -53,8 +48,7 @@ while (@ARGV) } # Sanity check arguments. -die "No input files.\n" if !@input_files; -die "No include path; you must specify -I at least once.\n" if !@include_path; +die "No input files.\n" if !@input_files; die "--set-version must be specified.\n" if !defined $major_version; # Make sure output_path ends in a slash. @@ -78,25 +72,151 @@ my $shdescrfile = $output_path . 'postgres.shdescription'; open my $shdescr, '>', $shdescrfile . $tmpext or die "can't open $shdescrfile$tmpext: $!"; +# Read all the files into internal data structures. Not all catalogs +# will have a data file. +my @catnames; +my %catalogs; +my %catalog_data; +my @toast_decls; +my @index_decls; +foreach my $header (@input_files) +{ + $header =~ /(.+)\.h$/ + or die "Input files need to be header files.\n"; + my $datfile = "$1.dat"; + + my $catalog = Catalog::ParseHeader($header); + my $catname = $catalog->{catname}; + my $schema = $catalog->{columns}; + + if (defined $catname) + { + push @catnames, $catname; + $catalogs{$catname} = $catalog; + } + + if (-e $datfile) + { + $catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0); + } + + foreach my $toast_decl (@{ $catalog->{toasting} }) + { + push @toast_decls, $toast_decl; + } + foreach my $index_decl (@{ $catalog->{indexing} }) + { + push @index_decls, $index_decl; + } +} + # Fetch some special data that we will substitute into the output file. # CAUTION: be wary about what symbols you substitute into the .bki file here! # It's okay to substitute things that are expected to be really constant # within a given Postgres release, such as fixed OIDs. Do not substitute # anything that could depend on platform or configuration. (The right place # to handle those sorts of things is in initdb.c's bootstrap_template1().) -# NB: make sure that the files used here are known to be part of the .bki -# file's dependencies by src/backend/catalog/Makefile. -my $BOOTSTRAP_SUPERUSERID = - Catalog::FindDefinedSymbol('pg_authid.h', \@include_path, - 'BOOTSTRAP_SUPERUSERID'); -my $PG_CATALOG_NAMESPACE = - Catalog::FindDefinedSymbol('pg_namespace.h', \@include_path, - 'PG_CATALOG_NAMESPACE'); +my $BOOTSTRAP_SUPERUSERID = Catalog::FindDefinedSymbolFromData( + $catalog_data{pg_authid}, 'BOOTSTRAP_SUPERUSERID'); +my $PG_CATALOG_NAMESPACE = Catalog::FindDefinedSymbolFromData( + $catalog_data{pg_namespace}, 'PG_CATALOG_NAMESPACE'); -# Read all the input header files into internal data structures -my $catalogs = Catalog::Catalogs(@input_files); -# Generate postgres.bki, postgres.description, and postgres.shdescription +# Build lookup tables for OID macro substitutions and for pg_attribute +# copies of pg_type values. + +# index access method OID lookup +my %amoids; +foreach my $row (@{ $catalog_data{pg_am} }) +{ + $amoids{ $row->{amname} } = $row->{oid}; +} + +# opclass OID lookup +my %opcoids; +foreach my $row (@{ $catalog_data{pg_opclass} }) +{ + # There is no unique name, so we need to combine access method + # and opclass name. + my $key = sprintf "%s/%s", + $row->{opcmethod}, $row->{opcname}; + $opcoids{$key} = $row->{oid}; +} + +# operator OID lookup +my %operoids; +foreach my $row (@{ $catalog_data{pg_operator} }) +{ + # There is no unique name, so we need to invent one that contains + # the relevant type names. + my $key = sprintf "%s(%s,%s)", + $row->{oprname}, $row->{oprleft}, $row->{oprright}; + $operoids{$key} = $row->{oid}; +} + +# opfamily OID lookup +my %opfoids; +foreach my $row (@{ $catalog_data{pg_opfamily} }) +{ + # There is no unique name, so we need to combine access method + # and opfamily name. + my $key = sprintf "%s/%s", + $row->{opfmethod}, $row->{opfname}; + $opfoids{$key} = $row->{oid}; +} + +# procedure OID lookup +my %procoids; +foreach my $row (@{ $catalog_data{pg_proc} }) +{ + # Generate an entry under just the proname (corresponds to regproc lookup) + my $prokey = $row->{proname}; + if (defined $procoids{$prokey}) + { + $procoids{$prokey} = 'MULTIPLE'; + } + else + { + $procoids{$prokey} = $row->{oid}; + } + # Also generate an entry using proname(proargtypes). This is not quite + # identical to regprocedure lookup because we don't worry much about + # special SQL names for types etc; we just use the names in the source + # proargtypes field. These *should* be unique, but do a multiplicity + # check anyway. + $prokey .= '(' . join(',', split(/\s+/, $row->{proargtypes})) . ')'; + if (defined $procoids{$prokey}) + { + $procoids{$prokey} = 'MULTIPLE'; + } + else + { + $procoids{$prokey} = $row->{oid}; + } +} + +# type lookups +my %typeoids; +my %types; +foreach my $row (@{ $catalog_data{pg_type} }) +{ + $typeoids{ $row->{typname} } = $row->{oid}; + $types{ $row->{typname} } = $row; +} + +# Map catalog name to OID lookup. +my %lookup_kind = ( + pg_am => \%amoids, + pg_opclass => \%opcoids, + pg_operator => \%operoids, + pg_opfamily => \%opfoids, + pg_proc => \%procoids, + pg_type => \%typeoids +); + + +# Generate postgres.bki, postgres.description, postgres.shdescription, +# and pg_*_d.h headers. # version marker for .bki file print $bki "# PostgreSQL $major_version\n"; @@ -104,32 +224,69 @@ print $bki "# PostgreSQL $major_version\n"; # vars to hold data needed for schemapg.h my %schemapg_entries; my @tables_needing_macros; -my %regprocoids; -my %types; # produce output, one catalog at a time -foreach my $catname (@{ $catalogs->{names} }) +foreach my $catname (@catnames) { + my $catalog = $catalogs{$catname}; + + # Create one definition header with macro definitions for each catalog. + my $def_file = $output_path . $catname . '_d.h'; + open my $def, '>', $def_file . $tmpext + or die "can't open $def_file$tmpext: $!"; + + # Opening boilerplate for pg_*_d.h + printf $def <{relation_oid_macro}, $catalog->{relation_oid} + if $catalog->{relation_oid_macro}; + printf $def "#define %s %s\n", + $catalog->{rowtype_oid_macro}, $catalog->{rowtype_oid} + if $catalog->{rowtype_oid_macro}; + print $def "\n"; # .bki CREATE command for this catalog - my $catalog = $catalogs->{$catname}; print $bki "create $catname $catalog->{relation_oid}" . $catalog->{shared_relation} . $catalog->{bootstrap} . $catalog->{without_oids} - . $catalog->{rowtype_oid} . "\n"; + . $catalog->{rowtype_oid_clause}; - my @attnames; my $first = 1; - print $bki " (\n"; + print $bki "\n (\n"; my $schema = $catalog->{columns}; + my $attnum = 0; foreach my $column (@$schema) { + $attnum++; my $attname = $column->{name}; my $atttype = $column->{type}; - push @attnames, $attname; + # Emit column definitions if (!$first) { print $bki " ,\n"; @@ -146,10 +303,23 @@ foreach my $catname (@{ $catalogs->{names} }) { print $bki " FORCE NULL"; } + + # Emit Anum_* constants + print $def + sprintf("#define Anum_%s_%s %s\n", $catname, $attname, $attnum); } print $bki "\n )\n"; - # Open it, unless bootstrap case (create bootstrap does this + # Emit Natts_* constant + print $def "\n#define Natts_$catname $attnum\n\n"; + + # Emit client code copied from source header + foreach my $line (@{ $catalog->{client_code} }) + { + print $def $line; + } + + # Open it, unless it's a bootstrap catalog (create bootstrap does this # automatically) if (!$catalog->{bootstrap}) { @@ -157,21 +327,15 @@ foreach my $catname (@{ $catalogs->{names} }) } # For pg_attribute.h, we generate data entries ourselves. - # NB: pg_type.h must come before pg_attribute.h in the input list - # of catalog names, since we use info from pg_type.h here. if ($catname eq 'pg_attribute') { - gen_pg_attribute($schema, @attnames); + gen_pg_attribute($schema); } - # Ordinary catalog with DATA line(s) - foreach my $row (@{ $catalog->{data} }) + # Ordinary catalog with a data file + foreach my $row (@{ $catalog_data{$catname} }) { - - # Split line into tokens without interpreting their meaning. - my %bki_values; - @bki_values{@attnames} = - Catalog::SplitDataLine($row->{bki_values}); + my %bki_values = %$row; # Perform required substitutions on fields foreach my $column (@$schema) @@ -184,71 +348,102 @@ foreach my $catname (@{ $catalogs->{names} }) $bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g; $bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g; - # Replace regproc columns' values with OIDs. - # If we don't have a unique value to substitute, - # just do nothing (regprocin will complain). - if ($atttype eq 'regproc') + # Replace OID synonyms with OIDs per the appropriate lookup rule. + # + # If the column type is oidvector or oid[], we have to replace + # each element of the array as per the lookup rule. + if ($column->{lookup}) { - my $procoid = $regprocoids{ $bki_values{$attname} }; - $bki_values{$attname} = $procoid - if defined($procoid) && $procoid ne 'MULTIPLE'; + my $lookup = $lookup_kind{ $column->{lookup} }; + my @lookupnames; + my @lookupoids; + + die "unrecognized BKI_LOOKUP type " . $column->{lookup} + if !defined($lookup); + + if ($atttype eq 'oidvector') + { + @lookupnames = split /\s+/, $bki_values{$attname}; + @lookupoids = lookup_oids($lookup, $catname, + \%bki_values, @lookupnames); + $bki_values{$attname} = join(' ', @lookupoids); + } + elsif ($atttype eq 'oid[]') + { + if ($bki_values{$attname} ne '_null_') + { + $bki_values{$attname} =~ s/[{}]//g; + @lookupnames = split /,/, $bki_values{$attname}; + @lookupoids = lookup_oids($lookup, $catname, + \%bki_values, @lookupnames); + $bki_values{$attname} = + sprintf "{%s}", join(',', @lookupoids); + } + } + else + { + $lookupnames[0] = $bki_values{$attname}; + @lookupoids = lookup_oids($lookup, $catname, + \%bki_values, @lookupnames); + $bki_values{$attname} = $lookupoids[0]; + } } } - # Save pg_proc oids for use in later regproc substitutions. - # This relies on the order we process the files in! - if ($catname eq 'pg_proc') + # Special hack to generate OID symbols for pg_type entries + # that lack one. + if ($catname eq 'pg_type' and !exists $bki_values{oid_symbol}) { - if (defined($regprocoids{ $bki_values{proname} })) - { - $regprocoids{ $bki_values{proname} } = 'MULTIPLE'; - } - else - { - $regprocoids{ $bki_values{proname} } = $row->{oid}; - } - } - - # Save pg_type info for pg_attribute processing below - if ($catname eq 'pg_type') - { - my %type = %bki_values; - $type{oid} = $row->{oid}; - $types{ $type{typname} } = \%type; + my $symbol = form_pg_type_symbol($bki_values{typname}); + $bki_values{oid_symbol} = $symbol + if defined $symbol; } # Write to postgres.bki - my $oid = $row->{oid} ? "OID = $row->{oid} " : ''; - printf $bki "insert %s( %s )\n", $oid, - join(' ', @bki_values{@attnames}); + print_bki_insert(\%bki_values, $schema); # Write comments to postgres.description and # postgres.shdescription - if (defined $row->{descr}) + if (defined $bki_values{descr}) { - printf $descr "%s\t%s\t0\t%s\n", - $row->{oid}, $catname, $row->{descr}; + if ($catalog->{shared_relation}) + { + printf $shdescr "%s\t%s\t%s\n", + $bki_values{oid}, $catname, $bki_values{descr}; + } + else + { + printf $descr "%s\t%s\t0\t%s\n", + $bki_values{oid}, $catname, $bki_values{descr}; + } } - if (defined $row->{shdescr}) + + # Emit OID symbol + if (defined $bki_values{oid_symbol}) { - printf $shdescr "%s\t%s\t%s\n", - $row->{oid}, $catname, $row->{shdescr}; + printf $def "#define %s %s\n", + $bki_values{oid_symbol}, $bki_values{oid}; } } print $bki "close $catname\n"; + print $def sprintf("\n#endif\t\t\t\t\t\t\t/* %s_D_H */\n", uc $catname); + + # Close and rename definition header + close $def; + Catalog::RenameTempFile($def_file, $tmpext); } # Any information needed for the BKI that is not contained in a pg_*.h header # (i.e., not contained in a header with a CATALOG() statement) comes here # Write out declare toast/index statements -foreach my $declaration (@{ $catalogs->{toasting}->{data} }) +foreach my $declaration (@toast_decls) { print $bki $declaration; } -foreach my $declaration (@{ $catalogs->{indexing}->{data} }) +foreach my $declaration (@index_decls) { print $bki $declaration; } @@ -288,7 +483,7 @@ foreach my $table_name (@tables_needing_macros) } # Closing boilerplate for schemapg.h -print $schemapg "\n#endif /* SCHEMAPG_H */\n"; +print $schemapg "\n#endif\t\t\t\t\t\t\t/* SCHEMAPG_H */\n"; # We're done emitting data close $bki; @@ -314,11 +509,16 @@ exit 0; sub gen_pg_attribute { my $schema = shift; - my @attnames = @_; - foreach my $table_name (@{ $catalogs->{names} }) + my @attnames; + foreach my $column (@$schema) { - my $table = $catalogs->{$table_name}; + push @attnames, $column->{name}; + } + + foreach my $table_name (@catnames) + { + my $table = $catalogs{$table_name}; # Currently, all bootstrapped relations also need schemapg.h # entries, so skip if the relation isn't to be in schemapg.h. @@ -341,7 +541,7 @@ sub gen_pg_attribute $priornotnull &= ($row{attnotnull} eq 't'); # If it's bootstrapped, put an entry in postgres.bki. - print_bki_insert(\%row, @attnames) if $table->{bootstrap}; + print_bki_insert(\%row, $schema) if $table->{bootstrap}; # Store schemapg entries for later. morph_row_for_schemapg(\%row, $schema); @@ -377,7 +577,7 @@ sub gen_pg_attribute && $attr->{name} eq 'oid'; morph_row_for_pgattr(\%row, $schema, $attr, 1); - print_bki_insert(\%row, @attnames); + print_bki_insert(\%row, $schema); } } } @@ -441,21 +641,54 @@ sub morph_row_for_pgattr $row->{attnotnull} = 'f'; } - my $error = Catalog::AddDefaultValues($row, $pgattr_schema); - if ($error) - { - die "Failed to form full tuple for pg_attribute: ", $error; - } + Catalog::AddDefaultValues($row, $pgattr_schema, 'pg_attribute'); } -# Write a pg_attribute entry to postgres.bki +# Write an entry to postgres.bki. Adding quotes here allows us to keep +# most double quotes out of the catalog data files for readability. See +# bootscanner.l for what tokens need quoting. sub print_bki_insert { - my $row = shift; - my @attnames = @_; - my $oid = $row->{oid} ? "OID = $row->{oid} " : ''; - my $bki_values = join ' ', @{$row}{@attnames}; - printf $bki "insert %s( %s )\n", $oid, $bki_values; + my $row = shift; + my $schema = shift; + + my @bki_values; + my $oid = $row->{oid} ? "OID = $row->{oid} " : ''; + + foreach my $column (@$schema) + { + my $attname = $column->{name}; + my $atttype = $column->{type}; + my $bki_value = $row->{$attname}; + + # Fold backslash-zero to empty string if it's the entire string, + # since that represents a NUL char in C code. + $bki_value = '' if $bki_value eq '\0'; + + $bki_value = sprintf(qq'"%s"', $bki_value) + if $bki_value ne '_null_' + and $bki_value !~ /^"[^"]+"$/ + and ( length($bki_value) == 0 # Empty string + or $bki_value =~ /\s/ # Contains whitespace + + # To preserve historical formatting, operator names are + # always quoted. Likewise for values of multi-element types, + # even if they only contain a single element. + or $attname eq 'oprname' + or $atttype eq 'oidvector' + or $atttype eq 'int2vector' + or $atttype =~ /\[\]$/ + + # Quote strings that have non-word characters. We make + # exceptions for values that are octals or negative numbers, + # for the same historical reason as above. + or ( $bki_value =~ /\W/ + and $bki_value !~ /^\\\d{3}$/ + and $bki_value !~ /^-\d*$/)); + + push @bki_values, $bki_value; + } + printf $bki "insert %s( %s )\n", $oid, join(' ', @bki_values); } # Given a row reference, modify it so that it becomes a valid entry for @@ -481,8 +714,7 @@ sub morph_row_for_schemapg } elsif ($atttype eq 'char') { - # Replace empty string by zero char constant; add single quotes - $row->{$attname} = '\0' if $row->{$attname} eq q|""|; + # Add single quotes $row->{$attname} = sprintf("'%s'", $row->{$attname}); } @@ -501,18 +733,66 @@ sub morph_row_for_schemapg } } +# Perform OID lookups on an array of OID names. +# If we don't have a unique value to substitute, warn and +# leave the entry unchanged. +sub lookup_oids +{ + my ($lookup, $catname, $bki_values, @lookupnames) = @_; + + my @lookupoids; + foreach my $lookupname (@lookupnames) + { + my $lookupoid = $lookup->{$lookupname}; + if (defined($lookupoid) and $lookupoid ne 'MULTIPLE') + { + push @lookupoids, $lookupoid; + } + else + { + push @lookupoids, $lookupname; + warn sprintf "unresolved OID reference \"%s\" in %s.dat line %s", + $lookupname, $catname, $bki_values->{line_number} + if $lookupname ne '-' and $lookupname ne '0'; + } + } + return @lookupoids; +} + +# Determine canonical pg_type OID #define symbol from the type name. +sub form_pg_type_symbol +{ + my $typename = shift; + + # Skip for rowtypes of bootstrap tables, since they have their + # own naming convention defined elsewhere. + return + if $typename eq 'pg_type' + or $typename eq 'pg_proc' + or $typename eq 'pg_attribute' + or $typename eq 'pg_class'; + + # Transform like so: + # foo_bar -> FOO_BAROID + # _foo_bar -> FOO_BARARRAYOID + $typename =~ /(_)?(.+)/; + my $arraystr = $1 ? 'ARRAY' : ''; + my $name = uc $2; + return $name . $arraystr . 'OID'; +} + sub usage { die <. diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl index 4ae86df1f7..3b112c69d8 100644 --- a/src/backend/utils/Gen_fmgrtab.pl +++ b/src/backend/utils/Gen_fmgrtab.pl @@ -3,7 +3,7 @@ # # Gen_fmgrtab.pl # Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c -# from pg_proc.h +# from pg_proc.dat # # Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group # Portions Copyright (c) 1994, Regents of the University of California @@ -20,7 +20,7 @@ use strict; use warnings; # Collect arguments -my $infile; # pg_proc.h +my @input_files; my $output_path = ''; my @include_path; @@ -29,7 +29,7 @@ while (@ARGV) my $arg = shift @ARGV; if ($arg !~ /^-/) { - $infile = $arg; + push @input_files, $arg; } elsif ($arg =~ /^-o/) { @@ -52,38 +52,50 @@ if ($output_path ne '' && substr($output_path, -1) ne '/') } # Sanity check arguments. -die "No input files.\n" if !$infile; +die "No input files.\n" if !@input_files; die "No include path; you must specify -I at least once.\n" if !@include_path; -my $FirstBootstrapObjectId = - Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId'); -my $INTERNALlanguageId = - Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId'); - -# Read all the data from the include/catalog files. -my $catalogs = Catalog::Catalogs($infile); - -# Collect the raw data from pg_proc.h. -my @fmgr = (); -my @attnames; -foreach my $column (@{ $catalogs->{pg_proc}->{columns} }) +# Read all the input files into internal data structures. +# Note: We pass data file names as arguments and then look for matching +# headers to parse the schema from. This is backwards from genbki.pl, +# but the Makefile dependencies look more sensible this way. +my %catalogs; +my %catalog_data; +foreach my $datfile (@input_files) { - push @attnames, $column->{name}; + $datfile =~ /(.+)\.dat$/ + or die "Input files need to be data (.dat) files.\n"; + + my $header = "$1.h"; + die "There in no header file corresponding to $datfile" + if ! -e $header; + + my $catalog = Catalog::ParseHeader($header); + my $catname = $catalog->{catname}; + my $schema = $catalog->{columns}; + + $catalogs{$catname} = $catalog; + $catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 0); } -my $data = $catalogs->{pg_proc}->{data}; -foreach my $row (@$data) -{ +# Fetch some values for later. +my $FirstBootstrapObjectId = Catalog::FindDefinedSymbol( + 'access/transam.h', \@include_path, 'FirstBootstrapObjectId'); +my $INTERNALlanguageId = Catalog::FindDefinedSymbolFromData( + $catalog_data{pg_language}, 'INTERNALlanguageId'); - # Split line into tokens without interpreting their meaning. - my %bki_values; - @bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values}); +# Collect certain fields from pg_proc.dat. +my @fmgr = (); + +foreach my $row (@{ $catalog_data{pg_proc} }) +{ + my %bki_values = %$row; # Select out just the rows for internal-language procedures. next if $bki_values{prolang} ne $INTERNALlanguageId; push @fmgr, - { oid => $row->{oid}, + { oid => $bki_values{oid}, strict => $bki_values{proisstrict}, retset => $bki_values{proretset}, nargs => $bki_values{pronargs}, @@ -281,10 +293,10 @@ Catalog::RenameTempFile($tabfile, $tmpext); sub usage { die <. EOM diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile index 163c81a1c2..343637af85 100644 --- a/src/backend/utils/Makefile +++ b/src/backend/utils/Makefile @@ -1,8 +1,13 @@ +#------------------------------------------------------------------------- # -# Makefile for utils +# Makefile for backend/utils +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California # # src/backend/utils/Makefile # +#------------------------------------------------------------------------- subdir = src/backend/utils top_builddir = ../../.. @@ -20,6 +25,10 @@ all: errcodes.h fmgroids.h fmgrprotos.h probes.h $(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h +FMGR_DATA := $(addprefix $(top_srcdir)/src/include/catalog/,\ + pg_language.dat pg_proc.dat \ + ) + # see notes in src/backend/parser/Makefile fmgrprotos.h: fmgroids.h touch $@ @@ -27,8 +36,8 @@ fmgrprotos.h: fmgroids.h fmgroids.h: fmgrtab.c touch $@ -fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h - $(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(top_srcdir)/src/include/catalog/pg_proc.h +fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(FMGR_DATA) $(top_srcdir)/src/include/access/transam.h + $(PERL) -I $(catalogdir) $< -I $(top_srcdir)/src/include/ $(FMGR_DATA) errcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes.pl $(PERL) $(srcdir)/generate-errcodes.pl $< > $@ diff --git a/src/include/Makefile b/src/include/Makefile index a689d352b6..59e18c73d7 100644 --- a/src/include/Makefile +++ b/src/include/Makefile @@ -54,7 +54,7 @@ install: all installdirs chmod $(INSTALL_DATA_MODE) '$(DESTDIR)$(includedir_server)'/$$dir/*.h || exit; \ done ifeq ($(vpath_build),yes) - for file in dynloader.h catalog/schemapg.h parser/gram.h storage/lwlocknames.h utils/probes.h; do \ + for file in dynloader.h catalog/schemapg.h catalog/pg_*_d.h parser/gram.h storage/lwlocknames.h utils/probes.h; do \ cp $$file '$(DESTDIR)$(includedir_server)'/$$file || exit; \ chmod $(INSTALL_DATA_MODE) '$(DESTDIR)$(includedir_server)'/$$file || exit; \ done @@ -73,7 +73,9 @@ uninstall: clean: - rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h parser/gram.h utils/probes.h catalog/schemapg.h + rm -f utils/fmgroids.h utils/fmgrprotos.h utils/errcodes.h + rm -f parser/gram.h storage/lwlocknames.h utils/probes.h + rm -f catalog/schemapg.h catalog/pg_*_d.h catalog/header-stamp distclean maintainer-clean: clean rm -f pg_config.h pg_config_ext.h pg_config_os.h dynloader.h stamp-h stamp-ext-h diff --git a/src/include/catalog/.gitignore b/src/include/catalog/.gitignore index 650202eb75..6c8da5401d 100644 --- a/src/include/catalog/.gitignore +++ b/src/include/catalog/.gitignore @@ -1 +1,3 @@ /schemapg.h +/pg_*_d.h +/header-stamp diff --git a/src/include/catalog/Makefile b/src/include/catalog/Makefile new file mode 100644 index 0000000000..1da3ea7f44 --- /dev/null +++ b/src/include/catalog/Makefile @@ -0,0 +1,31 @@ +#------------------------------------------------------------------------- +# +# Makefile for src/include/catalog +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/Makefile +# +#------------------------------------------------------------------------- + +subdir = src/include/catalog +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +# location of Catalog.pm +catalogdir = $(top_srcdir)/src/backend/catalog + +# 'make reformat-dat-files' is a convenience target for rewriting the +# catalog data files in our standard format. This includes collapsing +# out any entries that are redundant with a BKI_DEFAULT annotation. +reformat-dat-files: + $(PERL) -I $(catalogdir) reformat_dat_file.pl pg_*.dat + +# 'make expand-dat-files' is a convenience target for expanding out all +# default values in the catalog data files. This should be run before +# altering or removing any BKI_DEFAULT annotation. +expand-dat-files: + $(PERL) -I $(catalogdir) reformat_dat_file.pl pg_*.dat --full-tuples + +.PHONY: reformat-dat-files expand-dat-files diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids index 7342d618ed..8c143cf06f 100755 --- a/src/include/catalog/duplicate_oids +++ b/src/include/catalog/duplicate_oids @@ -5,7 +5,7 @@ use warnings; BEGIN { - @ARGV = (glob("pg_*.h"), qw(indexing.h toasting.h)); + @ARGV = (glob("pg_*.h"), glob("pg_*.dat"), qw(indexing.h toasting.h)); } my %oidcounts; @@ -14,8 +14,8 @@ while (<>) { next if /^CATALOG\(.*BKI_BOOTSTRAP/; next - unless /^DATA\(insert *OID *= *(\d+)/ - || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+)\)/ + unless /\boid *=> *'(\d+)'/ + || /^CATALOG\([^,]*, *(\d+).*BKI_ROWTYPE_OID\((\d+),/ || /^CATALOG\([^,]*, *(\d+)/ || /^DECLARE_INDEX\([^,]*, *(\d+)/ || /^DECLARE_UNIQUE_INDEX\([^,]*, *(\d+)/ diff --git a/src/include/catalog/genbki.h b/src/include/catalog/genbki.h index 96ac4025de..b1e2cbdb62 100644 --- a/src/include/catalog/genbki.h +++ b/src/include/catalog/genbki.h @@ -3,7 +3,7 @@ * genbki.h * Required include file for all POSTGRES catalog header files * - * genbki.h defines CATALOG(), DATA(), BKI_BOOTSTRAP and related macros + * genbki.h defines CATALOG(), BKI_BOOTSTRAP and related macros * so that the catalog header files can be read by the C compiler. * (These same words are recognized by genbki.pl to build the BKI * bootstrap file from these header files.) @@ -20,23 +20,26 @@ #define GENBKI_H /* Introduces a catalog's structure definition */ -#define CATALOG(name,oid) typedef struct CppConcat(FormData_,name) +#define CATALOG(name,oid,oidmacro) typedef struct CppConcat(FormData_,name) /* Options that may appear after CATALOG (on the same line) */ #define BKI_BOOTSTRAP #define BKI_SHARED_RELATION #define BKI_WITHOUT_OIDS -#define BKI_ROWTYPE_OID(oid) +#define BKI_ROWTYPE_OID(oid,oidmacro) #define BKI_SCHEMA_MACRO + +/* Options that may appear after an attribute (on the same line) */ #define BKI_FORCE_NULL #define BKI_FORCE_NOT_NULL - /* Specifies a default value for a catalog field */ #define BKI_DEFAULT(value) +/* Indicates how to perform name lookups for an OID or OID-array field */ +#define BKI_LOOKUP(catalog) + +/* The following are never defined; they are here only for documentation. */ /* - * This is never defined; it's here only for documentation. - * * Variable-length catalog fields (except possibly the first not nullable one) * should not be visible in C structures, so they are made invisible by #ifdefs * of an undefined symbol. See also MARKNOTNULL in bootstrap.c for how this is @@ -44,10 +47,14 @@ */ #undef CATALOG_VARLEN -/* Declarations that provide the initial content of a catalog */ -/* In C, these need to expand into some harmless, repeatable declaration */ -#define DATA(x) extern int no_such_variable -#define DESCR(x) extern int no_such_variable -#define SHDESCR(x) extern int no_such_variable +/* + * There is code in some catalog headers that needs to be visible to clients, + * but we don't want clients to include the full header because of safety + * issues with other code in the header. To handle that, surround code that + * should be visible to clients with "#ifdef EXPOSE_TO_CLIENT_CODE". That + * instructs genbki.pl to copy the section when generating the corresponding + * "_d" header, which can be included by both client and backend code. + */ +#undef EXPOSE_TO_CLIENT_CODE #endif /* GENBKI_H */ diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h index 7dd9d108d6..42499e235f 100644 --- a/src/include/catalog/indexing.h +++ b/src/include/catalog/indexing.h @@ -43,7 +43,7 @@ extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid); /* * These macros are just to keep the C compiler from spitting up on the - * upcoming commands for genbki.pl. + * upcoming commands for Catalog.pm. */ #define DECLARE_INDEX(name,oid,decl) extern int no_such_variable #define DECLARE_UNIQUE_INDEX(name,oid,decl) extern int no_such_variable diff --git a/src/include/catalog/pg_aggregate.dat b/src/include/catalog/pg_aggregate.dat new file mode 100644 index 0000000000..f8d20410ef --- /dev/null +++ b/src/include/catalog/pg_aggregate.dat @@ -0,0 +1,598 @@ +#---------------------------------------------------------------------- +# +# pg_aggregate.dat +# Initial contents of the pg_aggregate system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_aggregate.dat +# +#---------------------------------------------------------------------- + +[ + +# avg +{ aggfnoid => 'avg(int8)', aggtransfn => 'int8_avg_accum', + aggfinalfn => 'numeric_poly_avg', aggcombinefn => 'int8_avg_combine', + aggserialfn => 'int8_avg_serialize', aggdeserialfn => 'int8_avg_deserialize', + aggmtransfn => 'int8_avg_accum', aggminvtransfn => 'int8_avg_accum_inv', + aggmfinalfn => 'numeric_poly_avg', aggtranstype => 'internal', + aggtransspace => '48', aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'avg(int4)', aggtransfn => 'int4_avg_accum', + aggfinalfn => 'int8_avg', aggcombinefn => 'int4_avg_combine', + aggmtransfn => 'int4_avg_accum', aggminvtransfn => 'int4_avg_accum_inv', + aggmfinalfn => 'int8_avg', aggtranstype => '_int8', aggmtranstype => '_int8', + agginitval => '{0,0}', aggminitval => '{0,0}' }, +{ aggfnoid => 'avg(int2)', aggtransfn => 'int2_avg_accum', + aggfinalfn => 'int8_avg', aggcombinefn => 'int4_avg_combine', + aggmtransfn => 'int2_avg_accum', aggminvtransfn => 'int2_avg_accum_inv', + aggmfinalfn => 'int8_avg', aggtranstype => '_int8', aggmtranstype => '_int8', + agginitval => '{0,0}', aggminitval => '{0,0}' }, +{ aggfnoid => 'avg(numeric)', aggtransfn => 'numeric_avg_accum', + aggfinalfn => 'numeric_avg', aggcombinefn => 'numeric_avg_combine', + aggserialfn => 'numeric_avg_serialize', + aggdeserialfn => 'numeric_avg_deserialize', + aggmtransfn => 'numeric_avg_accum', aggminvtransfn => 'numeric_accum_inv', + aggmfinalfn => 'numeric_avg', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, +{ aggfnoid => 'avg(float4)', aggtransfn => 'float4_accum', + aggfinalfn => 'float8_avg', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'avg(float8)', aggtransfn => 'float8_accum', + aggfinalfn => 'float8_avg', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'avg(interval)', aggtransfn => 'interval_accum', + aggfinalfn => 'interval_avg', aggcombinefn => 'interval_combine', + aggmtransfn => 'interval_accum', aggminvtransfn => 'interval_accum_inv', + aggmfinalfn => 'interval_avg', aggtranstype => '_interval', + aggmtranstype => '_interval', agginitval => '{0 second,0 second}', + aggminitval => '{0 second,0 second}' }, + +# sum +{ aggfnoid => 'sum(int8)', aggtransfn => 'int8_avg_accum', + aggfinalfn => 'numeric_poly_sum', aggcombinefn => 'int8_avg_combine', + aggserialfn => 'int8_avg_serialize', aggdeserialfn => 'int8_avg_deserialize', + aggmtransfn => 'int8_avg_accum', aggminvtransfn => 'int8_avg_accum_inv', + aggmfinalfn => 'numeric_poly_sum', aggtranstype => 'internal', + aggtransspace => '48', aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'sum(int4)', aggtransfn => 'int4_sum', aggcombinefn => 'int8pl', + aggmtransfn => 'int4_avg_accum', aggminvtransfn => 'int4_avg_accum_inv', + aggmfinalfn => 'int2int4_sum', aggtranstype => 'int8', + aggmtranstype => '_int8', aggminitval => '{0,0}' }, +{ aggfnoid => 'sum(int2)', aggtransfn => 'int2_sum', aggcombinefn => 'int8pl', + aggmtransfn => 'int2_avg_accum', aggminvtransfn => 'int2_avg_accum_inv', + aggmfinalfn => 'int2int4_sum', aggtranstype => 'int8', + aggmtranstype => '_int8', aggminitval => '{0,0}' }, +{ aggfnoid => 'sum(float4)', aggtransfn => 'float4pl', + aggcombinefn => 'float4pl', aggtranstype => 'float4' }, +{ aggfnoid => 'sum(float8)', aggtransfn => 'float8pl', + aggcombinefn => 'float8pl', aggtranstype => 'float8' }, +{ aggfnoid => 'sum(money)', aggtransfn => 'cash_pl', aggcombinefn => 'cash_pl', + aggmtransfn => 'cash_pl', aggminvtransfn => 'cash_mi', + aggtranstype => 'money', aggmtranstype => 'money' }, +{ aggfnoid => 'sum(interval)', aggtransfn => 'interval_pl', + aggcombinefn => 'interval_pl', aggmtransfn => 'interval_pl', + aggminvtransfn => 'interval_mi', aggtranstype => 'interval', + aggmtranstype => 'interval' }, +{ aggfnoid => 'sum(numeric)', aggtransfn => 'numeric_avg_accum', + aggfinalfn => 'numeric_sum', aggcombinefn => 'numeric_avg_combine', + aggserialfn => 'numeric_avg_serialize', + aggdeserialfn => 'numeric_avg_deserialize', + aggmtransfn => 'numeric_avg_accum', aggminvtransfn => 'numeric_accum_inv', + aggmfinalfn => 'numeric_sum', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, + +# max +{ aggfnoid => 'max(int8)', aggtransfn => 'int8larger', + aggcombinefn => 'int8larger', aggsortop => '>(int8,int8)', + aggtranstype => 'int8' }, +{ aggfnoid => 'max(int4)', aggtransfn => 'int4larger', + aggcombinefn => 'int4larger', aggsortop => '>(int4,int4)', + aggtranstype => 'int4' }, +{ aggfnoid => 'max(int2)', aggtransfn => 'int2larger', + aggcombinefn => 'int2larger', aggsortop => '>(int2,int2)', + aggtranstype => 'int2' }, +{ aggfnoid => 'max(oid)', aggtransfn => 'oidlarger', + aggcombinefn => 'oidlarger', aggsortop => '>(oid,oid)', + aggtranstype => 'oid' }, +{ aggfnoid => 'max(float4)', aggtransfn => 'float4larger', + aggcombinefn => 'float4larger', aggsortop => '>(float4,float4)', + aggtranstype => 'float4' }, +{ aggfnoid => 'max(float8)', aggtransfn => 'float8larger', + aggcombinefn => 'float8larger', aggsortop => '>(float8,float8)', + aggtranstype => 'float8' }, +{ aggfnoid => 'max(abstime)', aggtransfn => 'int4larger', + aggcombinefn => 'int4larger', aggsortop => '>(abstime,abstime)', + aggtranstype => 'abstime' }, +{ aggfnoid => 'max(date)', aggtransfn => 'date_larger', + aggcombinefn => 'date_larger', aggsortop => '>(date,date)', + aggtranstype => 'date' }, +{ aggfnoid => 'max(time)', aggtransfn => 'time_larger', + aggcombinefn => 'time_larger', aggsortop => '>(time,time)', + aggtranstype => 'time' }, +{ aggfnoid => 'max(timetz)', aggtransfn => 'timetz_larger', + aggcombinefn => 'timetz_larger', aggsortop => '>(timetz,timetz)', + aggtranstype => 'timetz' }, +{ aggfnoid => 'max(money)', aggtransfn => 'cashlarger', + aggcombinefn => 'cashlarger', aggsortop => '>(money,money)', + aggtranstype => 'money' }, +{ aggfnoid => 'max(timestamp)', aggtransfn => 'timestamp_larger', + aggcombinefn => 'timestamp_larger', aggsortop => '>(timestamp,timestamp)', + aggtranstype => 'timestamp' }, +{ aggfnoid => 'max(timestamptz)', aggtransfn => 'timestamptz_larger', + aggcombinefn => 'timestamptz_larger', + aggsortop => '>(timestamptz,timestamptz)', aggtranstype => 'timestamptz' }, +{ aggfnoid => 'max(interval)', aggtransfn => 'interval_larger', + aggcombinefn => 'interval_larger', aggsortop => '>(interval,interval)', + aggtranstype => 'interval' }, +{ aggfnoid => 'max(text)', aggtransfn => 'text_larger', + aggcombinefn => 'text_larger', aggsortop => '>(text,text)', + aggtranstype => 'text' }, +{ aggfnoid => 'max(numeric)', aggtransfn => 'numeric_larger', + aggcombinefn => 'numeric_larger', aggsortop => '>(numeric,numeric)', + aggtranstype => 'numeric' }, +{ aggfnoid => 'max(anyarray)', aggtransfn => 'array_larger', + aggcombinefn => 'array_larger', aggsortop => '>(anyarray,anyarray)', + aggtranstype => 'anyarray' }, +{ aggfnoid => 'max(bpchar)', aggtransfn => 'bpchar_larger', + aggcombinefn => 'bpchar_larger', aggsortop => '>(bpchar,bpchar)', + aggtranstype => 'bpchar' }, +{ aggfnoid => 'max(tid)', aggtransfn => 'tidlarger', + aggcombinefn => 'tidlarger', aggsortop => '>(tid,tid)', + aggtranstype => 'tid' }, +{ aggfnoid => 'max(anyenum)', aggtransfn => 'enum_larger', + aggcombinefn => 'enum_larger', aggsortop => '>(anyenum,anyenum)', + aggtranstype => 'anyenum' }, +{ aggfnoid => 'max(inet)', aggtransfn => 'network_larger', + aggcombinefn => 'network_larger', aggsortop => '>(inet,inet)', + aggtranstype => 'inet' }, + +# min +{ aggfnoid => 'min(int8)', aggtransfn => 'int8smaller', + aggcombinefn => 'int8smaller', aggsortop => '<(int8,int8)', + aggtranstype => 'int8' }, +{ aggfnoid => 'min(int4)', aggtransfn => 'int4smaller', + aggcombinefn => 'int4smaller', aggsortop => '<(int4,int4)', + aggtranstype => 'int4' }, +{ aggfnoid => 'min(int2)', aggtransfn => 'int2smaller', + aggcombinefn => 'int2smaller', aggsortop => '<(int2,int2)', + aggtranstype => 'int2' }, +{ aggfnoid => 'min(oid)', aggtransfn => 'oidsmaller', + aggcombinefn => 'oidsmaller', aggsortop => '<(oid,oid)', + aggtranstype => 'oid' }, +{ aggfnoid => 'min(float4)', aggtransfn => 'float4smaller', + aggcombinefn => 'float4smaller', aggsortop => '<(float4,float4)', + aggtranstype => 'float4' }, +{ aggfnoid => 'min(float8)', aggtransfn => 'float8smaller', + aggcombinefn => 'float8smaller', aggsortop => '<(float8,float8)', + aggtranstype => 'float8' }, +{ aggfnoid => 'min(abstime)', aggtransfn => 'int4smaller', + aggcombinefn => 'int4smaller', aggsortop => '<(abstime,abstime)', + aggtranstype => 'abstime' }, +{ aggfnoid => 'min(date)', aggtransfn => 'date_smaller', + aggcombinefn => 'date_smaller', aggsortop => '<(date,date)', + aggtranstype => 'date' }, +{ aggfnoid => 'min(time)', aggtransfn => 'time_smaller', + aggcombinefn => 'time_smaller', aggsortop => '<(time,time)', + aggtranstype => 'time' }, +{ aggfnoid => 'min(timetz)', aggtransfn => 'timetz_smaller', + aggcombinefn => 'timetz_smaller', aggsortop => '<(timetz,timetz)', + aggtranstype => 'timetz' }, +{ aggfnoid => 'min(money)', aggtransfn => 'cashsmaller', + aggcombinefn => 'cashsmaller', aggsortop => '<(money,money)', + aggtranstype => 'money' }, +{ aggfnoid => 'min(timestamp)', aggtransfn => 'timestamp_smaller', + aggcombinefn => 'timestamp_smaller', aggsortop => '<(timestamp,timestamp)', + aggtranstype => 'timestamp' }, +{ aggfnoid => 'min(timestamptz)', aggtransfn => 'timestamptz_smaller', + aggcombinefn => 'timestamptz_smaller', + aggsortop => '<(timestamptz,timestamptz)', aggtranstype => 'timestamptz' }, +{ aggfnoid => 'min(interval)', aggtransfn => 'interval_smaller', + aggcombinefn => 'interval_smaller', aggsortop => '<(interval,interval)', + aggtranstype => 'interval' }, +{ aggfnoid => 'min(text)', aggtransfn => 'text_smaller', + aggcombinefn => 'text_smaller', aggsortop => '<(text,text)', + aggtranstype => 'text' }, +{ aggfnoid => 'min(numeric)', aggtransfn => 'numeric_smaller', + aggcombinefn => 'numeric_smaller', aggsortop => '<(numeric,numeric)', + aggtranstype => 'numeric' }, +{ aggfnoid => 'min(anyarray)', aggtransfn => 'array_smaller', + aggcombinefn => 'array_smaller', aggsortop => '<(anyarray,anyarray)', + aggtranstype => 'anyarray' }, +{ aggfnoid => 'min(bpchar)', aggtransfn => 'bpchar_smaller', + aggcombinefn => 'bpchar_smaller', aggsortop => '<(bpchar,bpchar)', + aggtranstype => 'bpchar' }, +{ aggfnoid => 'min(tid)', aggtransfn => 'tidsmaller', + aggcombinefn => 'tidsmaller', aggsortop => '<(tid,tid)', + aggtranstype => 'tid' }, +{ aggfnoid => 'min(anyenum)', aggtransfn => 'enum_smaller', + aggcombinefn => 'enum_smaller', aggsortop => '<(anyenum,anyenum)', + aggtranstype => 'anyenum' }, +{ aggfnoid => 'min(inet)', aggtransfn => 'network_smaller', + aggcombinefn => 'network_smaller', aggsortop => '<(inet,inet)', + aggtranstype => 'inet' }, + +# count +{ aggfnoid => 'count(any)', aggtransfn => 'int8inc_any', + aggcombinefn => 'int8pl', aggmtransfn => 'int8inc_any', + aggminvtransfn => 'int8dec_any', aggtranstype => 'int8', + aggmtranstype => 'int8', agginitval => '0', aggminitval => '0' }, +{ aggfnoid => 'count()', aggtransfn => 'int8inc', aggcombinefn => 'int8pl', + aggmtransfn => 'int8inc', aggminvtransfn => 'int8dec', aggtranstype => 'int8', + aggmtranstype => 'int8', agginitval => '0', aggminitval => '0' }, + +# var_pop +{ aggfnoid => 'var_pop(int8)', aggtransfn => 'int8_accum', + aggfinalfn => 'numeric_var_pop', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', + aggmfinalfn => 'numeric_var_pop', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, +{ aggfnoid => 'var_pop(int4)', aggtransfn => 'int4_accum', + aggfinalfn => 'numeric_poly_var_pop', aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', + aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_var_pop', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'var_pop(int2)', aggtransfn => 'int2_accum', + aggfinalfn => 'numeric_poly_var_pop', aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', + aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_var_pop', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'var_pop(float4)', aggtransfn => 'float4_accum', + aggfinalfn => 'float8_var_pop', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'var_pop(float8)', aggtransfn => 'float8_accum', + aggfinalfn => 'float8_var_pop', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'var_pop(numeric)', aggtransfn => 'numeric_accum', + aggfinalfn => 'numeric_var_pop', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', + aggmfinalfn => 'numeric_var_pop', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, + +# var_samp +{ aggfnoid => 'var_samp(int8)', aggtransfn => 'int8_accum', + aggfinalfn => 'numeric_var_samp', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', + aggmfinalfn => 'numeric_var_samp', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, +{ aggfnoid => 'var_samp(int4)', aggtransfn => 'int4_accum', + aggfinalfn => 'numeric_poly_var_samp', aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', + aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_var_samp', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'var_samp(int2)', aggtransfn => 'int2_accum', + aggfinalfn => 'numeric_poly_var_samp', aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', + aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_var_samp', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'var_samp(float4)', aggtransfn => 'float4_accum', + aggfinalfn => 'float8_var_samp', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'var_samp(float8)', aggtransfn => 'float8_accum', + aggfinalfn => 'float8_var_samp', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'var_samp(numeric)', aggtransfn => 'numeric_accum', + aggfinalfn => 'numeric_var_samp', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', + aggmfinalfn => 'numeric_var_samp', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, + +# variance: historical Postgres syntax for var_samp +{ aggfnoid => 'variance(int8)', aggtransfn => 'int8_accum', + aggfinalfn => 'numeric_var_samp', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', + aggmfinalfn => 'numeric_var_samp', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, +{ aggfnoid => 'variance(int4)', aggtransfn => 'int4_accum', + aggfinalfn => 'numeric_poly_var_samp', aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', + aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_var_samp', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'variance(int2)', aggtransfn => 'int2_accum', + aggfinalfn => 'numeric_poly_var_samp', aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', + aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_var_samp', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'variance(float4)', aggtransfn => 'float4_accum', + aggfinalfn => 'float8_var_samp', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'variance(float8)', aggtransfn => 'float8_accum', + aggfinalfn => 'float8_var_samp', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'variance(numeric)', aggtransfn => 'numeric_accum', + aggfinalfn => 'numeric_var_samp', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', + aggmfinalfn => 'numeric_var_samp', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, + +# stddev_pop +{ aggfnoid => 'stddev_pop(int8)', aggtransfn => 'int8_accum', + aggfinalfn => 'numeric_stddev_pop', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', + aggmfinalfn => 'numeric_stddev_pop', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, +{ aggfnoid => 'stddev_pop(int4)', aggtransfn => 'int4_accum', + aggfinalfn => 'numeric_poly_stddev_pop', + aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', + aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_stddev_pop', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'stddev_pop(int2)', aggtransfn => 'int2_accum', + aggfinalfn => 'numeric_poly_stddev_pop', + aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', + aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_stddev_pop', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'stddev_pop(float4)', aggtransfn => 'float4_accum', + aggfinalfn => 'float8_stddev_pop', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'stddev_pop(float8)', aggtransfn => 'float8_accum', + aggfinalfn => 'float8_stddev_pop', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'stddev_pop(numeric)', aggtransfn => 'numeric_accum', + aggfinalfn => 'numeric_stddev_pop', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', + aggmfinalfn => 'numeric_stddev_pop', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, + +# stddev_samp +{ aggfnoid => 'stddev_samp(int8)', aggtransfn => 'int8_accum', + aggfinalfn => 'numeric_stddev_samp', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', + aggmfinalfn => 'numeric_stddev_samp', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, +{ aggfnoid => 'stddev_samp(int4)', aggtransfn => 'int4_accum', + aggfinalfn => 'numeric_poly_stddev_samp', + aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', + aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_stddev_samp', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'stddev_samp(int2)', aggtransfn => 'int2_accum', + aggfinalfn => 'numeric_poly_stddev_samp', + aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', + aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_stddev_samp', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'stddev_samp(float4)', aggtransfn => 'float4_accum', + aggfinalfn => 'float8_stddev_samp', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'stddev_samp(float8)', aggtransfn => 'float8_accum', + aggfinalfn => 'float8_stddev_samp', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'stddev_samp(numeric)', aggtransfn => 'numeric_accum', + aggfinalfn => 'numeric_stddev_samp', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', + aggmfinalfn => 'numeric_stddev_samp', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, + +# stddev: historical Postgres syntax for stddev_samp +{ aggfnoid => 'stddev(int8)', aggtransfn => 'int8_accum', + aggfinalfn => 'numeric_stddev_samp', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'int8_accum', aggminvtransfn => 'int8_accum_inv', + aggmfinalfn => 'numeric_stddev_samp', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, +{ aggfnoid => 'stddev(int4)', aggtransfn => 'int4_accum', + aggfinalfn => 'numeric_poly_stddev_samp', + aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int4_accum', + aggminvtransfn => 'int4_accum_inv', aggmfinalfn => 'numeric_poly_stddev_samp', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'stddev(int2)', aggtransfn => 'int2_accum', + aggfinalfn => 'numeric_poly_stddev_samp', + aggcombinefn => 'numeric_poly_combine', + aggserialfn => 'numeric_poly_serialize', + aggdeserialfn => 'numeric_poly_deserialize', aggmtransfn => 'int2_accum', + aggminvtransfn => 'int2_accum_inv', aggmfinalfn => 'numeric_poly_stddev_samp', + aggtranstype => 'internal', aggtransspace => '48', + aggmtranstype => 'internal', aggmtransspace => '48' }, +{ aggfnoid => 'stddev(float4)', aggtransfn => 'float4_accum', + aggfinalfn => 'float8_stddev_samp', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'stddev(float8)', aggtransfn => 'float8_accum', + aggfinalfn => 'float8_stddev_samp', aggcombinefn => 'float8_combine', + aggtranstype => '_float8', agginitval => '{0,0,0}' }, +{ aggfnoid => 'stddev(numeric)', aggtransfn => 'numeric_accum', + aggfinalfn => 'numeric_stddev_samp', aggcombinefn => 'numeric_combine', + aggserialfn => 'numeric_serialize', aggdeserialfn => 'numeric_deserialize', + aggmtransfn => 'numeric_accum', aggminvtransfn => 'numeric_accum_inv', + aggmfinalfn => 'numeric_stddev_samp', aggtranstype => 'internal', + aggtransspace => '128', aggmtranstype => 'internal', + aggmtransspace => '128' }, + +# SQL2003 binary regression aggregates +{ aggfnoid => 'regr_count', aggtransfn => 'int8inc_float8_float8', + aggcombinefn => 'int8pl', aggtranstype => 'int8', agginitval => '0' }, +{ aggfnoid => 'regr_sxx', aggtransfn => 'float8_regr_accum', + aggfinalfn => 'float8_regr_sxx', aggcombinefn => 'float8_regr_combine', + aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, +{ aggfnoid => 'regr_syy', aggtransfn => 'float8_regr_accum', + aggfinalfn => 'float8_regr_syy', aggcombinefn => 'float8_regr_combine', + aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, +{ aggfnoid => 'regr_sxy', aggtransfn => 'float8_regr_accum', + aggfinalfn => 'float8_regr_sxy', aggcombinefn => 'float8_regr_combine', + aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, +{ aggfnoid => 'regr_avgx', aggtransfn => 'float8_regr_accum', + aggfinalfn => 'float8_regr_avgx', aggcombinefn => 'float8_regr_combine', + aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, +{ aggfnoid => 'regr_avgy', aggtransfn => 'float8_regr_accum', + aggfinalfn => 'float8_regr_avgy', aggcombinefn => 'float8_regr_combine', + aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, +{ aggfnoid => 'regr_r2', aggtransfn => 'float8_regr_accum', + aggfinalfn => 'float8_regr_r2', aggcombinefn => 'float8_regr_combine', + aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, +{ aggfnoid => 'regr_slope', aggtransfn => 'float8_regr_accum', + aggfinalfn => 'float8_regr_slope', aggcombinefn => 'float8_regr_combine', + aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, +{ aggfnoid => 'regr_intercept', aggtransfn => 'float8_regr_accum', + aggfinalfn => 'float8_regr_intercept', aggcombinefn => 'float8_regr_combine', + aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, +{ aggfnoid => 'covar_pop', aggtransfn => 'float8_regr_accum', + aggfinalfn => 'float8_covar_pop', aggcombinefn => 'float8_regr_combine', + aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, +{ aggfnoid => 'covar_samp', aggtransfn => 'float8_regr_accum', + aggfinalfn => 'float8_covar_samp', aggcombinefn => 'float8_regr_combine', + aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, +{ aggfnoid => 'corr', aggtransfn => 'float8_regr_accum', + aggfinalfn => 'float8_corr', aggcombinefn => 'float8_regr_combine', + aggtranstype => '_float8', agginitval => '{0,0,0,0,0,0}' }, + +# boolean-and and boolean-or +{ aggfnoid => 'bool_and', aggtransfn => 'booland_statefunc', + aggcombinefn => 'booland_statefunc', aggmtransfn => 'bool_accum', + aggminvtransfn => 'bool_accum_inv', aggmfinalfn => 'bool_alltrue', + aggsortop => '<(bool,bool)', aggtranstype => 'bool', + aggmtranstype => 'internal', aggmtransspace => '16' }, +{ aggfnoid => 'bool_or', aggtransfn => 'boolor_statefunc', + aggcombinefn => 'boolor_statefunc', aggmtransfn => 'bool_accum', + aggminvtransfn => 'bool_accum_inv', aggmfinalfn => 'bool_anytrue', + aggsortop => '>(bool,bool)', aggtranstype => 'bool', + aggmtranstype => 'internal', aggmtransspace => '16' }, +{ aggfnoid => 'every', aggtransfn => 'booland_statefunc', + aggcombinefn => 'booland_statefunc', aggmtransfn => 'bool_accum', + aggminvtransfn => 'bool_accum_inv', aggmfinalfn => 'bool_alltrue', + aggsortop => '<(bool,bool)', aggtranstype => 'bool', + aggmtranstype => 'internal', aggmtransspace => '16' }, + +# bitwise integer +{ aggfnoid => 'bit_and(int2)', aggtransfn => 'int2and', + aggcombinefn => 'int2and', aggtranstype => 'int2' }, +{ aggfnoid => 'bit_or(int2)', aggtransfn => 'int2or', aggcombinefn => 'int2or', + aggtranstype => 'int2' }, +{ aggfnoid => 'bit_and(int4)', aggtransfn => 'int4and', + aggcombinefn => 'int4and', aggtranstype => 'int4' }, +{ aggfnoid => 'bit_or(int4)', aggtransfn => 'int4or', aggcombinefn => 'int4or', + aggtranstype => 'int4' }, +{ aggfnoid => 'bit_and(int8)', aggtransfn => 'int8and', + aggcombinefn => 'int8and', aggtranstype => 'int8' }, +{ aggfnoid => 'bit_or(int8)', aggtransfn => 'int8or', aggcombinefn => 'int8or', + aggtranstype => 'int8' }, +{ aggfnoid => 'bit_and(bit)', aggtransfn => 'bitand', aggcombinefn => 'bitand', + aggtranstype => 'bit' }, +{ aggfnoid => 'bit_or(bit)', aggtransfn => 'bitor', aggcombinefn => 'bitor', + aggtranstype => 'bit' }, + +# xml +{ aggfnoid => 'xmlagg', aggtransfn => 'xmlconcat2', aggtranstype => 'xml' }, + +# array +{ aggfnoid => 'array_agg(anynonarray)', aggtransfn => 'array_agg_transfn', + aggfinalfn => 'array_agg_finalfn', aggfinalextra => 't', + aggtranstype => 'internal' }, +{ aggfnoid => 'array_agg(anyarray)', aggtransfn => 'array_agg_array_transfn', + aggfinalfn => 'array_agg_array_finalfn', aggfinalextra => 't', + aggtranstype => 'internal' }, + +# text +{ aggfnoid => 'string_agg(text,text)', aggtransfn => 'string_agg_transfn', + aggfinalfn => 'string_agg_finalfn', aggtranstype => 'internal' }, + +# bytea +{ aggfnoid => 'string_agg(bytea,bytea)', + aggtransfn => 'bytea_string_agg_transfn', + aggfinalfn => 'bytea_string_agg_finalfn', aggtranstype => 'internal' }, + +# json +{ aggfnoid => 'json_agg', aggtransfn => 'json_agg_transfn', + aggfinalfn => 'json_agg_finalfn', aggtranstype => 'internal' }, +{ aggfnoid => 'json_object_agg', aggtransfn => 'json_object_agg_transfn', + aggfinalfn => 'json_object_agg_finalfn', aggtranstype => 'internal' }, + +# jsonb +{ aggfnoid => 'jsonb_agg', aggtransfn => 'jsonb_agg_transfn', + aggfinalfn => 'jsonb_agg_finalfn', aggtranstype => 'internal' }, +{ aggfnoid => 'jsonb_object_agg', aggtransfn => 'jsonb_object_agg_transfn', + aggfinalfn => 'jsonb_object_agg_finalfn', aggtranstype => 'internal' }, + +# ordered-set and hypothetical-set aggregates +{ aggfnoid => 'percentile_disc(float8,anyelement)', aggkind => 'o', + aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', + aggfinalfn => 'percentile_disc_final', aggfinalextra => 't', + aggfinalmodify => 's', aggmfinalmodify => 's', aggtranstype => 'internal' }, +{ aggfnoid => 'percentile_cont(float8,float8)', aggkind => 'o', + aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', + aggfinalfn => 'percentile_cont_float8_final', aggfinalmodify => 's', + aggmfinalmodify => 's', aggtranstype => 'internal' }, +{ aggfnoid => 'percentile_cont(float8,interval)', aggkind => 'o', + aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', + aggfinalfn => 'percentile_cont_interval_final', aggfinalmodify => 's', + aggmfinalmodify => 's', aggtranstype => 'internal' }, +{ aggfnoid => 'percentile_disc(_float8,anyelement)', aggkind => 'o', + aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', + aggfinalfn => 'percentile_disc_multi_final', aggfinalextra => 't', + aggfinalmodify => 's', aggmfinalmodify => 's', aggtranstype => 'internal' }, +{ aggfnoid => 'percentile_cont(_float8,float8)', aggkind => 'o', + aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', + aggfinalfn => 'percentile_cont_float8_multi_final', aggfinalmodify => 's', + aggmfinalmodify => 's', aggtranstype => 'internal' }, +{ aggfnoid => 'percentile_cont(_float8,interval)', aggkind => 'o', + aggnumdirectargs => '1', aggtransfn => 'ordered_set_transition', + aggfinalfn => 'percentile_cont_interval_multi_final', aggfinalmodify => 's', + aggmfinalmodify => 's', aggtranstype => 'internal' }, +{ aggfnoid => 'mode', aggkind => 'o', aggtransfn => 'ordered_set_transition', + aggfinalfn => 'mode_final', aggfinalextra => 't', aggfinalmodify => 's', + aggmfinalmodify => 's', aggtranstype => 'internal' }, +{ aggfnoid => 'rank(any)', aggkind => 'h', aggnumdirectargs => '1', + aggtransfn => 'ordered_set_transition_multi', aggfinalfn => 'rank_final', + aggfinalextra => 't', aggfinalmodify => 'w', aggmfinalmodify => 'w', + aggtranstype => 'internal' }, +{ aggfnoid => 'percent_rank(any)', aggkind => 'h', aggnumdirectargs => '1', + aggtransfn => 'ordered_set_transition_multi', + aggfinalfn => 'percent_rank_final', aggfinalextra => 't', + aggfinalmodify => 'w', aggmfinalmodify => 'w', aggtranstype => 'internal' }, +{ aggfnoid => 'cume_dist(any)', aggkind => 'h', aggnumdirectargs => '1', + aggtransfn => 'ordered_set_transition_multi', aggfinalfn => 'cume_dist_final', + aggfinalextra => 't', aggfinalmodify => 'w', aggmfinalmodify => 'w', + aggtranstype => 'internal' }, +{ aggfnoid => 'dense_rank(any)', aggkind => 'h', aggnumdirectargs => '1', + aggtransfn => 'ordered_set_transition_multi', + aggfinalfn => 'dense_rank_final', aggfinalextra => 't', aggfinalmodify => 'w', + aggmfinalmodify => 'w', aggtranstype => 'internal' }, + +] diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h index 67a0850c18..79f9ce0c14 100644 --- a/src/include/catalog/pg_aggregate.h +++ b/src/include/catalog/pg_aggregate.h @@ -2,7 +2,6 @@ * * pg_aggregate.h * definition of the system "aggregate" relation (pg_aggregate) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_aggregate.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,64 +19,82 @@ #define PG_AGGREGATE_H #include "catalog/genbki.h" +#include "catalog/pg_aggregate_d.h" /* ---------------------------------------------------------------- * pg_aggregate definition. - * * cpp turns this into typedef struct FormData_pg_aggregate - * - * aggfnoid pg_proc OID of the aggregate itself - * aggkind aggregate kind, see AGGKIND_ categories below - * aggnumdirectargs number of arguments that are "direct" arguments - * aggtransfn transition function - * aggfinalfn final function (0 if none) - * aggcombinefn combine function (0 if none) - * aggserialfn function to convert transtype to bytea (0 if none) - * aggdeserialfn function to convert bytea to transtype (0 if none) - * aggmtransfn forward function for moving-aggregate mode (0 if none) - * aggminvtransfn inverse function for moving-aggregate mode (0 if none) - * aggmfinalfn final function for moving-aggregate mode (0 if none) - * aggfinalextra true to pass extra dummy arguments to aggfinalfn - * aggmfinalextra true to pass extra dummy arguments to aggmfinalfn - * aggfinalmodify tells whether aggfinalfn modifies transition state - * aggmfinalmodify tells whether aggmfinalfn modifies transition state - * aggsortop associated sort operator (0 if none) - * aggtranstype type of aggregate's transition (state) data - * aggtransspace estimated size of state data (0 for default estimate) - * aggmtranstype type of moving-aggregate state data (0 if none) - * aggmtransspace estimated size of moving-agg state (0 for default est) - * agginitval initial value for transition state (can be NULL) - * aggminitval initial value for moving-agg state (can be NULL) * ---------------------------------------------------------------- */ -#define AggregateRelationId 2600 - -CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS +CATALOG(pg_aggregate,2600,AggregateRelationId) BKI_WITHOUT_OIDS { - regproc aggfnoid; - char aggkind; - int16 aggnumdirectargs; - regproc aggtransfn; - regproc aggfinalfn; - regproc aggcombinefn; - regproc aggserialfn; - regproc aggdeserialfn; - regproc aggmtransfn; - regproc aggminvtransfn; - regproc aggmfinalfn; - bool aggfinalextra; - bool aggmfinalextra; - char aggfinalmodify; - char aggmfinalmodify; - Oid aggsortop; - Oid aggtranstype; - int32 aggtransspace; - Oid aggmtranstype; - int32 aggmtransspace; + /* pg_proc OID of the aggregate itself */ + regproc aggfnoid BKI_LOOKUP(pg_proc); + + /* aggregate kind, see AGGKIND_ categories below */ + char aggkind BKI_DEFAULT(n); + + /* number of arguments that are "direct" arguments */ + int16 aggnumdirectargs BKI_DEFAULT(0); + + /* transition function */ + regproc aggtransfn BKI_LOOKUP(pg_proc); + + /* final function (0 if none) */ + regproc aggfinalfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* combine function (0 if none) */ + regproc aggcombinefn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* function to convert transtype to bytea (0 if none) */ + regproc aggserialfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* function to convert bytea to transtype (0 if none) */ + regproc aggdeserialfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* forward function for moving-aggregate mode (0 if none) */ + regproc aggmtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* inverse function for moving-aggregate mode (0 if none) */ + regproc aggminvtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* final function for moving-aggregate mode (0 if none) */ + regproc aggmfinalfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* true to pass extra dummy arguments to aggfinalfn */ + bool aggfinalextra BKI_DEFAULT(f); + + /* true to pass extra dummy arguments to aggmfinalfn */ + bool aggmfinalextra BKI_DEFAULT(f); + + /* tells whether aggfinalfn modifies transition state */ + char aggfinalmodify BKI_DEFAULT(r); + + /* tells whether aggmfinalfn modifies transition state */ + char aggmfinalmodify BKI_DEFAULT(r); + + /* associated sort operator (0 if none) */ + Oid aggsortop BKI_DEFAULT(0) BKI_LOOKUP(pg_operator); + + /* type of aggregate's transition (state) data */ + Oid aggtranstype BKI_LOOKUP(pg_type); + + /* estimated size of state data (0 for default estimate) */ + int32 aggtransspace BKI_DEFAULT(0); + + /* type of moving-aggregate state data (0 if none) */ + Oid aggmtranstype BKI_DEFAULT(0) BKI_LOOKUP(pg_type); + + /* estimated size of moving-agg state (0 for default est) */ + int32 aggmtransspace BKI_DEFAULT(0); #ifdef CATALOG_VARLEN /* variable-length fields start here */ - text agginitval; - text aggminitval; + + /* initial value for transition state (can be NULL) */ + text agginitval BKI_DEFAULT(_null_); + + /* initial value for moving-agg state (can be NULL) */ + text aggminitval BKI_DEFAULT(_null_); #endif } FormData_pg_aggregate; @@ -88,34 +105,7 @@ CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS */ typedef FormData_pg_aggregate *Form_pg_aggregate; -/* ---------------- - * compiler constants for pg_aggregate - * ---------------- - */ - -#define Natts_pg_aggregate 22 -#define Anum_pg_aggregate_aggfnoid 1 -#define Anum_pg_aggregate_aggkind 2 -#define Anum_pg_aggregate_aggnumdirectargs 3 -#define Anum_pg_aggregate_aggtransfn 4 -#define Anum_pg_aggregate_aggfinalfn 5 -#define Anum_pg_aggregate_aggcombinefn 6 -#define Anum_pg_aggregate_aggserialfn 7 -#define Anum_pg_aggregate_aggdeserialfn 8 -#define Anum_pg_aggregate_aggmtransfn 9 -#define Anum_pg_aggregate_aggminvtransfn 10 -#define Anum_pg_aggregate_aggmfinalfn 11 -#define Anum_pg_aggregate_aggfinalextra 12 -#define Anum_pg_aggregate_aggmfinalextra 13 -#define Anum_pg_aggregate_aggfinalmodify 14 -#define Anum_pg_aggregate_aggmfinalmodify 15 -#define Anum_pg_aggregate_aggsortop 16 -#define Anum_pg_aggregate_aggtranstype 17 -#define Anum_pg_aggregate_aggtransspace 18 -#define Anum_pg_aggregate_aggmtranstype 19 -#define Anum_pg_aggregate_aggmtransspace 20 -#define Anum_pg_aggregate_agginitval 21 -#define Anum_pg_aggregate_aggminitval 22 +#ifdef EXPOSE_TO_CLIENT_CODE /* * Symbolic values for aggkind column. We distinguish normal aggregates @@ -144,190 +134,6 @@ typedef FormData_pg_aggregate *Form_pg_aggregate; #define AGGMODIFY_SHARABLE 's' #define AGGMODIFY_READ_WRITE 'w' - -/* ---------------- - * initial contents of pg_aggregate - * --------------- - */ - -/* avg */ -DATA(insert ( 2100 n 0 int8_avg_accum numeric_poly_avg int8_avg_combine int8_avg_serialize int8_avg_deserialize int8_avg_accum int8_avg_accum_inv numeric_poly_avg f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2101 n 0 int4_avg_accum int8_avg int4_avg_combine - - int4_avg_accum int4_avg_accum_inv int8_avg f f r r 0 1016 0 1016 0 "{0,0}" "{0,0}" )); -DATA(insert ( 2102 n 0 int2_avg_accum int8_avg int4_avg_combine - - int2_avg_accum int2_avg_accum_inv int8_avg f f r r 0 1016 0 1016 0 "{0,0}" "{0,0}" )); -DATA(insert ( 2103 n 0 numeric_avg_accum numeric_avg numeric_avg_combine numeric_avg_serialize numeric_avg_deserialize numeric_avg_accum numeric_accum_inv numeric_avg f f r r 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2104 n 0 float4_accum float8_avg float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2105 n 0 float8_accum float8_avg float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2106 n 0 interval_accum interval_avg interval_combine - - interval_accum interval_accum_inv interval_avg f f r r 0 1187 0 1187 0 "{0 second,0 second}" "{0 second,0 second}" )); - -/* sum */ -DATA(insert ( 2107 n 0 int8_avg_accum numeric_poly_sum int8_avg_combine int8_avg_serialize int8_avg_deserialize int8_avg_accum int8_avg_accum_inv numeric_poly_sum f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2108 n 0 int4_sum - int8pl - - int4_avg_accum int4_avg_accum_inv int2int4_sum f f r r 0 20 0 1016 0 _null_ "{0,0}" )); -DATA(insert ( 2109 n 0 int2_sum - int8pl - - int2_avg_accum int2_avg_accum_inv int2int4_sum f f r r 0 20 0 1016 0 _null_ "{0,0}" )); -DATA(insert ( 2110 n 0 float4pl - float4pl - - - - - f f r r 0 700 0 0 0 _null_ _null_ )); -DATA(insert ( 2111 n 0 float8pl - float8pl - - - - - f f r r 0 701 0 0 0 _null_ _null_ )); -DATA(insert ( 2112 n 0 cash_pl - cash_pl - - cash_pl cash_mi - f f r r 0 790 0 790 0 _null_ _null_ )); -DATA(insert ( 2113 n 0 interval_pl - interval_pl - - interval_pl interval_mi - f f r r 0 1186 0 1186 0 _null_ _null_ )); -DATA(insert ( 2114 n 0 numeric_avg_accum numeric_sum numeric_avg_combine numeric_avg_serialize numeric_avg_deserialize numeric_avg_accum numeric_accum_inv numeric_sum f f r r 0 2281 128 2281 128 _null_ _null_ )); - -/* max */ -DATA(insert ( 2115 n 0 int8larger - int8larger - - - - - f f r r 413 20 0 0 0 _null_ _null_ )); -DATA(insert ( 2116 n 0 int4larger - int4larger - - - - - f f r r 521 23 0 0 0 _null_ _null_ )); -DATA(insert ( 2117 n 0 int2larger - int2larger - - - - - f f r r 520 21 0 0 0 _null_ _null_ )); -DATA(insert ( 2118 n 0 oidlarger - oidlarger - - - - - f f r r 610 26 0 0 0 _null_ _null_ )); -DATA(insert ( 2119 n 0 float4larger - float4larger - - - - - f f r r 623 700 0 0 0 _null_ _null_ )); -DATA(insert ( 2120 n 0 float8larger - float8larger - - - - - f f r r 674 701 0 0 0 _null_ _null_ )); -DATA(insert ( 2121 n 0 int4larger - int4larger - - - - - f f r r 563 702 0 0 0 _null_ _null_ )); -DATA(insert ( 2122 n 0 date_larger - date_larger - - - - - f f r r 1097 1082 0 0 0 _null_ _null_ )); -DATA(insert ( 2123 n 0 time_larger - time_larger - - - - - f f r r 1112 1083 0 0 0 _null_ _null_ )); -DATA(insert ( 2124 n 0 timetz_larger - timetz_larger - - - - - f f r r 1554 1266 0 0 0 _null_ _null_ )); -DATA(insert ( 2125 n 0 cashlarger - cashlarger - - - - - f f r r 903 790 0 0 0 _null_ _null_ )); -DATA(insert ( 2126 n 0 timestamp_larger - timestamp_larger - - - - - f f r r 2064 1114 0 0 0 _null_ _null_ )); -DATA(insert ( 2127 n 0 timestamptz_larger - timestamptz_larger - - - - - f f r r 1324 1184 0 0 0 _null_ _null_ )); -DATA(insert ( 2128 n 0 interval_larger - interval_larger - - - - - f f r r 1334 1186 0 0 0 _null_ _null_ )); -DATA(insert ( 2129 n 0 text_larger - text_larger - - - - - f f r r 666 25 0 0 0 _null_ _null_ )); -DATA(insert ( 2130 n 0 numeric_larger - numeric_larger - - - - - f f r r 1756 1700 0 0 0 _null_ _null_ )); -DATA(insert ( 2050 n 0 array_larger - array_larger - - - - - f f r r 1073 2277 0 0 0 _null_ _null_ )); -DATA(insert ( 2244 n 0 bpchar_larger - bpchar_larger - - - - - f f r r 1060 1042 0 0 0 _null_ _null_ )); -DATA(insert ( 2797 n 0 tidlarger - tidlarger - - - - - f f r r 2800 27 0 0 0 _null_ _null_ )); -DATA(insert ( 3526 n 0 enum_larger - enum_larger - - - - - f f r r 3519 3500 0 0 0 _null_ _null_ )); -DATA(insert ( 3564 n 0 network_larger - network_larger - - - - - f f r r 1205 869 0 0 0 _null_ _null_ )); - -/* min */ -DATA(insert ( 2131 n 0 int8smaller - int8smaller - - - - - f f r r 412 20 0 0 0 _null_ _null_ )); -DATA(insert ( 2132 n 0 int4smaller - int4smaller - - - - - f f r r 97 23 0 0 0 _null_ _null_ )); -DATA(insert ( 2133 n 0 int2smaller - int2smaller - - - - - f f r r 95 21 0 0 0 _null_ _null_ )); -DATA(insert ( 2134 n 0 oidsmaller - oidsmaller - - - - - f f r r 609 26 0 0 0 _null_ _null_ )); -DATA(insert ( 2135 n 0 float4smaller - float4smaller - - - - - f f r r 622 700 0 0 0 _null_ _null_ )); -DATA(insert ( 2136 n 0 float8smaller - float8smaller - - - - - f f r r 672 701 0 0 0 _null_ _null_ )); -DATA(insert ( 2137 n 0 int4smaller - int4smaller - - - - - f f r r 562 702 0 0 0 _null_ _null_ )); -DATA(insert ( 2138 n 0 date_smaller - date_smaller - - - - - f f r r 1095 1082 0 0 0 _null_ _null_ )); -DATA(insert ( 2139 n 0 time_smaller - time_smaller - - - - - f f r r 1110 1083 0 0 0 _null_ _null_ )); -DATA(insert ( 2140 n 0 timetz_smaller - timetz_smaller - - - - - f f r r 1552 1266 0 0 0 _null_ _null_ )); -DATA(insert ( 2141 n 0 cashsmaller - cashsmaller - - - - - f f r r 902 790 0 0 0 _null_ _null_ )); -DATA(insert ( 2142 n 0 timestamp_smaller - timestamp_smaller - - - - - f f r r 2062 1114 0 0 0 _null_ _null_ )); -DATA(insert ( 2143 n 0 timestamptz_smaller - timestamptz_smaller - - - - - f f r r 1322 1184 0 0 0 _null_ _null_ )); -DATA(insert ( 2144 n 0 interval_smaller - interval_smaller - - - - - f f r r 1332 1186 0 0 0 _null_ _null_ )); -DATA(insert ( 2145 n 0 text_smaller - text_smaller - - - - - f f r r 664 25 0 0 0 _null_ _null_ )); -DATA(insert ( 2146 n 0 numeric_smaller - numeric_smaller - - - - - f f r r 1754 1700 0 0 0 _null_ _null_ )); -DATA(insert ( 2051 n 0 array_smaller - array_smaller - - - - - f f r r 1072 2277 0 0 0 _null_ _null_ )); -DATA(insert ( 2245 n 0 bpchar_smaller - bpchar_smaller - - - - - f f r r 1058 1042 0 0 0 _null_ _null_ )); -DATA(insert ( 2798 n 0 tidsmaller - tidsmaller - - - - - f f r r 2799 27 0 0 0 _null_ _null_ )); -DATA(insert ( 3527 n 0 enum_smaller - enum_smaller - - - - - f f r r 3518 3500 0 0 0 _null_ _null_ )); -DATA(insert ( 3565 n 0 network_smaller - network_smaller - - - - - f f r r 1203 869 0 0 0 _null_ _null_ )); - -/* count */ -DATA(insert ( 2147 n 0 int8inc_any - int8pl - - int8inc_any int8dec_any - f f r r 0 20 0 20 0 0 0 )); -DATA(insert ( 2803 n 0 int8inc - int8pl - - int8inc int8dec - f f r r 0 20 0 20 0 0 0 )); - -/* var_pop */ -DATA(insert ( 2718 n 0 int8_accum numeric_var_pop numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_var_pop f f r r 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2719 n 0 int4_accum numeric_poly_var_pop numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_var_pop f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2720 n 0 int2_accum numeric_poly_var_pop numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_var_pop f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2721 n 0 float4_accum float8_var_pop float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2722 n 0 float8_accum float8_var_pop float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2723 n 0 numeric_accum numeric_var_pop numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_var_pop f f r r 0 2281 128 2281 128 _null_ _null_ )); - -/* var_samp */ -DATA(insert ( 2641 n 0 int8_accum numeric_var_samp numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_var_samp f f r r 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2642 n 0 int4_accum numeric_poly_var_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_var_samp f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2643 n 0 int2_accum numeric_poly_var_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_var_samp f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2644 n 0 float4_accum float8_var_samp float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2645 n 0 float8_accum float8_var_samp float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2646 n 0 numeric_accum numeric_var_samp numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_var_samp f f r r 0 2281 128 2281 128 _null_ _null_ )); - -/* variance: historical Postgres syntax for var_samp */ -DATA(insert ( 2148 n 0 int8_accum numeric_var_samp numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_var_samp f f r r 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2149 n 0 int4_accum numeric_poly_var_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_var_samp f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2150 n 0 int2_accum numeric_poly_var_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_var_samp f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2151 n 0 float4_accum float8_var_samp float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2152 n 0 float8_accum float8_var_samp float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2153 n 0 numeric_accum numeric_var_samp numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_var_samp f f r r 0 2281 128 2281 128 _null_ _null_ )); - -/* stddev_pop */ -DATA(insert ( 2724 n 0 int8_accum numeric_stddev_pop numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_stddev_pop f f r r 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2725 n 0 int4_accum numeric_poly_stddev_pop numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_stddev_pop f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2726 n 0 int2_accum numeric_poly_stddev_pop numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_stddev_pop f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2727 n 0 float4_accum float8_stddev_pop float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2728 n 0 float8_accum float8_stddev_pop float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2729 n 0 numeric_accum numeric_stddev_pop numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_stddev_pop f f r r 0 2281 128 2281 128 _null_ _null_ )); - -/* stddev_samp */ -DATA(insert ( 2712 n 0 int8_accum numeric_stddev_samp numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_stddev_samp f f r r 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2713 n 0 int4_accum numeric_poly_stddev_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_stddev_samp f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2714 n 0 int2_accum numeric_poly_stddev_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_stddev_samp f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2715 n 0 float4_accum float8_stddev_samp float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2716 n 0 float8_accum float8_stddev_samp float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2717 n 0 numeric_accum numeric_stddev_samp numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_stddev_samp f f r r 0 2281 128 2281 128 _null_ _null_ )); - -/* stddev: historical Postgres syntax for stddev_samp */ -DATA(insert ( 2154 n 0 int8_accum numeric_stddev_samp numeric_combine numeric_serialize numeric_deserialize int8_accum int8_accum_inv numeric_stddev_samp f f r r 0 2281 128 2281 128 _null_ _null_ )); -DATA(insert ( 2155 n 0 int4_accum numeric_poly_stddev_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int4_accum int4_accum_inv numeric_poly_stddev_samp f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2156 n 0 int2_accum numeric_poly_stddev_samp numeric_poly_combine numeric_poly_serialize numeric_poly_deserialize int2_accum int2_accum_inv numeric_poly_stddev_samp f f r r 0 2281 48 2281 48 _null_ _null_ )); -DATA(insert ( 2157 n 0 float4_accum float8_stddev_samp float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2158 n 0 float8_accum float8_stddev_samp float8_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0}" _null_ )); -DATA(insert ( 2159 n 0 numeric_accum numeric_stddev_samp numeric_combine numeric_serialize numeric_deserialize numeric_accum numeric_accum_inv numeric_stddev_samp f f r r 0 2281 128 2281 128 _null_ _null_ )); - -/* SQL2003 binary regression aggregates */ -DATA(insert ( 2818 n 0 int8inc_float8_float8 - int8pl - - - - - f f r r 0 20 0 0 0 0 _null_ )); -DATA(insert ( 2819 n 0 float8_regr_accum float8_regr_sxx float8_regr_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2820 n 0 float8_regr_accum float8_regr_syy float8_regr_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2821 n 0 float8_regr_accum float8_regr_sxy float8_regr_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2822 n 0 float8_regr_accum float8_regr_avgx float8_regr_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2823 n 0 float8_regr_accum float8_regr_avgy float8_regr_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2824 n 0 float8_regr_accum float8_regr_r2 float8_regr_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2825 n 0 float8_regr_accum float8_regr_slope float8_regr_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2826 n 0 float8_regr_accum float8_regr_intercept float8_regr_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2827 n 0 float8_regr_accum float8_covar_pop float8_regr_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2828 n 0 float8_regr_accum float8_covar_samp float8_regr_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); -DATA(insert ( 2829 n 0 float8_regr_accum float8_corr float8_regr_combine - - - - - f f r r 0 1022 0 0 0 "{0,0,0,0,0,0}" _null_ )); - -/* boolean-and and boolean-or */ -DATA(insert ( 2517 n 0 booland_statefunc - booland_statefunc - - bool_accum bool_accum_inv bool_alltrue f f r r 58 16 0 2281 16 _null_ _null_ )); -DATA(insert ( 2518 n 0 boolor_statefunc - boolor_statefunc - - bool_accum bool_accum_inv bool_anytrue f f r r 59 16 0 2281 16 _null_ _null_ )); -DATA(insert ( 2519 n 0 booland_statefunc - booland_statefunc - - bool_accum bool_accum_inv bool_alltrue f f r r 58 16 0 2281 16 _null_ _null_ )); - -/* bitwise integer */ -DATA(insert ( 2236 n 0 int2and - int2and - - - - - f f r r 0 21 0 0 0 _null_ _null_ )); -DATA(insert ( 2237 n 0 int2or - int2or - - - - - f f r r 0 21 0 0 0 _null_ _null_ )); -DATA(insert ( 2238 n 0 int4and - int4and - - - - - f f r r 0 23 0 0 0 _null_ _null_ )); -DATA(insert ( 2239 n 0 int4or - int4or - - - - - f f r r 0 23 0 0 0 _null_ _null_ )); -DATA(insert ( 2240 n 0 int8and - int8and - - - - - f f r r 0 20 0 0 0 _null_ _null_ )); -DATA(insert ( 2241 n 0 int8or - int8or - - - - - f f r r 0 20 0 0 0 _null_ _null_ )); -DATA(insert ( 2242 n 0 bitand - bitand - - - - - f f r r 0 1560 0 0 0 _null_ _null_ )); -DATA(insert ( 2243 n 0 bitor - bitor - - - - - f f r r 0 1560 0 0 0 _null_ _null_ )); - -/* xml */ -DATA(insert ( 2901 n 0 xmlconcat2 - - - - - - - f f r r 0 142 0 0 0 _null_ _null_ )); - -/* array */ -DATA(insert ( 2335 n 0 array_agg_transfn array_agg_finalfn - - - - - - t f r r 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 4053 n 0 array_agg_array_transfn array_agg_array_finalfn - - - - - - t f r r 0 2281 0 0 0 _null_ _null_ )); - -/* text */ -DATA(insert ( 3538 n 0 string_agg_transfn string_agg_finalfn - - - - - - f f r r 0 2281 0 0 0 _null_ _null_ )); - -/* bytea */ -DATA(insert ( 3545 n 0 bytea_string_agg_transfn bytea_string_agg_finalfn - - - - - - f f r r 0 2281 0 0 0 _null_ _null_ )); - -/* json */ -DATA(insert ( 3175 n 0 json_agg_transfn json_agg_finalfn - - - - - - f f r r 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3197 n 0 json_object_agg_transfn json_object_agg_finalfn - - - - - - f f r r 0 2281 0 0 0 _null_ _null_ )); - -/* jsonb */ -DATA(insert ( 3267 n 0 jsonb_agg_transfn jsonb_agg_finalfn - - - - - - f f r r 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3270 n 0 jsonb_object_agg_transfn jsonb_object_agg_finalfn - - - - - - f f r r 0 2281 0 0 0 _null_ _null_ )); - -/* ordered-set and hypothetical-set aggregates */ -DATA(insert ( 3972 o 1 ordered_set_transition percentile_disc_final - - - - - - t f s s 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3974 o 1 ordered_set_transition percentile_cont_float8_final - - - - - - f f s s 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3976 o 1 ordered_set_transition percentile_cont_interval_final - - - - - - f f s s 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3978 o 1 ordered_set_transition percentile_disc_multi_final - - - - - - t f s s 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3980 o 1 ordered_set_transition percentile_cont_float8_multi_final - - - - - - f f s s 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3982 o 1 ordered_set_transition percentile_cont_interval_multi_final - - - - - - f f s s 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3984 o 0 ordered_set_transition mode_final - - - - - - t f s s 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3986 h 1 ordered_set_transition_multi rank_final - - - - - - t f w w 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3988 h 1 ordered_set_transition_multi percent_rank_final - - - - - - t f w w 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3990 h 1 ordered_set_transition_multi cume_dist_final - - - - - - t f w w 0 2281 0 0 0 _null_ _null_ )); -DATA(insert ( 3992 h 1 ordered_set_transition_multi dense_rank_final - - - - - - t f w w 0 2281 0 0 0 _null_ _null_ )); +#endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_AGGREGATE_H */ diff --git a/src/include/catalog/pg_am.dat b/src/include/catalog/pg_am.dat new file mode 100644 index 0000000000..8722cacaae --- /dev/null +++ b/src/include/catalog/pg_am.dat @@ -0,0 +1,34 @@ +#---------------------------------------------------------------------- +# +# pg_am.dat +# Initial contents of the pg_am system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_am.dat +# +#---------------------------------------------------------------------- + +[ + +{ oid => '403', oid_symbol => 'BTREE_AM_OID', + descr => 'b-tree index access method', + amname => 'btree', amhandler => 'bthandler', amtype => 'i' }, +{ oid => '405', oid_symbol => 'HASH_AM_OID', + descr => 'hash index access method', + amname => 'hash', amhandler => 'hashhandler', amtype => 'i' }, +{ oid => '783', oid_symbol => 'GIST_AM_OID', + descr => 'GiST index access method', + amname => 'gist', amhandler => 'gisthandler', amtype => 'i' }, +{ oid => '2742', oid_symbol => 'GIN_AM_OID', + descr => 'GIN index access method', + amname => 'gin', amhandler => 'ginhandler', amtype => 'i' }, +{ oid => '4000', oid_symbol => 'SPGIST_AM_OID', + descr => 'SP-GiST index access method', + amname => 'spgist', amhandler => 'spghandler', amtype => 'i' }, +{ oid => '3580', oid_symbol => 'BRIN_AM_OID', + descr => 'block range index (BRIN) access method', + amname => 'brin', amhandler => 'brinhandler', amtype => 'i' }, + +] diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h index 2e785c4cec..f821749af8 100644 --- a/src/include/catalog/pg_am.h +++ b/src/include/catalog/pg_am.h @@ -2,7 +2,6 @@ * * pg_am.h * definition of the system "access method" relation (pg_am) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,11 +10,8 @@ * src/include/catalog/pg_am.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -23,19 +19,23 @@ #define PG_AM_H #include "catalog/genbki.h" +#include "catalog/pg_am_d.h" /* ---------------- * pg_am definition. cpp turns this into * typedef struct FormData_pg_am * ---------------- */ -#define AccessMethodRelationId 2601 - -CATALOG(pg_am,2601) +CATALOG(pg_am,2601,AccessMethodRelationId) { - NameData amname; /* access method name */ - regproc amhandler; /* handler function */ - char amtype; /* see AMTYPE_xxx constants below */ + /* access method name */ + NameData amname; + + /* handler function */ + regproc amhandler BKI_LOOKUP(pg_proc); + + /* see AMTYPE_xxx constants below */ + char amtype; } FormData_pg_am; /* ---------------- @@ -45,43 +45,13 @@ CATALOG(pg_am,2601) */ typedef FormData_pg_am *Form_pg_am; -/* ---------------- - * compiler constants for pg_am - * ---------------- - */ -#define Natts_pg_am 3 -#define Anum_pg_am_amname 1 -#define Anum_pg_am_amhandler 2 -#define Anum_pg_am_amtype 3 +#ifdef EXPOSE_TO_CLIENT_CODE -/* ---------------- - * compiler constant for amtype - * ---------------- +/* + * Allowed values for amtype */ #define AMTYPE_INDEX 'i' /* index access method */ -/* ---------------- - * initial contents of pg_am - * ---------------- - */ - -DATA(insert OID = 403 ( btree bthandler i )); -DESCR("b-tree index access method"); -#define BTREE_AM_OID 403 -DATA(insert OID = 405 ( hash hashhandler i )); -DESCR("hash index access method"); -#define HASH_AM_OID 405 -DATA(insert OID = 783 ( gist gisthandler i )); -DESCR("GiST index access method"); -#define GIST_AM_OID 783 -DATA(insert OID = 2742 ( gin ginhandler i )); -DESCR("GIN index access method"); -#define GIN_AM_OID 2742 -DATA(insert OID = 4000 ( spgist spghandler i )); -DESCR("SP-GiST index access method"); -#define SPGIST_AM_OID 4000 -DATA(insert OID = 3580 ( brin brinhandler i )); -DESCR("block range index (BRIN) access method"); -#define BRIN_AM_OID 3580 +#endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_AM_H */ diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat new file mode 100644 index 0000000000..b1cf8ec5fc --- /dev/null +++ b/src/include/catalog/pg_amop.dat @@ -0,0 +1,2472 @@ +#---------------------------------------------------------------------- +# +# pg_amop.dat +# Initial contents of the pg_amop system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_amop.dat +# +#---------------------------------------------------------------------- + +[ + +# btree integer_ops + +# default operators int2 +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int2,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int2,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int2,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int2,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int2,int2)', + amopmethod => 'btree' }, + +# crosstype operators int24 +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int2,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int2,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int2,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int2,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int2,int4)', + amopmethod => 'btree' }, + +# crosstype operators int28 +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int2,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int2,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int2,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int2,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int2,int8)', + amopmethod => 'btree' }, + +# default operators int4 +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int4,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int4,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int4,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int4,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int4,int4)', + amopmethod => 'btree' }, + +# crosstype operators int42 +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int4,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int4,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int4,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int4,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int4,int2)', + amopmethod => 'btree' }, + +# crosstype operators int48 +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int4,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int4,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int4,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int4,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int4,int8)', + amopmethod => 'btree' }, + +# default operators int8 +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int8,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int8,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int8,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int8,int8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int8,int8)', + amopmethod => 'btree' }, + +# crosstype operators int82 +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int8,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int8,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int8,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int8,int2)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int8,int2)', + amopmethod => 'btree' }, + +# crosstype operators int84 +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int8,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int8,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int8,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int8,int4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int8,int4)', + amopmethod => 'btree' }, + +# btree oid_ops + +{ amopfamily => 'btree/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid', + amopstrategy => '1', amopopr => '<(oid,oid)', amopmethod => 'btree' }, +{ amopfamily => 'btree/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid', + amopstrategy => '2', amopopr => '<=(oid,oid)', amopmethod => 'btree' }, +{ amopfamily => 'btree/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid', + amopstrategy => '3', amopopr => '=(oid,oid)', amopmethod => 'btree' }, +{ amopfamily => 'btree/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid', + amopstrategy => '4', amopopr => '>=(oid,oid)', amopmethod => 'btree' }, +{ amopfamily => 'btree/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid', + amopstrategy => '5', amopopr => '>(oid,oid)', amopmethod => 'btree' }, + +# btree tid_ops + +{ amopfamily => 'btree/tid_ops', amoplefttype => 'tid', amoprighttype => 'tid', + amopstrategy => '1', amopopr => '<(tid,tid)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tid_ops', amoplefttype => 'tid', amoprighttype => 'tid', + amopstrategy => '2', amopopr => '<=(tid,tid)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tid_ops', amoplefttype => 'tid', amoprighttype => 'tid', + amopstrategy => '3', amopopr => '=(tid,tid)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tid_ops', amoplefttype => 'tid', amoprighttype => 'tid', + amopstrategy => '4', amopopr => '>=(tid,tid)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tid_ops', amoplefttype => 'tid', amoprighttype => 'tid', + amopstrategy => '5', amopopr => '>(tid,tid)', amopmethod => 'btree' }, + +# btree oidvector_ops + +{ amopfamily => 'btree/oidvector_ops', amoplefttype => 'oidvector', + amoprighttype => 'oidvector', amopstrategy => '1', + amopopr => '<(oidvector,oidvector)', amopmethod => 'btree' }, +{ amopfamily => 'btree/oidvector_ops', amoplefttype => 'oidvector', + amoprighttype => 'oidvector', amopstrategy => '2', + amopopr => '<=(oidvector,oidvector)', amopmethod => 'btree' }, +{ amopfamily => 'btree/oidvector_ops', amoplefttype => 'oidvector', + amoprighttype => 'oidvector', amopstrategy => '3', + amopopr => '=(oidvector,oidvector)', amopmethod => 'btree' }, +{ amopfamily => 'btree/oidvector_ops', amoplefttype => 'oidvector', + amoprighttype => 'oidvector', amopstrategy => '4', + amopopr => '>=(oidvector,oidvector)', amopmethod => 'btree' }, +{ amopfamily => 'btree/oidvector_ops', amoplefttype => 'oidvector', + amoprighttype => 'oidvector', amopstrategy => '5', + amopopr => '>(oidvector,oidvector)', amopmethod => 'btree' }, + +# btree float_ops + +# default operators float4 +{ amopfamily => 'btree/float_ops', amoplefttype => 'float4', + amoprighttype => 'float4', amopstrategy => '1', amopopr => '<(float4,float4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float4', + amoprighttype => 'float4', amopstrategy => '2', + amopopr => '<=(float4,float4)', amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float4', + amoprighttype => 'float4', amopstrategy => '3', amopopr => '=(float4,float4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float4', + amoprighttype => 'float4', amopstrategy => '4', + amopopr => '>=(float4,float4)', amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float4', + amoprighttype => 'float4', amopstrategy => '5', amopopr => '>(float4,float4)', + amopmethod => 'btree' }, + +# crosstype operators float48 +{ amopfamily => 'btree/float_ops', amoplefttype => 'float4', + amoprighttype => 'float8', amopstrategy => '1', amopopr => '<(float4,float8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float4', + amoprighttype => 'float8', amopstrategy => '2', + amopopr => '<=(float4,float8)', amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float4', + amoprighttype => 'float8', amopstrategy => '3', amopopr => '=(float4,float8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float4', + amoprighttype => 'float8', amopstrategy => '4', + amopopr => '>=(float4,float8)', amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float4', + amoprighttype => 'float8', amopstrategy => '5', amopopr => '>(float4,float8)', + amopmethod => 'btree' }, + +# default operators float8 +{ amopfamily => 'btree/float_ops', amoplefttype => 'float8', + amoprighttype => 'float8', amopstrategy => '1', amopopr => '<(float8,float8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float8', + amoprighttype => 'float8', amopstrategy => '2', + amopopr => '<=(float8,float8)', amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float8', + amoprighttype => 'float8', amopstrategy => '3', amopopr => '=(float8,float8)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float8', + amoprighttype => 'float8', amopstrategy => '4', + amopopr => '>=(float8,float8)', amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float8', + amoprighttype => 'float8', amopstrategy => '5', amopopr => '>(float8,float8)', + amopmethod => 'btree' }, + +# crosstype operators float84 +{ amopfamily => 'btree/float_ops', amoplefttype => 'float8', + amoprighttype => 'float4', amopstrategy => '1', amopopr => '<(float8,float4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float8', + amoprighttype => 'float4', amopstrategy => '2', + amopopr => '<=(float8,float4)', amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float8', + amoprighttype => 'float4', amopstrategy => '3', amopopr => '=(float8,float4)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float8', + amoprighttype => 'float4', amopstrategy => '4', + amopopr => '>=(float8,float4)', amopmethod => 'btree' }, +{ amopfamily => 'btree/float_ops', amoplefttype => 'float8', + amoprighttype => 'float4', amopstrategy => '5', amopopr => '>(float8,float4)', + amopmethod => 'btree' }, + +# btree char_ops + +{ amopfamily => 'btree/char_ops', amoplefttype => 'char', + amoprighttype => 'char', amopstrategy => '1', amopopr => '<(char,char)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/char_ops', amoplefttype => 'char', + amoprighttype => 'char', amopstrategy => '2', amopopr => '<=(char,char)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/char_ops', amoplefttype => 'char', + amoprighttype => 'char', amopstrategy => '3', amopopr => '=(char,char)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/char_ops', amoplefttype => 'char', + amoprighttype => 'char', amopstrategy => '4', amopopr => '>=(char,char)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/char_ops', amoplefttype => 'char', + amoprighttype => 'char', amopstrategy => '5', amopopr => '>(char,char)', + amopmethod => 'btree' }, + +# btree name_ops + +{ amopfamily => 'btree/name_ops', amoplefttype => 'name', + amoprighttype => 'name', amopstrategy => '1', amopopr => '<(name,name)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/name_ops', amoplefttype => 'name', + amoprighttype => 'name', amopstrategy => '2', amopopr => '<=(name,name)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/name_ops', amoplefttype => 'name', + amoprighttype => 'name', amopstrategy => '3', amopopr => '=(name,name)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/name_ops', amoplefttype => 'name', + amoprighttype => 'name', amopstrategy => '4', amopopr => '>=(name,name)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/name_ops', amoplefttype => 'name', + amoprighttype => 'name', amopstrategy => '5', amopopr => '>(name,name)', + amopmethod => 'btree' }, + +# btree text_ops + +{ amopfamily => 'btree/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '1', amopopr => '<(text,text)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '2', amopopr => '<=(text,text)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '3', amopopr => '=(text,text)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '4', amopopr => '>=(text,text)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '5', amopopr => '>(text,text)', + amopmethod => 'btree' }, + +# btree bpchar_ops + +{ amopfamily => 'btree/bpchar_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '1', amopopr => '<(bpchar,bpchar)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/bpchar_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '2', + amopopr => '<=(bpchar,bpchar)', amopmethod => 'btree' }, +{ amopfamily => 'btree/bpchar_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '3', amopopr => '=(bpchar,bpchar)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/bpchar_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '4', + amopopr => '>=(bpchar,bpchar)', amopmethod => 'btree' }, +{ amopfamily => 'btree/bpchar_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '5', amopopr => '>(bpchar,bpchar)', + amopmethod => 'btree' }, + +# btree bytea_ops + +{ amopfamily => 'btree/bytea_ops', amoplefttype => 'bytea', + amoprighttype => 'bytea', amopstrategy => '1', amopopr => '<(bytea,bytea)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/bytea_ops', amoplefttype => 'bytea', + amoprighttype => 'bytea', amopstrategy => '2', amopopr => '<=(bytea,bytea)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/bytea_ops', amoplefttype => 'bytea', + amoprighttype => 'bytea', amopstrategy => '3', amopopr => '=(bytea,bytea)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/bytea_ops', amoplefttype => 'bytea', + amoprighttype => 'bytea', amopstrategy => '4', amopopr => '>=(bytea,bytea)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/bytea_ops', amoplefttype => 'bytea', + amoprighttype => 'bytea', amopstrategy => '5', amopopr => '>(bytea,bytea)', + amopmethod => 'btree' }, + +# btree abstime_ops + +{ amopfamily => 'btree/abstime_ops', amoplefttype => 'abstime', + amoprighttype => 'abstime', amopstrategy => '1', + amopopr => '<(abstime,abstime)', amopmethod => 'btree' }, +{ amopfamily => 'btree/abstime_ops', amoplefttype => 'abstime', + amoprighttype => 'abstime', amopstrategy => '2', + amopopr => '<=(abstime,abstime)', amopmethod => 'btree' }, +{ amopfamily => 'btree/abstime_ops', amoplefttype => 'abstime', + amoprighttype => 'abstime', amopstrategy => '3', + amopopr => '=(abstime,abstime)', amopmethod => 'btree' }, +{ amopfamily => 'btree/abstime_ops', amoplefttype => 'abstime', + amoprighttype => 'abstime', amopstrategy => '4', + amopopr => '>=(abstime,abstime)', amopmethod => 'btree' }, +{ amopfamily => 'btree/abstime_ops', amoplefttype => 'abstime', + amoprighttype => 'abstime', amopstrategy => '5', + amopopr => '>(abstime,abstime)', amopmethod => 'btree' }, + +# btree datetime_ops + +# default operators date +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'date', amopstrategy => '1', amopopr => '<(date,date)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'date', amopstrategy => '2', amopopr => '<=(date,date)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'date', amopstrategy => '3', amopopr => '=(date,date)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'date', amopstrategy => '4', amopopr => '>=(date,date)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'date', amopstrategy => '5', amopopr => '>(date,date)', + amopmethod => 'btree' }, + +# crosstype operators vs timestamp +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'timestamp', amopstrategy => '1', + amopopr => '<(date,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'timestamp', amopstrategy => '2', + amopopr => '<=(date,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'timestamp', amopstrategy => '3', + amopopr => '=(date,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'timestamp', amopstrategy => '4', + amopopr => '>=(date,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'timestamp', amopstrategy => '5', + amopopr => '>(date,timestamp)', amopmethod => 'btree' }, + +# crosstype operators vs timestamptz +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'timestamptz', amopstrategy => '1', + amopopr => '<(date,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'timestamptz', amopstrategy => '2', + amopopr => '<=(date,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'timestamptz', amopstrategy => '3', + amopopr => '=(date,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'timestamptz', amopstrategy => '4', + amopopr => '>=(date,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date', + amoprighttype => 'timestamptz', amopstrategy => '5', + amopopr => '>(date,timestamptz)', amopmethod => 'btree' }, + +# default operators timestamp +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamp', amopstrategy => '1', + amopopr => '<(timestamp,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamp', amopstrategy => '2', + amopopr => '<=(timestamp,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamp', amopstrategy => '3', + amopopr => '=(timestamp,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamp', amopstrategy => '4', + amopopr => '>=(timestamp,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamp', amopstrategy => '5', + amopopr => '>(timestamp,timestamp)', amopmethod => 'btree' }, + +# crosstype operators vs date +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'date', amopstrategy => '1', amopopr => '<(timestamp,date)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'date', amopstrategy => '2', amopopr => '<=(timestamp,date)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'date', amopstrategy => '3', amopopr => '=(timestamp,date)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'date', amopstrategy => '4', amopopr => '>=(timestamp,date)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'date', amopstrategy => '5', amopopr => '>(timestamp,date)', + amopmethod => 'btree' }, + +# crosstype operators vs timestamptz +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamptz', amopstrategy => '1', + amopopr => '<(timestamp,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamptz', amopstrategy => '2', + amopopr => '<=(timestamp,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamptz', amopstrategy => '3', + amopopr => '=(timestamp,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamptz', amopstrategy => '4', + amopopr => '>=(timestamp,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamptz', amopstrategy => '5', + amopopr => '>(timestamp,timestamptz)', amopmethod => 'btree' }, + +# default operators timestamptz +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamptz', amopstrategy => '1', + amopopr => '<(timestamptz,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamptz', amopstrategy => '2', + amopopr => '<=(timestamptz,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamptz', amopstrategy => '3', + amopopr => '=(timestamptz,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamptz', amopstrategy => '4', + amopopr => '>=(timestamptz,timestamptz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamptz', amopstrategy => '5', + amopopr => '>(timestamptz,timestamptz)', amopmethod => 'btree' }, + +# crosstype operators vs date +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'date', amopstrategy => '1', + amopopr => '<(timestamptz,date)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'date', amopstrategy => '2', + amopopr => '<=(timestamptz,date)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'date', amopstrategy => '3', + amopopr => '=(timestamptz,date)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'date', amopstrategy => '4', + amopopr => '>=(timestamptz,date)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'date', amopstrategy => '5', + amopopr => '>(timestamptz,date)', amopmethod => 'btree' }, + +# crosstype operators vs timestamp +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamp', amopstrategy => '1', + amopopr => '<(timestamptz,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamp', amopstrategy => '2', + amopopr => '<=(timestamptz,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamp', amopstrategy => '3', + amopopr => '=(timestamptz,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamp', amopstrategy => '4', + amopopr => '>=(timestamptz,timestamp)', amopmethod => 'btree' }, +{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamp', amopstrategy => '5', + amopopr => '>(timestamptz,timestamp)', amopmethod => 'btree' }, + +# btree time_ops + +{ amopfamily => 'btree/time_ops', amoplefttype => 'time', + amoprighttype => 'time', amopstrategy => '1', amopopr => '<(time,time)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/time_ops', amoplefttype => 'time', + amoprighttype => 'time', amopstrategy => '2', amopopr => '<=(time,time)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/time_ops', amoplefttype => 'time', + amoprighttype => 'time', amopstrategy => '3', amopopr => '=(time,time)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/time_ops', amoplefttype => 'time', + amoprighttype => 'time', amopstrategy => '4', amopopr => '>=(time,time)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/time_ops', amoplefttype => 'time', + amoprighttype => 'time', amopstrategy => '5', amopopr => '>(time,time)', + amopmethod => 'btree' }, + +# btree timetz_ops + +{ amopfamily => 'btree/timetz_ops', amoplefttype => 'timetz', + amoprighttype => 'timetz', amopstrategy => '1', amopopr => '<(timetz,timetz)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/timetz_ops', amoplefttype => 'timetz', + amoprighttype => 'timetz', amopstrategy => '2', + amopopr => '<=(timetz,timetz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/timetz_ops', amoplefttype => 'timetz', + amoprighttype => 'timetz', amopstrategy => '3', amopopr => '=(timetz,timetz)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/timetz_ops', amoplefttype => 'timetz', + amoprighttype => 'timetz', amopstrategy => '4', + amopopr => '>=(timetz,timetz)', amopmethod => 'btree' }, +{ amopfamily => 'btree/timetz_ops', amoplefttype => 'timetz', + amoprighttype => 'timetz', amopstrategy => '5', amopopr => '>(timetz,timetz)', + amopmethod => 'btree' }, + +# btree interval_ops + +{ amopfamily => 'btree/interval_ops', amoplefttype => 'interval', + amoprighttype => 'interval', amopstrategy => '1', + amopopr => '<(interval,interval)', amopmethod => 'btree' }, +{ amopfamily => 'btree/interval_ops', amoplefttype => 'interval', + amoprighttype => 'interval', amopstrategy => '2', + amopopr => '<=(interval,interval)', amopmethod => 'btree' }, +{ amopfamily => 'btree/interval_ops', amoplefttype => 'interval', + amoprighttype => 'interval', amopstrategy => '3', + amopopr => '=(interval,interval)', amopmethod => 'btree' }, +{ amopfamily => 'btree/interval_ops', amoplefttype => 'interval', + amoprighttype => 'interval', amopstrategy => '4', + amopopr => '>=(interval,interval)', amopmethod => 'btree' }, +{ amopfamily => 'btree/interval_ops', amoplefttype => 'interval', + amoprighttype => 'interval', amopstrategy => '5', + amopopr => '>(interval,interval)', amopmethod => 'btree' }, + +# btree macaddr + +{ amopfamily => 'btree/macaddr_ops', amoplefttype => 'macaddr', + amoprighttype => 'macaddr', amopstrategy => '1', + amopopr => '<(macaddr,macaddr)', amopmethod => 'btree' }, +{ amopfamily => 'btree/macaddr_ops', amoplefttype => 'macaddr', + amoprighttype => 'macaddr', amopstrategy => '2', + amopopr => '<=(macaddr,macaddr)', amopmethod => 'btree' }, +{ amopfamily => 'btree/macaddr_ops', amoplefttype => 'macaddr', + amoprighttype => 'macaddr', amopstrategy => '3', + amopopr => '=(macaddr,macaddr)', amopmethod => 'btree' }, +{ amopfamily => 'btree/macaddr_ops', amoplefttype => 'macaddr', + amoprighttype => 'macaddr', amopstrategy => '4', + amopopr => '>=(macaddr,macaddr)', amopmethod => 'btree' }, +{ amopfamily => 'btree/macaddr_ops', amoplefttype => 'macaddr', + amoprighttype => 'macaddr', amopstrategy => '5', + amopopr => '>(macaddr,macaddr)', amopmethod => 'btree' }, + +# btree macaddr8 + +{ amopfamily => 'btree/macaddr8_ops', amoplefttype => 'macaddr8', + amoprighttype => 'macaddr8', amopstrategy => '1', + amopopr => '<(macaddr8,macaddr8)', amopmethod => 'btree' }, +{ amopfamily => 'btree/macaddr8_ops', amoplefttype => 'macaddr8', + amoprighttype => 'macaddr8', amopstrategy => '2', + amopopr => '<=(macaddr8,macaddr8)', amopmethod => 'btree' }, +{ amopfamily => 'btree/macaddr8_ops', amoplefttype => 'macaddr8', + amoprighttype => 'macaddr8', amopstrategy => '3', + amopopr => '=(macaddr8,macaddr8)', amopmethod => 'btree' }, +{ amopfamily => 'btree/macaddr8_ops', amoplefttype => 'macaddr8', + amoprighttype => 'macaddr8', amopstrategy => '4', + amopopr => '>=(macaddr8,macaddr8)', amopmethod => 'btree' }, +{ amopfamily => 'btree/macaddr8_ops', amoplefttype => 'macaddr8', + amoprighttype => 'macaddr8', amopstrategy => '5', + amopopr => '>(macaddr8,macaddr8)', amopmethod => 'btree' }, + +# btree network + +{ amopfamily => 'btree/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '1', amopopr => '<(inet,inet)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '2', amopopr => '<=(inet,inet)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '3', amopopr => '=(inet,inet)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '4', amopopr => '>=(inet,inet)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '5', amopopr => '>(inet,inet)', + amopmethod => 'btree' }, + +# btree numeric + +{ amopfamily => 'btree/numeric_ops', amoplefttype => 'numeric', + amoprighttype => 'numeric', amopstrategy => '1', + amopopr => '<(numeric,numeric)', amopmethod => 'btree' }, +{ amopfamily => 'btree/numeric_ops', amoplefttype => 'numeric', + amoprighttype => 'numeric', amopstrategy => '2', + amopopr => '<=(numeric,numeric)', amopmethod => 'btree' }, +{ amopfamily => 'btree/numeric_ops', amoplefttype => 'numeric', + amoprighttype => 'numeric', amopstrategy => '3', + amopopr => '=(numeric,numeric)', amopmethod => 'btree' }, +{ amopfamily => 'btree/numeric_ops', amoplefttype => 'numeric', + amoprighttype => 'numeric', amopstrategy => '4', + amopopr => '>=(numeric,numeric)', amopmethod => 'btree' }, +{ amopfamily => 'btree/numeric_ops', amoplefttype => 'numeric', + amoprighttype => 'numeric', amopstrategy => '5', + amopopr => '>(numeric,numeric)', amopmethod => 'btree' }, + +# btree bool + +{ amopfamily => 'btree/bool_ops', amoplefttype => 'bool', + amoprighttype => 'bool', amopstrategy => '1', amopopr => '<(bool,bool)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/bool_ops', amoplefttype => 'bool', + amoprighttype => 'bool', amopstrategy => '2', amopopr => '<=(bool,bool)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/bool_ops', amoplefttype => 'bool', + amoprighttype => 'bool', amopstrategy => '3', amopopr => '=(bool,bool)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/bool_ops', amoplefttype => 'bool', + amoprighttype => 'bool', amopstrategy => '4', amopopr => '>=(bool,bool)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/bool_ops', amoplefttype => 'bool', + amoprighttype => 'bool', amopstrategy => '5', amopopr => '>(bool,bool)', + amopmethod => 'btree' }, + +# btree bit + +{ amopfamily => 'btree/bit_ops', amoplefttype => 'bit', amoprighttype => 'bit', + amopstrategy => '1', amopopr => '<(bit,bit)', amopmethod => 'btree' }, +{ amopfamily => 'btree/bit_ops', amoplefttype => 'bit', amoprighttype => 'bit', + amopstrategy => '2', amopopr => '<=(bit,bit)', amopmethod => 'btree' }, +{ amopfamily => 'btree/bit_ops', amoplefttype => 'bit', amoprighttype => 'bit', + amopstrategy => '3', amopopr => '=(bit,bit)', amopmethod => 'btree' }, +{ amopfamily => 'btree/bit_ops', amoplefttype => 'bit', amoprighttype => 'bit', + amopstrategy => '4', amopopr => '>=(bit,bit)', amopmethod => 'btree' }, +{ amopfamily => 'btree/bit_ops', amoplefttype => 'bit', amoprighttype => 'bit', + amopstrategy => '5', amopopr => '>(bit,bit)', amopmethod => 'btree' }, + +# btree varbit + +{ amopfamily => 'btree/varbit_ops', amoplefttype => 'varbit', + amoprighttype => 'varbit', amopstrategy => '1', amopopr => '<(varbit,varbit)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/varbit_ops', amoplefttype => 'varbit', + amoprighttype => 'varbit', amopstrategy => '2', + amopopr => '<=(varbit,varbit)', amopmethod => 'btree' }, +{ amopfamily => 'btree/varbit_ops', amoplefttype => 'varbit', + amoprighttype => 'varbit', amopstrategy => '3', amopopr => '=(varbit,varbit)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/varbit_ops', amoplefttype => 'varbit', + amoprighttype => 'varbit', amopstrategy => '4', + amopopr => '>=(varbit,varbit)', amopmethod => 'btree' }, +{ amopfamily => 'btree/varbit_ops', amoplefttype => 'varbit', + amoprighttype => 'varbit', amopstrategy => '5', amopopr => '>(varbit,varbit)', + amopmethod => 'btree' }, + +# btree text pattern + +{ amopfamily => 'btree/text_pattern_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '1', amopopr => '~<~(text,text)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/text_pattern_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '2', amopopr => '~<=~(text,text)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/text_pattern_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '3', amopopr => '=(text,text)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/text_pattern_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '4', amopopr => '~>=~(text,text)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/text_pattern_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '5', amopopr => '~>~(text,text)', + amopmethod => 'btree' }, + +# btree bpchar pattern + +{ amopfamily => 'btree/bpchar_pattern_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '1', + amopopr => '~<~(bpchar,bpchar)', amopmethod => 'btree' }, +{ amopfamily => 'btree/bpchar_pattern_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '2', + amopopr => '~<=~(bpchar,bpchar)', amopmethod => 'btree' }, +{ amopfamily => 'btree/bpchar_pattern_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '3', amopopr => '=(bpchar,bpchar)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/bpchar_pattern_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '4', + amopopr => '~>=~(bpchar,bpchar)', amopmethod => 'btree' }, +{ amopfamily => 'btree/bpchar_pattern_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '5', + amopopr => '~>~(bpchar,bpchar)', amopmethod => 'btree' }, + +# btree money_ops + +{ amopfamily => 'btree/money_ops', amoplefttype => 'money', + amoprighttype => 'money', amopstrategy => '1', amopopr => '<(money,money)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/money_ops', amoplefttype => 'money', + amoprighttype => 'money', amopstrategy => '2', amopopr => '<=(money,money)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/money_ops', amoplefttype => 'money', + amoprighttype => 'money', amopstrategy => '3', amopopr => '=(money,money)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/money_ops', amoplefttype => 'money', + amoprighttype => 'money', amopstrategy => '4', amopopr => '>=(money,money)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/money_ops', amoplefttype => 'money', + amoprighttype => 'money', amopstrategy => '5', amopopr => '>(money,money)', + amopmethod => 'btree' }, + +# btree reltime_ops + +{ amopfamily => 'btree/reltime_ops', amoplefttype => 'reltime', + amoprighttype => 'reltime', amopstrategy => '1', + amopopr => '<(reltime,reltime)', amopmethod => 'btree' }, +{ amopfamily => 'btree/reltime_ops', amoplefttype => 'reltime', + amoprighttype => 'reltime', amopstrategy => '2', + amopopr => '<=(reltime,reltime)', amopmethod => 'btree' }, +{ amopfamily => 'btree/reltime_ops', amoplefttype => 'reltime', + amoprighttype => 'reltime', amopstrategy => '3', + amopopr => '=(reltime,reltime)', amopmethod => 'btree' }, +{ amopfamily => 'btree/reltime_ops', amoplefttype => 'reltime', + amoprighttype => 'reltime', amopstrategy => '4', + amopopr => '>=(reltime,reltime)', amopmethod => 'btree' }, +{ amopfamily => 'btree/reltime_ops', amoplefttype => 'reltime', + amoprighttype => 'reltime', amopstrategy => '5', + amopopr => '>(reltime,reltime)', amopmethod => 'btree' }, + +# btree tinterval_ops + +{ amopfamily => 'btree/tinterval_ops', amoplefttype => 'tinterval', + amoprighttype => 'tinterval', amopstrategy => '1', + amopopr => '<(tinterval,tinterval)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tinterval_ops', amoplefttype => 'tinterval', + amoprighttype => 'tinterval', amopstrategy => '2', + amopopr => '<=(tinterval,tinterval)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tinterval_ops', amoplefttype => 'tinterval', + amoprighttype => 'tinterval', amopstrategy => '3', + amopopr => '=(tinterval,tinterval)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tinterval_ops', amoplefttype => 'tinterval', + amoprighttype => 'tinterval', amopstrategy => '4', + amopopr => '>=(tinterval,tinterval)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tinterval_ops', amoplefttype => 'tinterval', + amoprighttype => 'tinterval', amopstrategy => '5', + amopopr => '>(tinterval,tinterval)', amopmethod => 'btree' }, + +# btree array_ops + +{ amopfamily => 'btree/array_ops', amoplefttype => 'anyarray', + amoprighttype => 'anyarray', amopstrategy => '1', + amopopr => '<(anyarray,anyarray)', amopmethod => 'btree' }, +{ amopfamily => 'btree/array_ops', amoplefttype => 'anyarray', + amoprighttype => 'anyarray', amopstrategy => '2', + amopopr => '<=(anyarray,anyarray)', amopmethod => 'btree' }, +{ amopfamily => 'btree/array_ops', amoplefttype => 'anyarray', + amoprighttype => 'anyarray', amopstrategy => '3', + amopopr => '=(anyarray,anyarray)', amopmethod => 'btree' }, +{ amopfamily => 'btree/array_ops', amoplefttype => 'anyarray', + amoprighttype => 'anyarray', amopstrategy => '4', + amopopr => '>=(anyarray,anyarray)', amopmethod => 'btree' }, +{ amopfamily => 'btree/array_ops', amoplefttype => 'anyarray', + amoprighttype => 'anyarray', amopstrategy => '5', + amopopr => '>(anyarray,anyarray)', amopmethod => 'btree' }, + +# btree record_ops + +{ amopfamily => 'btree/record_ops', amoplefttype => 'record', + amoprighttype => 'record', amopstrategy => '1', amopopr => '<(record,record)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/record_ops', amoplefttype => 'record', + amoprighttype => 'record', amopstrategy => '2', + amopopr => '<=(record,record)', amopmethod => 'btree' }, +{ amopfamily => 'btree/record_ops', amoplefttype => 'record', + amoprighttype => 'record', amopstrategy => '3', amopopr => '=(record,record)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/record_ops', amoplefttype => 'record', + amoprighttype => 'record', amopstrategy => '4', + amopopr => '>=(record,record)', amopmethod => 'btree' }, +{ amopfamily => 'btree/record_ops', amoplefttype => 'record', + amoprighttype => 'record', amopstrategy => '5', amopopr => '>(record,record)', + amopmethod => 'btree' }, + +# btree record_image_ops + +{ amopfamily => 'btree/record_image_ops', amoplefttype => 'record', + amoprighttype => 'record', amopstrategy => '1', + amopopr => '*<(record,record)', amopmethod => 'btree' }, +{ amopfamily => 'btree/record_image_ops', amoplefttype => 'record', + amoprighttype => 'record', amopstrategy => '2', + amopopr => '*<=(record,record)', amopmethod => 'btree' }, +{ amopfamily => 'btree/record_image_ops', amoplefttype => 'record', + amoprighttype => 'record', amopstrategy => '3', + amopopr => '*=(record,record)', amopmethod => 'btree' }, +{ amopfamily => 'btree/record_image_ops', amoplefttype => 'record', + amoprighttype => 'record', amopstrategy => '4', + amopopr => '*>=(record,record)', amopmethod => 'btree' }, +{ amopfamily => 'btree/record_image_ops', amoplefttype => 'record', + amoprighttype => 'record', amopstrategy => '5', + amopopr => '*>(record,record)', amopmethod => 'btree' }, + +# btree uuid_ops + +{ amopfamily => 'btree/uuid_ops', amoplefttype => 'uuid', + amoprighttype => 'uuid', amopstrategy => '1', amopopr => '<(uuid,uuid)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/uuid_ops', amoplefttype => 'uuid', + amoprighttype => 'uuid', amopstrategy => '2', amopopr => '<=(uuid,uuid)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/uuid_ops', amoplefttype => 'uuid', + amoprighttype => 'uuid', amopstrategy => '3', amopopr => '=(uuid,uuid)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/uuid_ops', amoplefttype => 'uuid', + amoprighttype => 'uuid', amopstrategy => '4', amopopr => '>=(uuid,uuid)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/uuid_ops', amoplefttype => 'uuid', + amoprighttype => 'uuid', amopstrategy => '5', amopopr => '>(uuid,uuid)', + amopmethod => 'btree' }, + +# btree pg_lsn_ops + +{ amopfamily => 'btree/pg_lsn_ops', amoplefttype => 'pg_lsn', + amoprighttype => 'pg_lsn', amopstrategy => '1', amopopr => '<(pg_lsn,pg_lsn)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/pg_lsn_ops', amoplefttype => 'pg_lsn', + amoprighttype => 'pg_lsn', amopstrategy => '2', + amopopr => '<=(pg_lsn,pg_lsn)', amopmethod => 'btree' }, +{ amopfamily => 'btree/pg_lsn_ops', amoplefttype => 'pg_lsn', + amoprighttype => 'pg_lsn', amopstrategy => '3', amopopr => '=(pg_lsn,pg_lsn)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/pg_lsn_ops', amoplefttype => 'pg_lsn', + amoprighttype => 'pg_lsn', amopstrategy => '4', + amopopr => '>=(pg_lsn,pg_lsn)', amopmethod => 'btree' }, +{ amopfamily => 'btree/pg_lsn_ops', amoplefttype => 'pg_lsn', + amoprighttype => 'pg_lsn', amopstrategy => '5', amopopr => '>(pg_lsn,pg_lsn)', + amopmethod => 'btree' }, + +# hash index_ops + +# bpchar_ops +{ amopfamily => 'hash/bpchar_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '1', amopopr => '=(bpchar,bpchar)', + amopmethod => 'hash' }, + +# char_ops +{ amopfamily => 'hash/char_ops', amoplefttype => 'char', + amoprighttype => 'char', amopstrategy => '1', amopopr => '=(char,char)', + amopmethod => 'hash' }, + +# date_ops +{ amopfamily => 'hash/date_ops', amoplefttype => 'date', + amoprighttype => 'date', amopstrategy => '1', amopopr => '=(date,date)', + amopmethod => 'hash' }, + +# float_ops +{ amopfamily => 'hash/float_ops', amoplefttype => 'float4', + amoprighttype => 'float4', amopstrategy => '1', amopopr => '=(float4,float4)', + amopmethod => 'hash' }, +{ amopfamily => 'hash/float_ops', amoplefttype => 'float8', + amoprighttype => 'float8', amopstrategy => '1', amopopr => '=(float8,float8)', + amopmethod => 'hash' }, +{ amopfamily => 'hash/float_ops', amoplefttype => 'float4', + amoprighttype => 'float8', amopstrategy => '1', amopopr => '=(float4,float8)', + amopmethod => 'hash' }, +{ amopfamily => 'hash/float_ops', amoplefttype => 'float8', + amoprighttype => 'float4', amopstrategy => '1', amopopr => '=(float8,float4)', + amopmethod => 'hash' }, + +# network_ops +{ amopfamily => 'hash/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '1', amopopr => '=(inet,inet)', + amopmethod => 'hash' }, + +# integer_ops +{ amopfamily => 'hash/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int2', amopstrategy => '1', amopopr => '=(int2,int2)', + amopmethod => 'hash' }, +{ amopfamily => 'hash/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int4', amopstrategy => '1', amopopr => '=(int4,int4)', + amopmethod => 'hash' }, +{ amopfamily => 'hash/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int8', amopstrategy => '1', amopopr => '=(int8,int8)', + amopmethod => 'hash' }, +{ amopfamily => 'hash/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int4', amopstrategy => '1', amopopr => '=(int2,int4)', + amopmethod => 'hash' }, +{ amopfamily => 'hash/integer_ops', amoplefttype => 'int2', + amoprighttype => 'int8', amopstrategy => '1', amopopr => '=(int2,int8)', + amopmethod => 'hash' }, +{ amopfamily => 'hash/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int2', amopstrategy => '1', amopopr => '=(int4,int2)', + amopmethod => 'hash' }, +{ amopfamily => 'hash/integer_ops', amoplefttype => 'int4', + amoprighttype => 'int8', amopstrategy => '1', amopopr => '=(int4,int8)', + amopmethod => 'hash' }, +{ amopfamily => 'hash/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int2', amopstrategy => '1', amopopr => '=(int8,int2)', + amopmethod => 'hash' }, +{ amopfamily => 'hash/integer_ops', amoplefttype => 'int8', + amoprighttype => 'int4', amopstrategy => '1', amopopr => '=(int8,int4)', + amopmethod => 'hash' }, + +# interval_ops +{ amopfamily => 'hash/interval_ops', amoplefttype => 'interval', + amoprighttype => 'interval', amopstrategy => '1', + amopopr => '=(interval,interval)', amopmethod => 'hash' }, + +# macaddr_ops +{ amopfamily => 'hash/macaddr_ops', amoplefttype => 'macaddr', + amoprighttype => 'macaddr', amopstrategy => '1', + amopopr => '=(macaddr,macaddr)', amopmethod => 'hash' }, + +# macaddr8_ops +{ amopfamily => 'hash/macaddr8_ops', amoplefttype => 'macaddr8', + amoprighttype => 'macaddr8', amopstrategy => '1', + amopopr => '=(macaddr8,macaddr8)', amopmethod => 'hash' }, + +# name_ops +{ amopfamily => 'hash/name_ops', amoplefttype => 'name', + amoprighttype => 'name', amopstrategy => '1', amopopr => '=(name,name)', + amopmethod => 'hash' }, + +# oid_ops +{ amopfamily => 'hash/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid', + amopstrategy => '1', amopopr => '=(oid,oid)', amopmethod => 'hash' }, + +# oidvector_ops +{ amopfamily => 'hash/oidvector_ops', amoplefttype => 'oidvector', + amoprighttype => 'oidvector', amopstrategy => '1', + amopopr => '=(oidvector,oidvector)', amopmethod => 'hash' }, + +# text_ops +{ amopfamily => 'hash/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '1', amopopr => '=(text,text)', + amopmethod => 'hash' }, + +# time_ops +{ amopfamily => 'hash/time_ops', amoplefttype => 'time', + amoprighttype => 'time', amopstrategy => '1', amopopr => '=(time,time)', + amopmethod => 'hash' }, + +# timestamptz_ops +{ amopfamily => 'hash/timestamptz_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamptz', amopstrategy => '1', + amopopr => '=(timestamptz,timestamptz)', amopmethod => 'hash' }, + +# timetz_ops +{ amopfamily => 'hash/timetz_ops', amoplefttype => 'timetz', + amoprighttype => 'timetz', amopstrategy => '1', amopopr => '=(timetz,timetz)', + amopmethod => 'hash' }, + +# timestamp_ops +{ amopfamily => 'hash/timestamp_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamp', amopstrategy => '1', + amopopr => '=(timestamp,timestamp)', amopmethod => 'hash' }, + +# bool_ops +{ amopfamily => 'hash/bool_ops', amoplefttype => 'bool', + amoprighttype => 'bool', amopstrategy => '1', amopopr => '=(bool,bool)', + amopmethod => 'hash' }, + +# bytea_ops +{ amopfamily => 'hash/bytea_ops', amoplefttype => 'bytea', + amoprighttype => 'bytea', amopstrategy => '1', amopopr => '=(bytea,bytea)', + amopmethod => 'hash' }, + +# xid_ops +{ amopfamily => 'hash/xid_ops', amoplefttype => 'xid', amoprighttype => 'xid', + amopstrategy => '1', amopopr => '=(xid,xid)', amopmethod => 'hash' }, + +# cid_ops +{ amopfamily => 'hash/cid_ops', amoplefttype => 'cid', amoprighttype => 'cid', + amopstrategy => '1', amopopr => '=(cid,cid)', amopmethod => 'hash' }, + +# abstime_ops +{ amopfamily => 'hash/abstime_ops', amoplefttype => 'abstime', + amoprighttype => 'abstime', amopstrategy => '1', + amopopr => '=(abstime,abstime)', amopmethod => 'hash' }, + +# reltime_ops +{ amopfamily => 'hash/reltime_ops', amoplefttype => 'reltime', + amoprighttype => 'reltime', amopstrategy => '1', + amopopr => '=(reltime,reltime)', amopmethod => 'hash' }, + +# text_pattern_ops +{ amopfamily => 'hash/text_pattern_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '1', amopopr => '=(text,text)', + amopmethod => 'hash' }, + +# bpchar_pattern_ops +{ amopfamily => 'hash/bpchar_pattern_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '1', amopopr => '=(bpchar,bpchar)', + amopmethod => 'hash' }, + +# aclitem_ops +{ amopfamily => 'hash/aclitem_ops', amoplefttype => 'aclitem', + amoprighttype => 'aclitem', amopstrategy => '1', + amopopr => '=(aclitem,aclitem)', amopmethod => 'hash' }, + +# uuid_ops +{ amopfamily => 'hash/uuid_ops', amoplefttype => 'uuid', + amoprighttype => 'uuid', amopstrategy => '1', amopopr => '=(uuid,uuid)', + amopmethod => 'hash' }, + +# pg_lsn_ops +{ amopfamily => 'hash/pg_lsn_ops', amoplefttype => 'pg_lsn', + amoprighttype => 'pg_lsn', amopstrategy => '1', amopopr => '=(pg_lsn,pg_lsn)', + amopmethod => 'hash' }, + +# numeric_ops +{ amopfamily => 'hash/numeric_ops', amoplefttype => 'numeric', + amoprighttype => 'numeric', amopstrategy => '1', + amopopr => '=(numeric,numeric)', amopmethod => 'hash' }, + +# array_ops +{ amopfamily => 'hash/array_ops', amoplefttype => 'anyarray', + amoprighttype => 'anyarray', amopstrategy => '1', + amopopr => '=(anyarray,anyarray)', amopmethod => 'hash' }, + +# gist box_ops +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '1', amopopr => '<<(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '2', amopopr => '&<(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '3', amopopr => '&&(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '4', amopopr => '&>(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '5', amopopr => '>>(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '6', amopopr => '~=(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '7', amopopr => '@>(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '8', amopopr => '<@(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '9', amopopr => '&<|(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '10', amopopr => '<<|(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '11', amopopr => '|>>(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '12', amopopr => '|&>(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '13', amopopr => '~(box,box)', amopmethod => 'gist' }, +{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '14', amopopr => '@(box,box)', amopmethod => 'gist' }, + +# gist point_ops +{ amopfamily => 'gist/point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '11', amopopr => '>^(point,point)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '1', amopopr => '<<(point,point)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '5', amopopr => '>>(point,point)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '10', amopopr => '<^(point,point)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '6', amopopr => '~=(point,point)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o', + amopopr => '<->(point,point)', amopmethod => 'gist', + amopsortfamily => 'btree/float_ops' }, +{ amopfamily => 'gist/point_ops', amoplefttype => 'point', + amoprighttype => 'box', amopstrategy => '28', amopopr => '<@(point,box)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/point_ops', amoplefttype => 'point', + amoprighttype => 'polygon', amopstrategy => '48', + amopopr => '<@(point,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/point_ops', amoplefttype => 'point', + amoprighttype => 'circle', amopstrategy => '68', + amopopr => '<@(point,circle)', amopmethod => 'gist' }, + +# gist poly_ops (supports polygons) +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '1', + amopopr => '<<(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '2', + amopopr => '&<(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '3', + amopopr => '&&(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '4', + amopopr => '&>(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '5', + amopopr => '>>(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '6', + amopopr => '~=(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '7', + amopopr => '@>(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '8', + amopopr => '<@(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '9', + amopopr => '&<|(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '10', + amopopr => '<<|(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '11', + amopopr => '|>>(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '12', + amopopr => '|&>(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '13', + amopopr => '~(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '14', + amopopr => '@(polygon,polygon)', amopmethod => 'gist' }, +{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o', + amopopr => '<->(polygon,point)', amopmethod => 'gist', + amopsortfamily => 'btree/float_ops' }, + +# gist circle_ops +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '1', + amopopr => '<<(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '2', + amopopr => '&<(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '3', + amopopr => '&&(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '4', + amopopr => '&>(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '5', + amopopr => '>>(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '6', + amopopr => '~=(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '7', + amopopr => '@>(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '8', + amopopr => '<@(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '9', + amopopr => '&<|(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '10', + amopopr => '<<|(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '11', + amopopr => '|>>(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '12', + amopopr => '|&>(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '13', + amopopr => '~(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'circle', amopstrategy => '14', + amopopr => '@(circle,circle)', amopmethod => 'gist' }, +{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle', + amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o', + amopopr => '<->(circle,point)', amopmethod => 'gist', + amopsortfamily => 'btree/float_ops' }, + +# gin array_ops +{ amopfamily => 'gin/array_ops', amoplefttype => 'anyarray', + amoprighttype => 'anyarray', amopstrategy => '1', + amopopr => '&&(anyarray,anyarray)', amopmethod => 'gin' }, +{ amopfamily => 'gin/array_ops', amoplefttype => 'anyarray', + amoprighttype => 'anyarray', amopstrategy => '2', + amopopr => '@>(anyarray,anyarray)', amopmethod => 'gin' }, +{ amopfamily => 'gin/array_ops', amoplefttype => 'anyarray', + amoprighttype => 'anyarray', amopstrategy => '3', + amopopr => '<@(anyarray,anyarray)', amopmethod => 'gin' }, +{ amopfamily => 'gin/array_ops', amoplefttype => 'anyarray', + amoprighttype => 'anyarray', amopstrategy => '4', + amopopr => '=(anyarray,anyarray)', amopmethod => 'gin' }, + +# btree enum_ops +{ amopfamily => 'btree/enum_ops', amoplefttype => 'anyenum', + amoprighttype => 'anyenum', amopstrategy => '1', + amopopr => '<(anyenum,anyenum)', amopmethod => 'btree' }, +{ amopfamily => 'btree/enum_ops', amoplefttype => 'anyenum', + amoprighttype => 'anyenum', amopstrategy => '2', + amopopr => '<=(anyenum,anyenum)', amopmethod => 'btree' }, +{ amopfamily => 'btree/enum_ops', amoplefttype => 'anyenum', + amoprighttype => 'anyenum', amopstrategy => '3', + amopopr => '=(anyenum,anyenum)', amopmethod => 'btree' }, +{ amopfamily => 'btree/enum_ops', amoplefttype => 'anyenum', + amoprighttype => 'anyenum', amopstrategy => '4', + amopopr => '>=(anyenum,anyenum)', amopmethod => 'btree' }, +{ amopfamily => 'btree/enum_ops', amoplefttype => 'anyenum', + amoprighttype => 'anyenum', amopstrategy => '5', + amopopr => '>(anyenum,anyenum)', amopmethod => 'btree' }, + +# hash enum_ops +{ amopfamily => 'hash/enum_ops', amoplefttype => 'anyenum', + amoprighttype => 'anyenum', amopstrategy => '1', + amopopr => '=(anyenum,anyenum)', amopmethod => 'hash' }, + +# btree tsvector_ops +{ amopfamily => 'btree/tsvector_ops', amoplefttype => 'tsvector', + amoprighttype => 'tsvector', amopstrategy => '1', + amopopr => '<(tsvector,tsvector)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tsvector_ops', amoplefttype => 'tsvector', + amoprighttype => 'tsvector', amopstrategy => '2', + amopopr => '<=(tsvector,tsvector)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tsvector_ops', amoplefttype => 'tsvector', + amoprighttype => 'tsvector', amopstrategy => '3', + amopopr => '=(tsvector,tsvector)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tsvector_ops', amoplefttype => 'tsvector', + amoprighttype => 'tsvector', amopstrategy => '4', + amopopr => '>=(tsvector,tsvector)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tsvector_ops', amoplefttype => 'tsvector', + amoprighttype => 'tsvector', amopstrategy => '5', + amopopr => '>(tsvector,tsvector)', amopmethod => 'btree' }, + +# GiST tsvector_ops +{ amopfamily => 'gist/tsvector_ops', amoplefttype => 'tsvector', + amoprighttype => 'tsquery', amopstrategy => '1', + amopopr => '@@(tsvector,tsquery)', amopmethod => 'gist' }, + +# GIN tsvector_ops +{ amopfamily => 'gin/tsvector_ops', amoplefttype => 'tsvector', + amoprighttype => 'tsquery', amopstrategy => '1', + amopopr => '@@(tsvector,tsquery)', amopmethod => 'gin' }, +{ amopfamily => 'gin/tsvector_ops', amoplefttype => 'tsvector', + amoprighttype => 'tsquery', amopstrategy => '2', + amopopr => '@@@(tsvector,tsquery)', amopmethod => 'gin' }, + +# btree tsquery_ops +{ amopfamily => 'btree/tsquery_ops', amoplefttype => 'tsquery', + amoprighttype => 'tsquery', amopstrategy => '1', + amopopr => '<(tsquery,tsquery)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tsquery_ops', amoplefttype => 'tsquery', + amoprighttype => 'tsquery', amopstrategy => '2', + amopopr => '<=(tsquery,tsquery)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tsquery_ops', amoplefttype => 'tsquery', + amoprighttype => 'tsquery', amopstrategy => '3', + amopopr => '=(tsquery,tsquery)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tsquery_ops', amoplefttype => 'tsquery', + amoprighttype => 'tsquery', amopstrategy => '4', + amopopr => '>=(tsquery,tsquery)', amopmethod => 'btree' }, +{ amopfamily => 'btree/tsquery_ops', amoplefttype => 'tsquery', + amoprighttype => 'tsquery', amopstrategy => '5', + amopopr => '>(tsquery,tsquery)', amopmethod => 'btree' }, + +# GiST tsquery_ops +{ amopfamily => 'gist/tsquery_ops', amoplefttype => 'tsquery', + amoprighttype => 'tsquery', amopstrategy => '7', + amopopr => '@>(tsquery,tsquery)', amopmethod => 'gist' }, +{ amopfamily => 'gist/tsquery_ops', amoplefttype => 'tsquery', + amoprighttype => 'tsquery', amopstrategy => '8', + amopopr => '<@(tsquery,tsquery)', amopmethod => 'gist' }, + +# btree range_ops +{ amopfamily => 'btree/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '1', + amopopr => '<(anyrange,anyrange)', amopmethod => 'btree' }, +{ amopfamily => 'btree/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '2', + amopopr => '<=(anyrange,anyrange)', amopmethod => 'btree' }, +{ amopfamily => 'btree/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '3', + amopopr => '=(anyrange,anyrange)', amopmethod => 'btree' }, +{ amopfamily => 'btree/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '4', + amopopr => '>=(anyrange,anyrange)', amopmethod => 'btree' }, +{ amopfamily => 'btree/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '5', + amopopr => '>(anyrange,anyrange)', amopmethod => 'btree' }, + +# hash range_ops +{ amopfamily => 'hash/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '1', + amopopr => '=(anyrange,anyrange)', amopmethod => 'hash' }, + +# GiST range_ops +{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '1', + amopopr => '<<(anyrange,anyrange)', amopmethod => 'gist' }, +{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '2', + amopopr => '&<(anyrange,anyrange)', amopmethod => 'gist' }, +{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '3', + amopopr => '&&(anyrange,anyrange)', amopmethod => 'gist' }, +{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '4', + amopopr => '&>(anyrange,anyrange)', amopmethod => 'gist' }, +{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '5', + amopopr => '>>(anyrange,anyrange)', amopmethod => 'gist' }, +{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '6', + amopopr => '-|-(anyrange,anyrange)', amopmethod => 'gist' }, +{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '7', + amopopr => '@>(anyrange,anyrange)', amopmethod => 'gist' }, +{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '8', + amopopr => '<@(anyrange,anyrange)', amopmethod => 'gist' }, +{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyelement', amopstrategy => '16', + amopopr => '@>(anyrange,anyelement)', amopmethod => 'gist' }, +{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '18', + amopopr => '=(anyrange,anyrange)', amopmethod => 'gist' }, + +# SP-GiST quad_point_ops +{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '11', amopopr => '>^(point,point)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '1', amopopr => '<<(point,point)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '5', amopopr => '>>(point,point)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '10', amopopr => '<^(point,point)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '6', amopopr => '~=(point,point)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point', + amoprighttype => 'box', amopstrategy => '8', amopopr => '<@(point,box)', + amopmethod => 'spgist' }, + +# SP-GiST kd_point_ops +{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '11', amopopr => '>^(point,point)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '1', amopopr => '<<(point,point)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '5', amopopr => '>>(point,point)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '10', amopopr => '<^(point,point)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point', + amoprighttype => 'point', amopstrategy => '6', amopopr => '~=(point,point)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point', + amoprighttype => 'box', amopstrategy => '8', amopopr => '<@(point,box)', + amopmethod => 'spgist' }, + +# SP-GiST text_ops +{ amopfamily => 'spgist/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '1', amopopr => '~<~(text,text)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '2', amopopr => '~<=~(text,text)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '3', amopopr => '=(text,text)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '4', amopopr => '~>=~(text,text)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '5', amopopr => '~>~(text,text)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '11', amopopr => '<(text,text)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '12', amopopr => '<=(text,text)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '14', amopopr => '>=(text,text)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '15', amopopr => '>(text,text)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/text_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '28', amopopr => '^@(text,text)', + amopmethod => 'spgist' }, + +# btree jsonb_ops +{ amopfamily => 'btree/jsonb_ops', amoplefttype => 'jsonb', + amoprighttype => 'jsonb', amopstrategy => '1', amopopr => '<(jsonb,jsonb)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/jsonb_ops', amoplefttype => 'jsonb', + amoprighttype => 'jsonb', amopstrategy => '2', amopopr => '<=(jsonb,jsonb)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/jsonb_ops', amoplefttype => 'jsonb', + amoprighttype => 'jsonb', amopstrategy => '3', amopopr => '=(jsonb,jsonb)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/jsonb_ops', amoplefttype => 'jsonb', + amoprighttype => 'jsonb', amopstrategy => '4', amopopr => '>=(jsonb,jsonb)', + amopmethod => 'btree' }, +{ amopfamily => 'btree/jsonb_ops', amoplefttype => 'jsonb', + amoprighttype => 'jsonb', amopstrategy => '5', amopopr => '>(jsonb,jsonb)', + amopmethod => 'btree' }, + +# hash jsonb_ops +{ amopfamily => 'hash/jsonb_ops', amoplefttype => 'jsonb', + amoprighttype => 'jsonb', amopstrategy => '1', amopopr => '=(jsonb,jsonb)', + amopmethod => 'hash' }, + +# GIN jsonb_ops +{ amopfamily => 'gin/jsonb_ops', amoplefttype => 'jsonb', + amoprighttype => 'jsonb', amopstrategy => '7', amopopr => '@>(jsonb,jsonb)', + amopmethod => 'gin' }, +{ amopfamily => 'gin/jsonb_ops', amoplefttype => 'jsonb', + amoprighttype => 'text', amopstrategy => '9', amopopr => '?(jsonb,text)', + amopmethod => 'gin' }, +{ amopfamily => 'gin/jsonb_ops', amoplefttype => 'jsonb', + amoprighttype => '_text', amopstrategy => '10', amopopr => '?|(jsonb,_text)', + amopmethod => 'gin' }, +{ amopfamily => 'gin/jsonb_ops', amoplefttype => 'jsonb', + amoprighttype => '_text', amopstrategy => '11', amopopr => '?&(jsonb,_text)', + amopmethod => 'gin' }, + +# GIN jsonb_path_ops +{ amopfamily => 'gin/jsonb_path_ops', amoplefttype => 'jsonb', + amoprighttype => 'jsonb', amopstrategy => '7', amopopr => '@>(jsonb,jsonb)', + amopmethod => 'gin' }, + +# SP-GiST range_ops +{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '1', + amopopr => '<<(anyrange,anyrange)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '2', + amopopr => '&<(anyrange,anyrange)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '3', + amopopr => '&&(anyrange,anyrange)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '4', + amopopr => '&>(anyrange,anyrange)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '5', + amopopr => '>>(anyrange,anyrange)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '6', + amopopr => '-|-(anyrange,anyrange)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '7', + amopopr => '@>(anyrange,anyrange)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '8', + amopopr => '<@(anyrange,anyrange)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyelement', amopstrategy => '16', + amopopr => '@>(anyrange,anyelement)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '18', + amopopr => '=(anyrange,anyrange)', amopmethod => 'spgist' }, + +# SP-GiST box_ops +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '1', amopopr => '<<(box,box)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '2', amopopr => '&<(box,box)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '3', amopopr => '&&(box,box)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '4', amopopr => '&>(box,box)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '5', amopopr => '>>(box,box)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '6', amopopr => '~=(box,box)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '7', amopopr => '@>(box,box)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '8', amopopr => '<@(box,box)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '9', amopopr => '&<|(box,box)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '10', amopopr => '<<|(box,box)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '11', amopopr => '|>>(box,box)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box', + amopstrategy => '12', amopopr => '|&>(box,box)', amopmethod => 'spgist' }, + +# SP-GiST poly_ops (supports polygons) +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '1', + amopopr => '<<(polygon,polygon)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '2', + amopopr => '&<(polygon,polygon)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '3', + amopopr => '&&(polygon,polygon)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '4', + amopopr => '&>(polygon,polygon)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '5', + amopopr => '>>(polygon,polygon)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '6', + amopopr => '~=(polygon,polygon)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '7', + amopopr => '@>(polygon,polygon)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '8', + amopopr => '<@(polygon,polygon)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '9', + amopopr => '&<|(polygon,polygon)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '10', + amopopr => '<<|(polygon,polygon)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '11', + amopopr => '|>>(polygon,polygon)', amopmethod => 'spgist' }, +{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon', + amoprighttype => 'polygon', amopstrategy => '12', + amopopr => '|&>(polygon,polygon)', amopmethod => 'spgist' }, + +# GiST inet_ops +{ amopfamily => 'gist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '3', amopopr => '&&(inet,inet)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '18', amopopr => '=(inet,inet)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '19', amopopr => '<>(inet,inet)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '20', amopopr => '<(inet,inet)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '21', amopopr => '<=(inet,inet)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '22', amopopr => '>(inet,inet)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '23', amopopr => '>=(inet,inet)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '24', amopopr => '<<(inet,inet)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '25', amopopr => '<<=(inet,inet)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '26', amopopr => '>>(inet,inet)', + amopmethod => 'gist' }, +{ amopfamily => 'gist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '27', amopopr => '>>=(inet,inet)', + amopmethod => 'gist' }, + +# SP-GiST inet_ops +{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '3', amopopr => '&&(inet,inet)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '18', amopopr => '=(inet,inet)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '19', amopopr => '<>(inet,inet)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '20', amopopr => '<(inet,inet)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '21', amopopr => '<=(inet,inet)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '22', amopopr => '>(inet,inet)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '23', amopopr => '>=(inet,inet)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '24', amopopr => '<<(inet,inet)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '25', amopopr => '<<=(inet,inet)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '26', amopopr => '>>(inet,inet)', + amopmethod => 'spgist' }, +{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '27', amopopr => '>>=(inet,inet)', + amopmethod => 'spgist' }, + +# BRIN opclasses + +# minmax bytea +{ amopfamily => 'brin/bytea_minmax_ops', amoplefttype => 'bytea', + amoprighttype => 'bytea', amopstrategy => '1', amopopr => '<(bytea,bytea)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/bytea_minmax_ops', amoplefttype => 'bytea', + amoprighttype => 'bytea', amopstrategy => '2', amopopr => '<=(bytea,bytea)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/bytea_minmax_ops', amoplefttype => 'bytea', + amoprighttype => 'bytea', amopstrategy => '3', amopopr => '=(bytea,bytea)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/bytea_minmax_ops', amoplefttype => 'bytea', + amoprighttype => 'bytea', amopstrategy => '4', amopopr => '>=(bytea,bytea)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/bytea_minmax_ops', amoplefttype => 'bytea', + amoprighttype => 'bytea', amopstrategy => '5', amopopr => '>(bytea,bytea)', + amopmethod => 'brin' }, + +# minmax "char" +{ amopfamily => 'brin/char_minmax_ops', amoplefttype => 'char', + amoprighttype => 'char', amopstrategy => '1', amopopr => '<(char,char)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/char_minmax_ops', amoplefttype => 'char', + amoprighttype => 'char', amopstrategy => '2', amopopr => '<=(char,char)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/char_minmax_ops', amoplefttype => 'char', + amoprighttype => 'char', amopstrategy => '3', amopopr => '=(char,char)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/char_minmax_ops', amoplefttype => 'char', + amoprighttype => 'char', amopstrategy => '4', amopopr => '>=(char,char)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/char_minmax_ops', amoplefttype => 'char', + amoprighttype => 'char', amopstrategy => '5', amopopr => '>(char,char)', + amopmethod => 'brin' }, + +# minmax name +{ amopfamily => 'brin/name_minmax_ops', amoplefttype => 'name', + amoprighttype => 'name', amopstrategy => '1', amopopr => '<(name,name)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/name_minmax_ops', amoplefttype => 'name', + amoprighttype => 'name', amopstrategy => '2', amopopr => '<=(name,name)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/name_minmax_ops', amoplefttype => 'name', + amoprighttype => 'name', amopstrategy => '3', amopopr => '=(name,name)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/name_minmax_ops', amoplefttype => 'name', + amoprighttype => 'name', amopstrategy => '4', amopopr => '>=(name,name)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/name_minmax_ops', amoplefttype => 'name', + amoprighttype => 'name', amopstrategy => '5', amopopr => '>(name,name)', + amopmethod => 'brin' }, + +# minmax integer + +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int8,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int8,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int8,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int8,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int8,int8)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int8,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int8,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int8,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int8,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int8,int2)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int8,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int8,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int8,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int8,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8', + amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int8,int4)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int2,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int2,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int2,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int2,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int2,int2)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int2,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int2,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int2,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int2,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int2,int8)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int2,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int2,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int2,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int2,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2', + amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int2,int4)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int4,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int4,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int4,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int4,int4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int4,int4)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int4,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int4,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int4,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int4,int2)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int4,int2)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int4,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int4,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int4,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int4,int8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4', + amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int4,int8)', + amopmethod => 'brin' }, + +# minmax text +{ amopfamily => 'brin/text_minmax_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '1', amopopr => '<(text,text)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/text_minmax_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '2', amopopr => '<=(text,text)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/text_minmax_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '3', amopopr => '=(text,text)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/text_minmax_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '4', amopopr => '>=(text,text)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/text_minmax_ops', amoplefttype => 'text', + amoprighttype => 'text', amopstrategy => '5', amopopr => '>(text,text)', + amopmethod => 'brin' }, + +# minmax oid +{ amopfamily => 'brin/oid_minmax_ops', amoplefttype => 'oid', + amoprighttype => 'oid', amopstrategy => '1', amopopr => '<(oid,oid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/oid_minmax_ops', amoplefttype => 'oid', + amoprighttype => 'oid', amopstrategy => '2', amopopr => '<=(oid,oid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/oid_minmax_ops', amoplefttype => 'oid', + amoprighttype => 'oid', amopstrategy => '3', amopopr => '=(oid,oid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/oid_minmax_ops', amoplefttype => 'oid', + amoprighttype => 'oid', amopstrategy => '4', amopopr => '>=(oid,oid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/oid_minmax_ops', amoplefttype => 'oid', + amoprighttype => 'oid', amopstrategy => '5', amopopr => '>(oid,oid)', + amopmethod => 'brin' }, + +# minmax tid +{ amopfamily => 'brin/tid_minmax_ops', amoplefttype => 'tid', + amoprighttype => 'tid', amopstrategy => '1', amopopr => '<(tid,tid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/tid_minmax_ops', amoplefttype => 'tid', + amoprighttype => 'tid', amopstrategy => '2', amopopr => '<=(tid,tid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/tid_minmax_ops', amoplefttype => 'tid', + amoprighttype => 'tid', amopstrategy => '3', amopopr => '=(tid,tid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/tid_minmax_ops', amoplefttype => 'tid', + amoprighttype => 'tid', amopstrategy => '4', amopopr => '>=(tid,tid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/tid_minmax_ops', amoplefttype => 'tid', + amoprighttype => 'tid', amopstrategy => '5', amopopr => '>(tid,tid)', + amopmethod => 'brin' }, + +# minmax float (float4, float8) + +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4', + amoprighttype => 'float4', amopstrategy => '1', amopopr => '<(float4,float4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4', + amoprighttype => 'float4', amopstrategy => '2', + amopopr => '<=(float4,float4)', amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4', + amoprighttype => 'float4', amopstrategy => '3', amopopr => '=(float4,float4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4', + amoprighttype => 'float4', amopstrategy => '4', + amopopr => '>=(float4,float4)', amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4', + amoprighttype => 'float4', amopstrategy => '5', amopopr => '>(float4,float4)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4', + amoprighttype => 'float8', amopstrategy => '1', amopopr => '<(float4,float8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4', + amoprighttype => 'float8', amopstrategy => '2', + amopopr => '<=(float4,float8)', amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4', + amoprighttype => 'float8', amopstrategy => '3', amopopr => '=(float4,float8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4', + amoprighttype => 'float8', amopstrategy => '4', + amopopr => '>=(float4,float8)', amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4', + amoprighttype => 'float8', amopstrategy => '5', amopopr => '>(float4,float8)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8', + amoprighttype => 'float4', amopstrategy => '1', amopopr => '<(float8,float4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8', + amoprighttype => 'float4', amopstrategy => '2', + amopopr => '<=(float8,float4)', amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8', + amoprighttype => 'float4', amopstrategy => '3', amopopr => '=(float8,float4)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8', + amoprighttype => 'float4', amopstrategy => '4', + amopopr => '>=(float8,float4)', amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8', + amoprighttype => 'float4', amopstrategy => '5', amopopr => '>(float8,float4)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8', + amoprighttype => 'float8', amopstrategy => '1', amopopr => '<(float8,float8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8', + amoprighttype => 'float8', amopstrategy => '2', + amopopr => '<=(float8,float8)', amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8', + amoprighttype => 'float8', amopstrategy => '3', amopopr => '=(float8,float8)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8', + amoprighttype => 'float8', amopstrategy => '4', + amopopr => '>=(float8,float8)', amopmethod => 'brin' }, +{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8', + amoprighttype => 'float8', amopstrategy => '5', amopopr => '>(float8,float8)', + amopmethod => 'brin' }, + +# minmax abstime +{ amopfamily => 'brin/abstime_minmax_ops', amoplefttype => 'abstime', + amoprighttype => 'abstime', amopstrategy => '1', + amopopr => '<(abstime,abstime)', amopmethod => 'brin' }, +{ amopfamily => 'brin/abstime_minmax_ops', amoplefttype => 'abstime', + amoprighttype => 'abstime', amopstrategy => '2', + amopopr => '<=(abstime,abstime)', amopmethod => 'brin' }, +{ amopfamily => 'brin/abstime_minmax_ops', amoplefttype => 'abstime', + amoprighttype => 'abstime', amopstrategy => '3', + amopopr => '=(abstime,abstime)', amopmethod => 'brin' }, +{ amopfamily => 'brin/abstime_minmax_ops', amoplefttype => 'abstime', + amoprighttype => 'abstime', amopstrategy => '4', + amopopr => '>=(abstime,abstime)', amopmethod => 'brin' }, +{ amopfamily => 'brin/abstime_minmax_ops', amoplefttype => 'abstime', + amoprighttype => 'abstime', amopstrategy => '5', + amopopr => '>(abstime,abstime)', amopmethod => 'brin' }, + +# minmax reltime +{ amopfamily => 'brin/reltime_minmax_ops', amoplefttype => 'reltime', + amoprighttype => 'reltime', amopstrategy => '1', + amopopr => '<(reltime,reltime)', amopmethod => 'brin' }, +{ amopfamily => 'brin/reltime_minmax_ops', amoplefttype => 'reltime', + amoprighttype => 'reltime', amopstrategy => '2', + amopopr => '<=(reltime,reltime)', amopmethod => 'brin' }, +{ amopfamily => 'brin/reltime_minmax_ops', amoplefttype => 'reltime', + amoprighttype => 'reltime', amopstrategy => '3', + amopopr => '=(reltime,reltime)', amopmethod => 'brin' }, +{ amopfamily => 'brin/reltime_minmax_ops', amoplefttype => 'reltime', + amoprighttype => 'reltime', amopstrategy => '4', + amopopr => '>=(reltime,reltime)', amopmethod => 'brin' }, +{ amopfamily => 'brin/reltime_minmax_ops', amoplefttype => 'reltime', + amoprighttype => 'reltime', amopstrategy => '5', + amopopr => '>(reltime,reltime)', amopmethod => 'brin' }, + +# minmax macaddr +{ amopfamily => 'brin/macaddr_minmax_ops', amoplefttype => 'macaddr', + amoprighttype => 'macaddr', amopstrategy => '1', + amopopr => '<(macaddr,macaddr)', amopmethod => 'brin' }, +{ amopfamily => 'brin/macaddr_minmax_ops', amoplefttype => 'macaddr', + amoprighttype => 'macaddr', amopstrategy => '2', + amopopr => '<=(macaddr,macaddr)', amopmethod => 'brin' }, +{ amopfamily => 'brin/macaddr_minmax_ops', amoplefttype => 'macaddr', + amoprighttype => 'macaddr', amopstrategy => '3', + amopopr => '=(macaddr,macaddr)', amopmethod => 'brin' }, +{ amopfamily => 'brin/macaddr_minmax_ops', amoplefttype => 'macaddr', + amoprighttype => 'macaddr', amopstrategy => '4', + amopopr => '>=(macaddr,macaddr)', amopmethod => 'brin' }, +{ amopfamily => 'brin/macaddr_minmax_ops', amoplefttype => 'macaddr', + amoprighttype => 'macaddr', amopstrategy => '5', + amopopr => '>(macaddr,macaddr)', amopmethod => 'brin' }, + +# minmax macaddr8 +{ amopfamily => 'brin/macaddr8_minmax_ops', amoplefttype => 'macaddr8', + amoprighttype => 'macaddr8', amopstrategy => '1', + amopopr => '<(macaddr8,macaddr8)', amopmethod => 'brin' }, +{ amopfamily => 'brin/macaddr8_minmax_ops', amoplefttype => 'macaddr8', + amoprighttype => 'macaddr8', amopstrategy => '2', + amopopr => '<=(macaddr8,macaddr8)', amopmethod => 'brin' }, +{ amopfamily => 'brin/macaddr8_minmax_ops', amoplefttype => 'macaddr8', + amoprighttype => 'macaddr8', amopstrategy => '3', + amopopr => '=(macaddr8,macaddr8)', amopmethod => 'brin' }, +{ amopfamily => 'brin/macaddr8_minmax_ops', amoplefttype => 'macaddr8', + amoprighttype => 'macaddr8', amopstrategy => '4', + amopopr => '>=(macaddr8,macaddr8)', amopmethod => 'brin' }, +{ amopfamily => 'brin/macaddr8_minmax_ops', amoplefttype => 'macaddr8', + amoprighttype => 'macaddr8', amopstrategy => '5', + amopopr => '>(macaddr8,macaddr8)', amopmethod => 'brin' }, + +# minmax inet +{ amopfamily => 'brin/network_minmax_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '1', amopopr => '<(inet,inet)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/network_minmax_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '2', amopopr => '<=(inet,inet)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/network_minmax_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '3', amopopr => '=(inet,inet)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/network_minmax_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '4', amopopr => '>=(inet,inet)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/network_minmax_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '5', amopopr => '>(inet,inet)', + amopmethod => 'brin' }, + +# inclusion inet +{ amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '3', amopopr => '&&(inet,inet)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '7', amopopr => '>>=(inet,inet)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '8', amopopr => '<<=(inet,inet)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '18', amopopr => '=(inet,inet)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '24', amopopr => '>>(inet,inet)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet', + amoprighttype => 'inet', amopstrategy => '26', amopopr => '<<(inet,inet)', + amopmethod => 'brin' }, + +# minmax character +{ amopfamily => 'brin/bpchar_minmax_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '1', amopopr => '<(bpchar,bpchar)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/bpchar_minmax_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '2', + amopopr => '<=(bpchar,bpchar)', amopmethod => 'brin' }, +{ amopfamily => 'brin/bpchar_minmax_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '3', amopopr => '=(bpchar,bpchar)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/bpchar_minmax_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '4', + amopopr => '>=(bpchar,bpchar)', amopmethod => 'brin' }, +{ amopfamily => 'brin/bpchar_minmax_ops', amoplefttype => 'bpchar', + amoprighttype => 'bpchar', amopstrategy => '5', amopopr => '>(bpchar,bpchar)', + amopmethod => 'brin' }, + +# minmax time without time zone +{ amopfamily => 'brin/time_minmax_ops', amoplefttype => 'time', + amoprighttype => 'time', amopstrategy => '1', amopopr => '<(time,time)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/time_minmax_ops', amoplefttype => 'time', + amoprighttype => 'time', amopstrategy => '2', amopopr => '<=(time,time)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/time_minmax_ops', amoplefttype => 'time', + amoprighttype => 'time', amopstrategy => '3', amopopr => '=(time,time)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/time_minmax_ops', amoplefttype => 'time', + amoprighttype => 'time', amopstrategy => '4', amopopr => '>=(time,time)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/time_minmax_ops', amoplefttype => 'time', + amoprighttype => 'time', amopstrategy => '5', amopopr => '>(time,time)', + amopmethod => 'brin' }, + +# minmax datetime (date, timestamp, timestamptz) + +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamp', amopstrategy => '1', + amopopr => '<(timestamp,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamp', amopstrategy => '2', + amopopr => '<=(timestamp,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamp', amopstrategy => '3', + amopopr => '=(timestamp,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamp', amopstrategy => '4', + amopopr => '>=(timestamp,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamp', amopstrategy => '5', + amopopr => '>(timestamp,timestamp)', amopmethod => 'brin' }, + +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'date', amopstrategy => '1', amopopr => '<(timestamp,date)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'date', amopstrategy => '2', amopopr => '<=(timestamp,date)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'date', amopstrategy => '3', amopopr => '=(timestamp,date)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'date', amopstrategy => '4', amopopr => '>=(timestamp,date)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'date', amopstrategy => '5', amopopr => '>(timestamp,date)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamptz', amopstrategy => '1', + amopopr => '<(timestamp,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamptz', amopstrategy => '2', + amopopr => '<=(timestamp,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamptz', amopstrategy => '3', + amopopr => '=(timestamp,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamptz', amopstrategy => '4', + amopopr => '>=(timestamp,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp', + amoprighttype => 'timestamptz', amopstrategy => '5', + amopopr => '>(timestamp,timestamptz)', amopmethod => 'brin' }, + +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'date', amopstrategy => '1', amopopr => '<(date,date)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'date', amopstrategy => '2', amopopr => '<=(date,date)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'date', amopstrategy => '3', amopopr => '=(date,date)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'date', amopstrategy => '4', amopopr => '>=(date,date)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'date', amopstrategy => '5', amopopr => '>(date,date)', + amopmethod => 'brin' }, + +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'timestamp', amopstrategy => '1', + amopopr => '<(date,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'timestamp', amopstrategy => '2', + amopopr => '<=(date,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'timestamp', amopstrategy => '3', + amopopr => '=(date,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'timestamp', amopstrategy => '4', + amopopr => '>=(date,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'timestamp', amopstrategy => '5', + amopopr => '>(date,timestamp)', amopmethod => 'brin' }, + +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'timestamptz', amopstrategy => '1', + amopopr => '<(date,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'timestamptz', amopstrategy => '2', + amopopr => '<=(date,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'timestamptz', amopstrategy => '3', + amopopr => '=(date,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'timestamptz', amopstrategy => '4', + amopopr => '>=(date,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date', + amoprighttype => 'timestamptz', amopstrategy => '5', + amopopr => '>(date,timestamptz)', amopmethod => 'brin' }, + +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'date', amopstrategy => '1', + amopopr => '<(timestamptz,date)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'date', amopstrategy => '2', + amopopr => '<=(timestamptz,date)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'date', amopstrategy => '3', + amopopr => '=(timestamptz,date)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'date', amopstrategy => '4', + amopopr => '>=(timestamptz,date)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'date', amopstrategy => '5', + amopopr => '>(timestamptz,date)', amopmethod => 'brin' }, + +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamp', amopstrategy => '1', + amopopr => '<(timestamptz,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamp', amopstrategy => '2', + amopopr => '<=(timestamptz,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamp', amopstrategy => '3', + amopopr => '=(timestamptz,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamp', amopstrategy => '4', + amopopr => '>=(timestamptz,timestamp)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamp', amopstrategy => '5', + amopopr => '>(timestamptz,timestamp)', amopmethod => 'brin' }, + +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamptz', amopstrategy => '1', + amopopr => '<(timestamptz,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamptz', amopstrategy => '2', + amopopr => '<=(timestamptz,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamptz', amopstrategy => '3', + amopopr => '=(timestamptz,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamptz', amopstrategy => '4', + amopopr => '>=(timestamptz,timestamptz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz', + amoprighttype => 'timestamptz', amopstrategy => '5', + amopopr => '>(timestamptz,timestamptz)', amopmethod => 'brin' }, + +# minmax interval +{ amopfamily => 'brin/interval_minmax_ops', amoplefttype => 'interval', + amoprighttype => 'interval', amopstrategy => '1', + amopopr => '<(interval,interval)', amopmethod => 'brin' }, +{ amopfamily => 'brin/interval_minmax_ops', amoplefttype => 'interval', + amoprighttype => 'interval', amopstrategy => '2', + amopopr => '<=(interval,interval)', amopmethod => 'brin' }, +{ amopfamily => 'brin/interval_minmax_ops', amoplefttype => 'interval', + amoprighttype => 'interval', amopstrategy => '3', + amopopr => '=(interval,interval)', amopmethod => 'brin' }, +{ amopfamily => 'brin/interval_minmax_ops', amoplefttype => 'interval', + amoprighttype => 'interval', amopstrategy => '4', + amopopr => '>=(interval,interval)', amopmethod => 'brin' }, +{ amopfamily => 'brin/interval_minmax_ops', amoplefttype => 'interval', + amoprighttype => 'interval', amopstrategy => '5', + amopopr => '>(interval,interval)', amopmethod => 'brin' }, + +# minmax time with time zone +{ amopfamily => 'brin/timetz_minmax_ops', amoplefttype => 'timetz', + amoprighttype => 'timetz', amopstrategy => '1', amopopr => '<(timetz,timetz)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/timetz_minmax_ops', amoplefttype => 'timetz', + amoprighttype => 'timetz', amopstrategy => '2', + amopopr => '<=(timetz,timetz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/timetz_minmax_ops', amoplefttype => 'timetz', + amoprighttype => 'timetz', amopstrategy => '3', amopopr => '=(timetz,timetz)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/timetz_minmax_ops', amoplefttype => 'timetz', + amoprighttype => 'timetz', amopstrategy => '4', + amopopr => '>=(timetz,timetz)', amopmethod => 'brin' }, +{ amopfamily => 'brin/timetz_minmax_ops', amoplefttype => 'timetz', + amoprighttype => 'timetz', amopstrategy => '5', amopopr => '>(timetz,timetz)', + amopmethod => 'brin' }, + +# minmax bit +{ amopfamily => 'brin/bit_minmax_ops', amoplefttype => 'bit', + amoprighttype => 'bit', amopstrategy => '1', amopopr => '<(bit,bit)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/bit_minmax_ops', amoplefttype => 'bit', + amoprighttype => 'bit', amopstrategy => '2', amopopr => '<=(bit,bit)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/bit_minmax_ops', amoplefttype => 'bit', + amoprighttype => 'bit', amopstrategy => '3', amopopr => '=(bit,bit)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/bit_minmax_ops', amoplefttype => 'bit', + amoprighttype => 'bit', amopstrategy => '4', amopopr => '>=(bit,bit)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/bit_minmax_ops', amoplefttype => 'bit', + amoprighttype => 'bit', amopstrategy => '5', amopopr => '>(bit,bit)', + amopmethod => 'brin' }, + +# minmax bit varying +{ amopfamily => 'brin/varbit_minmax_ops', amoplefttype => 'varbit', + amoprighttype => 'varbit', amopstrategy => '1', amopopr => '<(varbit,varbit)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/varbit_minmax_ops', amoplefttype => 'varbit', + amoprighttype => 'varbit', amopstrategy => '2', + amopopr => '<=(varbit,varbit)', amopmethod => 'brin' }, +{ amopfamily => 'brin/varbit_minmax_ops', amoplefttype => 'varbit', + amoprighttype => 'varbit', amopstrategy => '3', amopopr => '=(varbit,varbit)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/varbit_minmax_ops', amoplefttype => 'varbit', + amoprighttype => 'varbit', amopstrategy => '4', + amopopr => '>=(varbit,varbit)', amopmethod => 'brin' }, +{ amopfamily => 'brin/varbit_minmax_ops', amoplefttype => 'varbit', + amoprighttype => 'varbit', amopstrategy => '5', amopopr => '>(varbit,varbit)', + amopmethod => 'brin' }, + +# minmax numeric +{ amopfamily => 'brin/numeric_minmax_ops', amoplefttype => 'numeric', + amoprighttype => 'numeric', amopstrategy => '1', + amopopr => '<(numeric,numeric)', amopmethod => 'brin' }, +{ amopfamily => 'brin/numeric_minmax_ops', amoplefttype => 'numeric', + amoprighttype => 'numeric', amopstrategy => '2', + amopopr => '<=(numeric,numeric)', amopmethod => 'brin' }, +{ amopfamily => 'brin/numeric_minmax_ops', amoplefttype => 'numeric', + amoprighttype => 'numeric', amopstrategy => '3', + amopopr => '=(numeric,numeric)', amopmethod => 'brin' }, +{ amopfamily => 'brin/numeric_minmax_ops', amoplefttype => 'numeric', + amoprighttype => 'numeric', amopstrategy => '4', + amopopr => '>=(numeric,numeric)', amopmethod => 'brin' }, +{ amopfamily => 'brin/numeric_minmax_ops', amoplefttype => 'numeric', + amoprighttype => 'numeric', amopstrategy => '5', + amopopr => '>(numeric,numeric)', amopmethod => 'brin' }, + +# minmax uuid +{ amopfamily => 'brin/uuid_minmax_ops', amoplefttype => 'uuid', + amoprighttype => 'uuid', amopstrategy => '1', amopopr => '<(uuid,uuid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/uuid_minmax_ops', amoplefttype => 'uuid', + amoprighttype => 'uuid', amopstrategy => '2', amopopr => '<=(uuid,uuid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/uuid_minmax_ops', amoplefttype => 'uuid', + amoprighttype => 'uuid', amopstrategy => '3', amopopr => '=(uuid,uuid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/uuid_minmax_ops', amoplefttype => 'uuid', + amoprighttype => 'uuid', amopstrategy => '4', amopopr => '>=(uuid,uuid)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/uuid_minmax_ops', amoplefttype => 'uuid', + amoprighttype => 'uuid', amopstrategy => '5', amopopr => '>(uuid,uuid)', + amopmethod => 'brin' }, + +# inclusion range types +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '1', + amopopr => '<<(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '2', + amopopr => '&<(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '3', + amopopr => '&&(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '4', + amopopr => '&>(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '5', + amopopr => '>>(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '7', + amopopr => '@>(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '8', + amopopr => '<@(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyelement', amopstrategy => '16', + amopopr => '@>(anyrange,anyelement)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '17', + amopopr => '-|-(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '18', + amopopr => '=(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '20', + amopopr => '<(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '21', + amopopr => '<=(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '22', + amopopr => '>(anyrange,anyrange)', amopmethod => 'brin' }, +{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange', + amoprighttype => 'anyrange', amopstrategy => '23', + amopopr => '>=(anyrange,anyrange)', amopmethod => 'brin' }, + +# minmax pg_lsn +{ amopfamily => 'brin/pg_lsn_minmax_ops', amoplefttype => 'pg_lsn', + amoprighttype => 'pg_lsn', amopstrategy => '1', amopopr => '<(pg_lsn,pg_lsn)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/pg_lsn_minmax_ops', amoplefttype => 'pg_lsn', + amoprighttype => 'pg_lsn', amopstrategy => '2', + amopopr => '<=(pg_lsn,pg_lsn)', amopmethod => 'brin' }, +{ amopfamily => 'brin/pg_lsn_minmax_ops', amoplefttype => 'pg_lsn', + amoprighttype => 'pg_lsn', amopstrategy => '3', amopopr => '=(pg_lsn,pg_lsn)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/pg_lsn_minmax_ops', amoplefttype => 'pg_lsn', + amoprighttype => 'pg_lsn', amopstrategy => '4', + amopopr => '>=(pg_lsn,pg_lsn)', amopmethod => 'brin' }, +{ amopfamily => 'brin/pg_lsn_minmax_ops', amoplefttype => 'pg_lsn', + amoprighttype => 'pg_lsn', amopstrategy => '5', amopopr => '>(pg_lsn,pg_lsn)', + amopmethod => 'brin' }, + +# inclusion box +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '1', amopopr => '<<(box,box)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '2', amopopr => '&<(box,box)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '3', amopopr => '&&(box,box)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '4', amopopr => '&>(box,box)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '5', amopopr => '>>(box,box)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '6', amopopr => '~=(box,box)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '7', amopopr => '@>(box,box)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '8', amopopr => '<@(box,box)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '9', amopopr => '&<|(box,box)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '10', amopopr => '<<|(box,box)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '11', amopopr => '|>>(box,box)', + amopmethod => 'brin' }, +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'box', amopstrategy => '12', amopopr => '|&>(box,box)', + amopmethod => 'brin' }, + +# we could, but choose not to, supply entries for strategies 13 and 14 + +{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box', + amoprighttype => 'point', amopstrategy => '7', amopopr => '@>(box,point)', + amopmethod => 'brin' }, + +] diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h index 00e77d4c61..4be325221f 100644 --- a/src/include/catalog/pg_amop.h +++ b/src/include/catalog/pg_amop.h @@ -2,7 +2,6 @@ * * pg_amop.h * definition of the system "amop" relation (pg_amop) - * along with the relation's initial contents. * * The amop table identifies the operators associated with each index operator * family and operator class (classes are subsets of families). An associated @@ -36,8 +35,8 @@ * src/include/catalog/pg_amop.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -45,29 +44,39 @@ #define PG_AMOP_H #include "catalog/genbki.h" +#include "catalog/pg_amop_d.h" /* ---------------- * pg_amop definition. cpp turns this into * typedef struct FormData_pg_amop * ---------------- */ -#define AccessMethodOperatorRelationId 2602 - -CATALOG(pg_amop,2602) +CATALOG(pg_amop,2602,AccessMethodOperatorRelationId) { - Oid amopfamily; /* the index opfamily this entry is for */ - Oid amoplefttype; /* operator's left input data type */ - Oid amoprighttype; /* operator's right input data type */ - int16 amopstrategy; /* operator strategy number */ - char amoppurpose; /* is operator for 's'earch or 'o'rdering? */ - Oid amopopr; /* the operator's pg_operator OID */ - Oid amopmethod; /* the index access method this entry is for */ - Oid amopsortfamily; /* ordering opfamily OID, or 0 if search op */ -} FormData_pg_amop; + /* the index opfamily this entry is for */ + Oid amopfamily BKI_LOOKUP(pg_opfamily); -/* allowed values of amoppurpose: */ -#define AMOP_SEARCH 's' /* operator is for search */ -#define AMOP_ORDER 'o' /* operator is for ordering */ + /* operator's left input data type */ + Oid amoplefttype BKI_LOOKUP(pg_type); + + /* operator's right input data type */ + Oid amoprighttype BKI_LOOKUP(pg_type); + + /* operator strategy number */ + int16 amopstrategy; + + /* is operator for 's'earch or 'o'rdering? */ + char amoppurpose BKI_DEFAULT(s); + + /* the operator's pg_operator OID */ + Oid amopopr BKI_LOOKUP(pg_operator); + + /* the index access method this entry is for */ + Oid amopmethod BKI_LOOKUP(pg_am); + + /* ordering opfamily OID, or 0 if search op */ + Oid amopsortfamily BKI_DEFAULT(0) BKI_LOOKUP(pg_opfamily); +} FormData_pg_amop; /* ---------------- * Form_pg_amop corresponds to a pointer to a tuple with @@ -76,1107 +85,12 @@ CATALOG(pg_amop,2602) */ typedef FormData_pg_amop *Form_pg_amop; -/* ---------------- - * compiler constants for pg_amop - * ---------------- - */ -#define Natts_pg_amop 8 -#define Anum_pg_amop_amopfamily 1 -#define Anum_pg_amop_amoplefttype 2 -#define Anum_pg_amop_amoprighttype 3 -#define Anum_pg_amop_amopstrategy 4 -#define Anum_pg_amop_amoppurpose 5 -#define Anum_pg_amop_amopopr 6 -#define Anum_pg_amop_amopmethod 7 -#define Anum_pg_amop_amopsortfamily 8 +#ifdef EXPOSE_TO_CLIENT_CODE -/* ---------------- - * initial contents of pg_amop - * ---------------- - */ +/* allowed values of amoppurpose: */ +#define AMOP_SEARCH 's' /* operator is for search */ +#define AMOP_ORDER 'o' /* operator is for ordering */ -/* - * btree integer_ops - */ - -/* default operators int2 */ -DATA(insert ( 1976 21 21 1 s 95 403 0 )); -DATA(insert ( 1976 21 21 2 s 522 403 0 )); -DATA(insert ( 1976 21 21 3 s 94 403 0 )); -DATA(insert ( 1976 21 21 4 s 524 403 0 )); -DATA(insert ( 1976 21 21 5 s 520 403 0 )); -/* crosstype operators int24 */ -DATA(insert ( 1976 21 23 1 s 534 403 0 )); -DATA(insert ( 1976 21 23 2 s 540 403 0 )); -DATA(insert ( 1976 21 23 3 s 532 403 0 )); -DATA(insert ( 1976 21 23 4 s 542 403 0 )); -DATA(insert ( 1976 21 23 5 s 536 403 0 )); -/* crosstype operators int28 */ -DATA(insert ( 1976 21 20 1 s 1864 403 0 )); -DATA(insert ( 1976 21 20 2 s 1866 403 0 )); -DATA(insert ( 1976 21 20 3 s 1862 403 0 )); -DATA(insert ( 1976 21 20 4 s 1867 403 0 )); -DATA(insert ( 1976 21 20 5 s 1865 403 0 )); -/* default operators int4 */ -DATA(insert ( 1976 23 23 1 s 97 403 0 )); -DATA(insert ( 1976 23 23 2 s 523 403 0 )); -DATA(insert ( 1976 23 23 3 s 96 403 0 )); -DATA(insert ( 1976 23 23 4 s 525 403 0 )); -DATA(insert ( 1976 23 23 5 s 521 403 0 )); -/* crosstype operators int42 */ -DATA(insert ( 1976 23 21 1 s 535 403 0 )); -DATA(insert ( 1976 23 21 2 s 541 403 0 )); -DATA(insert ( 1976 23 21 3 s 533 403 0 )); -DATA(insert ( 1976 23 21 4 s 543 403 0 )); -DATA(insert ( 1976 23 21 5 s 537 403 0 )); -/* crosstype operators int48 */ -DATA(insert ( 1976 23 20 1 s 37 403 0 )); -DATA(insert ( 1976 23 20 2 s 80 403 0 )); -DATA(insert ( 1976 23 20 3 s 15 403 0 )); -DATA(insert ( 1976 23 20 4 s 82 403 0 )); -DATA(insert ( 1976 23 20 5 s 76 403 0 )); -/* default operators int8 */ -DATA(insert ( 1976 20 20 1 s 412 403 0 )); -DATA(insert ( 1976 20 20 2 s 414 403 0 )); -DATA(insert ( 1976 20 20 3 s 410 403 0 )); -DATA(insert ( 1976 20 20 4 s 415 403 0 )); -DATA(insert ( 1976 20 20 5 s 413 403 0 )); -/* crosstype operators int82 */ -DATA(insert ( 1976 20 21 1 s 1870 403 0 )); -DATA(insert ( 1976 20 21 2 s 1872 403 0 )); -DATA(insert ( 1976 20 21 3 s 1868 403 0 )); -DATA(insert ( 1976 20 21 4 s 1873 403 0 )); -DATA(insert ( 1976 20 21 5 s 1871 403 0 )); -/* crosstype operators int84 */ -DATA(insert ( 1976 20 23 1 s 418 403 0 )); -DATA(insert ( 1976 20 23 2 s 420 403 0 )); -DATA(insert ( 1976 20 23 3 s 416 403 0 )); -DATA(insert ( 1976 20 23 4 s 430 403 0 )); -DATA(insert ( 1976 20 23 5 s 419 403 0 )); - -/* - * btree oid_ops - */ - -DATA(insert ( 1989 26 26 1 s 609 403 0 )); -DATA(insert ( 1989 26 26 2 s 611 403 0 )); -DATA(insert ( 1989 26 26 3 s 607 403 0 )); -DATA(insert ( 1989 26 26 4 s 612 403 0 )); -DATA(insert ( 1989 26 26 5 s 610 403 0 )); - -/* - * btree tid_ops - */ - -DATA(insert ( 2789 27 27 1 s 2799 403 0 )); -DATA(insert ( 2789 27 27 2 s 2801 403 0 )); -DATA(insert ( 2789 27 27 3 s 387 403 0 )); -DATA(insert ( 2789 27 27 4 s 2802 403 0 )); -DATA(insert ( 2789 27 27 5 s 2800 403 0 )); - -/* - * btree oidvector_ops - */ - -DATA(insert ( 1991 30 30 1 s 645 403 0 )); -DATA(insert ( 1991 30 30 2 s 647 403 0 )); -DATA(insert ( 1991 30 30 3 s 649 403 0 )); -DATA(insert ( 1991 30 30 4 s 648 403 0 )); -DATA(insert ( 1991 30 30 5 s 646 403 0 )); - -/* - * btree float_ops - */ - -/* default operators float4 */ -DATA(insert ( 1970 700 700 1 s 622 403 0 )); -DATA(insert ( 1970 700 700 2 s 624 403 0 )); -DATA(insert ( 1970 700 700 3 s 620 403 0 )); -DATA(insert ( 1970 700 700 4 s 625 403 0 )); -DATA(insert ( 1970 700 700 5 s 623 403 0 )); -/* crosstype operators float48 */ -DATA(insert ( 1970 700 701 1 s 1122 403 0 )); -DATA(insert ( 1970 700 701 2 s 1124 403 0 )); -DATA(insert ( 1970 700 701 3 s 1120 403 0 )); -DATA(insert ( 1970 700 701 4 s 1125 403 0 )); -DATA(insert ( 1970 700 701 5 s 1123 403 0 )); -/* default operators float8 */ -DATA(insert ( 1970 701 701 1 s 672 403 0 )); -DATA(insert ( 1970 701 701 2 s 673 403 0 )); -DATA(insert ( 1970 701 701 3 s 670 403 0 )); -DATA(insert ( 1970 701 701 4 s 675 403 0 )); -DATA(insert ( 1970 701 701 5 s 674 403 0 )); -/* crosstype operators float84 */ -DATA(insert ( 1970 701 700 1 s 1132 403 0 )); -DATA(insert ( 1970 701 700 2 s 1134 403 0 )); -DATA(insert ( 1970 701 700 3 s 1130 403 0 )); -DATA(insert ( 1970 701 700 4 s 1135 403 0 )); -DATA(insert ( 1970 701 700 5 s 1133 403 0 )); - -/* - * btree char_ops - */ - -DATA(insert ( 429 18 18 1 s 631 403 0 )); -DATA(insert ( 429 18 18 2 s 632 403 0 )); -DATA(insert ( 429 18 18 3 s 92 403 0 )); -DATA(insert ( 429 18 18 4 s 634 403 0 )); -DATA(insert ( 429 18 18 5 s 633 403 0 )); - -/* - * btree name_ops - */ - -DATA(insert ( 1986 19 19 1 s 660 403 0 )); -DATA(insert ( 1986 19 19 2 s 661 403 0 )); -DATA(insert ( 1986 19 19 3 s 93 403 0 )); -DATA(insert ( 1986 19 19 4 s 663 403 0 )); -DATA(insert ( 1986 19 19 5 s 662 403 0 )); - -/* - * btree text_ops - */ - -DATA(insert ( 1994 25 25 1 s 664 403 0 )); -DATA(insert ( 1994 25 25 2 s 665 403 0 )); -DATA(insert ( 1994 25 25 3 s 98 403 0 )); -DATA(insert ( 1994 25 25 4 s 667 403 0 )); -DATA(insert ( 1994 25 25 5 s 666 403 0 )); - -/* - * btree bpchar_ops - */ - -DATA(insert ( 426 1042 1042 1 s 1058 403 0 )); -DATA(insert ( 426 1042 1042 2 s 1059 403 0 )); -DATA(insert ( 426 1042 1042 3 s 1054 403 0 )); -DATA(insert ( 426 1042 1042 4 s 1061 403 0 )); -DATA(insert ( 426 1042 1042 5 s 1060 403 0 )); - -/* - * btree bytea_ops - */ - -DATA(insert ( 428 17 17 1 s 1957 403 0 )); -DATA(insert ( 428 17 17 2 s 1958 403 0 )); -DATA(insert ( 428 17 17 3 s 1955 403 0 )); -DATA(insert ( 428 17 17 4 s 1960 403 0 )); -DATA(insert ( 428 17 17 5 s 1959 403 0 )); - -/* - * btree abstime_ops - */ - -DATA(insert ( 421 702 702 1 s 562 403 0 )); -DATA(insert ( 421 702 702 2 s 564 403 0 )); -DATA(insert ( 421 702 702 3 s 560 403 0 )); -DATA(insert ( 421 702 702 4 s 565 403 0 )); -DATA(insert ( 421 702 702 5 s 563 403 0 )); - -/* - * btree datetime_ops - */ - -/* default operators date */ -DATA(insert ( 434 1082 1082 1 s 1095 403 0 )); -DATA(insert ( 434 1082 1082 2 s 1096 403 0 )); -DATA(insert ( 434 1082 1082 3 s 1093 403 0 )); -DATA(insert ( 434 1082 1082 4 s 1098 403 0 )); -DATA(insert ( 434 1082 1082 5 s 1097 403 0 )); -/* crosstype operators vs timestamp */ -DATA(insert ( 434 1082 1114 1 s 2345 403 0 )); -DATA(insert ( 434 1082 1114 2 s 2346 403 0 )); -DATA(insert ( 434 1082 1114 3 s 2347 403 0 )); -DATA(insert ( 434 1082 1114 4 s 2348 403 0 )); -DATA(insert ( 434 1082 1114 5 s 2349 403 0 )); -/* crosstype operators vs timestamptz */ -DATA(insert ( 434 1082 1184 1 s 2358 403 0 )); -DATA(insert ( 434 1082 1184 2 s 2359 403 0 )); -DATA(insert ( 434 1082 1184 3 s 2360 403 0 )); -DATA(insert ( 434 1082 1184 4 s 2361 403 0 )); -DATA(insert ( 434 1082 1184 5 s 2362 403 0 )); -/* default operators timestamp */ -DATA(insert ( 434 1114 1114 1 s 2062 403 0 )); -DATA(insert ( 434 1114 1114 2 s 2063 403 0 )); -DATA(insert ( 434 1114 1114 3 s 2060 403 0 )); -DATA(insert ( 434 1114 1114 4 s 2065 403 0 )); -DATA(insert ( 434 1114 1114 5 s 2064 403 0 )); -/* crosstype operators vs date */ -DATA(insert ( 434 1114 1082 1 s 2371 403 0 )); -DATA(insert ( 434 1114 1082 2 s 2372 403 0 )); -DATA(insert ( 434 1114 1082 3 s 2373 403 0 )); -DATA(insert ( 434 1114 1082 4 s 2374 403 0 )); -DATA(insert ( 434 1114 1082 5 s 2375 403 0 )); -/* crosstype operators vs timestamptz */ -DATA(insert ( 434 1114 1184 1 s 2534 403 0 )); -DATA(insert ( 434 1114 1184 2 s 2535 403 0 )); -DATA(insert ( 434 1114 1184 3 s 2536 403 0 )); -DATA(insert ( 434 1114 1184 4 s 2537 403 0 )); -DATA(insert ( 434 1114 1184 5 s 2538 403 0 )); -/* default operators timestamptz */ -DATA(insert ( 434 1184 1184 1 s 1322 403 0 )); -DATA(insert ( 434 1184 1184 2 s 1323 403 0 )); -DATA(insert ( 434 1184 1184 3 s 1320 403 0 )); -DATA(insert ( 434 1184 1184 4 s 1325 403 0 )); -DATA(insert ( 434 1184 1184 5 s 1324 403 0 )); -/* crosstype operators vs date */ -DATA(insert ( 434 1184 1082 1 s 2384 403 0 )); -DATA(insert ( 434 1184 1082 2 s 2385 403 0 )); -DATA(insert ( 434 1184 1082 3 s 2386 403 0 )); -DATA(insert ( 434 1184 1082 4 s 2387 403 0 )); -DATA(insert ( 434 1184 1082 5 s 2388 403 0 )); -/* crosstype operators vs timestamp */ -DATA(insert ( 434 1184 1114 1 s 2540 403 0 )); -DATA(insert ( 434 1184 1114 2 s 2541 403 0 )); -DATA(insert ( 434 1184 1114 3 s 2542 403 0 )); -DATA(insert ( 434 1184 1114 4 s 2543 403 0 )); -DATA(insert ( 434 1184 1114 5 s 2544 403 0 )); - -/* - * btree time_ops - */ - -DATA(insert ( 1996 1083 1083 1 s 1110 403 0 )); -DATA(insert ( 1996 1083 1083 2 s 1111 403 0 )); -DATA(insert ( 1996 1083 1083 3 s 1108 403 0 )); -DATA(insert ( 1996 1083 1083 4 s 1113 403 0 )); -DATA(insert ( 1996 1083 1083 5 s 1112 403 0 )); - -/* - * btree timetz_ops - */ - -DATA(insert ( 2000 1266 1266 1 s 1552 403 0 )); -DATA(insert ( 2000 1266 1266 2 s 1553 403 0 )); -DATA(insert ( 2000 1266 1266 3 s 1550 403 0 )); -DATA(insert ( 2000 1266 1266 4 s 1555 403 0 )); -DATA(insert ( 2000 1266 1266 5 s 1554 403 0 )); - -/* - * btree interval_ops - */ - -DATA(insert ( 1982 1186 1186 1 s 1332 403 0 )); -DATA(insert ( 1982 1186 1186 2 s 1333 403 0 )); -DATA(insert ( 1982 1186 1186 3 s 1330 403 0 )); -DATA(insert ( 1982 1186 1186 4 s 1335 403 0 )); -DATA(insert ( 1982 1186 1186 5 s 1334 403 0 )); - -/* - * btree macaddr - */ - -DATA(insert ( 1984 829 829 1 s 1222 403 0 )); -DATA(insert ( 1984 829 829 2 s 1223 403 0 )); -DATA(insert ( 1984 829 829 3 s 1220 403 0 )); -DATA(insert ( 1984 829 829 4 s 1225 403 0 )); -DATA(insert ( 1984 829 829 5 s 1224 403 0 )); - -/* - * btree macaddr8 - */ - -DATA(insert ( 3371 774 774 1 s 3364 403 0 )); -DATA(insert ( 3371 774 774 2 s 3365 403 0 )); -DATA(insert ( 3371 774 774 3 s 3362 403 0 )); -DATA(insert ( 3371 774 774 4 s 3367 403 0 )); -DATA(insert ( 3371 774 774 5 s 3366 403 0 )); - -/* - * btree network - */ - -DATA(insert ( 1974 869 869 1 s 1203 403 0 )); -DATA(insert ( 1974 869 869 2 s 1204 403 0 )); -DATA(insert ( 1974 869 869 3 s 1201 403 0 )); -DATA(insert ( 1974 869 869 4 s 1206 403 0 )); -DATA(insert ( 1974 869 869 5 s 1205 403 0 )); - -/* - * btree numeric - */ - -DATA(insert ( 1988 1700 1700 1 s 1754 403 0 )); -DATA(insert ( 1988 1700 1700 2 s 1755 403 0 )); -DATA(insert ( 1988 1700 1700 3 s 1752 403 0 )); -DATA(insert ( 1988 1700 1700 4 s 1757 403 0 )); -DATA(insert ( 1988 1700 1700 5 s 1756 403 0 )); - -/* - * btree bool - */ - -DATA(insert ( 424 16 16 1 s 58 403 0 )); -DATA(insert ( 424 16 16 2 s 1694 403 0 )); -DATA(insert ( 424 16 16 3 s 91 403 0 )); -DATA(insert ( 424 16 16 4 s 1695 403 0 )); -DATA(insert ( 424 16 16 5 s 59 403 0 )); - -/* - * btree bit - */ - -DATA(insert ( 423 1560 1560 1 s 1786 403 0 )); -DATA(insert ( 423 1560 1560 2 s 1788 403 0 )); -DATA(insert ( 423 1560 1560 3 s 1784 403 0 )); -DATA(insert ( 423 1560 1560 4 s 1789 403 0 )); -DATA(insert ( 423 1560 1560 5 s 1787 403 0 )); - -/* - * btree varbit - */ - -DATA(insert ( 2002 1562 1562 1 s 1806 403 0 )); -DATA(insert ( 2002 1562 1562 2 s 1808 403 0 )); -DATA(insert ( 2002 1562 1562 3 s 1804 403 0 )); -DATA(insert ( 2002 1562 1562 4 s 1809 403 0 )); -DATA(insert ( 2002 1562 1562 5 s 1807 403 0 )); - -/* - * btree text pattern - */ - -DATA(insert ( 2095 25 25 1 s 2314 403 0 )); -DATA(insert ( 2095 25 25 2 s 2315 403 0 )); -DATA(insert ( 2095 25 25 3 s 98 403 0 )); -DATA(insert ( 2095 25 25 4 s 2317 403 0 )); -DATA(insert ( 2095 25 25 5 s 2318 403 0 )); - -/* - * btree bpchar pattern - */ - -DATA(insert ( 2097 1042 1042 1 s 2326 403 0 )); -DATA(insert ( 2097 1042 1042 2 s 2327 403 0 )); -DATA(insert ( 2097 1042 1042 3 s 1054 403 0 )); -DATA(insert ( 2097 1042 1042 4 s 2329 403 0 )); -DATA(insert ( 2097 1042 1042 5 s 2330 403 0 )); - -/* - * btree money_ops - */ - -DATA(insert ( 2099 790 790 1 s 902 403 0 )); -DATA(insert ( 2099 790 790 2 s 904 403 0 )); -DATA(insert ( 2099 790 790 3 s 900 403 0 )); -DATA(insert ( 2099 790 790 4 s 905 403 0 )); -DATA(insert ( 2099 790 790 5 s 903 403 0 )); - -/* - * btree reltime_ops - */ - -DATA(insert ( 2233 703 703 1 s 568 403 0 )); -DATA(insert ( 2233 703 703 2 s 570 403 0 )); -DATA(insert ( 2233 703 703 3 s 566 403 0 )); -DATA(insert ( 2233 703 703 4 s 571 403 0 )); -DATA(insert ( 2233 703 703 5 s 569 403 0 )); - -/* - * btree tinterval_ops - */ - -DATA(insert ( 2234 704 704 1 s 813 403 0 )); -DATA(insert ( 2234 704 704 2 s 815 403 0 )); -DATA(insert ( 2234 704 704 3 s 811 403 0 )); -DATA(insert ( 2234 704 704 4 s 816 403 0 )); -DATA(insert ( 2234 704 704 5 s 814 403 0 )); - -/* - * btree array_ops - */ - -DATA(insert ( 397 2277 2277 1 s 1072 403 0 )); -DATA(insert ( 397 2277 2277 2 s 1074 403 0 )); -DATA(insert ( 397 2277 2277 3 s 1070 403 0 )); -DATA(insert ( 397 2277 2277 4 s 1075 403 0 )); -DATA(insert ( 397 2277 2277 5 s 1073 403 0 )); - -/* - * btree record_ops - */ - -DATA(insert ( 2994 2249 2249 1 s 2990 403 0 )); -DATA(insert ( 2994 2249 2249 2 s 2992 403 0 )); -DATA(insert ( 2994 2249 2249 3 s 2988 403 0 )); -DATA(insert ( 2994 2249 2249 4 s 2993 403 0 )); -DATA(insert ( 2994 2249 2249 5 s 2991 403 0 )); - -/* - * btree record_image_ops - */ - -DATA(insert ( 3194 2249 2249 1 s 3190 403 0 )); -DATA(insert ( 3194 2249 2249 2 s 3192 403 0 )); -DATA(insert ( 3194 2249 2249 3 s 3188 403 0 )); -DATA(insert ( 3194 2249 2249 4 s 3193 403 0 )); -DATA(insert ( 3194 2249 2249 5 s 3191 403 0 )); - -/* - * btree uuid_ops - */ - -DATA(insert ( 2968 2950 2950 1 s 2974 403 0 )); -DATA(insert ( 2968 2950 2950 2 s 2976 403 0 )); -DATA(insert ( 2968 2950 2950 3 s 2972 403 0 )); -DATA(insert ( 2968 2950 2950 4 s 2977 403 0 )); -DATA(insert ( 2968 2950 2950 5 s 2975 403 0 )); - -/* - * btree pg_lsn_ops - */ - -DATA(insert ( 3253 3220 3220 1 s 3224 403 0 )); -DATA(insert ( 3253 3220 3220 2 s 3226 403 0 )); -DATA(insert ( 3253 3220 3220 3 s 3222 403 0 )); -DATA(insert ( 3253 3220 3220 4 s 3227 403 0 )); -DATA(insert ( 3253 3220 3220 5 s 3225 403 0 )); - -/* - * hash index _ops - */ - -/* bpchar_ops */ -DATA(insert ( 427 1042 1042 1 s 1054 405 0 )); -/* char_ops */ -DATA(insert ( 431 18 18 1 s 92 405 0 )); -/* date_ops */ -DATA(insert ( 435 1082 1082 1 s 1093 405 0 )); -/* float_ops */ -DATA(insert ( 1971 700 700 1 s 620 405 0 )); -DATA(insert ( 1971 701 701 1 s 670 405 0 )); -DATA(insert ( 1971 700 701 1 s 1120 405 0 )); -DATA(insert ( 1971 701 700 1 s 1130 405 0 )); -/* network_ops */ -DATA(insert ( 1975 869 869 1 s 1201 405 0 )); -/* integer_ops */ -DATA(insert ( 1977 21 21 1 s 94 405 0 )); -DATA(insert ( 1977 23 23 1 s 96 405 0 )); -DATA(insert ( 1977 20 20 1 s 410 405 0 )); -DATA(insert ( 1977 21 23 1 s 532 405 0 )); -DATA(insert ( 1977 21 20 1 s 1862 405 0 )); -DATA(insert ( 1977 23 21 1 s 533 405 0 )); -DATA(insert ( 1977 23 20 1 s 15 405 0 )); -DATA(insert ( 1977 20 21 1 s 1868 405 0 )); -DATA(insert ( 1977 20 23 1 s 416 405 0 )); -/* interval_ops */ -DATA(insert ( 1983 1186 1186 1 s 1330 405 0 )); -/* macaddr_ops */ -DATA(insert ( 1985 829 829 1 s 1220 405 0 )); -/* macaddr8_ops */ -DATA(insert ( 3372 774 774 1 s 3362 405 0 )); -/* name_ops */ -DATA(insert ( 1987 19 19 1 s 93 405 0 )); -/* oid_ops */ -DATA(insert ( 1990 26 26 1 s 607 405 0 )); -/* oidvector_ops */ -DATA(insert ( 1992 30 30 1 s 649 405 0 )); -/* text_ops */ -DATA(insert ( 1995 25 25 1 s 98 405 0 )); -/* time_ops */ -DATA(insert ( 1997 1083 1083 1 s 1108 405 0 )); -/* timestamptz_ops */ -DATA(insert ( 1999 1184 1184 1 s 1320 405 0 )); -/* timetz_ops */ -DATA(insert ( 2001 1266 1266 1 s 1550 405 0 )); -/* timestamp_ops */ -DATA(insert ( 2040 1114 1114 1 s 2060 405 0 )); -/* bool_ops */ -DATA(insert ( 2222 16 16 1 s 91 405 0 )); -/* bytea_ops */ -DATA(insert ( 2223 17 17 1 s 1955 405 0 )); -/* xid_ops */ -DATA(insert ( 2225 28 28 1 s 352 405 0 )); -/* cid_ops */ -DATA(insert ( 2226 29 29 1 s 385 405 0 )); -/* abstime_ops */ -DATA(insert ( 2227 702 702 1 s 560 405 0 )); -/* reltime_ops */ -DATA(insert ( 2228 703 703 1 s 566 405 0 )); -/* text_pattern_ops */ -DATA(insert ( 2229 25 25 1 s 98 405 0 )); -/* bpchar_pattern_ops */ -DATA(insert ( 2231 1042 1042 1 s 1054 405 0 )); -/* aclitem_ops */ -DATA(insert ( 2235 1033 1033 1 s 974 405 0 )); -/* uuid_ops */ -DATA(insert ( 2969 2950 2950 1 s 2972 405 0 )); -/* pg_lsn_ops */ -DATA(insert ( 3254 3220 3220 1 s 3222 405 0 )); -/* numeric_ops */ -DATA(insert ( 1998 1700 1700 1 s 1752 405 0 )); -/* array_ops */ -DATA(insert ( 627 2277 2277 1 s 1070 405 0 )); - - -/* - * gist box_ops - */ - -DATA(insert ( 2593 603 603 1 s 493 783 0 )); -DATA(insert ( 2593 603 603 2 s 494 783 0 )); -DATA(insert ( 2593 603 603 3 s 500 783 0 )); -DATA(insert ( 2593 603 603 4 s 495 783 0 )); -DATA(insert ( 2593 603 603 5 s 496 783 0 )); -DATA(insert ( 2593 603 603 6 s 499 783 0 )); -DATA(insert ( 2593 603 603 7 s 498 783 0 )); -DATA(insert ( 2593 603 603 8 s 497 783 0 )); -DATA(insert ( 2593 603 603 9 s 2571 783 0 )); -DATA(insert ( 2593 603 603 10 s 2570 783 0 )); -DATA(insert ( 2593 603 603 11 s 2573 783 0 )); -DATA(insert ( 2593 603 603 12 s 2572 783 0 )); -DATA(insert ( 2593 603 603 13 s 2863 783 0 )); -DATA(insert ( 2593 603 603 14 s 2862 783 0 )); - -/* - * gist point_ops - */ -DATA(insert ( 1029 600 600 11 s 506 783 0 )); -DATA(insert ( 1029 600 600 1 s 507 783 0 )); -DATA(insert ( 1029 600 600 5 s 508 783 0 )); -DATA(insert ( 1029 600 600 10 s 509 783 0 )); -DATA(insert ( 1029 600 600 6 s 510 783 0 )); -DATA(insert ( 1029 600 600 15 o 517 783 1970 )); -DATA(insert ( 1029 600 603 28 s 511 783 0 )); -DATA(insert ( 1029 600 604 48 s 756 783 0 )); -DATA(insert ( 1029 600 718 68 s 758 783 0 )); - - -/* - * gist poly_ops (supports polygons) - */ - -DATA(insert ( 2594 604 604 1 s 485 783 0 )); -DATA(insert ( 2594 604 604 2 s 486 783 0 )); -DATA(insert ( 2594 604 604 3 s 492 783 0 )); -DATA(insert ( 2594 604 604 4 s 487 783 0 )); -DATA(insert ( 2594 604 604 5 s 488 783 0 )); -DATA(insert ( 2594 604 604 6 s 491 783 0 )); -DATA(insert ( 2594 604 604 7 s 490 783 0 )); -DATA(insert ( 2594 604 604 8 s 489 783 0 )); -DATA(insert ( 2594 604 604 9 s 2575 783 0 )); -DATA(insert ( 2594 604 604 10 s 2574 783 0 )); -DATA(insert ( 2594 604 604 11 s 2577 783 0 )); -DATA(insert ( 2594 604 604 12 s 2576 783 0 )); -DATA(insert ( 2594 604 604 13 s 2861 783 0 )); -DATA(insert ( 2594 604 604 14 s 2860 783 0 )); -DATA(insert ( 2594 604 600 15 o 3289 783 1970 )); - -/* - * gist circle_ops - */ - -DATA(insert ( 2595 718 718 1 s 1506 783 0 )); -DATA(insert ( 2595 718 718 2 s 1507 783 0 )); -DATA(insert ( 2595 718 718 3 s 1513 783 0 )); -DATA(insert ( 2595 718 718 4 s 1508 783 0 )); -DATA(insert ( 2595 718 718 5 s 1509 783 0 )); -DATA(insert ( 2595 718 718 6 s 1512 783 0 )); -DATA(insert ( 2595 718 718 7 s 1511 783 0 )); -DATA(insert ( 2595 718 718 8 s 1510 783 0 )); -DATA(insert ( 2595 718 718 9 s 2589 783 0 )); -DATA(insert ( 2595 718 718 10 s 1515 783 0 )); -DATA(insert ( 2595 718 718 11 s 1514 783 0 )); -DATA(insert ( 2595 718 718 12 s 2590 783 0 )); -DATA(insert ( 2595 718 718 13 s 2865 783 0 )); -DATA(insert ( 2595 718 718 14 s 2864 783 0 )); -DATA(insert ( 2595 718 600 15 o 3291 783 1970 )); - -/* - * gin array_ops - */ -DATA(insert ( 2745 2277 2277 1 s 2750 2742 0 )); -DATA(insert ( 2745 2277 2277 2 s 2751 2742 0 )); -DATA(insert ( 2745 2277 2277 3 s 2752 2742 0 )); -DATA(insert ( 2745 2277 2277 4 s 1070 2742 0 )); - -/* - * btree enum_ops - */ -DATA(insert ( 3522 3500 3500 1 s 3518 403 0 )); -DATA(insert ( 3522 3500 3500 2 s 3520 403 0 )); -DATA(insert ( 3522 3500 3500 3 s 3516 403 0 )); -DATA(insert ( 3522 3500 3500 4 s 3521 403 0 )); -DATA(insert ( 3522 3500 3500 5 s 3519 403 0 )); - -/* - * hash enum_ops - */ -DATA(insert ( 3523 3500 3500 1 s 3516 405 0 )); - -/* - * btree tsvector_ops - */ -DATA(insert ( 3626 3614 3614 1 s 3627 403 0 )); -DATA(insert ( 3626 3614 3614 2 s 3628 403 0 )); -DATA(insert ( 3626 3614 3614 3 s 3629 403 0 )); -DATA(insert ( 3626 3614 3614 4 s 3631 403 0 )); -DATA(insert ( 3626 3614 3614 5 s 3632 403 0 )); - -/* - * GiST tsvector_ops - */ -DATA(insert ( 3655 3614 3615 1 s 3636 783 0 )); - -/* - * GIN tsvector_ops - */ -DATA(insert ( 3659 3614 3615 1 s 3636 2742 0 )); -DATA(insert ( 3659 3614 3615 2 s 3660 2742 0 )); - -/* - * btree tsquery_ops - */ -DATA(insert ( 3683 3615 3615 1 s 3674 403 0 )); -DATA(insert ( 3683 3615 3615 2 s 3675 403 0 )); -DATA(insert ( 3683 3615 3615 3 s 3676 403 0 )); -DATA(insert ( 3683 3615 3615 4 s 3678 403 0 )); -DATA(insert ( 3683 3615 3615 5 s 3679 403 0 )); - -/* - * GiST tsquery_ops - */ -DATA(insert ( 3702 3615 3615 7 s 3693 783 0 )); -DATA(insert ( 3702 3615 3615 8 s 3694 783 0 )); - -/* - * btree range_ops - */ -DATA(insert ( 3901 3831 3831 1 s 3884 403 0 )); -DATA(insert ( 3901 3831 3831 2 s 3885 403 0 )); -DATA(insert ( 3901 3831 3831 3 s 3882 403 0 )); -DATA(insert ( 3901 3831 3831 4 s 3886 403 0 )); -DATA(insert ( 3901 3831 3831 5 s 3887 403 0 )); - -/* - * hash range_ops - */ -DATA(insert ( 3903 3831 3831 1 s 3882 405 0 )); - -/* - * GiST range_ops - */ -DATA(insert ( 3919 3831 3831 1 s 3893 783 0 )); -DATA(insert ( 3919 3831 3831 2 s 3895 783 0 )); -DATA(insert ( 3919 3831 3831 3 s 3888 783 0 )); -DATA(insert ( 3919 3831 3831 4 s 3896 783 0 )); -DATA(insert ( 3919 3831 3831 5 s 3894 783 0 )); -DATA(insert ( 3919 3831 3831 6 s 3897 783 0 )); -DATA(insert ( 3919 3831 3831 7 s 3890 783 0 )); -DATA(insert ( 3919 3831 3831 8 s 3892 783 0 )); -DATA(insert ( 3919 3831 2283 16 s 3889 783 0 )); -DATA(insert ( 3919 3831 3831 18 s 3882 783 0 )); - -/* - * SP-GiST quad_point_ops - */ -DATA(insert ( 4015 600 600 11 s 506 4000 0 )); -DATA(insert ( 4015 600 600 1 s 507 4000 0 )); -DATA(insert ( 4015 600 600 5 s 508 4000 0 )); -DATA(insert ( 4015 600 600 10 s 509 4000 0 )); -DATA(insert ( 4015 600 600 6 s 510 4000 0 )); -DATA(insert ( 4015 600 603 8 s 511 4000 0 )); - -/* - * SP-GiST kd_point_ops - */ -DATA(insert ( 4016 600 600 11 s 506 4000 0 )); -DATA(insert ( 4016 600 600 1 s 507 4000 0 )); -DATA(insert ( 4016 600 600 5 s 508 4000 0 )); -DATA(insert ( 4016 600 600 10 s 509 4000 0 )); -DATA(insert ( 4016 600 600 6 s 510 4000 0 )); -DATA(insert ( 4016 600 603 8 s 511 4000 0 )); - -/* - * SP-GiST text_ops - */ -DATA(insert ( 4017 25 25 1 s 2314 4000 0 )); -DATA(insert ( 4017 25 25 2 s 2315 4000 0 )); -DATA(insert ( 4017 25 25 3 s 98 4000 0 )); -DATA(insert ( 4017 25 25 4 s 2317 4000 0 )); -DATA(insert ( 4017 25 25 5 s 2318 4000 0 )); -DATA(insert ( 4017 25 25 11 s 664 4000 0 )); -DATA(insert ( 4017 25 25 12 s 665 4000 0 )); -DATA(insert ( 4017 25 25 14 s 667 4000 0 )); -DATA(insert ( 4017 25 25 15 s 666 4000 0 )); -DATA(insert ( 4017 25 25 28 s 3877 4000 0 )); - -/* - * btree jsonb_ops - */ -DATA(insert ( 4033 3802 3802 1 s 3242 403 0 )); -DATA(insert ( 4033 3802 3802 2 s 3244 403 0 )); -DATA(insert ( 4033 3802 3802 3 s 3240 403 0 )); -DATA(insert ( 4033 3802 3802 4 s 3245 403 0 )); -DATA(insert ( 4033 3802 3802 5 s 3243 403 0 )); - -/* - * hash jsonb_ops - */ -DATA(insert ( 4034 3802 3802 1 s 3240 405 0 )); - -/* - * GIN jsonb_ops - */ -DATA(insert ( 4036 3802 3802 7 s 3246 2742 0 )); -DATA(insert ( 4036 3802 25 9 s 3247 2742 0 )); -DATA(insert ( 4036 3802 1009 10 s 3248 2742 0 )); -DATA(insert ( 4036 3802 1009 11 s 3249 2742 0 )); - -/* - * GIN jsonb_path_ops - */ -DATA(insert ( 4037 3802 3802 7 s 3246 2742 0 )); - -/* - * SP-GiST range_ops - */ -DATA(insert ( 3474 3831 3831 1 s 3893 4000 0 )); -DATA(insert ( 3474 3831 3831 2 s 3895 4000 0 )); -DATA(insert ( 3474 3831 3831 3 s 3888 4000 0 )); -DATA(insert ( 3474 3831 3831 4 s 3896 4000 0 )); -DATA(insert ( 3474 3831 3831 5 s 3894 4000 0 )); -DATA(insert ( 3474 3831 3831 6 s 3897 4000 0 )); -DATA(insert ( 3474 3831 3831 7 s 3890 4000 0 )); -DATA(insert ( 3474 3831 3831 8 s 3892 4000 0 )); -DATA(insert ( 3474 3831 2283 16 s 3889 4000 0 )); -DATA(insert ( 3474 3831 3831 18 s 3882 4000 0 )); - -/* - * SP-GiST box_ops - */ -DATA(insert ( 5000 603 603 1 s 493 4000 0 )); -DATA(insert ( 5000 603 603 2 s 494 4000 0 )); -DATA(insert ( 5000 603 603 3 s 500 4000 0 )); -DATA(insert ( 5000 603 603 4 s 495 4000 0 )); -DATA(insert ( 5000 603 603 5 s 496 4000 0 )); -DATA(insert ( 5000 603 603 6 s 499 4000 0 )); -DATA(insert ( 5000 603 603 7 s 498 4000 0 )); -DATA(insert ( 5000 603 603 8 s 497 4000 0 )); -DATA(insert ( 5000 603 603 9 s 2571 4000 0 )); -DATA(insert ( 5000 603 603 10 s 2570 4000 0 )); -DATA(insert ( 5000 603 603 11 s 2573 4000 0 )); -DATA(insert ( 5000 603 603 12 s 2572 4000 0 )); - -/* - * SP-GiST poly_ops (supports polygons) - */ -DATA(insert ( 5008 604 604 1 s 485 4000 0 )); -DATA(insert ( 5008 604 604 2 s 486 4000 0 )); -DATA(insert ( 5008 604 604 3 s 492 4000 0 )); -DATA(insert ( 5008 604 604 4 s 487 4000 0 )); -DATA(insert ( 5008 604 604 5 s 488 4000 0 )); -DATA(insert ( 5008 604 604 6 s 491 4000 0 )); -DATA(insert ( 5008 604 604 7 s 490 4000 0 )); -DATA(insert ( 5008 604 604 8 s 489 4000 0 )); -DATA(insert ( 5008 604 604 9 s 2575 4000 0 )); -DATA(insert ( 5008 604 604 10 s 2574 4000 0 )); -DATA(insert ( 5008 604 604 11 s 2577 4000 0 )); -DATA(insert ( 5008 604 604 12 s 2576 4000 0 )); - -/* - * GiST inet_ops - */ -DATA(insert ( 3550 869 869 3 s 3552 783 0 )); -DATA(insert ( 3550 869 869 18 s 1201 783 0 )); -DATA(insert ( 3550 869 869 19 s 1202 783 0 )); -DATA(insert ( 3550 869 869 20 s 1203 783 0 )); -DATA(insert ( 3550 869 869 21 s 1204 783 0 )); -DATA(insert ( 3550 869 869 22 s 1205 783 0 )); -DATA(insert ( 3550 869 869 23 s 1206 783 0 )); -DATA(insert ( 3550 869 869 24 s 931 783 0 )); -DATA(insert ( 3550 869 869 25 s 932 783 0 )); -DATA(insert ( 3550 869 869 26 s 933 783 0 )); -DATA(insert ( 3550 869 869 27 s 934 783 0 )); - -/* - * SP-GiST inet_ops - */ -DATA(insert ( 3794 869 869 3 s 3552 4000 0 )); -DATA(insert ( 3794 869 869 18 s 1201 4000 0 )); -DATA(insert ( 3794 869 869 19 s 1202 4000 0 )); -DATA(insert ( 3794 869 869 20 s 1203 4000 0 )); -DATA(insert ( 3794 869 869 21 s 1204 4000 0 )); -DATA(insert ( 3794 869 869 22 s 1205 4000 0 )); -DATA(insert ( 3794 869 869 23 s 1206 4000 0 )); -DATA(insert ( 3794 869 869 24 s 931 4000 0 )); -DATA(insert ( 3794 869 869 25 s 932 4000 0 )); -DATA(insert ( 3794 869 869 26 s 933 4000 0 )); -DATA(insert ( 3794 869 869 27 s 934 4000 0 )); - -/* BRIN opclasses */ -/* minmax bytea */ -DATA(insert ( 4064 17 17 1 s 1957 3580 0 )); -DATA(insert ( 4064 17 17 2 s 1958 3580 0 )); -DATA(insert ( 4064 17 17 3 s 1955 3580 0 )); -DATA(insert ( 4064 17 17 4 s 1960 3580 0 )); -DATA(insert ( 4064 17 17 5 s 1959 3580 0 )); -/* minmax "char" */ -DATA(insert ( 4062 18 18 1 s 631 3580 0 )); -DATA(insert ( 4062 18 18 2 s 632 3580 0 )); -DATA(insert ( 4062 18 18 3 s 92 3580 0 )); -DATA(insert ( 4062 18 18 4 s 634 3580 0 )); -DATA(insert ( 4062 18 18 5 s 633 3580 0 )); -/* minmax name */ -DATA(insert ( 4065 19 19 1 s 660 3580 0 )); -DATA(insert ( 4065 19 19 2 s 661 3580 0 )); -DATA(insert ( 4065 19 19 3 s 93 3580 0 )); -DATA(insert ( 4065 19 19 4 s 663 3580 0 )); -DATA(insert ( 4065 19 19 5 s 662 3580 0 )); -/* minmax integer */ -DATA(insert ( 4054 20 20 1 s 412 3580 0 )); -DATA(insert ( 4054 20 20 2 s 414 3580 0 )); -DATA(insert ( 4054 20 20 3 s 410 3580 0 )); -DATA(insert ( 4054 20 20 4 s 415 3580 0 )); -DATA(insert ( 4054 20 20 5 s 413 3580 0 )); -DATA(insert ( 4054 20 21 1 s 1870 3580 0 )); -DATA(insert ( 4054 20 21 2 s 1872 3580 0 )); -DATA(insert ( 4054 20 21 3 s 1868 3580 0 )); -DATA(insert ( 4054 20 21 4 s 1873 3580 0 )); -DATA(insert ( 4054 20 21 5 s 1871 3580 0 )); -DATA(insert ( 4054 20 23 1 s 418 3580 0 )); -DATA(insert ( 4054 20 23 2 s 420 3580 0 )); -DATA(insert ( 4054 20 23 3 s 416 3580 0 )); -DATA(insert ( 4054 20 23 4 s 430 3580 0 )); -DATA(insert ( 4054 20 23 5 s 419 3580 0 )); -DATA(insert ( 4054 21 21 1 s 95 3580 0 )); -DATA(insert ( 4054 21 21 2 s 522 3580 0 )); -DATA(insert ( 4054 21 21 3 s 94 3580 0 )); -DATA(insert ( 4054 21 21 4 s 524 3580 0 )); -DATA(insert ( 4054 21 21 5 s 520 3580 0 )); -DATA(insert ( 4054 21 20 1 s 1864 3580 0 )); -DATA(insert ( 4054 21 20 2 s 1866 3580 0 )); -DATA(insert ( 4054 21 20 3 s 1862 3580 0 )); -DATA(insert ( 4054 21 20 4 s 1867 3580 0 )); -DATA(insert ( 4054 21 20 5 s 1865 3580 0 )); -DATA(insert ( 4054 21 23 1 s 534 3580 0 )); -DATA(insert ( 4054 21 23 2 s 540 3580 0 )); -DATA(insert ( 4054 21 23 3 s 532 3580 0 )); -DATA(insert ( 4054 21 23 4 s 542 3580 0 )); -DATA(insert ( 4054 21 23 5 s 536 3580 0 )); -DATA(insert ( 4054 23 23 1 s 97 3580 0 )); -DATA(insert ( 4054 23 23 2 s 523 3580 0 )); -DATA(insert ( 4054 23 23 3 s 96 3580 0 )); -DATA(insert ( 4054 23 23 4 s 525 3580 0 )); -DATA(insert ( 4054 23 23 5 s 521 3580 0 )); -DATA(insert ( 4054 23 21 1 s 535 3580 0 )); -DATA(insert ( 4054 23 21 2 s 541 3580 0 )); -DATA(insert ( 4054 23 21 3 s 533 3580 0 )); -DATA(insert ( 4054 23 21 4 s 543 3580 0 )); -DATA(insert ( 4054 23 21 5 s 537 3580 0 )); -DATA(insert ( 4054 23 20 1 s 37 3580 0 )); -DATA(insert ( 4054 23 20 2 s 80 3580 0 )); -DATA(insert ( 4054 23 20 3 s 15 3580 0 )); -DATA(insert ( 4054 23 20 4 s 82 3580 0 )); -DATA(insert ( 4054 23 20 5 s 76 3580 0 )); - -/* minmax text */ -DATA(insert ( 4056 25 25 1 s 664 3580 0 )); -DATA(insert ( 4056 25 25 2 s 665 3580 0 )); -DATA(insert ( 4056 25 25 3 s 98 3580 0 )); -DATA(insert ( 4056 25 25 4 s 667 3580 0 )); -DATA(insert ( 4056 25 25 5 s 666 3580 0 )); -/* minmax oid */ -DATA(insert ( 4068 26 26 1 s 609 3580 0 )); -DATA(insert ( 4068 26 26 2 s 611 3580 0 )); -DATA(insert ( 4068 26 26 3 s 607 3580 0 )); -DATA(insert ( 4068 26 26 4 s 612 3580 0 )); -DATA(insert ( 4068 26 26 5 s 610 3580 0 )); -/* minmax tid */ -DATA(insert ( 4069 27 27 1 s 2799 3580 0 )); -DATA(insert ( 4069 27 27 2 s 2801 3580 0 )); -DATA(insert ( 4069 27 27 3 s 387 3580 0 )); -DATA(insert ( 4069 27 27 4 s 2802 3580 0 )); -DATA(insert ( 4069 27 27 5 s 2800 3580 0 )); -/* minmax float (float4, float8) */ -DATA(insert ( 4070 700 700 1 s 622 3580 0 )); -DATA(insert ( 4070 700 700 2 s 624 3580 0 )); -DATA(insert ( 4070 700 700 3 s 620 3580 0 )); -DATA(insert ( 4070 700 700 4 s 625 3580 0 )); -DATA(insert ( 4070 700 700 5 s 623 3580 0 )); -DATA(insert ( 4070 700 701 1 s 1122 3580 0 )); -DATA(insert ( 4070 700 701 2 s 1124 3580 0 )); -DATA(insert ( 4070 700 701 3 s 1120 3580 0 )); -DATA(insert ( 4070 700 701 4 s 1125 3580 0 )); -DATA(insert ( 4070 700 701 5 s 1123 3580 0 )); -DATA(insert ( 4070 701 700 1 s 1132 3580 0 )); -DATA(insert ( 4070 701 700 2 s 1134 3580 0 )); -DATA(insert ( 4070 701 700 3 s 1130 3580 0 )); -DATA(insert ( 4070 701 700 4 s 1135 3580 0 )); -DATA(insert ( 4070 701 700 5 s 1133 3580 0 )); -DATA(insert ( 4070 701 701 1 s 672 3580 0 )); -DATA(insert ( 4070 701 701 2 s 673 3580 0 )); -DATA(insert ( 4070 701 701 3 s 670 3580 0 )); -DATA(insert ( 4070 701 701 4 s 675 3580 0 )); -DATA(insert ( 4070 701 701 5 s 674 3580 0 )); - -/* minmax abstime */ -DATA(insert ( 4072 702 702 1 s 562 3580 0 )); -DATA(insert ( 4072 702 702 2 s 564 3580 0 )); -DATA(insert ( 4072 702 702 3 s 560 3580 0 )); -DATA(insert ( 4072 702 702 4 s 565 3580 0 )); -DATA(insert ( 4072 702 702 5 s 563 3580 0 )); -/* minmax reltime */ -DATA(insert ( 4073 703 703 1 s 568 3580 0 )); -DATA(insert ( 4073 703 703 2 s 570 3580 0 )); -DATA(insert ( 4073 703 703 3 s 566 3580 0 )); -DATA(insert ( 4073 703 703 4 s 571 3580 0 )); -DATA(insert ( 4073 703 703 5 s 569 3580 0 )); -/* minmax macaddr */ -DATA(insert ( 4074 829 829 1 s 1222 3580 0 )); -DATA(insert ( 4074 829 829 2 s 1223 3580 0 )); -DATA(insert ( 4074 829 829 3 s 1220 3580 0 )); -DATA(insert ( 4074 829 829 4 s 1225 3580 0 )); -DATA(insert ( 4074 829 829 5 s 1224 3580 0 )); -/* minmax macaddr8 */ -DATA(insert ( 4109 774 774 1 s 3364 3580 0 )); -DATA(insert ( 4109 774 774 2 s 3365 3580 0 )); -DATA(insert ( 4109 774 774 3 s 3362 3580 0 )); -DATA(insert ( 4109 774 774 4 s 3367 3580 0 )); -DATA(insert ( 4109 774 774 5 s 3366 3580 0 )); -/* minmax inet */ -DATA(insert ( 4075 869 869 1 s 1203 3580 0 )); -DATA(insert ( 4075 869 869 2 s 1204 3580 0 )); -DATA(insert ( 4075 869 869 3 s 1201 3580 0 )); -DATA(insert ( 4075 869 869 4 s 1206 3580 0 )); -DATA(insert ( 4075 869 869 5 s 1205 3580 0 )); -/* inclusion inet */ -DATA(insert ( 4102 869 869 3 s 3552 3580 0 )); -DATA(insert ( 4102 869 869 7 s 934 3580 0 )); -DATA(insert ( 4102 869 869 8 s 932 3580 0 )); -DATA(insert ( 4102 869 869 18 s 1201 3580 0 )); -DATA(insert ( 4102 869 869 24 s 933 3580 0 )); -DATA(insert ( 4102 869 869 26 s 931 3580 0 )); -/* minmax character */ -DATA(insert ( 4076 1042 1042 1 s 1058 3580 0 )); -DATA(insert ( 4076 1042 1042 2 s 1059 3580 0 )); -DATA(insert ( 4076 1042 1042 3 s 1054 3580 0 )); -DATA(insert ( 4076 1042 1042 4 s 1061 3580 0 )); -DATA(insert ( 4076 1042 1042 5 s 1060 3580 0 )); -/* minmax time without time zone */ -DATA(insert ( 4077 1083 1083 1 s 1110 3580 0 )); -DATA(insert ( 4077 1083 1083 2 s 1111 3580 0 )); -DATA(insert ( 4077 1083 1083 3 s 1108 3580 0 )); -DATA(insert ( 4077 1083 1083 4 s 1113 3580 0 )); -DATA(insert ( 4077 1083 1083 5 s 1112 3580 0 )); -/* minmax datetime (date, timestamp, timestamptz) */ -DATA(insert ( 4059 1114 1114 1 s 2062 3580 0 )); -DATA(insert ( 4059 1114 1114 2 s 2063 3580 0 )); -DATA(insert ( 4059 1114 1114 3 s 2060 3580 0 )); -DATA(insert ( 4059 1114 1114 4 s 2065 3580 0 )); -DATA(insert ( 4059 1114 1114 5 s 2064 3580 0 )); -DATA(insert ( 4059 1114 1082 1 s 2371 3580 0 )); -DATA(insert ( 4059 1114 1082 2 s 2372 3580 0 )); -DATA(insert ( 4059 1114 1082 3 s 2373 3580 0 )); -DATA(insert ( 4059 1114 1082 4 s 2374 3580 0 )); -DATA(insert ( 4059 1114 1082 5 s 2375 3580 0 )); -DATA(insert ( 4059 1114 1184 1 s 2534 3580 0 )); -DATA(insert ( 4059 1114 1184 2 s 2535 3580 0 )); -DATA(insert ( 4059 1114 1184 3 s 2536 3580 0 )); -DATA(insert ( 4059 1114 1184 4 s 2537 3580 0 )); -DATA(insert ( 4059 1114 1184 5 s 2538 3580 0 )); -DATA(insert ( 4059 1082 1082 1 s 1095 3580 0 )); -DATA(insert ( 4059 1082 1082 2 s 1096 3580 0 )); -DATA(insert ( 4059 1082 1082 3 s 1093 3580 0 )); -DATA(insert ( 4059 1082 1082 4 s 1098 3580 0 )); -DATA(insert ( 4059 1082 1082 5 s 1097 3580 0 )); -DATA(insert ( 4059 1082 1114 1 s 2345 3580 0 )); -DATA(insert ( 4059 1082 1114 2 s 2346 3580 0 )); -DATA(insert ( 4059 1082 1114 3 s 2347 3580 0 )); -DATA(insert ( 4059 1082 1114 4 s 2348 3580 0 )); -DATA(insert ( 4059 1082 1114 5 s 2349 3580 0 )); -DATA(insert ( 4059 1082 1184 1 s 2358 3580 0 )); -DATA(insert ( 4059 1082 1184 2 s 2359 3580 0 )); -DATA(insert ( 4059 1082 1184 3 s 2360 3580 0 )); -DATA(insert ( 4059 1082 1184 4 s 2361 3580 0 )); -DATA(insert ( 4059 1082 1184 5 s 2362 3580 0 )); -DATA(insert ( 4059 1184 1082 1 s 2384 3580 0 )); -DATA(insert ( 4059 1184 1082 2 s 2385 3580 0 )); -DATA(insert ( 4059 1184 1082 3 s 2386 3580 0 )); -DATA(insert ( 4059 1184 1082 4 s 2387 3580 0 )); -DATA(insert ( 4059 1184 1082 5 s 2388 3580 0 )); -DATA(insert ( 4059 1184 1114 1 s 2540 3580 0 )); -DATA(insert ( 4059 1184 1114 2 s 2541 3580 0 )); -DATA(insert ( 4059 1184 1114 3 s 2542 3580 0 )); -DATA(insert ( 4059 1184 1114 4 s 2543 3580 0 )); -DATA(insert ( 4059 1184 1114 5 s 2544 3580 0 )); -DATA(insert ( 4059 1184 1184 1 s 1322 3580 0 )); -DATA(insert ( 4059 1184 1184 2 s 1323 3580 0 )); -DATA(insert ( 4059 1184 1184 3 s 1320 3580 0 )); -DATA(insert ( 4059 1184 1184 4 s 1325 3580 0 )); -DATA(insert ( 4059 1184 1184 5 s 1324 3580 0 )); - -/* minmax interval */ -DATA(insert ( 4078 1186 1186 1 s 1332 3580 0 )); -DATA(insert ( 4078 1186 1186 2 s 1333 3580 0 )); -DATA(insert ( 4078 1186 1186 3 s 1330 3580 0 )); -DATA(insert ( 4078 1186 1186 4 s 1335 3580 0 )); -DATA(insert ( 4078 1186 1186 5 s 1334 3580 0 )); -/* minmax time with time zone */ -DATA(insert ( 4058 1266 1266 1 s 1552 3580 0 )); -DATA(insert ( 4058 1266 1266 2 s 1553 3580 0 )); -DATA(insert ( 4058 1266 1266 3 s 1550 3580 0 )); -DATA(insert ( 4058 1266 1266 4 s 1555 3580 0 )); -DATA(insert ( 4058 1266 1266 5 s 1554 3580 0 )); -/* minmax bit */ -DATA(insert ( 4079 1560 1560 1 s 1786 3580 0 )); -DATA(insert ( 4079 1560 1560 2 s 1788 3580 0 )); -DATA(insert ( 4079 1560 1560 3 s 1784 3580 0 )); -DATA(insert ( 4079 1560 1560 4 s 1789 3580 0 )); -DATA(insert ( 4079 1560 1560 5 s 1787 3580 0 )); -/* minmax bit varying */ -DATA(insert ( 4080 1562 1562 1 s 1806 3580 0 )); -DATA(insert ( 4080 1562 1562 2 s 1808 3580 0 )); -DATA(insert ( 4080 1562 1562 3 s 1804 3580 0 )); -DATA(insert ( 4080 1562 1562 4 s 1809 3580 0 )); -DATA(insert ( 4080 1562 1562 5 s 1807 3580 0 )); -/* minmax numeric */ -DATA(insert ( 4055 1700 1700 1 s 1754 3580 0 )); -DATA(insert ( 4055 1700 1700 2 s 1755 3580 0 )); -DATA(insert ( 4055 1700 1700 3 s 1752 3580 0 )); -DATA(insert ( 4055 1700 1700 4 s 1757 3580 0 )); -DATA(insert ( 4055 1700 1700 5 s 1756 3580 0 )); -/* minmax uuid */ -DATA(insert ( 4081 2950 2950 1 s 2974 3580 0 )); -DATA(insert ( 4081 2950 2950 2 s 2976 3580 0 )); -DATA(insert ( 4081 2950 2950 3 s 2972 3580 0 )); -DATA(insert ( 4081 2950 2950 4 s 2977 3580 0 )); -DATA(insert ( 4081 2950 2950 5 s 2975 3580 0 )); -/* inclusion range types */ -DATA(insert ( 4103 3831 3831 1 s 3893 3580 0 )); -DATA(insert ( 4103 3831 3831 2 s 3895 3580 0 )); -DATA(insert ( 4103 3831 3831 3 s 3888 3580 0 )); -DATA(insert ( 4103 3831 3831 4 s 3896 3580 0 )); -DATA(insert ( 4103 3831 3831 5 s 3894 3580 0 )); -DATA(insert ( 4103 3831 3831 7 s 3890 3580 0 )); -DATA(insert ( 4103 3831 3831 8 s 3892 3580 0 )); -DATA(insert ( 4103 3831 2283 16 s 3889 3580 0 )); -DATA(insert ( 4103 3831 3831 17 s 3897 3580 0 )); -DATA(insert ( 4103 3831 3831 18 s 3882 3580 0 )); -DATA(insert ( 4103 3831 3831 20 s 3884 3580 0 )); -DATA(insert ( 4103 3831 3831 21 s 3885 3580 0 )); -DATA(insert ( 4103 3831 3831 22 s 3887 3580 0 )); -DATA(insert ( 4103 3831 3831 23 s 3886 3580 0 )); -/* minmax pg_lsn */ -DATA(insert ( 4082 3220 3220 1 s 3224 3580 0 )); -DATA(insert ( 4082 3220 3220 2 s 3226 3580 0 )); -DATA(insert ( 4082 3220 3220 3 s 3222 3580 0 )); -DATA(insert ( 4082 3220 3220 4 s 3227 3580 0 )); -DATA(insert ( 4082 3220 3220 5 s 3225 3580 0 )); -/* inclusion box */ -DATA(insert ( 4104 603 603 1 s 493 3580 0 )); -DATA(insert ( 4104 603 603 2 s 494 3580 0 )); -DATA(insert ( 4104 603 603 3 s 500 3580 0 )); -DATA(insert ( 4104 603 603 4 s 495 3580 0 )); -DATA(insert ( 4104 603 603 5 s 496 3580 0 )); -DATA(insert ( 4104 603 603 6 s 499 3580 0 )); -DATA(insert ( 4104 603 603 7 s 498 3580 0 )); -DATA(insert ( 4104 603 603 8 s 497 3580 0 )); -DATA(insert ( 4104 603 603 9 s 2571 3580 0 )); -DATA(insert ( 4104 603 603 10 s 2570 3580 0 )); -DATA(insert ( 4104 603 603 11 s 2573 3580 0 )); -DATA(insert ( 4104 603 603 12 s 2572 3580 0 )); -/* we could, but choose not to, supply entries for strategies 13 and 14 */ -DATA(insert ( 4104 603 600 7 s 433 3580 0 )); +#endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_AMOP_H */ diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat new file mode 100644 index 0000000000..6b6c807f90 --- /dev/null +++ b/src/include/catalog/pg_amproc.dat @@ -0,0 +1,1277 @@ +#---------------------------------------------------------------------- +# +# pg_amproc.dat +# Initial contents of the pg_amproc system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_amproc.dat +# +#---------------------------------------------------------------------- + +[ + +# btree +{ amprocfamily => 'btree/array_ops', amproclefttype => 'anyarray', + amprocrighttype => 'anyarray', amprocnum => '1', amproc => 'btarraycmp' }, +{ amprocfamily => 'btree/abstime_ops', amproclefttype => 'abstime', + amprocrighttype => 'abstime', amprocnum => '1', amproc => 'btabstimecmp' }, +{ amprocfamily => 'btree/bit_ops', amproclefttype => 'bit', + amprocrighttype => 'bit', amprocnum => '1', amproc => 'bitcmp' }, +{ amprocfamily => 'btree/bool_ops', amproclefttype => 'bool', + amprocrighttype => 'bool', amprocnum => '1', amproc => 'btboolcmp' }, +{ amprocfamily => 'btree/bpchar_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '1', amproc => 'bpcharcmp' }, +{ amprocfamily => 'btree/bpchar_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '2', + amproc => 'bpchar_sortsupport' }, +{ amprocfamily => 'btree/bytea_ops', amproclefttype => 'bytea', + amprocrighttype => 'bytea', amprocnum => '1', amproc => 'byteacmp' }, +{ amprocfamily => 'btree/bytea_ops', amproclefttype => 'bytea', + amprocrighttype => 'bytea', amprocnum => '2', amproc => 'bytea_sortsupport' }, +{ amprocfamily => 'btree/char_ops', amproclefttype => 'char', + amprocrighttype => 'char', amprocnum => '1', amproc => 'btcharcmp' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'date', + amprocrighttype => 'date', amprocnum => '1', amproc => 'date_cmp' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'date', + amprocrighttype => 'date', amprocnum => '2', amproc => 'date_sortsupport' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'date', + amprocrighttype => 'timestamp', amprocnum => '1', + amproc => 'date_cmp_timestamp' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'date', + amprocrighttype => 'timestamptz', amprocnum => '1', + amproc => 'date_cmp_timestamptz' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamp', amprocnum => '1', amproc => 'timestamp_cmp' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamp', amprocnum => '2', + amproc => 'timestamp_sortsupport' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'timestamp', + amprocrighttype => 'date', amprocnum => '1', amproc => 'timestamp_cmp_date' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamptz', amprocnum => '1', + amproc => 'timestamp_cmp_timestamptz' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamptz', amprocnum => '1', + amproc => 'timestamptz_cmp' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamptz', amprocnum => '2', + amproc => 'timestamp_sortsupport' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'date', amprocnum => '1', + amproc => 'timestamptz_cmp_date' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamp', amprocnum => '1', + amproc => 'timestamptz_cmp_timestamp' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'date', + amprocrighttype => 'interval', amprocnum => '3', + amproc => 'in_range(date,date,interval,bool,bool)' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'timestamp', + amprocrighttype => 'interval', amprocnum => '3', + amproc => 'in_range(timestamp,timestamp,interval,bool,bool)' }, +{ amprocfamily => 'btree/datetime_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'interval', amprocnum => '3', + amproc => 'in_range(timestamptz,timestamptz,interval,bool,bool)' }, +{ amprocfamily => 'btree/float_ops', amproclefttype => 'float4', + amprocrighttype => 'float4', amprocnum => '1', amproc => 'btfloat4cmp' }, +{ amprocfamily => 'btree/float_ops', amproclefttype => 'float4', + amprocrighttype => 'float4', amprocnum => '2', + amproc => 'btfloat4sortsupport' }, +{ amprocfamily => 'btree/float_ops', amproclefttype => 'float4', + amprocrighttype => 'float8', amprocnum => '1', amproc => 'btfloat48cmp' }, +{ amprocfamily => 'btree/float_ops', amproclefttype => 'float8', + amprocrighttype => 'float8', amprocnum => '1', amproc => 'btfloat8cmp' }, +{ amprocfamily => 'btree/float_ops', amproclefttype => 'float8', + amprocrighttype => 'float8', amprocnum => '2', + amproc => 'btfloat8sortsupport' }, +{ amprocfamily => 'btree/float_ops', amproclefttype => 'float8', + amprocrighttype => 'float4', amprocnum => '1', amproc => 'btfloat84cmp' }, +{ amprocfamily => 'btree/float_ops', amproclefttype => 'float8', + amprocrighttype => 'float8', amprocnum => '3', + amproc => 'in_range(float8,float8,float8,bool,bool)' }, +{ amprocfamily => 'btree/float_ops', amproclefttype => 'float4', + amprocrighttype => 'float8', amprocnum => '3', + amproc => 'in_range(float4,float4,float8,bool,bool)' }, +{ amprocfamily => 'btree/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '1', amproc => 'network_cmp' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int2', + amprocrighttype => 'int2', amprocnum => '1', amproc => 'btint2cmp' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int2', + amprocrighttype => 'int2', amprocnum => '2', amproc => 'btint2sortsupport' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int2', + amprocrighttype => 'int4', amprocnum => '1', amproc => 'btint24cmp' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int2', + amprocrighttype => 'int8', amprocnum => '1', amproc => 'btint28cmp' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int2', + amprocrighttype => 'int8', amprocnum => '3', + amproc => 'in_range(int2,int2,int8,bool,bool)' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int2', + amprocrighttype => 'int4', amprocnum => '3', + amproc => 'in_range(int2,int2,int4,bool,bool)' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int2', + amprocrighttype => 'int2', amprocnum => '3', + amproc => 'in_range(int2,int2,int2,bool,bool)' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int4', + amprocrighttype => 'int4', amprocnum => '1', amproc => 'btint4cmp' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int4', + amprocrighttype => 'int4', amprocnum => '2', amproc => 'btint4sortsupport' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int4', + amprocrighttype => 'int8', amprocnum => '1', amproc => 'btint48cmp' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int4', + amprocrighttype => 'int2', amprocnum => '1', amproc => 'btint42cmp' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int4', + amprocrighttype => 'int8', amprocnum => '3', + amproc => 'in_range(int4,int4,int8,bool,bool)' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int4', + amprocrighttype => 'int4', amprocnum => '3', + amproc => 'in_range(int4,int4,int4,bool,bool)' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int4', + amprocrighttype => 'int2', amprocnum => '3', + amproc => 'in_range(int4,int4,int2,bool,bool)' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int8', + amprocrighttype => 'int8', amprocnum => '1', amproc => 'btint8cmp' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int8', + amprocrighttype => 'int8', amprocnum => '2', amproc => 'btint8sortsupport' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int8', + amprocrighttype => 'int4', amprocnum => '1', amproc => 'btint84cmp' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int8', + amprocrighttype => 'int2', amprocnum => '1', amproc => 'btint82cmp' }, +{ amprocfamily => 'btree/integer_ops', amproclefttype => 'int8', + amprocrighttype => 'int8', amprocnum => '3', + amproc => 'in_range(int8,int8,int8,bool,bool)' }, +{ amprocfamily => 'btree/interval_ops', amproclefttype => 'interval', + amprocrighttype => 'interval', amprocnum => '1', amproc => 'interval_cmp' }, +{ amprocfamily => 'btree/interval_ops', amproclefttype => 'interval', + amprocrighttype => 'interval', amprocnum => '3', + amproc => 'in_range(interval,interval,interval,bool,bool)' }, +{ amprocfamily => 'btree/macaddr_ops', amproclefttype => 'macaddr', + amprocrighttype => 'macaddr', amprocnum => '1', amproc => 'macaddr_cmp' }, +{ amprocfamily => 'btree/macaddr_ops', amproclefttype => 'macaddr', + amprocrighttype => 'macaddr', amprocnum => '2', + amproc => 'macaddr_sortsupport' }, +{ amprocfamily => 'btree/name_ops', amproclefttype => 'name', + amprocrighttype => 'name', amprocnum => '1', amproc => 'btnamecmp' }, +{ amprocfamily => 'btree/name_ops', amproclefttype => 'name', + amprocrighttype => 'name', amprocnum => '2', amproc => 'btnamesortsupport' }, +{ amprocfamily => 'btree/numeric_ops', amproclefttype => 'numeric', + amprocrighttype => 'numeric', amprocnum => '1', amproc => 'numeric_cmp' }, +{ amprocfamily => 'btree/numeric_ops', amproclefttype => 'numeric', + amprocrighttype => 'numeric', amprocnum => '2', + amproc => 'numeric_sortsupport' }, +{ amprocfamily => 'btree/numeric_ops', amproclefttype => 'numeric', + amprocrighttype => 'numeric', amprocnum => '3', + amproc => 'in_range(numeric,numeric,numeric,bool,bool)' }, +{ amprocfamily => 'btree/oid_ops', amproclefttype => 'oid', + amprocrighttype => 'oid', amprocnum => '1', amproc => 'btoidcmp' }, +{ amprocfamily => 'btree/oid_ops', amproclefttype => 'oid', + amprocrighttype => 'oid', amprocnum => '2', amproc => 'btoidsortsupport' }, +{ amprocfamily => 'btree/oidvector_ops', amproclefttype => 'oidvector', + amprocrighttype => 'oidvector', amprocnum => '1', + amproc => 'btoidvectorcmp' }, +{ amprocfamily => 'btree/text_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '1', amproc => 'bttextcmp' }, +{ amprocfamily => 'btree/text_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '2', amproc => 'bttextsortsupport' }, +{ amprocfamily => 'btree/time_ops', amproclefttype => 'time', + amprocrighttype => 'time', amprocnum => '1', amproc => 'time_cmp' }, +{ amprocfamily => 'btree/time_ops', amproclefttype => 'time', + amprocrighttype => 'interval', amprocnum => '3', + amproc => 'in_range(time,time,interval,bool,bool)' }, +{ amprocfamily => 'btree/timetz_ops', amproclefttype => 'timetz', + amprocrighttype => 'timetz', amprocnum => '1', amproc => 'timetz_cmp' }, +{ amprocfamily => 'btree/timetz_ops', amproclefttype => 'timetz', + amprocrighttype => 'interval', amprocnum => '3', + amproc => 'in_range(timetz,timetz,interval,bool,bool)' }, +{ amprocfamily => 'btree/varbit_ops', amproclefttype => 'varbit', + amprocrighttype => 'varbit', amprocnum => '1', amproc => 'varbitcmp' }, +{ amprocfamily => 'btree/text_pattern_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '1', amproc => 'bttext_pattern_cmp' }, +{ amprocfamily => 'btree/text_pattern_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '2', + amproc => 'bttext_pattern_sortsupport' }, +{ amprocfamily => 'btree/bpchar_pattern_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '1', + amproc => 'btbpchar_pattern_cmp' }, +{ amprocfamily => 'btree/bpchar_pattern_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '2', + amproc => 'btbpchar_pattern_sortsupport' }, +{ amprocfamily => 'btree/money_ops', amproclefttype => 'money', + amprocrighttype => 'money', amprocnum => '1', amproc => 'cash_cmp' }, +{ amprocfamily => 'btree/reltime_ops', amproclefttype => 'reltime', + amprocrighttype => 'reltime', amprocnum => '1', amproc => 'btreltimecmp' }, +{ amprocfamily => 'btree/tinterval_ops', amproclefttype => 'tinterval', + amprocrighttype => 'tinterval', amprocnum => '1', + amproc => 'bttintervalcmp' }, +{ amprocfamily => 'btree/tid_ops', amproclefttype => 'tid', + amprocrighttype => 'tid', amprocnum => '1', amproc => 'bttidcmp' }, +{ amprocfamily => 'btree/uuid_ops', amproclefttype => 'uuid', + amprocrighttype => 'uuid', amprocnum => '1', amproc => 'uuid_cmp' }, +{ amprocfamily => 'btree/uuid_ops', amproclefttype => 'uuid', + amprocrighttype => 'uuid', amprocnum => '2', amproc => 'uuid_sortsupport' }, +{ amprocfamily => 'btree/record_ops', amproclefttype => 'record', + amprocrighttype => 'record', amprocnum => '1', amproc => 'btrecordcmp' }, +{ amprocfamily => 'btree/record_image_ops', amproclefttype => 'record', + amprocrighttype => 'record', amprocnum => '1', amproc => 'btrecordimagecmp' }, +{ amprocfamily => 'btree/pg_lsn_ops', amproclefttype => 'pg_lsn', + amprocrighttype => 'pg_lsn', amprocnum => '1', amproc => 'pg_lsn_cmp' }, +{ amprocfamily => 'btree/macaddr8_ops', amproclefttype => 'macaddr8', + amprocrighttype => 'macaddr8', amprocnum => '1', amproc => 'macaddr8_cmp' }, +{ amprocfamily => 'btree/enum_ops', amproclefttype => 'anyenum', + amprocrighttype => 'anyenum', amprocnum => '1', amproc => 'enum_cmp' }, +{ amprocfamily => 'btree/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '1', amproc => 'tsvector_cmp' }, +{ amprocfamily => 'btree/tsquery_ops', amproclefttype => 'tsquery', + amprocrighttype => 'tsquery', amprocnum => '1', amproc => 'tsquery_cmp' }, +{ amprocfamily => 'btree/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '1', amproc => 'range_cmp' }, +{ amprocfamily => 'btree/jsonb_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '1', amproc => 'jsonb_cmp' }, + +# hash +{ amprocfamily => 'hash/bpchar_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '1', amproc => 'hashbpchar' }, +{ amprocfamily => 'hash/bpchar_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '2', + amproc => 'hashbpcharextended' }, +{ amprocfamily => 'hash/char_ops', amproclefttype => 'char', + amprocrighttype => 'char', amprocnum => '1', amproc => 'hashchar' }, +{ amprocfamily => 'hash/char_ops', amproclefttype => 'char', + amprocrighttype => 'char', amprocnum => '2', amproc => 'hashcharextended' }, +{ amprocfamily => 'hash/date_ops', amproclefttype => 'date', + amprocrighttype => 'date', amprocnum => '1', amproc => 'hashint4' }, +{ amprocfamily => 'hash/date_ops', amproclefttype => 'date', + amprocrighttype => 'date', amprocnum => '2', amproc => 'hashint4extended' }, +{ amprocfamily => 'hash/array_ops', amproclefttype => 'anyarray', + amprocrighttype => 'anyarray', amprocnum => '1', amproc => 'hash_array' }, +{ amprocfamily => 'hash/array_ops', amproclefttype => 'anyarray', + amprocrighttype => 'anyarray', amprocnum => '2', + amproc => 'hash_array_extended' }, +{ amprocfamily => 'hash/float_ops', amproclefttype => 'float4', + amprocrighttype => 'float4', amprocnum => '1', amproc => 'hashfloat4' }, +{ amprocfamily => 'hash/float_ops', amproclefttype => 'float4', + amprocrighttype => 'float4', amprocnum => '2', + amproc => 'hashfloat4extended' }, +{ amprocfamily => 'hash/float_ops', amproclefttype => 'float8', + amprocrighttype => 'float8', amprocnum => '1', amproc => 'hashfloat8' }, +{ amprocfamily => 'hash/float_ops', amproclefttype => 'float8', + amprocrighttype => 'float8', amprocnum => '2', + amproc => 'hashfloat8extended' }, +{ amprocfamily => 'hash/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '1', amproc => 'hashinet' }, +{ amprocfamily => 'hash/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '2', amproc => 'hashinetextended' }, +{ amprocfamily => 'hash/integer_ops', amproclefttype => 'int2', + amprocrighttype => 'int2', amprocnum => '1', amproc => 'hashint2' }, +{ amprocfamily => 'hash/integer_ops', amproclefttype => 'int2', + amprocrighttype => 'int2', amprocnum => '2', amproc => 'hashint2extended' }, +{ amprocfamily => 'hash/integer_ops', amproclefttype => 'int4', + amprocrighttype => 'int4', amprocnum => '1', amproc => 'hashint4' }, +{ amprocfamily => 'hash/integer_ops', amproclefttype => 'int4', + amprocrighttype => 'int4', amprocnum => '2', amproc => 'hashint4extended' }, +{ amprocfamily => 'hash/integer_ops', amproclefttype => 'int8', + amprocrighttype => 'int8', amprocnum => '1', amproc => 'hashint8' }, +{ amprocfamily => 'hash/integer_ops', amproclefttype => 'int8', + amprocrighttype => 'int8', amprocnum => '2', amproc => 'hashint8extended' }, +{ amprocfamily => 'hash/interval_ops', amproclefttype => 'interval', + amprocrighttype => 'interval', amprocnum => '1', amproc => 'interval_hash' }, +{ amprocfamily => 'hash/interval_ops', amproclefttype => 'interval', + amprocrighttype => 'interval', amprocnum => '2', + amproc => 'interval_hash_extended' }, +{ amprocfamily => 'hash/macaddr_ops', amproclefttype => 'macaddr', + amprocrighttype => 'macaddr', amprocnum => '1', amproc => 'hashmacaddr' }, +{ amprocfamily => 'hash/macaddr_ops', amproclefttype => 'macaddr', + amprocrighttype => 'macaddr', amprocnum => '2', + amproc => 'hashmacaddrextended' }, +{ amprocfamily => 'hash/name_ops', amproclefttype => 'name', + amprocrighttype => 'name', amprocnum => '1', amproc => 'hashname' }, +{ amprocfamily => 'hash/name_ops', amproclefttype => 'name', + amprocrighttype => 'name', amprocnum => '2', amproc => 'hashnameextended' }, +{ amprocfamily => 'hash/oid_ops', amproclefttype => 'oid', + amprocrighttype => 'oid', amprocnum => '1', amproc => 'hashoid' }, +{ amprocfamily => 'hash/oid_ops', amproclefttype => 'oid', + amprocrighttype => 'oid', amprocnum => '2', amproc => 'hashoidextended' }, +{ amprocfamily => 'hash/oidvector_ops', amproclefttype => 'oidvector', + amprocrighttype => 'oidvector', amprocnum => '1', amproc => 'hashoidvector' }, +{ amprocfamily => 'hash/oidvector_ops', amproclefttype => 'oidvector', + amprocrighttype => 'oidvector', amprocnum => '2', + amproc => 'hashoidvectorextended' }, +{ amprocfamily => 'hash/text_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '1', amproc => 'hashtext' }, +{ amprocfamily => 'hash/text_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '2', amproc => 'hashtextextended' }, +{ amprocfamily => 'hash/time_ops', amproclefttype => 'time', + amprocrighttype => 'time', amprocnum => '1', amproc => 'time_hash' }, +{ amprocfamily => 'hash/time_ops', amproclefttype => 'time', + amprocrighttype => 'time', amprocnum => '2', amproc => 'time_hash_extended' }, +{ amprocfamily => 'hash/numeric_ops', amproclefttype => 'numeric', + amprocrighttype => 'numeric', amprocnum => '1', amproc => 'hash_numeric' }, +{ amprocfamily => 'hash/numeric_ops', amproclefttype => 'numeric', + amprocrighttype => 'numeric', amprocnum => '2', + amproc => 'hash_numeric_extended' }, +{ amprocfamily => 'hash/timestamptz_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamptz', amprocnum => '1', + amproc => 'timestamp_hash' }, +{ amprocfamily => 'hash/timestamptz_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamptz', amprocnum => '2', + amproc => 'timestamp_hash_extended' }, +{ amprocfamily => 'hash/timetz_ops', amproclefttype => 'timetz', + amprocrighttype => 'timetz', amprocnum => '1', amproc => 'timetz_hash' }, +{ amprocfamily => 'hash/timetz_ops', amproclefttype => 'timetz', + amprocrighttype => 'timetz', amprocnum => '2', + amproc => 'timetz_hash_extended' }, +{ amprocfamily => 'hash/timestamp_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamp', amprocnum => '1', + amproc => 'timestamp_hash' }, +{ amprocfamily => 'hash/timestamp_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamp', amprocnum => '2', + amproc => 'timestamp_hash_extended' }, +{ amprocfamily => 'hash/bool_ops', amproclefttype => 'bool', + amprocrighttype => 'bool', amprocnum => '1', amproc => 'hashchar' }, +{ amprocfamily => 'hash/bool_ops', amproclefttype => 'bool', + amprocrighttype => 'bool', amprocnum => '2', amproc => 'hashcharextended' }, +{ amprocfamily => 'hash/bytea_ops', amproclefttype => 'bytea', + amprocrighttype => 'bytea', amprocnum => '1', amproc => 'hashvarlena' }, +{ amprocfamily => 'hash/bytea_ops', amproclefttype => 'bytea', + amprocrighttype => 'bytea', amprocnum => '2', + amproc => 'hashvarlenaextended' }, +{ amprocfamily => 'hash/xid_ops', amproclefttype => 'xid', + amprocrighttype => 'xid', amprocnum => '1', amproc => 'hashint4' }, +{ amprocfamily => 'hash/xid_ops', amproclefttype => 'xid', + amprocrighttype => 'xid', amprocnum => '2', amproc => 'hashint4extended' }, +{ amprocfamily => 'hash/cid_ops', amproclefttype => 'cid', + amprocrighttype => 'cid', amprocnum => '1', amproc => 'hashint4' }, +{ amprocfamily => 'hash/cid_ops', amproclefttype => 'cid', + amprocrighttype => 'cid', amprocnum => '2', amproc => 'hashint4extended' }, +{ amprocfamily => 'hash/abstime_ops', amproclefttype => 'abstime', + amprocrighttype => 'abstime', amprocnum => '1', amproc => 'hashint4' }, +{ amprocfamily => 'hash/abstime_ops', amproclefttype => 'abstime', + amprocrighttype => 'abstime', amprocnum => '2', + amproc => 'hashint4extended' }, +{ amprocfamily => 'hash/reltime_ops', amproclefttype => 'reltime', + amprocrighttype => 'reltime', amprocnum => '1', amproc => 'hashint4' }, +{ amprocfamily => 'hash/reltime_ops', amproclefttype => 'reltime', + amprocrighttype => 'reltime', amprocnum => '2', + amproc => 'hashint4extended' }, +{ amprocfamily => 'hash/text_pattern_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '1', amproc => 'hashtext' }, +{ amprocfamily => 'hash/text_pattern_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '2', amproc => 'hashtextextended' }, +{ amprocfamily => 'hash/bpchar_pattern_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '1', amproc => 'hashbpchar' }, +{ amprocfamily => 'hash/bpchar_pattern_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '2', + amproc => 'hashbpcharextended' }, +{ amprocfamily => 'hash/aclitem_ops', amproclefttype => 'aclitem', + amprocrighttype => 'aclitem', amprocnum => '1', amproc => 'hash_aclitem' }, +{ amprocfamily => 'hash/aclitem_ops', amproclefttype => 'aclitem', + amprocrighttype => 'aclitem', amprocnum => '2', + amproc => 'hash_aclitem_extended' }, +{ amprocfamily => 'hash/uuid_ops', amproclefttype => 'uuid', + amprocrighttype => 'uuid', amprocnum => '1', amproc => 'uuid_hash' }, +{ amprocfamily => 'hash/uuid_ops', amproclefttype => 'uuid', + amprocrighttype => 'uuid', amprocnum => '2', amproc => 'uuid_hash_extended' }, +{ amprocfamily => 'hash/pg_lsn_ops', amproclefttype => 'pg_lsn', + amprocrighttype => 'pg_lsn', amprocnum => '1', amproc => 'pg_lsn_hash' }, +{ amprocfamily => 'hash/pg_lsn_ops', amproclefttype => 'pg_lsn', + amprocrighttype => 'pg_lsn', amprocnum => '2', + amproc => 'pg_lsn_hash_extended' }, +{ amprocfamily => 'hash/macaddr8_ops', amproclefttype => 'macaddr8', + amprocrighttype => 'macaddr8', amprocnum => '1', amproc => 'hashmacaddr8' }, +{ amprocfamily => 'hash/macaddr8_ops', amproclefttype => 'macaddr8', + amprocrighttype => 'macaddr8', amprocnum => '2', + amproc => 'hashmacaddr8extended' }, +{ amprocfamily => 'hash/enum_ops', amproclefttype => 'anyenum', + amprocrighttype => 'anyenum', amprocnum => '1', amproc => 'hashenum' }, +{ amprocfamily => 'hash/enum_ops', amproclefttype => 'anyenum', + amprocrighttype => 'anyenum', amprocnum => '2', + amproc => 'hashenumextended' }, +{ amprocfamily => 'hash/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '1', amproc => 'hash_range' }, +{ amprocfamily => 'hash/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '2', + amproc => 'hash_range_extended' }, +{ amprocfamily => 'hash/jsonb_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '1', amproc => 'jsonb_hash' }, +{ amprocfamily => 'hash/jsonb_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '2', + amproc => 'jsonb_hash_extended' }, + +# gist +{ amprocfamily => 'gist/point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '1', + amproc => 'gist_point_consistent' }, +{ amprocfamily => 'gist/point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '2', amproc => 'gist_box_union' }, +{ amprocfamily => 'gist/point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '3', + amproc => 'gist_point_compress' }, +{ amprocfamily => 'gist/point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '5', amproc => 'gist_box_penalty' }, +{ amprocfamily => 'gist/point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '6', + amproc => 'gist_box_picksplit' }, +{ amprocfamily => 'gist/point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '7', amproc => 'gist_box_same' }, +{ amprocfamily => 'gist/point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '8', + amproc => 'gist_point_distance' }, +{ amprocfamily => 'gist/point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '9', amproc => 'gist_point_fetch' }, +{ amprocfamily => 'gist/box_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '1', amproc => 'gist_box_consistent' }, +{ amprocfamily => 'gist/box_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '2', amproc => 'gist_box_union' }, +{ amprocfamily => 'gist/box_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '5', amproc => 'gist_box_penalty' }, +{ amprocfamily => 'gist/box_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '6', amproc => 'gist_box_picksplit' }, +{ amprocfamily => 'gist/box_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '7', amproc => 'gist_box_same' }, +{ amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '1', + amproc => 'gist_poly_consistent' }, +{ amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '2', amproc => 'gist_box_union' }, +{ amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '3', + amproc => 'gist_poly_compress' }, +{ amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '5', + amproc => 'gist_box_penalty' }, +{ amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '6', + amproc => 'gist_box_picksplit' }, +{ amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '7', amproc => 'gist_box_same' }, +{ amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '8', + amproc => 'gist_poly_distance' }, +{ amprocfamily => 'gist/circle_ops', amproclefttype => 'circle', + amprocrighttype => 'circle', amprocnum => '1', + amproc => 'gist_circle_consistent' }, +{ amprocfamily => 'gist/circle_ops', amproclefttype => 'circle', + amprocrighttype => 'circle', amprocnum => '2', amproc => 'gist_box_union' }, +{ amprocfamily => 'gist/circle_ops', amproclefttype => 'circle', + amprocrighttype => 'circle', amprocnum => '3', + amproc => 'gist_circle_compress' }, +{ amprocfamily => 'gist/circle_ops', amproclefttype => 'circle', + amprocrighttype => 'circle', amprocnum => '5', amproc => 'gist_box_penalty' }, +{ amprocfamily => 'gist/circle_ops', amproclefttype => 'circle', + amprocrighttype => 'circle', amprocnum => '6', + amproc => 'gist_box_picksplit' }, +{ amprocfamily => 'gist/circle_ops', amproclefttype => 'circle', + amprocrighttype => 'circle', amprocnum => '7', amproc => 'gist_box_same' }, +{ amprocfamily => 'gist/circle_ops', amproclefttype => 'circle', + amprocrighttype => 'circle', amprocnum => '8', + amproc => 'gist_circle_distance' }, +{ amprocfamily => 'gist/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '1', + amproc => 'gtsvector_consistent(internal,tsvector,int2,oid,internal)' }, +{ amprocfamily => 'gist/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '2', + amproc => 'gtsvector_union' }, +{ amprocfamily => 'gist/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '3', + amproc => 'gtsvector_compress' }, +{ amprocfamily => 'gist/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '4', + amproc => 'gtsvector_decompress' }, +{ amprocfamily => 'gist/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '5', + amproc => 'gtsvector_penalty' }, +{ amprocfamily => 'gist/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '6', + amproc => 'gtsvector_picksplit' }, +{ amprocfamily => 'gist/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '7', amproc => 'gtsvector_same' }, +{ amprocfamily => 'gist/tsquery_ops', amproclefttype => 'tsquery', + amprocrighttype => 'tsquery', amprocnum => '1', + amproc => 'gtsquery_consistent(internal,tsquery,int2,oid,internal)' }, +{ amprocfamily => 'gist/tsquery_ops', amproclefttype => 'tsquery', + amprocrighttype => 'tsquery', amprocnum => '2', amproc => 'gtsquery_union' }, +{ amprocfamily => 'gist/tsquery_ops', amproclefttype => 'tsquery', + amprocrighttype => 'tsquery', amprocnum => '3', + amproc => 'gtsquery_compress' }, +{ amprocfamily => 'gist/tsquery_ops', amproclefttype => 'tsquery', + amprocrighttype => 'tsquery', amprocnum => '5', + amproc => 'gtsquery_penalty' }, +{ amprocfamily => 'gist/tsquery_ops', amproclefttype => 'tsquery', + amprocrighttype => 'tsquery', amprocnum => '6', + amproc => 'gtsquery_picksplit' }, +{ amprocfamily => 'gist/tsquery_ops', amproclefttype => 'tsquery', + amprocrighttype => 'tsquery', amprocnum => '7', amproc => 'gtsquery_same' }, +{ amprocfamily => 'gist/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '1', + amproc => 'range_gist_consistent' }, +{ amprocfamily => 'gist/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '2', + amproc => 'range_gist_union' }, +{ amprocfamily => 'gist/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '5', + amproc => 'range_gist_penalty' }, +{ amprocfamily => 'gist/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '6', + amproc => 'range_gist_picksplit' }, +{ amprocfamily => 'gist/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '7', + amproc => 'range_gist_same' }, +{ amprocfamily => 'gist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '1', + amproc => 'inet_gist_consistent' }, +{ amprocfamily => 'gist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '2', amproc => 'inet_gist_union' }, +{ amprocfamily => 'gist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '3', amproc => 'inet_gist_compress' }, +{ amprocfamily => 'gist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '5', amproc => 'inet_gist_penalty' }, +{ amprocfamily => 'gist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '6', + amproc => 'inet_gist_picksplit' }, +{ amprocfamily => 'gist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '7', amproc => 'inet_gist_same' }, +{ amprocfamily => 'gist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '9', amproc => 'inet_gist_fetch' }, + +# gin +{ amprocfamily => 'gin/array_ops', amproclefttype => 'anyarray', + amprocrighttype => 'anyarray', amprocnum => '2', + amproc => 'ginarrayextract(anyarray,internal,internal)' }, +{ amprocfamily => 'gin/array_ops', amproclefttype => 'anyarray', + amprocrighttype => 'anyarray', amprocnum => '3', + amproc => 'ginqueryarrayextract' }, +{ amprocfamily => 'gin/array_ops', amproclefttype => 'anyarray', + amprocrighttype => 'anyarray', amprocnum => '4', + amproc => 'ginarrayconsistent' }, +{ amprocfamily => 'gin/array_ops', amproclefttype => 'anyarray', + amprocrighttype => 'anyarray', amprocnum => '6', + amproc => 'ginarraytriconsistent' }, +{ amprocfamily => 'gin/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '1', + amproc => 'gin_cmp_tslexeme' }, +{ amprocfamily => 'gin/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '2', + amproc => 'gin_extract_tsvector(tsvector,internal,internal)' }, +{ amprocfamily => 'gin/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '3', + amproc => 'gin_extract_tsquery(tsvector,internal,int2,internal,internal,internal,internal)' }, +{ amprocfamily => 'gin/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '4', + amproc => 'gin_tsquery_consistent(internal,int2,tsvector,int4,internal,internal,internal,internal)' }, +{ amprocfamily => 'gin/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '5', amproc => 'gin_cmp_prefix' }, +{ amprocfamily => 'gin/tsvector_ops', amproclefttype => 'tsvector', + amprocrighttype => 'tsvector', amprocnum => '6', + amproc => 'gin_tsquery_triconsistent' }, +{ amprocfamily => 'gin/jsonb_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '1', amproc => 'gin_compare_jsonb' }, +{ amprocfamily => 'gin/jsonb_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '2', amproc => 'gin_extract_jsonb' }, +{ amprocfamily => 'gin/jsonb_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '3', + amproc => 'gin_extract_jsonb_query' }, +{ amprocfamily => 'gin/jsonb_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '4', + amproc => 'gin_consistent_jsonb' }, +{ amprocfamily => 'gin/jsonb_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '6', + amproc => 'gin_triconsistent_jsonb' }, +{ amprocfamily => 'gin/jsonb_path_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '1', amproc => 'btint4cmp' }, +{ amprocfamily => 'gin/jsonb_path_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '2', + amproc => 'gin_extract_jsonb_path' }, +{ amprocfamily => 'gin/jsonb_path_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '3', + amproc => 'gin_extract_jsonb_query_path' }, +{ amprocfamily => 'gin/jsonb_path_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '4', + amproc => 'gin_consistent_jsonb_path' }, +{ amprocfamily => 'gin/jsonb_path_ops', amproclefttype => 'jsonb', + amprocrighttype => 'jsonb', amprocnum => '6', + amproc => 'gin_triconsistent_jsonb_path' }, + +# sp-gist +{ amprocfamily => 'spgist/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '1', + amproc => 'spg_range_quad_config' }, +{ amprocfamily => 'spgist/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '2', + amproc => 'spg_range_quad_choose' }, +{ amprocfamily => 'spgist/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '3', + amproc => 'spg_range_quad_picksplit' }, +{ amprocfamily => 'spgist/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '4', + amproc => 'spg_range_quad_inner_consistent' }, +{ amprocfamily => 'spgist/range_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '5', + amproc => 'spg_range_quad_leaf_consistent' }, +{ amprocfamily => 'spgist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '1', amproc => 'inet_spg_config' }, +{ amprocfamily => 'spgist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '2', amproc => 'inet_spg_choose' }, +{ amprocfamily => 'spgist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '3', amproc => 'inet_spg_picksplit' }, +{ amprocfamily => 'spgist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '4', + amproc => 'inet_spg_inner_consistent' }, +{ amprocfamily => 'spgist/network_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '5', + amproc => 'inet_spg_leaf_consistent' }, +{ amprocfamily => 'spgist/quad_point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '1', amproc => 'spg_quad_config' }, +{ amprocfamily => 'spgist/quad_point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '2', amproc => 'spg_quad_choose' }, +{ amprocfamily => 'spgist/quad_point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '3', + amproc => 'spg_quad_picksplit' }, +{ amprocfamily => 'spgist/quad_point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '4', + amproc => 'spg_quad_inner_consistent' }, +{ amprocfamily => 'spgist/quad_point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '5', + amproc => 'spg_quad_leaf_consistent' }, +{ amprocfamily => 'spgist/kd_point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '1', amproc => 'spg_kd_config' }, +{ amprocfamily => 'spgist/kd_point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '2', amproc => 'spg_kd_choose' }, +{ amprocfamily => 'spgist/kd_point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '3', amproc => 'spg_kd_picksplit' }, +{ amprocfamily => 'spgist/kd_point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '4', + amproc => 'spg_kd_inner_consistent' }, +{ amprocfamily => 'spgist/kd_point_ops', amproclefttype => 'point', + amprocrighttype => 'point', amprocnum => '5', + amproc => 'spg_quad_leaf_consistent' }, +{ amprocfamily => 'spgist/text_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '1', amproc => 'spg_text_config' }, +{ amprocfamily => 'spgist/text_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '2', amproc => 'spg_text_choose' }, +{ amprocfamily => 'spgist/text_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '3', amproc => 'spg_text_picksplit' }, +{ amprocfamily => 'spgist/text_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '4', + amproc => 'spg_text_inner_consistent' }, +{ amprocfamily => 'spgist/text_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '5', + amproc => 'spg_text_leaf_consistent' }, +{ amprocfamily => 'spgist/box_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '1', amproc => 'spg_box_quad_config' }, +{ amprocfamily => 'spgist/box_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '2', amproc => 'spg_box_quad_choose' }, +{ amprocfamily => 'spgist/box_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '3', + amproc => 'spg_box_quad_picksplit' }, +{ amprocfamily => 'spgist/box_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '4', + amproc => 'spg_box_quad_inner_consistent' }, +{ amprocfamily => 'spgist/box_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '5', + amproc => 'spg_box_quad_leaf_consistent' }, +{ amprocfamily => 'spgist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '1', + amproc => 'spg_bbox_quad_config' }, +{ amprocfamily => 'spgist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '2', + amproc => 'spg_box_quad_choose' }, +{ amprocfamily => 'spgist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '3', + amproc => 'spg_box_quad_picksplit' }, +{ amprocfamily => 'spgist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '4', + amproc => 'spg_box_quad_inner_consistent' }, +{ amprocfamily => 'spgist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '5', + amproc => 'spg_box_quad_leaf_consistent' }, +{ amprocfamily => 'spgist/poly_ops', amproclefttype => 'polygon', + amprocrighttype => 'polygon', amprocnum => '6', + amproc => 'spg_poly_quad_compress' }, + +# BRIN opclasses + +# minmax bytea +{ amprocfamily => 'brin/bytea_minmax_ops', amproclefttype => 'bytea', + amprocrighttype => 'bytea', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/bytea_minmax_ops', amproclefttype => 'bytea', + amprocrighttype => 'bytea', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/bytea_minmax_ops', amproclefttype => 'bytea', + amprocrighttype => 'bytea', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/bytea_minmax_ops', amproclefttype => 'bytea', + amprocrighttype => 'bytea', amprocnum => '4', amproc => 'brin_minmax_union' }, + +# minmax "char" +{ amprocfamily => 'brin/char_minmax_ops', amproclefttype => 'char', + amprocrighttype => 'char', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/char_minmax_ops', amproclefttype => 'char', + amprocrighttype => 'char', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/char_minmax_ops', amproclefttype => 'char', + amprocrighttype => 'char', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/char_minmax_ops', amproclefttype => 'char', + amprocrighttype => 'char', amprocnum => '4', amproc => 'brin_minmax_union' }, + +# minmax name +{ amprocfamily => 'brin/name_minmax_ops', amproclefttype => 'name', + amprocrighttype => 'name', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/name_minmax_ops', amproclefttype => 'name', + amprocrighttype => 'name', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/name_minmax_ops', amproclefttype => 'name', + amprocrighttype => 'name', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/name_minmax_ops', amproclefttype => 'name', + amprocrighttype => 'name', amprocnum => '4', amproc => 'brin_minmax_union' }, + +# minmax integer: int2, int4, int8 +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int8', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int8', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int8', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int8', amprocnum => '4', amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int2', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int2', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int2', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int2', amprocnum => '4', amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int4', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int4', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int4', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8', + amprocrighttype => 'int4', amprocnum => '4', amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int2', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int2', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int2', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int2', amprocnum => '4', amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int8', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int8', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int8', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int8', amprocnum => '4', amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int4', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int4', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int4', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int2', + amprocrighttype => 'int4', amprocnum => '4', amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int4', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int4', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int4', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int4', amprocnum => '4', amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int8', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int8', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int8', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int8', amprocnum => '4', amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int2', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int2', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int2', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int4', + amprocrighttype => 'int2', amprocnum => '4', amproc => 'brin_minmax_union' }, + +# minmax text +{ amprocfamily => 'brin/text_minmax_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/text_minmax_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/text_minmax_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/text_minmax_ops', amproclefttype => 'text', + amprocrighttype => 'text', amprocnum => '4', amproc => 'brin_minmax_union' }, + +# minmax oid +{ amprocfamily => 'brin/oid_minmax_ops', amproclefttype => 'oid', + amprocrighttype => 'oid', amprocnum => '1', amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/oid_minmax_ops', amproclefttype => 'oid', + amprocrighttype => 'oid', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/oid_minmax_ops', amproclefttype => 'oid', + amprocrighttype => 'oid', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/oid_minmax_ops', amproclefttype => 'oid', + amprocrighttype => 'oid', amprocnum => '4', amproc => 'brin_minmax_union' }, + +# minmax tid +{ amprocfamily => 'brin/tid_minmax_ops', amproclefttype => 'tid', + amprocrighttype => 'tid', amprocnum => '1', amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/tid_minmax_ops', amproclefttype => 'tid', + amprocrighttype => 'tid', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/tid_minmax_ops', amproclefttype => 'tid', + amprocrighttype => 'tid', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/tid_minmax_ops', amproclefttype => 'tid', + amprocrighttype => 'tid', amprocnum => '4', amproc => 'brin_minmax_union' }, + +# minmax float +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float4', + amprocrighttype => 'float4', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float4', + amprocrighttype => 'float4', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float4', + amprocrighttype => 'float4', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float4', + amprocrighttype => 'float4', amprocnum => '4', + amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float4', + amprocrighttype => 'float8', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float4', + amprocrighttype => 'float8', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float4', + amprocrighttype => 'float8', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float4', + amprocrighttype => 'float8', amprocnum => '4', + amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float8', + amprocrighttype => 'float8', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float8', + amprocrighttype => 'float8', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float8', + amprocrighttype => 'float8', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float8', + amprocrighttype => 'float8', amprocnum => '4', + amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float8', + amprocrighttype => 'float4', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float8', + amprocrighttype => 'float4', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float8', + amprocrighttype => 'float4', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/float_minmax_ops', amproclefttype => 'float8', + amprocrighttype => 'float4', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# minmax abstime +{ amprocfamily => 'brin/abstime_minmax_ops', amproclefttype => 'abstime', + amprocrighttype => 'abstime', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/abstime_minmax_ops', amproclefttype => 'abstime', + amprocrighttype => 'abstime', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/abstime_minmax_ops', amproclefttype => 'abstime', + amprocrighttype => 'abstime', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/abstime_minmax_ops', amproclefttype => 'abstime', + amprocrighttype => 'abstime', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# minmax reltime +{ amprocfamily => 'brin/reltime_minmax_ops', amproclefttype => 'reltime', + amprocrighttype => 'reltime', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/reltime_minmax_ops', amproclefttype => 'reltime', + amprocrighttype => 'reltime', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/reltime_minmax_ops', amproclefttype => 'reltime', + amprocrighttype => 'reltime', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/reltime_minmax_ops', amproclefttype => 'reltime', + amprocrighttype => 'reltime', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# minmax macaddr +{ amprocfamily => 'brin/macaddr_minmax_ops', amproclefttype => 'macaddr', + amprocrighttype => 'macaddr', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/macaddr_minmax_ops', amproclefttype => 'macaddr', + amprocrighttype => 'macaddr', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/macaddr_minmax_ops', amproclefttype => 'macaddr', + amprocrighttype => 'macaddr', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/macaddr_minmax_ops', amproclefttype => 'macaddr', + amprocrighttype => 'macaddr', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# minmax macaddr8 +{ amprocfamily => 'brin/macaddr8_minmax_ops', amproclefttype => 'macaddr8', + amprocrighttype => 'macaddr8', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/macaddr8_minmax_ops', amproclefttype => 'macaddr8', + amprocrighttype => 'macaddr8', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/macaddr8_minmax_ops', amproclefttype => 'macaddr8', + amprocrighttype => 'macaddr8', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/macaddr8_minmax_ops', amproclefttype => 'macaddr8', + amprocrighttype => 'macaddr8', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# minmax inet +{ amprocfamily => 'brin/network_minmax_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/network_minmax_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/network_minmax_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/network_minmax_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '4', amproc => 'brin_minmax_union' }, + +# inclusion inet +{ amprocfamily => 'brin/network_inclusion_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '1', + amproc => 'brin_inclusion_opcinfo' }, +{ amprocfamily => 'brin/network_inclusion_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '2', + amproc => 'brin_inclusion_add_value' }, +{ amprocfamily => 'brin/network_inclusion_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '3', + amproc => 'brin_inclusion_consistent' }, +{ amprocfamily => 'brin/network_inclusion_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '4', + amproc => 'brin_inclusion_union' }, +{ amprocfamily => 'brin/network_inclusion_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '11', amproc => 'inet_merge' }, +{ amprocfamily => 'brin/network_inclusion_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '12', amproc => 'inet_same_family' }, +{ amprocfamily => 'brin/network_inclusion_ops', amproclefttype => 'inet', + amprocrighttype => 'inet', amprocnum => '13', amproc => 'network_supeq' }, + +# minmax character +{ amprocfamily => 'brin/bpchar_minmax_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/bpchar_minmax_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/bpchar_minmax_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/bpchar_minmax_ops', amproclefttype => 'bpchar', + amprocrighttype => 'bpchar', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# minmax time without time zone +{ amprocfamily => 'brin/time_minmax_ops', amproclefttype => 'time', + amprocrighttype => 'time', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/time_minmax_ops', amproclefttype => 'time', + amprocrighttype => 'time', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/time_minmax_ops', amproclefttype => 'time', + amprocrighttype => 'time', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/time_minmax_ops', amproclefttype => 'time', + amprocrighttype => 'time', amprocnum => '4', amproc => 'brin_minmax_union' }, + +# minmax datetime (date, timestamp, timestamptz) +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamp', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamp', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamp', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamp', amprocnum => '4', + amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamptz', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamptz', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamptz', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'timestamptz', amprocnum => '4', + amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'date', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'date', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'date', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp', + amprocrighttype => 'date', amprocnum => '4', amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamptz', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamptz', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamptz', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamptz', amprocnum => '4', + amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamp', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamp', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamp', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'timestamp', amprocnum => '4', + amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'date', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'date', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'date', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamptz', + amprocrighttype => 'date', amprocnum => '4', amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'date', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'date', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'date', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'date', amprocnum => '4', amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'timestamp', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'timestamp', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'timestamp', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'timestamp', amprocnum => '4', + amproc => 'brin_minmax_union' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'timestamptz', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'timestamptz', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'timestamptz', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'date', + amprocrighttype => 'timestamptz', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# minmax interval +{ amprocfamily => 'brin/interval_minmax_ops', amproclefttype => 'interval', + amprocrighttype => 'interval', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/interval_minmax_ops', amproclefttype => 'interval', + amprocrighttype => 'interval', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/interval_minmax_ops', amproclefttype => 'interval', + amprocrighttype => 'interval', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/interval_minmax_ops', amproclefttype => 'interval', + amprocrighttype => 'interval', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# minmax time with time zone +{ amprocfamily => 'brin/timetz_minmax_ops', amproclefttype => 'timetz', + amprocrighttype => 'timetz', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/timetz_minmax_ops', amproclefttype => 'timetz', + amprocrighttype => 'timetz', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/timetz_minmax_ops', amproclefttype => 'timetz', + amprocrighttype => 'timetz', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/timetz_minmax_ops', amproclefttype => 'timetz', + amprocrighttype => 'timetz', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# minmax bit +{ amprocfamily => 'brin/bit_minmax_ops', amproclefttype => 'bit', + amprocrighttype => 'bit', amprocnum => '1', amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/bit_minmax_ops', amproclefttype => 'bit', + amprocrighttype => 'bit', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/bit_minmax_ops', amproclefttype => 'bit', + amprocrighttype => 'bit', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/bit_minmax_ops', amproclefttype => 'bit', + amprocrighttype => 'bit', amprocnum => '4', amproc => 'brin_minmax_union' }, + +# minmax bit varying +{ amprocfamily => 'brin/varbit_minmax_ops', amproclefttype => 'varbit', + amprocrighttype => 'varbit', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/varbit_minmax_ops', amproclefttype => 'varbit', + amprocrighttype => 'varbit', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/varbit_minmax_ops', amproclefttype => 'varbit', + amprocrighttype => 'varbit', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/varbit_minmax_ops', amproclefttype => 'varbit', + amprocrighttype => 'varbit', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# minmax numeric +{ amprocfamily => 'brin/numeric_minmax_ops', amproclefttype => 'numeric', + amprocrighttype => 'numeric', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/numeric_minmax_ops', amproclefttype => 'numeric', + amprocrighttype => 'numeric', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/numeric_minmax_ops', amproclefttype => 'numeric', + amprocrighttype => 'numeric', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/numeric_minmax_ops', amproclefttype => 'numeric', + amprocrighttype => 'numeric', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# minmax uuid +{ amprocfamily => 'brin/uuid_minmax_ops', amproclefttype => 'uuid', + amprocrighttype => 'uuid', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/uuid_minmax_ops', amproclefttype => 'uuid', + amprocrighttype => 'uuid', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/uuid_minmax_ops', amproclefttype => 'uuid', + amprocrighttype => 'uuid', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/uuid_minmax_ops', amproclefttype => 'uuid', + amprocrighttype => 'uuid', amprocnum => '4', amproc => 'brin_minmax_union' }, + +# inclusion range types +{ amprocfamily => 'brin/range_inclusion_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '1', + amproc => 'brin_inclusion_opcinfo' }, +{ amprocfamily => 'brin/range_inclusion_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '2', + amproc => 'brin_inclusion_add_value' }, +{ amprocfamily => 'brin/range_inclusion_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '3', + amproc => 'brin_inclusion_consistent' }, +{ amprocfamily => 'brin/range_inclusion_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '4', + amproc => 'brin_inclusion_union' }, +{ amprocfamily => 'brin/range_inclusion_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '11', amproc => 'range_merge' }, +{ amprocfamily => 'brin/range_inclusion_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '13', + amproc => 'range_contains' }, +{ amprocfamily => 'brin/range_inclusion_ops', amproclefttype => 'anyrange', + amprocrighttype => 'anyrange', amprocnum => '14', amproc => 'isempty' }, + +# minmax pg_lsn +{ amprocfamily => 'brin/pg_lsn_minmax_ops', amproclefttype => 'pg_lsn', + amprocrighttype => 'pg_lsn', amprocnum => '1', + amproc => 'brin_minmax_opcinfo' }, +{ amprocfamily => 'brin/pg_lsn_minmax_ops', amproclefttype => 'pg_lsn', + amprocrighttype => 'pg_lsn', amprocnum => '2', + amproc => 'brin_minmax_add_value' }, +{ amprocfamily => 'brin/pg_lsn_minmax_ops', amproclefttype => 'pg_lsn', + amprocrighttype => 'pg_lsn', amprocnum => '3', + amproc => 'brin_minmax_consistent' }, +{ amprocfamily => 'brin/pg_lsn_minmax_ops', amproclefttype => 'pg_lsn', + amprocrighttype => 'pg_lsn', amprocnum => '4', + amproc => 'brin_minmax_union' }, + +# inclusion box +{ amprocfamily => 'brin/box_inclusion_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '1', + amproc => 'brin_inclusion_opcinfo' }, +{ amprocfamily => 'brin/box_inclusion_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '2', + amproc => 'brin_inclusion_add_value' }, +{ amprocfamily => 'brin/box_inclusion_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '3', + amproc => 'brin_inclusion_consistent' }, +{ amprocfamily => 'brin/box_inclusion_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '4', + amproc => 'brin_inclusion_union' }, +{ amprocfamily => 'brin/box_inclusion_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '11', amproc => 'bound_box' }, +{ amprocfamily => 'brin/box_inclusion_ops', amproclefttype => 'box', + amprocrighttype => 'box', amprocnum => '13', amproc => 'box_contain' }, + +] diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h index eb595e81db..d638e0cbfe 100644 --- a/src/include/catalog/pg_amproc.h +++ b/src/include/catalog/pg_amproc.h @@ -2,7 +2,6 @@ * * pg_amproc.h * definition of the system "amproc" relation (pg_amproc) - * along with the relation's initial contents. * * The amproc table identifies support procedures associated with index * operator families and classes. These procedures can't be listed in pg_amop @@ -25,8 +24,8 @@ * src/include/catalog/pg_amproc.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -34,21 +33,29 @@ #define PG_AMPROC_H #include "catalog/genbki.h" +#include "catalog/pg_amproc_d.h" /* ---------------- * pg_amproc definition. cpp turns this into * typedef struct FormData_pg_amproc * ---------------- */ -#define AccessMethodProcedureRelationId 2603 - -CATALOG(pg_amproc,2603) +CATALOG(pg_amproc,2603,AccessMethodProcedureRelationId) { - Oid amprocfamily; /* the index opfamily this entry is for */ - Oid amproclefttype; /* procedure's left input data type */ - Oid amprocrighttype; /* procedure's right input data type */ - int16 amprocnum; /* support procedure index */ - regproc amproc; /* OID of the proc */ + /* the index opfamily this entry is for */ + Oid amprocfamily BKI_LOOKUP(pg_opfamily); + + /* procedure's left input data type */ + Oid amproclefttype BKI_LOOKUP(pg_type); + + /* procedure's right input data type */ + Oid amprocrighttype BKI_LOOKUP(pg_type); + + /* support procedure index */ + int16 amprocnum; + + /* OID of the proc */ + regproc amproc BKI_LOOKUP(pg_proc); } FormData_pg_amproc; /* ---------------- @@ -58,529 +65,4 @@ CATALOG(pg_amproc,2603) */ typedef FormData_pg_amproc *Form_pg_amproc; -/* ---------------- - * compiler constants for pg_amproc - * ---------------- - */ -#define Natts_pg_amproc 5 -#define Anum_pg_amproc_amprocfamily 1 -#define Anum_pg_amproc_amproclefttype 2 -#define Anum_pg_amproc_amprocrighttype 3 -#define Anum_pg_amproc_amprocnum 4 -#define Anum_pg_amproc_amproc 5 - -/* ---------------- - * initial contents of pg_amproc - * ---------------- - */ - -/* btree */ -DATA(insert ( 397 2277 2277 1 382 )); -DATA(insert ( 421 702 702 1 357 )); -DATA(insert ( 423 1560 1560 1 1596 )); -DATA(insert ( 424 16 16 1 1693 )); -DATA(insert ( 426 1042 1042 1 1078 )); -DATA(insert ( 426 1042 1042 2 3328 )); -DATA(insert ( 428 17 17 1 1954 )); -DATA(insert ( 428 17 17 2 3331 )); -DATA(insert ( 429 18 18 1 358 )); -DATA(insert ( 434 1082 1082 1 1092 )); -DATA(insert ( 434 1082 1082 2 3136 )); -DATA(insert ( 434 1082 1114 1 2344 )); -DATA(insert ( 434 1082 1184 1 2357 )); -DATA(insert ( 434 1114 1114 1 2045 )); -DATA(insert ( 434 1114 1114 2 3137 )); -DATA(insert ( 434 1114 1082 1 2370 )); -DATA(insert ( 434 1114 1184 1 2526 )); -DATA(insert ( 434 1184 1184 1 1314 )); -DATA(insert ( 434 1184 1184 2 3137 )); -DATA(insert ( 434 1184 1082 1 2383 )); -DATA(insert ( 434 1184 1114 1 2533 )); -DATA(insert ( 434 1082 1186 3 4133 )); -DATA(insert ( 434 1114 1186 3 4134 )); -DATA(insert ( 434 1184 1186 3 4135 )); -DATA(insert ( 1970 700 700 1 354 )); -DATA(insert ( 1970 700 700 2 3132 )); -DATA(insert ( 1970 700 701 1 2194 )); -DATA(insert ( 1970 701 701 1 355 )); -DATA(insert ( 1970 701 701 2 3133 )); -DATA(insert ( 1970 701 700 1 2195 )); -DATA(insert ( 1970 701 701 3 4139 )); -DATA(insert ( 1970 700 701 3 4140 )); -DATA(insert ( 1974 869 869 1 926 )); -DATA(insert ( 1976 21 21 1 350 )); -DATA(insert ( 1976 21 21 2 3129 )); -DATA(insert ( 1976 21 23 1 2190 )); -DATA(insert ( 1976 21 20 1 2192 )); -DATA(insert ( 1976 21 20 3 4130 )); -DATA(insert ( 1976 21 23 3 4131 )); -DATA(insert ( 1976 21 21 3 4132 )); -DATA(insert ( 1976 23 23 1 351 )); -DATA(insert ( 1976 23 23 2 3130 )); -DATA(insert ( 1976 23 20 1 2188 )); -DATA(insert ( 1976 23 21 1 2191 )); -DATA(insert ( 1976 23 20 3 4127 )); -DATA(insert ( 1976 23 23 3 4128 )); -DATA(insert ( 1976 23 21 3 4129 )); -DATA(insert ( 1976 20 20 1 842 )); -DATA(insert ( 1976 20 20 2 3131 )); -DATA(insert ( 1976 20 23 1 2189 )); -DATA(insert ( 1976 20 21 1 2193 )); -DATA(insert ( 1976 20 20 3 4126 )); -DATA(insert ( 1982 1186 1186 1 1315 )); -DATA(insert ( 1982 1186 1186 3 4136 )); -DATA(insert ( 1984 829 829 1 836 )); -DATA(insert ( 1984 829 829 2 3359 )); -DATA(insert ( 1986 19 19 1 359 )); -DATA(insert ( 1986 19 19 2 3135 )); -DATA(insert ( 1988 1700 1700 1 1769 )); -DATA(insert ( 1988 1700 1700 2 3283 )); -DATA(insert ( 1988 1700 1700 3 4141 )); -DATA(insert ( 1989 26 26 1 356 )); -DATA(insert ( 1989 26 26 2 3134 )); -DATA(insert ( 1991 30 30 1 404 )); -DATA(insert ( 1994 25 25 1 360 )); -DATA(insert ( 1994 25 25 2 3255 )); -DATA(insert ( 1996 1083 1083 1 1107 )); -DATA(insert ( 1996 1083 1186 3 4137 )); -DATA(insert ( 2000 1266 1266 1 1358 )); -DATA(insert ( 2000 1266 1186 3 4138 )); -DATA(insert ( 2002 1562 1562 1 1672 )); -DATA(insert ( 2095 25 25 1 2166 )); -DATA(insert ( 2095 25 25 2 3332 )); -DATA(insert ( 2097 1042 1042 1 2180 )); -DATA(insert ( 2097 1042 1042 2 3333 )); -DATA(insert ( 2099 790 790 1 377 )); -DATA(insert ( 2233 703 703 1 380 )); -DATA(insert ( 2234 704 704 1 381 )); -DATA(insert ( 2789 27 27 1 2794 )); -DATA(insert ( 2968 2950 2950 1 2960 )); -DATA(insert ( 2968 2950 2950 2 3300 )); -DATA(insert ( 2994 2249 2249 1 2987 )); -DATA(insert ( 3194 2249 2249 1 3187 )); -DATA(insert ( 3253 3220 3220 1 3251 )); -DATA(insert ( 3371 774 774 1 4119 )); -DATA(insert ( 3522 3500 3500 1 3514 )); -DATA(insert ( 3626 3614 3614 1 3622 )); -DATA(insert ( 3683 3615 3615 1 3668 )); -DATA(insert ( 3901 3831 3831 1 3870 )); -DATA(insert ( 4033 3802 3802 1 4044 )); - - -/* hash */ -DATA(insert ( 427 1042 1042 1 1080 )); -DATA(insert ( 427 1042 1042 2 972 )); -DATA(insert ( 431 18 18 1 454 )); -DATA(insert ( 431 18 18 2 446 )); -DATA(insert ( 435 1082 1082 1 450 )); -DATA(insert ( 435 1082 1082 2 425 )); -DATA(insert ( 627 2277 2277 1 626 )); -DATA(insert ( 627 2277 2277 2 782 )); -DATA(insert ( 1971 700 700 1 451 )); -DATA(insert ( 1971 700 700 2 443 )); -DATA(insert ( 1971 701 701 1 452 )); -DATA(insert ( 1971 701 701 2 444 )); -DATA(insert ( 1975 869 869 1 422 )); -DATA(insert ( 1975 869 869 2 779 )); -DATA(insert ( 1977 21 21 1 449 )); -DATA(insert ( 1977 21 21 2 441 )); -DATA(insert ( 1977 23 23 1 450 )); -DATA(insert ( 1977 23 23 2 425 )); -DATA(insert ( 1977 20 20 1 949 )); -DATA(insert ( 1977 20 20 2 442 )); -DATA(insert ( 1983 1186 1186 1 1697 )); -DATA(insert ( 1983 1186 1186 2 3418 )); -DATA(insert ( 1985 829 829 1 399 )); -DATA(insert ( 1985 829 829 2 778 )); -DATA(insert ( 1987 19 19 1 455 )); -DATA(insert ( 1987 19 19 2 447 )); -DATA(insert ( 1990 26 26 1 453 )); -DATA(insert ( 1990 26 26 2 445 )); -DATA(insert ( 1992 30 30 1 457 )); -DATA(insert ( 1992 30 30 2 776 )); -DATA(insert ( 1995 25 25 1 400 )); -DATA(insert ( 1995 25 25 2 448)); -DATA(insert ( 1997 1083 1083 1 1688 )); -DATA(insert ( 1997 1083 1083 2 3409 )); -DATA(insert ( 1998 1700 1700 1 432 )); -DATA(insert ( 1998 1700 1700 2 780 )); -DATA(insert ( 1999 1184 1184 1 2039 )); -DATA(insert ( 1999 1184 1184 2 3411 )); -DATA(insert ( 2001 1266 1266 1 1696 )); -DATA(insert ( 2001 1266 1266 2 3410 )); -DATA(insert ( 2040 1114 1114 1 2039 )); -DATA(insert ( 2040 1114 1114 2 3411 )); -DATA(insert ( 2222 16 16 1 454 )); -DATA(insert ( 2222 16 16 2 446 )); -DATA(insert ( 2223 17 17 1 456 )); -DATA(insert ( 2223 17 17 2 772 )); -DATA(insert ( 2225 28 28 1 450 )); -DATA(insert ( 2225 28 28 2 425)); -DATA(insert ( 2226 29 29 1 450 )); -DATA(insert ( 2226 29 29 2 425 )); -DATA(insert ( 2227 702 702 1 450 )); -DATA(insert ( 2227 702 702 2 425 )); -DATA(insert ( 2228 703 703 1 450 )); -DATA(insert ( 2228 703 703 2 425 )); -DATA(insert ( 2229 25 25 1 400 )); -DATA(insert ( 2229 25 25 2 448 )); -DATA(insert ( 2231 1042 1042 1 1080 )); -DATA(insert ( 2231 1042 1042 2 972 )); -DATA(insert ( 2235 1033 1033 1 329 )); -DATA(insert ( 2235 1033 1033 2 777 )); -DATA(insert ( 2969 2950 2950 1 2963 )); -DATA(insert ( 2969 2950 2950 2 3412 )); -DATA(insert ( 3254 3220 3220 1 3252 )); -DATA(insert ( 3254 3220 3220 2 3413 )); -DATA(insert ( 3372 774 774 1 328 )); -DATA(insert ( 3372 774 774 2 781 )); -DATA(insert ( 3523 3500 3500 1 3515 )); -DATA(insert ( 3523 3500 3500 2 3414 )); -DATA(insert ( 3903 3831 3831 1 3902 )); -DATA(insert ( 3903 3831 3831 2 3417 )); -DATA(insert ( 4034 3802 3802 1 4045 )); -DATA(insert ( 4034 3802 3802 2 3416)); - - -/* gist */ -DATA(insert ( 1029 600 600 1 2179 )); -DATA(insert ( 1029 600 600 2 2583 )); -DATA(insert ( 1029 600 600 3 1030 )); -DATA(insert ( 1029 600 600 5 2581 )); -DATA(insert ( 1029 600 600 6 2582 )); -DATA(insert ( 1029 600 600 7 2584 )); -DATA(insert ( 1029 600 600 8 3064 )); -DATA(insert ( 1029 600 600 9 3282 )); -DATA(insert ( 2593 603 603 1 2578 )); -DATA(insert ( 2593 603 603 2 2583 )); -DATA(insert ( 2593 603 603 5 2581 )); -DATA(insert ( 2593 603 603 6 2582 )); -DATA(insert ( 2593 603 603 7 2584 )); -DATA(insert ( 2594 604 604 1 2585 )); -DATA(insert ( 2594 604 604 2 2583 )); -DATA(insert ( 2594 604 604 3 2586 )); -DATA(insert ( 2594 604 604 5 2581 )); -DATA(insert ( 2594 604 604 6 2582 )); -DATA(insert ( 2594 604 604 7 2584 )); -DATA(insert ( 2594 604 604 8 3288 )); -DATA(insert ( 2595 718 718 1 2591 )); -DATA(insert ( 2595 718 718 2 2583 )); -DATA(insert ( 2595 718 718 3 2592 )); -DATA(insert ( 2595 718 718 5 2581 )); -DATA(insert ( 2595 718 718 6 2582 )); -DATA(insert ( 2595 718 718 7 2584 )); -DATA(insert ( 2595 718 718 8 3280 )); -DATA(insert ( 3655 3614 3614 1 3654 )); -DATA(insert ( 3655 3614 3614 2 3651 )); -DATA(insert ( 3655 3614 3614 3 3648 )); -DATA(insert ( 3655 3614 3614 4 3649 )); -DATA(insert ( 3655 3614 3614 5 3653 )); -DATA(insert ( 3655 3614 3614 6 3650 )); -DATA(insert ( 3655 3614 3614 7 3652 )); -DATA(insert ( 3702 3615 3615 1 3701 )); -DATA(insert ( 3702 3615 3615 2 3698 )); -DATA(insert ( 3702 3615 3615 3 3695 )); -DATA(insert ( 3702 3615 3615 5 3700 )); -DATA(insert ( 3702 3615 3615 6 3697 )); -DATA(insert ( 3702 3615 3615 7 3699 )); -DATA(insert ( 3919 3831 3831 1 3875 )); -DATA(insert ( 3919 3831 3831 2 3876 )); -DATA(insert ( 3919 3831 3831 5 3879 )); -DATA(insert ( 3919 3831 3831 6 3880 )); -DATA(insert ( 3919 3831 3831 7 3881 )); -DATA(insert ( 3550 869 869 1 3553 )); -DATA(insert ( 3550 869 869 2 3554 )); -DATA(insert ( 3550 869 869 3 3555 )); -DATA(insert ( 3550 869 869 5 3557 )); -DATA(insert ( 3550 869 869 6 3558 )); -DATA(insert ( 3550 869 869 7 3559 )); -DATA(insert ( 3550 869 869 9 3573 )); - - -/* gin */ -DATA(insert ( 2745 2277 2277 2 2743 )); -DATA(insert ( 2745 2277 2277 3 2774 )); -DATA(insert ( 2745 2277 2277 4 2744 )); -DATA(insert ( 2745 2277 2277 6 3920 )); -DATA(insert ( 3659 3614 3614 1 3724 )); -DATA(insert ( 3659 3614 3614 2 3656 )); -DATA(insert ( 3659 3614 3614 3 3657 )); -DATA(insert ( 3659 3614 3614 4 3658 )); -DATA(insert ( 3659 3614 3614 5 2700 )); -DATA(insert ( 3659 3614 3614 6 3921 )); -DATA(insert ( 4036 3802 3802 1 3480 )); -DATA(insert ( 4036 3802 3802 2 3482 )); -DATA(insert ( 4036 3802 3802 3 3483 )); -DATA(insert ( 4036 3802 3802 4 3484 )); -DATA(insert ( 4036 3802 3802 6 3488 )); -DATA(insert ( 4037 3802 3802 1 351 )); -DATA(insert ( 4037 3802 3802 2 3485 )); -DATA(insert ( 4037 3802 3802 3 3486 )); -DATA(insert ( 4037 3802 3802 4 3487 )); -DATA(insert ( 4037 3802 3802 6 3489 )); - -/* sp-gist */ -DATA(insert ( 3474 3831 3831 1 3469 )); -DATA(insert ( 3474 3831 3831 2 3470 )); -DATA(insert ( 3474 3831 3831 3 3471 )); -DATA(insert ( 3474 3831 3831 4 3472 )); -DATA(insert ( 3474 3831 3831 5 3473 )); -DATA(insert ( 3794 869 869 1 3795 )); -DATA(insert ( 3794 869 869 2 3796 )); -DATA(insert ( 3794 869 869 3 3797 )); -DATA(insert ( 3794 869 869 4 3798 )); -DATA(insert ( 3794 869 869 5 3799 )); -DATA(insert ( 4015 600 600 1 4018 )); -DATA(insert ( 4015 600 600 2 4019 )); -DATA(insert ( 4015 600 600 3 4020 )); -DATA(insert ( 4015 600 600 4 4021 )); -DATA(insert ( 4015 600 600 5 4022 )); -DATA(insert ( 4016 600 600 1 4023 )); -DATA(insert ( 4016 600 600 2 4024 )); -DATA(insert ( 4016 600 600 3 4025 )); -DATA(insert ( 4016 600 600 4 4026 )); -DATA(insert ( 4016 600 600 5 4022 )); -DATA(insert ( 4017 25 25 1 4027 )); -DATA(insert ( 4017 25 25 2 4028 )); -DATA(insert ( 4017 25 25 3 4029 )); -DATA(insert ( 4017 25 25 4 4030 )); -DATA(insert ( 4017 25 25 5 4031 )); -DATA(insert ( 5000 603 603 1 5012 )); -DATA(insert ( 5000 603 603 2 5013 )); -DATA(insert ( 5000 603 603 3 5014 )); -DATA(insert ( 5000 603 603 4 5015 )); -DATA(insert ( 5000 603 603 5 5016 )); -DATA(insert ( 5008 604 604 1 5010 )); -DATA(insert ( 5008 604 604 2 5013 )); -DATA(insert ( 5008 604 604 3 5014 )); -DATA(insert ( 5008 604 604 4 5015 )); -DATA(insert ( 5008 604 604 5 5016 )); -DATA(insert ( 5008 604 604 6 5011 )); - -/* BRIN opclasses */ -/* minmax bytea */ -DATA(insert ( 4064 17 17 1 3383 )); -DATA(insert ( 4064 17 17 2 3384 )); -DATA(insert ( 4064 17 17 3 3385 )); -DATA(insert ( 4064 17 17 4 3386 )); -/* minmax "char" */ -DATA(insert ( 4062 18 18 1 3383 )); -DATA(insert ( 4062 18 18 2 3384 )); -DATA(insert ( 4062 18 18 3 3385 )); -DATA(insert ( 4062 18 18 4 3386 )); -/* minmax name */ -DATA(insert ( 4065 19 19 1 3383 )); -DATA(insert ( 4065 19 19 2 3384 )); -DATA(insert ( 4065 19 19 3 3385 )); -DATA(insert ( 4065 19 19 4 3386 )); -/* minmax integer: int2, int4, int8 */ -DATA(insert ( 4054 20 20 1 3383 )); -DATA(insert ( 4054 20 20 2 3384 )); -DATA(insert ( 4054 20 20 3 3385 )); -DATA(insert ( 4054 20 20 4 3386 )); -DATA(insert ( 4054 20 21 1 3383 )); -DATA(insert ( 4054 20 21 2 3384 )); -DATA(insert ( 4054 20 21 3 3385 )); -DATA(insert ( 4054 20 21 4 3386 )); -DATA(insert ( 4054 20 23 1 3383 )); -DATA(insert ( 4054 20 23 2 3384 )); -DATA(insert ( 4054 20 23 3 3385 )); -DATA(insert ( 4054 20 23 4 3386 )); - -DATA(insert ( 4054 21 21 1 3383 )); -DATA(insert ( 4054 21 21 2 3384 )); -DATA(insert ( 4054 21 21 3 3385 )); -DATA(insert ( 4054 21 21 4 3386 )); -DATA(insert ( 4054 21 20 1 3383 )); -DATA(insert ( 4054 21 20 2 3384 )); -DATA(insert ( 4054 21 20 3 3385 )); -DATA(insert ( 4054 21 20 4 3386 )); -DATA(insert ( 4054 21 23 1 3383 )); -DATA(insert ( 4054 21 23 2 3384 )); -DATA(insert ( 4054 21 23 3 3385 )); -DATA(insert ( 4054 21 23 4 3386 )); - -DATA(insert ( 4054 23 23 1 3383 )); -DATA(insert ( 4054 23 23 2 3384 )); -DATA(insert ( 4054 23 23 3 3385 )); -DATA(insert ( 4054 23 23 4 3386 )); -DATA(insert ( 4054 23 20 1 3383 )); -DATA(insert ( 4054 23 20 2 3384 )); -DATA(insert ( 4054 23 20 3 3385 )); -DATA(insert ( 4054 23 20 4 3386 )); -DATA(insert ( 4054 23 21 1 3383 )); -DATA(insert ( 4054 23 21 2 3384 )); -DATA(insert ( 4054 23 21 3 3385 )); -DATA(insert ( 4054 23 21 4 3386 )); - -/* minmax text */ -DATA(insert ( 4056 25 25 1 3383 )); -DATA(insert ( 4056 25 25 2 3384 )); -DATA(insert ( 4056 25 25 3 3385 )); -DATA(insert ( 4056 25 25 4 3386 )); -/* minmax oid */ -DATA(insert ( 4068 26 26 1 3383 )); -DATA(insert ( 4068 26 26 2 3384 )); -DATA(insert ( 4068 26 26 3 3385 )); -DATA(insert ( 4068 26 26 4 3386 )); -/* minmax tid */ -DATA(insert ( 4069 27 27 1 3383 )); -DATA(insert ( 4069 27 27 2 3384 )); -DATA(insert ( 4069 27 27 3 3385 )); -DATA(insert ( 4069 27 27 4 3386 )); -/* minmax float */ -DATA(insert ( 4070 700 700 1 3383 )); -DATA(insert ( 4070 700 700 2 3384 )); -DATA(insert ( 4070 700 700 3 3385 )); -DATA(insert ( 4070 700 700 4 3386 )); - -DATA(insert ( 4070 700 701 1 3383 )); -DATA(insert ( 4070 700 701 2 3384 )); -DATA(insert ( 4070 700 701 3 3385 )); -DATA(insert ( 4070 700 701 4 3386 )); - -DATA(insert ( 4070 701 701 1 3383 )); -DATA(insert ( 4070 701 701 2 3384 )); -DATA(insert ( 4070 701 701 3 3385 )); -DATA(insert ( 4070 701 701 4 3386 )); - -DATA(insert ( 4070 701 700 1 3383 )); -DATA(insert ( 4070 701 700 2 3384 )); -DATA(insert ( 4070 701 700 3 3385 )); -DATA(insert ( 4070 701 700 4 3386 )); - -/* minmax abstime */ -DATA(insert ( 4072 702 702 1 3383 )); -DATA(insert ( 4072 702 702 2 3384 )); -DATA(insert ( 4072 702 702 3 3385 )); -DATA(insert ( 4072 702 702 4 3386 )); -/* minmax reltime */ -DATA(insert ( 4073 703 703 1 3383 )); -DATA(insert ( 4073 703 703 2 3384 )); -DATA(insert ( 4073 703 703 3 3385 )); -DATA(insert ( 4073 703 703 4 3386 )); -/* minmax macaddr */ -DATA(insert ( 4074 829 829 1 3383 )); -DATA(insert ( 4074 829 829 2 3384 )); -DATA(insert ( 4074 829 829 3 3385 )); -DATA(insert ( 4074 829 829 4 3386 )); -/* minmax macaddr8 */ -DATA(insert ( 4109 774 774 1 3383 )); -DATA(insert ( 4109 774 774 2 3384 )); -DATA(insert ( 4109 774 774 3 3385 )); -DATA(insert ( 4109 774 774 4 3386 )); -/* minmax inet */ -DATA(insert ( 4075 869 869 1 3383 )); -DATA(insert ( 4075 869 869 2 3384 )); -DATA(insert ( 4075 869 869 3 3385 )); -DATA(insert ( 4075 869 869 4 3386 )); -/* inclusion inet */ -DATA(insert ( 4102 869 869 1 4105 )); -DATA(insert ( 4102 869 869 2 4106 )); -DATA(insert ( 4102 869 869 3 4107 )); -DATA(insert ( 4102 869 869 4 4108 )); -DATA(insert ( 4102 869 869 11 4063 )); -DATA(insert ( 4102 869 869 12 4071 )); -DATA(insert ( 4102 869 869 13 930 )); -/* minmax character */ -DATA(insert ( 4076 1042 1042 1 3383 )); -DATA(insert ( 4076 1042 1042 2 3384 )); -DATA(insert ( 4076 1042 1042 3 3385 )); -DATA(insert ( 4076 1042 1042 4 3386 )); -/* minmax time without time zone */ -DATA(insert ( 4077 1083 1083 1 3383 )); -DATA(insert ( 4077 1083 1083 2 3384 )); -DATA(insert ( 4077 1083 1083 3 3385 )); -DATA(insert ( 4077 1083 1083 4 3386 )); -/* minmax datetime (date, timestamp, timestamptz) */ -DATA(insert ( 4059 1114 1114 1 3383 )); -DATA(insert ( 4059 1114 1114 2 3384 )); -DATA(insert ( 4059 1114 1114 3 3385 )); -DATA(insert ( 4059 1114 1114 4 3386 )); -DATA(insert ( 4059 1114 1184 1 3383 )); -DATA(insert ( 4059 1114 1184 2 3384 )); -DATA(insert ( 4059 1114 1184 3 3385 )); -DATA(insert ( 4059 1114 1184 4 3386 )); -DATA(insert ( 4059 1114 1082 1 3383 )); -DATA(insert ( 4059 1114 1082 2 3384 )); -DATA(insert ( 4059 1114 1082 3 3385 )); -DATA(insert ( 4059 1114 1082 4 3386 )); - -DATA(insert ( 4059 1184 1184 1 3383 )); -DATA(insert ( 4059 1184 1184 2 3384 )); -DATA(insert ( 4059 1184 1184 3 3385 )); -DATA(insert ( 4059 1184 1184 4 3386 )); -DATA(insert ( 4059 1184 1114 1 3383 )); -DATA(insert ( 4059 1184 1114 2 3384 )); -DATA(insert ( 4059 1184 1114 3 3385 )); -DATA(insert ( 4059 1184 1114 4 3386 )); -DATA(insert ( 4059 1184 1082 1 3383 )); -DATA(insert ( 4059 1184 1082 2 3384 )); -DATA(insert ( 4059 1184 1082 3 3385 )); -DATA(insert ( 4059 1184 1082 4 3386 )); - -DATA(insert ( 4059 1082 1082 1 3383 )); -DATA(insert ( 4059 1082 1082 2 3384 )); -DATA(insert ( 4059 1082 1082 3 3385 )); -DATA(insert ( 4059 1082 1082 4 3386 )); -DATA(insert ( 4059 1082 1114 1 3383 )); -DATA(insert ( 4059 1082 1114 2 3384 )); -DATA(insert ( 4059 1082 1114 3 3385 )); -DATA(insert ( 4059 1082 1114 4 3386 )); -DATA(insert ( 4059 1082 1184 1 3383 )); -DATA(insert ( 4059 1082 1184 2 3384 )); -DATA(insert ( 4059 1082 1184 3 3385 )); -DATA(insert ( 4059 1082 1184 4 3386 )); - -/* minmax interval */ -DATA(insert ( 4078 1186 1186 1 3383 )); -DATA(insert ( 4078 1186 1186 2 3384 )); -DATA(insert ( 4078 1186 1186 3 3385 )); -DATA(insert ( 4078 1186 1186 4 3386 )); -/* minmax time with time zone */ -DATA(insert ( 4058 1266 1266 1 3383 )); -DATA(insert ( 4058 1266 1266 2 3384 )); -DATA(insert ( 4058 1266 1266 3 3385 )); -DATA(insert ( 4058 1266 1266 4 3386 )); -/* minmax bit */ -DATA(insert ( 4079 1560 1560 1 3383 )); -DATA(insert ( 4079 1560 1560 2 3384 )); -DATA(insert ( 4079 1560 1560 3 3385 )); -DATA(insert ( 4079 1560 1560 4 3386 )); -/* minmax bit varying */ -DATA(insert ( 4080 1562 1562 1 3383 )); -DATA(insert ( 4080 1562 1562 2 3384 )); -DATA(insert ( 4080 1562 1562 3 3385 )); -DATA(insert ( 4080 1562 1562 4 3386 )); -/* minmax numeric */ -DATA(insert ( 4055 1700 1700 1 3383 )); -DATA(insert ( 4055 1700 1700 2 3384 )); -DATA(insert ( 4055 1700 1700 3 3385 )); -DATA(insert ( 4055 1700 1700 4 3386 )); -/* minmax uuid */ -DATA(insert ( 4081 2950 2950 1 3383 )); -DATA(insert ( 4081 2950 2950 2 3384 )); -DATA(insert ( 4081 2950 2950 3 3385 )); -DATA(insert ( 4081 2950 2950 4 3386 )); -/* inclusion range types */ -DATA(insert ( 4103 3831 3831 1 4105 )); -DATA(insert ( 4103 3831 3831 2 4106 )); -DATA(insert ( 4103 3831 3831 3 4107 )); -DATA(insert ( 4103 3831 3831 4 4108 )); -DATA(insert ( 4103 3831 3831 11 4057 )); -DATA(insert ( 4103 3831 3831 13 3859 )); -DATA(insert ( 4103 3831 3831 14 3850 )); -/* minmax pg_lsn */ -DATA(insert ( 4082 3220 3220 1 3383 )); -DATA(insert ( 4082 3220 3220 2 3384 )); -DATA(insert ( 4082 3220 3220 3 3385 )); -DATA(insert ( 4082 3220 3220 4 3386 )); -/* inclusion box */ -DATA(insert ( 4104 603 603 1 4105 )); -DATA(insert ( 4104 603 603 2 4106 )); -DATA(insert ( 4104 603 603 3 4107 )); -DATA(insert ( 4104 603 603 4 4108 )); -DATA(insert ( 4104 603 603 11 4067 )); -DATA(insert ( 4104 603 603 13 187 )); - #endif /* PG_AMPROC_H */ diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h index 8a8b8cac52..16b106d9ad 100644 --- a/src/include/catalog/pg_attrdef.h +++ b/src/include/catalog/pg_attrdef.h @@ -2,7 +2,6 @@ * * pg_attrdef.h * definition of the system "attribute defaults" relation (pg_attrdef) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_attrdef.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_ATTRDEF_H #include "catalog/genbki.h" +#include "catalog/pg_attrdef_d.h" /* ---------------- * pg_attrdef definition. cpp turns this into * typedef struct FormData_pg_attrdef * ---------------- */ -#define AttrDefaultRelationId 2604 - -CATALOG(pg_attrdef,2604) +CATALOG(pg_attrdef,2604,AttrDefaultRelationId) { Oid adrelid; /* OID of table containing attribute */ int16 adnum; /* attnum of attribute */ @@ -46,14 +44,4 @@ CATALOG(pg_attrdef,2604) */ typedef FormData_pg_attrdef *Form_pg_attrdef; -/* ---------------- - * compiler constants for pg_attrdef - * ---------------- - */ -#define Natts_pg_attrdef 4 -#define Anum_pg_attrdef_adrelid 1 -#define Anum_pg_attrdef_adnum 2 -#define Anum_pg_attrdef_adbin 3 -#define Anum_pg_attrdef_adsrc 4 - #endif /* PG_ATTRDEF_H */ diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h index 5bb64f7c31..8eef7d2fed 100644 --- a/src/include/catalog/pg_attribute.h +++ b/src/include/catalog/pg_attribute.h @@ -2,7 +2,10 @@ * * pg_attribute.h * definition of the system "attribute" relation (pg_attribute) - * along with the relation's initial contents. + * + * The initial contents of pg_attribute are generated at compile time by + * genbki.pl, so there is no pg_attribute.dat file. Only "bootstrapped" + * relations need be included. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +14,8 @@ * src/include/catalog/pg_attribute.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,6 +23,7 @@ #define PG_ATTRIBUTE_H #include "catalog/genbki.h" +#include "catalog/pg_attribute_d.h" /* ---------------- * pg_attribute definition. cpp turns this into @@ -30,10 +34,7 @@ * You may need to change catalog/genbki.pl as well. * ---------------- */ -#define AttributeRelationId 1249 -#define AttributeRelation_Rowtype_Id 75 - -CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BKI_SCHEMA_MACRO +CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75,AttributeRelation_Rowtype_Id) BKI_SCHEMA_MACRO { Oid attrelid; /* OID of relation containing this attribute */ NameData attname; /* name of attribute */ @@ -137,7 +138,7 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK bool atthasmissing BKI_DEFAULT(f); /* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */ - char attidentity BKI_DEFAULT(""); + char attidentity BKI_DEFAULT('\0'); /* Is dropped (ie, logically invisible) or not */ bool attisdropped BKI_DEFAULT(f); @@ -195,47 +196,11 @@ CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(75) BK */ typedef FormData_pg_attribute *Form_pg_attribute; -/* ---------------- - * compiler constants for pg_attribute - * ---------------- - */ - -#define Natts_pg_attribute 24 -#define Anum_pg_attribute_attrelid 1 -#define Anum_pg_attribute_attname 2 -#define Anum_pg_attribute_atttypid 3 -#define Anum_pg_attribute_attstattarget 4 -#define Anum_pg_attribute_attlen 5 -#define Anum_pg_attribute_attnum 6 -#define Anum_pg_attribute_attndims 7 -#define Anum_pg_attribute_attcacheoff 8 -#define Anum_pg_attribute_atttypmod 9 -#define Anum_pg_attribute_attbyval 10 -#define Anum_pg_attribute_attstorage 11 -#define Anum_pg_attribute_attalign 12 -#define Anum_pg_attribute_attnotnull 13 -#define Anum_pg_attribute_atthasdef 14 -#define Anum_pg_attribute_atthasmissing 15 -#define Anum_pg_attribute_attidentity 16 -#define Anum_pg_attribute_attisdropped 17 -#define Anum_pg_attribute_attislocal 18 -#define Anum_pg_attribute_attinhcount 19 -#define Anum_pg_attribute_attcollation 20 -#define Anum_pg_attribute_attacl 21 -#define Anum_pg_attribute_attoptions 22 -#define Anum_pg_attribute_attfdwoptions 23 -#define Anum_pg_attribute_attmissingval 24 - -/* ---------------- - * initial contents of pg_attribute - * - * The initial contents of pg_attribute are generated at compile time by - * genbki.pl. Only "bootstrapped" relations need be included. - * ---------------- - */ - +#ifdef EXPOSE_TO_CLIENT_CODE #define ATTRIBUTE_IDENTITY_ALWAYS 'a' #define ATTRIBUTE_IDENTITY_BY_DEFAULT 'd' +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_ATTRIBUTE_H */ diff --git a/src/include/catalog/pg_auth_members.h b/src/include/catalog/pg_auth_members.h index ae3c14aa7a..75bc2baa14 100644 --- a/src/include/catalog/pg_auth_members.h +++ b/src/include/catalog/pg_auth_members.h @@ -2,7 +2,7 @@ * * pg_auth_members.h * definition of the system "authorization identifier members" relation - * (pg_auth_members) along with the relation's initial contents. + * (pg_auth_members). * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +11,8 @@ * src/include/catalog/pg_auth_members.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,16 +20,14 @@ #define PG_AUTH_MEMBERS_H #include "catalog/genbki.h" +#include "catalog/pg_auth_members_d.h" /* ---------------- * pg_auth_members definition. cpp turns this into * typedef struct FormData_pg_auth_members * ---------------- */ -#define AuthMemRelationId 1261 -#define AuthMemRelation_Rowtype_Id 2843 - -CATALOG(pg_auth_members,1261) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(2843) BKI_SCHEMA_MACRO +CATALOG(pg_auth_members,1261,AuthMemRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_OID(2843,AuthMemRelation_Rowtype_Id) BKI_SCHEMA_MACRO { Oid roleid; /* ID of a role */ Oid member; /* ID of a member of that role */ @@ -44,14 +42,4 @@ CATALOG(pg_auth_members,1261) BKI_SHARED_RELATION BKI_WITHOUT_OIDS BKI_ROWTYPE_O */ typedef FormData_pg_auth_members *Form_pg_auth_members; -/* ---------------- - * compiler constants for pg_auth_members - * ---------------- - */ -#define Natts_pg_auth_members 4 -#define Anum_pg_auth_members_roleid 1 -#define Anum_pg_auth_members_member 2 -#define Anum_pg_auth_members_grantor 3 -#define Anum_pg_auth_members_admin_option 4 - #endif /* PG_AUTH_MEMBERS_H */ diff --git a/src/include/catalog/pg_authid.dat b/src/include/catalog/pg_authid.dat new file mode 100644 index 0000000000..52f4259560 --- /dev/null +++ b/src/include/catalog/pg_authid.dat @@ -0,0 +1,67 @@ +#---------------------------------------------------------------------- +# +# pg_authid.dat +# Initial contents of the pg_authid system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_authid.dat +# +#---------------------------------------------------------------------- + +[ + +# POSTGRES will be replaced at initdb time with a user choice that might +# contain non-word characters, so we must double-quote it. + +# The C code typically refers to these roles using the #define symbols, +# so make sure every entry has an oid_symbol value. + +{ oid => '10', oid_symbol => 'BOOTSTRAP_SUPERUSERID', + rolname => '"POSTGRES"', rolsuper => 't', rolinherit => 't', + rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't', + rolreplication => 't', rolbypassrls => 't', rolconnlimit => '-1', + rolpassword => '_null_', rolvaliduntil => '_null_' }, +{ oid => '3373', oid_symbol => 'DEFAULT_ROLE_MONITOR', + rolname => 'pg_monitor', rolsuper => 'f', rolinherit => 't', + rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', + rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', + rolpassword => '_null_', rolvaliduntil => '_null_' }, +{ oid => '3374', oid_symbol => 'DEFAULT_ROLE_READ_ALL_SETTINGS', + rolname => 'pg_read_all_settings', rolsuper => 'f', rolinherit => 't', + rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', + rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', + rolpassword => '_null_', rolvaliduntil => '_null_' }, +{ oid => '3375', oid_symbol => 'DEFAULT_ROLE_READ_ALL_STATS', + rolname => 'pg_read_all_stats', rolsuper => 'f', rolinherit => 't', + rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', + rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', + rolpassword => '_null_', rolvaliduntil => '_null_' }, +{ oid => '3377', oid_symbol => 'DEFAULT_ROLE_STAT_SCAN_TABLES', + rolname => 'pg_stat_scan_tables', rolsuper => 'f', rolinherit => 't', + rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', + rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', + rolpassword => '_null_', rolvaliduntil => '_null_' }, +{ oid => '4569', oid_symbol => 'DEFAULT_ROLE_READ_SERVER_FILES', + rolname => 'pg_read_server_files', rolsuper => 'f', rolinherit => 't', + rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', + rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', + rolpassword => '_null_', rolvaliduntil => '_null_' }, +{ oid => '4570', oid_symbol => 'DEFAULT_ROLE_WRITE_SERVER_FILES', + rolname => 'pg_write_server_files', rolsuper => 'f', rolinherit => 't', + rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', + rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', + rolpassword => '_null_', rolvaliduntil => '_null_' }, +{ oid => '4571', oid_symbol => 'DEFAULT_ROLE_EXECUTE_SERVER_PROGRAM', + rolname => 'pg_execute_server_program', rolsuper => 'f', rolinherit => 't', + rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', + rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', + rolpassword => '_null_', rolvaliduntil => '_null_' }, +{ oid => '4200', oid_symbol => 'DEFAULT_ROLE_SIGNAL_BACKENDID', + rolname => 'pg_signal_backend', rolsuper => 'f', rolinherit => 't', + rolcreaterole => 'f', rolcreatedb => 'f', rolcanlogin => 'f', + rolreplication => 'f', rolbypassrls => 'f', rolconnlimit => '-1', + rolpassword => '_null_', rolvaliduntil => '_null_' }, + +] diff --git a/src/include/catalog/pg_authid.h b/src/include/catalog/pg_authid.h index 8e98513530..863ef65ebf 100644 --- a/src/include/catalog/pg_authid.h +++ b/src/include/catalog/pg_authid.h @@ -2,7 +2,6 @@ * * pg_authid.h * definition of the system "authorization identifier" relation (pg_authid) - * along with the relation's initial contents. * * pg_shadow and pg_group are now publicly accessible views on pg_authid. * @@ -13,8 +12,8 @@ * src/include/catalog/pg_authid.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,27 +21,14 @@ #define PG_AUTHID_H #include "catalog/genbki.h" - -/* - * The CATALOG definition has to refer to the type of rolvaliduntil as - * "timestamptz" (lower case) so that bootstrap mode recognizes it. But - * the C header files define this type as TimestampTz. Since the field is - * potentially-null and therefore can't be accessed directly from C code, - * there is no particular need for the C struct definition to show the - * field type as TimestampTz --- instead we just make it int. - */ -#define timestamptz int - +#include "catalog/pg_authid_d.h" /* ---------------- * pg_authid definition. cpp turns this into * typedef struct FormData_pg_authid * ---------------- */ -#define AuthIdRelationId 1260 -#define AuthIdRelation_Rowtype_Id 2842 - -CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MACRO +CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842,AuthIdRelation_Rowtype_Id) BKI_SCHEMA_MACRO { NameData rolname; /* name of role */ bool rolsuper; /* read this field via superuser() only! */ @@ -61,9 +47,6 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC #endif } FormData_pg_authid; -#undef timestamptz - - /* ---------------- * Form_pg_authid corresponds to a pointer to a tuple with * the format of pg_authid relation. @@ -71,50 +54,4 @@ CATALOG(pg_authid,1260) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842) BKI_SCHEMA_MAC */ typedef FormData_pg_authid *Form_pg_authid; -/* ---------------- - * compiler constants for pg_authid - * ---------------- - */ -#define Natts_pg_authid 11 -#define Anum_pg_authid_rolname 1 -#define Anum_pg_authid_rolsuper 2 -#define Anum_pg_authid_rolinherit 3 -#define Anum_pg_authid_rolcreaterole 4 -#define Anum_pg_authid_rolcreatedb 5 -#define Anum_pg_authid_rolcanlogin 6 -#define Anum_pg_authid_rolreplication 7 -#define Anum_pg_authid_rolbypassrls 8 -#define Anum_pg_authid_rolconnlimit 9 -#define Anum_pg_authid_rolpassword 10 -#define Anum_pg_authid_rolvaliduntil 11 - -/* ---------------- - * initial contents of pg_authid - * - * The uppercase quantities will be replaced at initdb time with - * user choices. - * - * The C code typically refers to these roles using the #define symbols, - * so be sure to keep those in sync with the DATA lines. - * ---------------- - */ -DATA(insert OID = 10 ( "POSTGRES" t t t t t t t -1 _null_ _null_)); -#define BOOTSTRAP_SUPERUSERID 10 -DATA(insert OID = 3373 ( pg_monitor f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_MONITOR 3373 -DATA(insert OID = 3374 ( pg_read_all_settings f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_READ_ALL_SETTINGS 3374 -DATA(insert OID = 3375 ( pg_read_all_stats f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_READ_ALL_STATS 3375 -DATA(insert OID = 3377 ( pg_stat_scan_tables f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_STAT_SCAN_TABLES 3377 -DATA(insert OID = 4569 ( pg_read_server_files f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_READ_SERVER_FILES 4569 -DATA(insert OID = 4570 ( pg_write_server_files f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_WRITE_SERVER_FILES 4570 -DATA(insert OID = 4571 ( pg_execute_server_program f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_EXECUTE_SERVER_PROGRAM 4571 -DATA(insert OID = 4200 ( pg_signal_backend f t f f f f f -1 _null_ _null_)); -#define DEFAULT_ROLE_SIGNAL_BACKENDID 4200 - #endif /* PG_AUTHID_H */ diff --git a/src/include/catalog/pg_cast.dat b/src/include/catalog/pg_cast.dat new file mode 100644 index 0000000000..c335a7686d --- /dev/null +++ b/src/include/catalog/pg_cast.dat @@ -0,0 +1,535 @@ +#---------------------------------------------------------------------- +# +# pg_cast.dat +# Initial contents of the pg_cast system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_cast.dat +# +#---------------------------------------------------------------------- + +[ + +# Note: this table has OIDs, but we don't bother to assign them manually, +# since nothing needs to know the specific OID of any built-in cast. + +# Numeric category: implicit casts are allowed in the direction +# int2->int4->int8->numeric->float4->float8, while casts in the +# reverse direction are assignment-only. +{ castsource => 'int8', casttarget => 'int2', castfunc => 'int2(int8)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'int8', casttarget => 'int4', castfunc => 'int4(int8)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'int8', casttarget => 'float4', castfunc => 'float4(int8)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int8', casttarget => 'float8', castfunc => 'float8(int8)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int8', casttarget => 'numeric', castfunc => 'numeric(int8)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'int8', castfunc => 'int8(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'int4', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'float4', castfunc => 'float4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'float8', castfunc => 'float8(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'numeric', castfunc => 'numeric(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'int8', castfunc => 'int8(int4)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'int2', castfunc => 'int2(int4)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'float4', castfunc => 'float4(int4)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'float8', castfunc => 'float8(int4)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'numeric', castfunc => 'numeric(int4)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'float4', casttarget => 'int8', castfunc => 'int8(float4)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'float4', casttarget => 'int2', castfunc => 'int2(float4)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'float4', casttarget => 'int4', castfunc => 'int4(float4)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'float4', casttarget => 'float8', castfunc => 'float8(float4)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'float4', casttarget => 'numeric', + castfunc => 'numeric(float4)', castcontext => 'a', castmethod => 'f' }, +{ castsource => 'float8', casttarget => 'int8', castfunc => 'int8(float8)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'float8', casttarget => 'int2', castfunc => 'int2(float8)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'float8', casttarget => 'int4', castfunc => 'int4(float8)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'float8', casttarget => 'float4', castfunc => 'float4(float8)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'float8', casttarget => 'numeric', + castfunc => 'numeric(float8)', castcontext => 'a', castmethod => 'f' }, +{ castsource => 'numeric', casttarget => 'int8', castfunc => 'int8(numeric)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'numeric', casttarget => 'int2', castfunc => 'int2(numeric)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'numeric', casttarget => 'int4', castfunc => 'int4(numeric)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'numeric', casttarget => 'float4', + castfunc => 'float4(numeric)', castcontext => 'i', castmethod => 'f' }, +{ castsource => 'numeric', casttarget => 'float8', + castfunc => 'float8(numeric)', castcontext => 'i', castmethod => 'f' }, +{ castsource => 'money', casttarget => 'numeric', castfunc => 'numeric(money)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'numeric', casttarget => 'money', castfunc => 'money(numeric)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'money', castfunc => 'money(int4)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'int8', casttarget => 'money', castfunc => 'money(int8)', + castcontext => 'a', castmethod => 'f' }, + +# Allow explicit coercions between int4 and bool +{ castsource => 'int4', casttarget => 'bool', castfunc => 'bool(int4)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'bool', casttarget => 'int4', castfunc => 'int4(bool)', + castcontext => 'e', castmethod => 'f' }, + +# OID category: allow implicit conversion from any integral type (including +# int8, to support OID literals > 2G) to OID, as well as assignment coercion +# from OID to int4 or int8. Similarly for each OID-alias type. Also allow +# implicit coercions between OID and each OID-alias type, as well as +# regproc<->regprocedure and regoper<->regoperator. (Other coercions +# between alias types must pass through OID.) Lastly, there are implicit +# casts from text and varchar to regclass, which exist mainly to support +# legacy forms of nextval() and related functions. +{ castsource => 'int8', casttarget => 'oid', castfunc => 'oid', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'oid', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'oid', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'oid', casttarget => 'int8', castfunc => 'int8(oid)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'oid', casttarget => 'int4', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'oid', casttarget => 'regproc', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regproc', casttarget => 'oid', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'int8', casttarget => 'regproc', castfunc => 'oid', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'regproc', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'regproc', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regproc', casttarget => 'int8', castfunc => 'int8(oid)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'regproc', casttarget => 'int4', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'regproc', casttarget => 'regprocedure', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regprocedure', casttarget => 'regproc', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'oid', casttarget => 'regprocedure', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regprocedure', casttarget => 'oid', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'int8', casttarget => 'regprocedure', castfunc => 'oid', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'regprocedure', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'regprocedure', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regprocedure', casttarget => 'int8', castfunc => 'int8(oid)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'regprocedure', casttarget => 'int4', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'oid', casttarget => 'regoper', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regoper', casttarget => 'oid', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'int8', casttarget => 'regoper', castfunc => 'oid', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'regoper', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'regoper', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regoper', casttarget => 'int8', castfunc => 'int8(oid)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'regoper', casttarget => 'int4', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'regoper', casttarget => 'regoperator', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regoperator', casttarget => 'regoper', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'oid', casttarget => 'regoperator', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regoperator', casttarget => 'oid', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'int8', casttarget => 'regoperator', castfunc => 'oid', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'regoperator', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'regoperator', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regoperator', casttarget => 'int8', castfunc => 'int8(oid)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'regoperator', casttarget => 'int4', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'oid', casttarget => 'regclass', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regclass', casttarget => 'oid', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'int8', casttarget => 'regclass', castfunc => 'oid', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'regclass', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'regclass', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regclass', casttarget => 'int8', castfunc => 'int8(oid)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'regclass', casttarget => 'int4', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'oid', casttarget => 'regtype', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regtype', casttarget => 'oid', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'int8', casttarget => 'regtype', castfunc => 'oid', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'regtype', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'regtype', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regtype', casttarget => 'int8', castfunc => 'int8(oid)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'regtype', casttarget => 'int4', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'oid', casttarget => 'regconfig', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regconfig', casttarget => 'oid', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'int8', casttarget => 'regconfig', castfunc => 'oid', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'regconfig', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'regconfig', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regconfig', casttarget => 'int8', castfunc => 'int8(oid)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'regconfig', casttarget => 'int4', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'oid', casttarget => 'regdictionary', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regdictionary', casttarget => 'oid', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'int8', casttarget => 'regdictionary', castfunc => 'oid', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'regdictionary', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'regdictionary', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regdictionary', casttarget => 'int8', castfunc => 'int8(oid)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'regdictionary', casttarget => 'int4', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'text', casttarget => 'regclass', castfunc => 'regclass', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'varchar', casttarget => 'regclass', castfunc => 'regclass', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'oid', casttarget => 'regrole', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regrole', casttarget => 'oid', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'int8', casttarget => 'regrole', castfunc => 'oid', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'regrole', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'regrole', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regrole', casttarget => 'int8', castfunc => 'int8(oid)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'regrole', casttarget => 'int4', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'oid', casttarget => 'regnamespace', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regnamespace', casttarget => 'oid', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'int8', casttarget => 'regnamespace', castfunc => 'oid', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int2', casttarget => 'regnamespace', castfunc => 'int4(int2)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'regnamespace', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'regnamespace', casttarget => 'int8', castfunc => 'int8(oid)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'regnamespace', casttarget => 'int4', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, + +# String category +{ castsource => 'text', casttarget => 'bpchar', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'text', casttarget => 'varchar', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'bpchar', casttarget => 'text', castfunc => 'text(bpchar)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'bpchar', casttarget => 'varchar', castfunc => 'text(bpchar)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'varchar', casttarget => 'text', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'varchar', casttarget => 'bpchar', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'char', casttarget => 'text', castfunc => 'text(char)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'char', casttarget => 'bpchar', castfunc => 'bpchar(char)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'char', casttarget => 'varchar', castfunc => 'text(char)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'name', casttarget => 'text', castfunc => 'text(name)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'name', casttarget => 'bpchar', castfunc => 'bpchar(name)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'name', casttarget => 'varchar', castfunc => 'varchar(name)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'text', casttarget => 'char', castfunc => 'char(text)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'bpchar', casttarget => 'char', castfunc => 'char(text)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'varchar', casttarget => 'char', castfunc => 'char(text)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'text', casttarget => 'name', castfunc => 'name(text)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'bpchar', casttarget => 'name', castfunc => 'name(bpchar)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'varchar', casttarget => 'name', castfunc => 'name(varchar)', + castcontext => 'i', castmethod => 'f' }, + +# Allow explicit coercions between int4 and "char" +{ castsource => 'char', casttarget => 'int4', castfunc => 'int4(char)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'char', castfunc => 'char(int4)', + castcontext => 'e', castmethod => 'f' }, + +# pg_node_tree can be coerced to, but not from, text +{ castsource => 'pg_node_tree', casttarget => 'text', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, + +# pg_ndistinct can be coerced to, but not from, bytea and text +{ castsource => 'pg_ndistinct', casttarget => 'bytea', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'pg_ndistinct', casttarget => 'text', castfunc => '0', + castcontext => 'i', castmethod => 'i' }, + +# pg_dependencies can be coerced to, but not from, bytea and text +{ castsource => 'pg_dependencies', casttarget => 'bytea', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'pg_dependencies', casttarget => 'text', castfunc => '0', + castcontext => 'i', castmethod => 'i' }, + +# Datetime category +{ castsource => 'abstime', casttarget => 'date', castfunc => 'date(abstime)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'abstime', casttarget => 'time', castfunc => 'time(abstime)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'abstime', casttarget => 'timestamp', + castfunc => 'timestamp(abstime)', castcontext => 'i', castmethod => 'f' }, +{ castsource => 'abstime', casttarget => 'timestamptz', + castfunc => 'timestamptz(abstime)', castcontext => 'i', castmethod => 'f' }, +{ castsource => 'reltime', casttarget => 'interval', + castfunc => 'interval(reltime)', castcontext => 'i', castmethod => 'f' }, +{ castsource => 'date', casttarget => 'timestamp', + castfunc => 'timestamp(date)', castcontext => 'i', castmethod => 'f' }, +{ castsource => 'date', casttarget => 'timestamptz', + castfunc => 'timestamptz(date)', castcontext => 'i', castmethod => 'f' }, +{ castsource => 'time', casttarget => 'interval', castfunc => 'interval(time)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'time', casttarget => 'timetz', castfunc => 'timetz(time)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'timestamp', casttarget => 'abstime', + castfunc => 'abstime(timestamp)', castcontext => 'a', castmethod => 'f' }, +{ castsource => 'timestamp', casttarget => 'date', + castfunc => 'date(timestamp)', castcontext => 'a', castmethod => 'f' }, +{ castsource => 'timestamp', casttarget => 'time', + castfunc => 'time(timestamp)', castcontext => 'a', castmethod => 'f' }, +{ castsource => 'timestamp', casttarget => 'timestamptz', + castfunc => 'timestamptz(timestamp)', castcontext => 'i', castmethod => 'f' }, +{ castsource => 'timestamptz', casttarget => 'abstime', + castfunc => 'abstime(timestamptz)', castcontext => 'a', castmethod => 'f' }, +{ castsource => 'timestamptz', casttarget => 'date', + castfunc => 'date(timestamptz)', castcontext => 'a', castmethod => 'f' }, +{ castsource => 'timestamptz', casttarget => 'time', + castfunc => 'time(timestamptz)', castcontext => 'a', castmethod => 'f' }, +{ castsource => 'timestamptz', casttarget => 'timestamp', + castfunc => 'timestamp(timestamptz)', castcontext => 'a', castmethod => 'f' }, +{ castsource => 'timestamptz', casttarget => 'timetz', + castfunc => 'timetz(timestamptz)', castcontext => 'a', castmethod => 'f' }, +{ castsource => 'interval', casttarget => 'reltime', castfunc => 'reltime', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'interval', casttarget => 'time', castfunc => 'time(interval)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'timetz', casttarget => 'time', castfunc => 'time(timetz)', + castcontext => 'a', castmethod => 'f' }, + +# Cross-category casts between int4 and abstime, reltime +{ castsource => 'int4', casttarget => 'abstime', castfunc => '0', + castcontext => 'e', castmethod => 'b' }, +{ castsource => 'abstime', casttarget => 'int4', castfunc => '0', + castcontext => 'e', castmethod => 'b' }, +{ castsource => 'int4', casttarget => 'reltime', castfunc => '0', + castcontext => 'e', castmethod => 'b' }, +{ castsource => 'reltime', casttarget => 'int4', castfunc => '0', + castcontext => 'e', castmethod => 'b' }, + +# Geometric category +{ castsource => 'point', casttarget => 'box', castfunc => 'box(point)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'lseg', casttarget => 'point', castfunc => 'point(lseg)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'path', casttarget => 'point', castfunc => 'point(path)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'path', casttarget => 'polygon', castfunc => 'polygon(path)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'box', casttarget => 'point', castfunc => 'point(box)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'box', casttarget => 'lseg', castfunc => 'lseg(box)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'box', casttarget => 'polygon', castfunc => 'polygon(box)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'box', casttarget => 'circle', castfunc => 'circle(box)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'polygon', casttarget => 'point', castfunc => 'point(polygon)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'polygon', casttarget => 'path', castfunc => 'path', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'polygon', casttarget => 'box', castfunc => 'box(polygon)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'polygon', casttarget => 'circle', + castfunc => 'circle(polygon)', castcontext => 'e', castmethod => 'f' }, +{ castsource => 'circle', casttarget => 'point', castfunc => 'point(circle)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'circle', casttarget => 'box', castfunc => 'box(circle)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'circle', casttarget => 'polygon', + castfunc => 'polygon(circle)', castcontext => 'e', castmethod => 'f' }, + +# MAC address category +{ castsource => 'macaddr', casttarget => 'macaddr8', castfunc => 'macaddr8', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'macaddr8', casttarget => 'macaddr', castfunc => 'macaddr', + castcontext => 'i', castmethod => 'f' }, + +# INET category +{ castsource => 'cidr', casttarget => 'inet', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'inet', casttarget => 'cidr', castfunc => 'cidr', + castcontext => 'a', castmethod => 'f' }, + +# BitString category +{ castsource => 'bit', casttarget => 'varbit', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, +{ castsource => 'varbit', casttarget => 'bit', castfunc => '0', + castcontext => 'i', castmethod => 'b' }, + +# Cross-category casts between bit and int4, int8 +{ castsource => 'int8', casttarget => 'bit', castfunc => 'bit(int8,int4)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'int4', casttarget => 'bit', castfunc => 'bit(int4,int4)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'bit', casttarget => 'int8', castfunc => 'int8(bit)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'bit', casttarget => 'int4', castfunc => 'int4(bit)', + castcontext => 'e', castmethod => 'f' }, + +# Cross-category casts to and from TEXT +# We need entries here only for a few specialized cases where the behavior +# of the cast function differs from the datatype's I/O functions. Otherwise, +# parse_coerce.c will generate CoerceViaIO operations without any prompting. +# Note that the castcontext values specified here should be no stronger than +# parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd +# behavior will ensue when the automatic cast is applied instead of the +# pg_cast entry! +{ castsource => 'cidr', casttarget => 'text', castfunc => 'text(inet)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'inet', casttarget => 'text', castfunc => 'text(inet)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'bool', casttarget => 'text', castfunc => 'text(bool)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'xml', casttarget => 'text', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'text', casttarget => 'xml', castfunc => 'xml', + castcontext => 'e', castmethod => 'f' }, + +# Cross-category casts to and from VARCHAR +# We support all the same casts as for TEXT. +{ castsource => 'cidr', casttarget => 'varchar', castfunc => 'text(inet)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'inet', casttarget => 'varchar', castfunc => 'text(inet)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'bool', casttarget => 'varchar', castfunc => 'text(bool)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'xml', casttarget => 'varchar', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'varchar', casttarget => 'xml', castfunc => 'xml', + castcontext => 'e', castmethod => 'f' }, + +# Cross-category casts to and from BPCHAR +# We support all the same casts as for TEXT. +{ castsource => 'cidr', casttarget => 'bpchar', castfunc => 'text(inet)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'inet', casttarget => 'bpchar', castfunc => 'text(inet)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'bool', casttarget => 'bpchar', castfunc => 'text(bool)', + castcontext => 'a', castmethod => 'f' }, +{ castsource => 'xml', casttarget => 'bpchar', castfunc => '0', + castcontext => 'a', castmethod => 'b' }, +{ castsource => 'bpchar', casttarget => 'xml', castfunc => 'xml', + castcontext => 'e', castmethod => 'f' }, + +# Length-coercion functions +{ castsource => 'bpchar', casttarget => 'bpchar', + castfunc => 'bpchar(bpchar,int4,bool)', castcontext => 'i', + castmethod => 'f' }, +{ castsource => 'varchar', casttarget => 'varchar', + castfunc => 'varchar(varchar,int4,bool)', castcontext => 'i', + castmethod => 'f' }, +{ castsource => 'time', casttarget => 'time', castfunc => 'time(time,int4)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'timestamp', casttarget => 'timestamp', + castfunc => 'timestamp(timestamp,int4)', castcontext => 'i', + castmethod => 'f' }, +{ castsource => 'timestamptz', casttarget => 'timestamptz', + castfunc => 'timestamptz(timestamptz,int4)', castcontext => 'i', + castmethod => 'f' }, +{ castsource => 'interval', casttarget => 'interval', + castfunc => 'interval(interval,int4)', castcontext => 'i', + castmethod => 'f' }, +{ castsource => 'timetz', casttarget => 'timetz', + castfunc => 'timetz(timetz,int4)', castcontext => 'i', castmethod => 'f' }, +{ castsource => 'bit', casttarget => 'bit', castfunc => 'bit(bit,int4,bool)', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'varbit', casttarget => 'varbit', castfunc => 'varbit', + castcontext => 'i', castmethod => 'f' }, +{ castsource => 'numeric', casttarget => 'numeric', + castfunc => 'numeric(numeric,int4)', castcontext => 'i', castmethod => 'f' }, + +# json to/from jsonb +{ castsource => 'json', casttarget => 'jsonb', castfunc => '0', + castcontext => 'a', castmethod => 'i' }, +{ castsource => 'jsonb', casttarget => 'json', castfunc => '0', + castcontext => 'a', castmethod => 'i' }, + +# jsonb to numeric and bool types +{ castsource => 'jsonb', casttarget => 'bool', castfunc => 'bool(jsonb)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'jsonb', casttarget => 'numeric', castfunc => 'numeric(jsonb)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'jsonb', casttarget => 'int2', castfunc => 'int2(jsonb)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'jsonb', casttarget => 'int4', castfunc => 'int4(jsonb)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'jsonb', casttarget => 'int8', castfunc => 'int8(jsonb)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'jsonb', casttarget => 'float4', castfunc => 'float4(jsonb)', + castcontext => 'e', castmethod => 'f' }, +{ castsource => 'jsonb', casttarget => 'float8', castfunc => 'float8(jsonb)', + castcontext => 'e', castmethod => 'f' }, + +] diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h index c47fb5bd0d..10c796ab02 100644 --- a/src/include/catalog/pg_cast.h +++ b/src/include/catalog/pg_cast.h @@ -2,7 +2,6 @@ * * pg_cast.h * definition of the system "type casts" relation (pg_cast) - * along with the relation's initial contents. * * As of Postgres 8.0, pg_cast describes not only type coercion functions * but also length coercion functions. @@ -13,8 +12,8 @@ * src/include/catalog/pg_cast.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,25 +21,40 @@ #define PG_CAST_H #include "catalog/genbki.h" +#include "catalog/pg_cast_d.h" /* ---------------- * pg_cast definition. cpp turns this into * typedef struct FormData_pg_cast * ---------------- */ -#define CastRelationId 2605 - -CATALOG(pg_cast,2605) +CATALOG(pg_cast,2605,CastRelationId) { - Oid castsource; /* source datatype for cast */ - Oid casttarget; /* destination datatype for cast */ - Oid castfunc; /* cast function; 0 = binary coercible */ - char castcontext; /* contexts in which cast can be used */ - char castmethod; /* cast method */ + /* source datatype for cast */ + Oid castsource BKI_LOOKUP(pg_type); + + /* destination datatype for cast */ + Oid casttarget BKI_LOOKUP(pg_type); + + /* cast function; 0 = binary coercible */ + Oid castfunc BKI_LOOKUP(pg_proc); + + /* contexts in which cast can be used */ + char castcontext; + + /* cast method */ + char castmethod; } FormData_pg_cast; +/* ---------------- + * Form_pg_cast corresponds to a pointer to a tuple with + * the format of pg_cast relation. + * ---------------- + */ typedef FormData_pg_cast *Form_pg_cast; +#ifdef EXPOSE_TO_CLIENT_CODE + /* * The allowable values for pg_cast.castcontext are specified by this enum. * Since castcontext is stored as a "char", we use ASCII codes for human @@ -69,336 +83,6 @@ typedef enum CoercionMethod COERCION_METHOD_INOUT = 'i' /* use input/output functions */ } CoercionMethod; - -/* ---------------- - * compiler constants for pg_cast - * ---------------- - */ -#define Natts_pg_cast 5 -#define Anum_pg_cast_castsource 1 -#define Anum_pg_cast_casttarget 2 -#define Anum_pg_cast_castfunc 3 -#define Anum_pg_cast_castcontext 4 -#define Anum_pg_cast_castmethod 5 - -/* ---------------- - * initial contents of pg_cast - * - * Note: this table has OIDs, but we don't bother to assign them manually, - * since nothing needs to know the specific OID of any built-in cast. - * ---------------- - */ - -/* - * Numeric category: implicit casts are allowed in the direction - * int2->int4->int8->numeric->float4->float8, while casts in the - * reverse direction are assignment-only. - */ -DATA(insert ( 20 21 714 a f )); -DATA(insert ( 20 23 480 a f )); -DATA(insert ( 20 700 652 i f )); -DATA(insert ( 20 701 482 i f )); -DATA(insert ( 20 1700 1781 i f )); -DATA(insert ( 21 20 754 i f )); -DATA(insert ( 21 23 313 i f )); -DATA(insert ( 21 700 236 i f )); -DATA(insert ( 21 701 235 i f )); -DATA(insert ( 21 1700 1782 i f )); -DATA(insert ( 23 20 481 i f )); -DATA(insert ( 23 21 314 a f )); -DATA(insert ( 23 700 318 i f )); -DATA(insert ( 23 701 316 i f )); -DATA(insert ( 23 1700 1740 i f )); -DATA(insert ( 700 20 653 a f )); -DATA(insert ( 700 21 238 a f )); -DATA(insert ( 700 23 319 a f )); -DATA(insert ( 700 701 311 i f )); -DATA(insert ( 700 1700 1742 a f )); -DATA(insert ( 701 20 483 a f )); -DATA(insert ( 701 21 237 a f )); -DATA(insert ( 701 23 317 a f )); -DATA(insert ( 701 700 312 a f )); -DATA(insert ( 701 1700 1743 a f )); -DATA(insert ( 1700 20 1779 a f )); -DATA(insert ( 1700 21 1783 a f )); -DATA(insert ( 1700 23 1744 a f )); -DATA(insert ( 1700 700 1745 i f )); -DATA(insert ( 1700 701 1746 i f )); -DATA(insert ( 790 1700 3823 a f )); -DATA(insert ( 1700 790 3824 a f )); -DATA(insert ( 23 790 3811 a f )); -DATA(insert ( 20 790 3812 a f )); - -/* Allow explicit coercions between int4 and bool */ -DATA(insert ( 23 16 2557 e f )); -DATA(insert ( 16 23 2558 e f )); - -/* - * OID category: allow implicit conversion from any integral type (including - * int8, to support OID literals > 2G) to OID, as well as assignment coercion - * from OID to int4 or int8. Similarly for each OID-alias type. Also allow - * implicit coercions between OID and each OID-alias type, as well as - * regproc<->regprocedure and regoper<->regoperator. (Other coercions - * between alias types must pass through OID.) Lastly, there are implicit - * casts from text and varchar to regclass, which exist mainly to support - * legacy forms of nextval() and related functions. - */ -DATA(insert ( 20 26 1287 i f )); -DATA(insert ( 21 26 313 i f )); -DATA(insert ( 23 26 0 i b )); -DATA(insert ( 26 20 1288 a f )); -DATA(insert ( 26 23 0 a b )); -DATA(insert ( 26 24 0 i b )); -DATA(insert ( 24 26 0 i b )); -DATA(insert ( 20 24 1287 i f )); -DATA(insert ( 21 24 313 i f )); -DATA(insert ( 23 24 0 i b )); -DATA(insert ( 24 20 1288 a f )); -DATA(insert ( 24 23 0 a b )); -DATA(insert ( 24 2202 0 i b )); -DATA(insert ( 2202 24 0 i b )); -DATA(insert ( 26 2202 0 i b )); -DATA(insert ( 2202 26 0 i b )); -DATA(insert ( 20 2202 1287 i f )); -DATA(insert ( 21 2202 313 i f )); -DATA(insert ( 23 2202 0 i b )); -DATA(insert ( 2202 20 1288 a f )); -DATA(insert ( 2202 23 0 a b )); -DATA(insert ( 26 2203 0 i b )); -DATA(insert ( 2203 26 0 i b )); -DATA(insert ( 20 2203 1287 i f )); -DATA(insert ( 21 2203 313 i f )); -DATA(insert ( 23 2203 0 i b )); -DATA(insert ( 2203 20 1288 a f )); -DATA(insert ( 2203 23 0 a b )); -DATA(insert ( 2203 2204 0 i b )); -DATA(insert ( 2204 2203 0 i b )); -DATA(insert ( 26 2204 0 i b )); -DATA(insert ( 2204 26 0 i b )); -DATA(insert ( 20 2204 1287 i f )); -DATA(insert ( 21 2204 313 i f )); -DATA(insert ( 23 2204 0 i b )); -DATA(insert ( 2204 20 1288 a f )); -DATA(insert ( 2204 23 0 a b )); -DATA(insert ( 26 2205 0 i b )); -DATA(insert ( 2205 26 0 i b )); -DATA(insert ( 20 2205 1287 i f )); -DATA(insert ( 21 2205 313 i f )); -DATA(insert ( 23 2205 0 i b )); -DATA(insert ( 2205 20 1288 a f )); -DATA(insert ( 2205 23 0 a b )); -DATA(insert ( 26 2206 0 i b )); -DATA(insert ( 2206 26 0 i b )); -DATA(insert ( 20 2206 1287 i f )); -DATA(insert ( 21 2206 313 i f )); -DATA(insert ( 23 2206 0 i b )); -DATA(insert ( 2206 20 1288 a f )); -DATA(insert ( 2206 23 0 a b )); -DATA(insert ( 26 3734 0 i b )); -DATA(insert ( 3734 26 0 i b )); -DATA(insert ( 20 3734 1287 i f )); -DATA(insert ( 21 3734 313 i f )); -DATA(insert ( 23 3734 0 i b )); -DATA(insert ( 3734 20 1288 a f )); -DATA(insert ( 3734 23 0 a b )); -DATA(insert ( 26 3769 0 i b )); -DATA(insert ( 3769 26 0 i b )); -DATA(insert ( 20 3769 1287 i f )); -DATA(insert ( 21 3769 313 i f )); -DATA(insert ( 23 3769 0 i b )); -DATA(insert ( 3769 20 1288 a f )); -DATA(insert ( 3769 23 0 a b )); -DATA(insert ( 25 2205 1079 i f )); -DATA(insert ( 1043 2205 1079 i f )); -DATA(insert ( 26 4096 0 i b )); -DATA(insert ( 4096 26 0 i b )); -DATA(insert ( 20 4096 1287 i f )); -DATA(insert ( 21 4096 313 i f )); -DATA(insert ( 23 4096 0 i b )); -DATA(insert ( 4096 20 1288 a f )); -DATA(insert ( 4096 23 0 a b )); -DATA(insert ( 26 4089 0 i b )); -DATA(insert ( 4089 26 0 i b )); -DATA(insert ( 20 4089 1287 i f )); -DATA(insert ( 21 4089 313 i f )); -DATA(insert ( 23 4089 0 i b )); -DATA(insert ( 4089 20 1288 a f )); -DATA(insert ( 4089 23 0 a b )); - -/* - * String category - */ -DATA(insert ( 25 1042 0 i b )); -DATA(insert ( 25 1043 0 i b )); -DATA(insert ( 1042 25 401 i f )); -DATA(insert ( 1042 1043 401 i f )); -DATA(insert ( 1043 25 0 i b )); -DATA(insert ( 1043 1042 0 i b )); -DATA(insert ( 18 25 946 i f )); -DATA(insert ( 18 1042 860 a f )); -DATA(insert ( 18 1043 946 a f )); -DATA(insert ( 19 25 406 i f )); -DATA(insert ( 19 1042 408 a f )); -DATA(insert ( 19 1043 1401 a f )); -DATA(insert ( 25 18 944 a f )); -DATA(insert ( 1042 18 944 a f )); -DATA(insert ( 1043 18 944 a f )); -DATA(insert ( 25 19 407 i f )); -DATA(insert ( 1042 19 409 i f )); -DATA(insert ( 1043 19 1400 i f )); - -/* Allow explicit coercions between int4 and "char" */ -DATA(insert ( 18 23 77 e f )); -DATA(insert ( 23 18 78 e f )); - -/* pg_node_tree can be coerced to, but not from, text */ -DATA(insert ( 194 25 0 i b )); - -/* pg_ndistinct can be coerced to, but not from, bytea and text */ -DATA(insert ( 3361 17 0 i b )); -DATA(insert ( 3361 25 0 i i )); - -/* pg_dependencies can be coerced to, but not from, bytea and text */ -DATA(insert ( 3402 17 0 i b )); -DATA(insert ( 3402 25 0 i i )); - -/* - * Datetime category - */ -DATA(insert ( 702 1082 1179 a f )); -DATA(insert ( 702 1083 1364 a f )); -DATA(insert ( 702 1114 2023 i f )); -DATA(insert ( 702 1184 1173 i f )); -DATA(insert ( 703 1186 1177 i f )); -DATA(insert ( 1082 1114 2024 i f )); -DATA(insert ( 1082 1184 1174 i f )); -DATA(insert ( 1083 1186 1370 i f )); -DATA(insert ( 1083 1266 2047 i f )); -DATA(insert ( 1114 702 2030 a f )); -DATA(insert ( 1114 1082 2029 a f )); -DATA(insert ( 1114 1083 1316 a f )); -DATA(insert ( 1114 1184 2028 i f )); -DATA(insert ( 1184 702 1180 a f )); -DATA(insert ( 1184 1082 1178 a f )); -DATA(insert ( 1184 1083 2019 a f )); -DATA(insert ( 1184 1114 2027 a f )); -DATA(insert ( 1184 1266 1388 a f )); -DATA(insert ( 1186 703 1194 a f )); -DATA(insert ( 1186 1083 1419 a f )); -DATA(insert ( 1266 1083 2046 a f )); -/* Cross-category casts between int4 and abstime, reltime */ -DATA(insert ( 23 702 0 e b )); -DATA(insert ( 702 23 0 e b )); -DATA(insert ( 23 703 0 e b )); -DATA(insert ( 703 23 0 e b )); - -/* - * Geometric category - */ -DATA(insert ( 600 603 4091 a f )); -DATA(insert ( 601 600 1532 e f )); -DATA(insert ( 602 600 1533 e f )); -DATA(insert ( 602 604 1449 a f )); -DATA(insert ( 603 600 1534 e f )); -DATA(insert ( 603 601 1541 e f )); -DATA(insert ( 603 604 1448 a f )); -DATA(insert ( 603 718 1479 e f )); -DATA(insert ( 604 600 1540 e f )); -DATA(insert ( 604 602 1447 a f )); -DATA(insert ( 604 603 1446 e f )); -DATA(insert ( 604 718 1474 e f )); -DATA(insert ( 718 600 1416 e f )); -DATA(insert ( 718 603 1480 e f )); -DATA(insert ( 718 604 1544 e f )); - -/* - * MAC address category - */ -DATA(insert ( 829 774 4123 i f )); -DATA(insert ( 774 829 4124 i f )); - -/* - * INET category - */ -DATA(insert ( 650 869 0 i b )); -DATA(insert ( 869 650 1715 a f )); - -/* - * BitString category - */ -DATA(insert ( 1560 1562 0 i b )); -DATA(insert ( 1562 1560 0 i b )); -/* Cross-category casts between bit and int4, int8 */ -DATA(insert ( 20 1560 2075 e f )); -DATA(insert ( 23 1560 1683 e f )); -DATA(insert ( 1560 20 2076 e f )); -DATA(insert ( 1560 23 1684 e f )); - -/* - * Cross-category casts to and from TEXT - * - * We need entries here only for a few specialized cases where the behavior - * of the cast function differs from the datatype's I/O functions. Otherwise, - * parse_coerce.c will generate CoerceViaIO operations without any prompting. - * - * Note that the castcontext values specified here should be no stronger than - * parse_coerce.c's automatic casts ('a' to text, 'e' from text) else odd - * behavior will ensue when the automatic cast is applied instead of the - * pg_cast entry! - */ -DATA(insert ( 650 25 730 a f )); -DATA(insert ( 869 25 730 a f )); -DATA(insert ( 16 25 2971 a f )); -DATA(insert ( 142 25 0 a b )); -DATA(insert ( 25 142 2896 e f )); - -/* - * Cross-category casts to and from VARCHAR - * - * We support all the same casts as for TEXT. - */ -DATA(insert ( 650 1043 730 a f )); -DATA(insert ( 869 1043 730 a f )); -DATA(insert ( 16 1043 2971 a f )); -DATA(insert ( 142 1043 0 a b )); -DATA(insert ( 1043 142 2896 e f )); - -/* - * Cross-category casts to and from BPCHAR - * - * We support all the same casts as for TEXT. - */ -DATA(insert ( 650 1042 730 a f )); -DATA(insert ( 869 1042 730 a f )); -DATA(insert ( 16 1042 2971 a f )); -DATA(insert ( 142 1042 0 a b )); -DATA(insert ( 1042 142 2896 e f )); - -/* - * Length-coercion functions - */ -DATA(insert ( 1042 1042 668 i f )); -DATA(insert ( 1043 1043 669 i f )); -DATA(insert ( 1083 1083 1968 i f )); -DATA(insert ( 1114 1114 1961 i f )); -DATA(insert ( 1184 1184 1967 i f )); -DATA(insert ( 1186 1186 1200 i f )); -DATA(insert ( 1266 1266 1969 i f )); -DATA(insert ( 1560 1560 1685 i f )); -DATA(insert ( 1562 1562 1687 i f )); -DATA(insert ( 1700 1700 1703 i f )); - -/* json to/from jsonb */ -DATA(insert ( 114 3802 0 a i )); -DATA(insert ( 3802 114 0 a i )); - -/* jsonb to numeric and bool types */ -DATA(insert ( 3802 16 3556 e f )); -DATA(insert ( 3802 1700 3449 e f )); -DATA(insert ( 3802 21 3450 e f )); -DATA(insert ( 3802 23 3451 e f )); -DATA(insert ( 3802 20 3452 e f )); -DATA(insert ( 3802 700 3453 e f )); -DATA(insert ( 3802 701 2580 e f )); +#endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_CAST_H */ diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat new file mode 100644 index 0000000000..e1450e3fc7 --- /dev/null +++ b/src/include/catalog/pg_class.dat @@ -0,0 +1,68 @@ +#---------------------------------------------------------------------- +# +# pg_class.dat +# Initial contents of the pg_class system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_class.dat +# +#---------------------------------------------------------------------- + +[ + +# Note: only "bootstrapped" relations, ie those marked BKI_BOOTSTRAP, need to +# have entries here. Be sure that the OIDs listed here match those given in +# their CATALOG and BKI_ROWTYPE_OID macros, and that the relnatts values are +# correct. + +# Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId; +# similarly, "1" in relminmxid stands for FirstMultiXactId + +{ oid => '1247', + relname => 'pg_type', relnamespace => 'PGNSP', reltype => '71', + reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', + reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', + reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', + relpersistence => 'p', relkind => 'r', relnatts => '30', relchecks => '0', + relhasoids => 't', relhasrules => 'f', relhastriggers => 'f', + relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', + relispopulated => 't', relreplident => 'n', relispartition => 'f', + relrewrite => '0', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', + reloptions => '_null_', relpartbound => '_null_' }, +{ oid => '1249', + relname => 'pg_attribute', relnamespace => 'PGNSP', reltype => '75', + reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', + reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', + reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', + relpersistence => 'p', relkind => 'r', relnatts => '24', relchecks => '0', + relhasoids => 'f', relhasrules => 'f', relhastriggers => 'f', + relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', + relispopulated => 't', relreplident => 'n', relispartition => 'f', + relrewrite => '0', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', + reloptions => '_null_', relpartbound => '_null_' }, +{ oid => '1255', + relname => 'pg_proc', relnamespace => 'PGNSP', reltype => '81', + reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', + reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', + reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', + relpersistence => 'p', relkind => 'r', relnatts => '28', relchecks => '0', + relhasoids => 't', relhasrules => 'f', relhastriggers => 'f', + relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', + relispopulated => 't', relreplident => 'n', relispartition => 'f', + relrewrite => '0', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', + reloptions => '_null_', relpartbound => '_null_' }, +{ oid => '1259', + relname => 'pg_class', relnamespace => 'PGNSP', reltype => '83', + reloftype => '0', relowner => 'PGUID', relam => '0', relfilenode => '0', + reltablespace => '0', relpages => '0', reltuples => '0', relallvisible => '0', + reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', + relpersistence => 'p', relkind => 'r', relnatts => '33', relchecks => '0', + relhasoids => 't', relhasrules => 'f', relhastriggers => 'f', + relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', + relispopulated => 't', relreplident => 'n', relispartition => 'f', + relrewrite => '0', relfrozenxid => '3', relminmxid => '1', relacl => '_null_', + reloptions => '_null_', relpartbound => '_null_' }, + +] diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h index 135f33d0f3..ef62c30cf9 100644 --- a/src/include/catalog/pg_class.h +++ b/src/include/catalog/pg_class.h @@ -2,7 +2,6 @@ * * pg_class.h * definition of the system "relation" relation (pg_class) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_class.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,16 +19,14 @@ #define PG_CLASS_H #include "catalog/genbki.h" +#include "catalog/pg_class_d.h" /* ---------------- * pg_class definition. cpp turns this into * typedef struct FormData_pg_class * ---------------- */ -#define RelationRelationId 1259 -#define RelationRelation_Rowtype_Id 83 - -CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO +CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,RelationRelation_Rowtype_Id) BKI_SCHEMA_MACRO { NameData relname; /* class name */ Oid relnamespace; /* OID of namespace containing this class */ @@ -94,68 +91,7 @@ CATALOG(pg_class,1259) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83) BKI_SCHEMA_MACRO */ typedef FormData_pg_class *Form_pg_class; -/* ---------------- - * compiler constants for pg_class - * ---------------- - */ - -#define Natts_pg_class 33 -#define Anum_pg_class_relname 1 -#define Anum_pg_class_relnamespace 2 -#define Anum_pg_class_reltype 3 -#define Anum_pg_class_reloftype 4 -#define Anum_pg_class_relowner 5 -#define Anum_pg_class_relam 6 -#define Anum_pg_class_relfilenode 7 -#define Anum_pg_class_reltablespace 8 -#define Anum_pg_class_relpages 9 -#define Anum_pg_class_reltuples 10 -#define Anum_pg_class_relallvisible 11 -#define Anum_pg_class_reltoastrelid 12 -#define Anum_pg_class_relhasindex 13 -#define Anum_pg_class_relisshared 14 -#define Anum_pg_class_relpersistence 15 -#define Anum_pg_class_relkind 16 -#define Anum_pg_class_relnatts 17 -#define Anum_pg_class_relchecks 18 -#define Anum_pg_class_relhasoids 19 -#define Anum_pg_class_relhasrules 20 -#define Anum_pg_class_relhastriggers 21 -#define Anum_pg_class_relhassubclass 22 -#define Anum_pg_class_relrowsecurity 23 -#define Anum_pg_class_relforcerowsecurity 24 -#define Anum_pg_class_relispopulated 25 -#define Anum_pg_class_relreplident 26 -#define Anum_pg_class_relispartition 27 -#define Anum_pg_class_relrewrite 28 -#define Anum_pg_class_relfrozenxid 29 -#define Anum_pg_class_relminmxid 30 -#define Anum_pg_class_relacl 31 -#define Anum_pg_class_reloptions 32 -#define Anum_pg_class_relpartbound 33 - -/* ---------------- - * initial contents of pg_class - * - * NOTE: only "bootstrapped" relations need to be declared here. Be sure that - * the OIDs listed here match those given in their CATALOG macros, and that - * the relnatts values are correct. - * ---------------- - */ - -/* - * Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId; - * similarly, "1" in relminmxid stands for FirstMultiXactId - */ -DATA(insert OID = 1247 ( pg_type PGNSP 71 0 PGUID 0 0 0 0 0 0 0 f f p r 30 0 t f f f f f t n f 0 3 1 _null_ _null_ _null_)); -DESCR(""); -DATA(insert OID = 1249 ( pg_attribute PGNSP 75 0 PGUID 0 0 0 0 0 0 0 f f p r 24 0 f f f f f f t n f 0 3 1 _null_ _null_ _null_)); -DESCR(""); -DATA(insert OID = 1255 ( pg_proc PGNSP 81 0 PGUID 0 0 0 0 0 0 0 f f p r 28 0 t f f f f f t n f 0 3 1 _null_ _null_ _null_)); -DESCR(""); -DATA(insert OID = 1259 ( pg_class PGNSP 83 0 PGUID 0 0 0 0 0 0 0 f f p r 33 0 t f f f f f t n f 0 3 1 _null_ _null_ _null_)); -DESCR(""); - +#ifdef EXPOSE_TO_CLIENT_CODE #define RELKIND_RELATION 'r' /* ordinary table */ #define RELKIND_INDEX 'i' /* secondary index */ @@ -185,4 +121,6 @@ DESCR(""); */ #define REPLICA_IDENTITY_INDEX 'i' +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_CLASS_H */ diff --git a/src/include/catalog/pg_collation.dat b/src/include/catalog/pg_collation.dat new file mode 100644 index 0000000000..e98a4fd817 --- /dev/null +++ b/src/include/catalog/pg_collation.dat @@ -0,0 +1,31 @@ +#---------------------------------------------------------------------- +# +# pg_collation.dat +# Initial contents of the pg_collation system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_collation.dat +# +#---------------------------------------------------------------------- + +[ + +{ oid => '100', oid_symbol => 'DEFAULT_COLLATION_OID', + descr => 'database\'s default collation', + collname => 'default', collnamespace => 'PGNSP', collowner => 'PGUID', + collprovider => 'd', collencoding => '-1', collcollate => '', collctype => '', + collversion => '_null_' }, +{ oid => '950', oid_symbol => 'C_COLLATION_OID', + descr => 'standard C collation', + collname => 'C', collnamespace => 'PGNSP', collowner => 'PGUID', + collprovider => 'c', collencoding => '-1', collcollate => 'C', + collctype => 'C', collversion => '_null_' }, +{ oid => '951', oid_symbol => 'POSIX_COLLATION_OID', + descr => 'standard POSIX collation', + collname => 'POSIX', collnamespace => 'PGNSP', collowner => 'PGUID', + collprovider => 'c', collencoding => '-1', collcollate => 'POSIX', + collctype => 'POSIX', collversion => '_null_' }, + +] diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h index 8ef804c73b..d932a42ce0 100644 --- a/src/include/catalog/pg_collation.h +++ b/src/include/catalog/pg_collation.h @@ -2,7 +2,6 @@ * * pg_collation.h * definition of the system "collation" relation (pg_collation) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -12,8 +11,8 @@ * src/include/catalog/pg_collation.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -21,15 +20,14 @@ #define PG_COLLATION_H #include "catalog/genbki.h" +#include "catalog/pg_collation_d.h" /* ---------------- * pg_collation definition. cpp turns this into * typedef struct FormData_pg_collation * ---------------- */ -#define CollationRelationId 3456 - -CATALOG(pg_collation,3456) +CATALOG(pg_collation,3456,CollationRelationId) { NameData collname; /* collation name */ Oid collnamespace; /* OID of namespace containing collation */ @@ -51,38 +49,12 @@ CATALOG(pg_collation,3456) */ typedef FormData_pg_collation *Form_pg_collation; -/* ---------------- - * compiler constants for pg_collation - * ---------------- - */ -#define Natts_pg_collation 8 -#define Anum_pg_collation_collname 1 -#define Anum_pg_collation_collnamespace 2 -#define Anum_pg_collation_collowner 3 -#define Anum_pg_collation_collprovider 4 -#define Anum_pg_collation_collencoding 5 -#define Anum_pg_collation_collcollate 6 -#define Anum_pg_collation_collctype 7 -#define Anum_pg_collation_collversion 8 - -/* ---------------- - * initial contents of pg_collation - * ---------------- - */ - -DATA(insert OID = 100 ( default PGNSP PGUID d -1 "" "" _null_ )); -DESCR("database's default collation"); -#define DEFAULT_COLLATION_OID 100 -DATA(insert OID = 950 ( C PGNSP PGUID c -1 C C _null_ )); -DESCR("standard C collation"); -#define C_COLLATION_OID 950 -DATA(insert OID = 951 ( POSIX PGNSP PGUID c -1 POSIX POSIX _null_ )); -DESCR("standard POSIX collation"); -#define POSIX_COLLATION_OID 951 - +#ifdef EXPOSE_TO_CLIENT_CODE #define COLLPROVIDER_DEFAULT 'd' #define COLLPROVIDER_ICU 'i' #define COLLPROVIDER_LIBC 'c' +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_COLLATION_H */ diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h index a0fb5f8243..5164092231 100644 --- a/src/include/catalog/pg_constraint.h +++ b/src/include/catalog/pg_constraint.h @@ -2,7 +2,6 @@ * * pg_constraint.h * definition of the system "constraint" relation (pg_constraint) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_constraint.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_CONSTRAINT_H #include "catalog/genbki.h" +#include "catalog/pg_constraint_d.h" /* ---------------- * pg_constraint definition. cpp turns this into * typedef struct FormData_pg_constraint * ---------------- */ -#define ConstraintRelationId 2606 - -CATALOG(pg_constraint,2606) +CATALOG(pg_constraint,2606,ConstraintRelationId) { /* * conname + connamespace is deliberately not unique; we allow, for @@ -105,8 +103,8 @@ CATALOG(pg_constraint,2606) int16 conkey[1]; /* - * Columns of conrelid that the constraint does not apply to, but included - * into the same index with key columns. + * Columns of conrelid that the constraint does not apply to, but are + * included into the same index as the key columns */ int16 conincluding[1]; @@ -158,45 +156,7 @@ CATALOG(pg_constraint,2606) */ typedef FormData_pg_constraint *Form_pg_constraint; -/* ---------------- - * compiler constants for pg_constraint - * ---------------- - */ -#define Natts_pg_constraint 26 -#define Anum_pg_constraint_conname 1 -#define Anum_pg_constraint_connamespace 2 -#define Anum_pg_constraint_contype 3 -#define Anum_pg_constraint_condeferrable 4 -#define Anum_pg_constraint_condeferred 5 -#define Anum_pg_constraint_convalidated 6 -#define Anum_pg_constraint_conrelid 7 -#define Anum_pg_constraint_contypid 8 -#define Anum_pg_constraint_conindid 9 -#define Anum_pg_constraint_conparentid 10 -#define Anum_pg_constraint_confrelid 11 -#define Anum_pg_constraint_confupdtype 12 -#define Anum_pg_constraint_confdeltype 13 -#define Anum_pg_constraint_confmatchtype 14 -#define Anum_pg_constraint_conislocal 15 -#define Anum_pg_constraint_coninhcount 16 -#define Anum_pg_constraint_connoinherit 17 -#define Anum_pg_constraint_conkey 18 -#define Anum_pg_constraint_conincluding 19 -#define Anum_pg_constraint_confkey 20 -#define Anum_pg_constraint_conpfeqop 21 -#define Anum_pg_constraint_conppeqop 22 -#define Anum_pg_constraint_conffeqop 23 -#define Anum_pg_constraint_conexclop 24 -#define Anum_pg_constraint_conbin 25 -#define Anum_pg_constraint_consrc 26 - -/* ---------------- - * initial contents of pg_constraint - * ---------------- - */ - -/* nothing, at present */ - +#ifdef EXPOSE_TO_CLIENT_CODE /* Valid values for contype */ #define CONSTRAINT_CHECK 'c' @@ -212,4 +172,6 @@ typedef FormData_pg_constraint *Form_pg_constraint; * the FKCONSTR_MATCH_xxx constants defined in parsenodes.h. */ +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_CONSTRAINT_H */ diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h index 29f3c9d65a..2a38d71b48 100644 --- a/src/include/catalog/pg_conversion.h +++ b/src/include/catalog/pg_conversion.h @@ -2,7 +2,6 @@ * * pg_conversion.h * definition of the system "conversion" relation (pg_conversion) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_conversion.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,6 +19,7 @@ #define PG_CONVERSION_H #include "catalog/genbki.h" +#include "catalog/pg_conversion_d.h" /* ---------------------------------------------------------------- * pg_conversion definition. @@ -35,9 +35,7 @@ * condefault true if this is a default conversion * ---------------------------------------------------------------- */ -#define ConversionRelationId 2607 - -CATALOG(pg_conversion,2607) +CATALOG(pg_conversion,2607,ConversionRelationId) { NameData conname; Oid connamespace; @@ -55,23 +53,4 @@ CATALOG(pg_conversion,2607) */ typedef FormData_pg_conversion *Form_pg_conversion; -/* ---------------- - * compiler constants for pg_conversion - * ---------------- - */ - -#define Natts_pg_conversion 7 -#define Anum_pg_conversion_conname 1 -#define Anum_pg_conversion_connamespace 2 -#define Anum_pg_conversion_conowner 3 -#define Anum_pg_conversion_conforencoding 4 -#define Anum_pg_conversion_contoencoding 5 -#define Anum_pg_conversion_conproc 6 -#define Anum_pg_conversion_condefault 7 - -/* ---------------- - * initial contents of pg_conversion - * --------------- - */ - #endif /* PG_CONVERSION_H */ diff --git a/src/include/catalog/pg_database.dat b/src/include/catalog/pg_database.dat new file mode 100644 index 0000000000..957ca8408a --- /dev/null +++ b/src/include/catalog/pg_database.dat @@ -0,0 +1,26 @@ +#---------------------------------------------------------------------- +# +# pg_database.dat +# Initial contents of the pg_database system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_database.dat +# +#---------------------------------------------------------------------- + +[ + +# LC_COLLATE and LC_CTYPE will be replaced at initdb time with user choices +# that might contain non-word characters, so we must double-quote them. + +{ oid => '1', oid_symbol => 'TemplateDbOid', + descr => 'default template for new databases', + datname => 'template1', datdba => 'PGUID', encoding => 'ENCODING', + datcollate => '"LC_COLLATE"', datctype => '"LC_CTYPE"', datistemplate => 't', + datallowconn => 't', datconnlimit => '-1', datlastsysoid => '0', + datfrozenxid => '0', datminmxid => '1', dattablespace => '1663', + datacl => '_null_' }, + +] diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h index 56f9960dfe..7f03d24c1e 100644 --- a/src/include/catalog/pg_database.h +++ b/src/include/catalog/pg_database.h @@ -2,7 +2,6 @@ * * pg_database.h * definition of the system "database" relation (pg_database) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_database.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,16 +19,14 @@ #define PG_DATABASE_H #include "catalog/genbki.h" +#include "catalog/pg_database_d.h" /* ---------------- * pg_database definition. cpp turns this into * typedef struct FormData_pg_database * ---------------- */ -#define DatabaseRelationId 1262 -#define DatabaseRelation_Rowtype_Id 1248 - -CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_MACRO +CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id) BKI_SCHEMA_MACRO { NameData datname; /* database name */ Oid datdba; /* owner of database */ @@ -56,27 +53,4 @@ CATALOG(pg_database,1262) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248) BKI_SCHEMA_M */ typedef FormData_pg_database *Form_pg_database; -/* ---------------- - * compiler constants for pg_database - * ---------------- - */ -#define Natts_pg_database 13 -#define Anum_pg_database_datname 1 -#define Anum_pg_database_datdba 2 -#define Anum_pg_database_encoding 3 -#define Anum_pg_database_datcollate 4 -#define Anum_pg_database_datctype 5 -#define Anum_pg_database_datistemplate 6 -#define Anum_pg_database_datallowconn 7 -#define Anum_pg_database_datconnlimit 8 -#define Anum_pg_database_datlastsysoid 9 -#define Anum_pg_database_datfrozenxid 10 -#define Anum_pg_database_datminmxid 11 -#define Anum_pg_database_dattablespace 12 -#define Anum_pg_database_datacl 13 - -DATA(insert OID = 1 ( template1 PGUID ENCODING "LC_COLLATE" "LC_CTYPE" t t -1 0 0 1 1663 _null_)); -SHDESCR("default template for new databases"); -#define TemplateDbOid 1 - #endif /* PG_DATABASE_H */ diff --git a/src/include/catalog/pg_db_role_setting.h b/src/include/catalog/pg_db_role_setting.h index 86cc17d725..896c410a17 100644 --- a/src/include/catalog/pg_db_role_setting.h +++ b/src/include/catalog/pg_db_role_setting.h @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------- * * pg_db_role_setting.h - * definition of configuration settings + * definition of per-database/per-user configuration settings relation * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -10,17 +10,16 @@ * src/include/catalog/pg_db_role_setting.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ #ifndef PG_DB_ROLE_SETTING_H #define PG_DB_ROLE_SETTING_H +#include "catalog/genbki.h" +#include "catalog/pg_db_role_setting_d.h" #include "utils/guc.h" #include "utils/relcache.h" #include "utils/snapshot.h" @@ -30,9 +29,7 @@ * typedef struct FormData_pg_db_role_setting * ---------------- */ -#define DbRoleSettingRelationId 2964 - -CATALOG(pg_db_role_setting,2964) BKI_SHARED_RELATION BKI_WITHOUT_OIDS +CATALOG(pg_db_role_setting,2964,DbRoleSettingRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS { Oid setdatabase; /* database */ Oid setrole; /* role */ @@ -44,20 +41,6 @@ CATALOG(pg_db_role_setting,2964) BKI_SHARED_RELATION BKI_WITHOUT_OIDS typedef FormData_pg_db_role_setting * Form_pg_db_role_setting; -/* ---------------- - * compiler constants for pg_db_role_setting - * ---------------- - */ -#define Natts_pg_db_role_setting 3 -#define Anum_pg_db_role_setting_setdatabase 1 -#define Anum_pg_db_role_setting_setrole 2 -#define Anum_pg_db_role_setting_setconfig 3 - -/* ---------------- - * initial contents of pg_db_role_setting are NOTHING - * ---------------- - */ - /* * prototypes for functions in pg_db_role_setting.h */ diff --git a/src/include/catalog/pg_default_acl.h b/src/include/catalog/pg_default_acl.h index 11b306037d..d672d5b3f8 100644 --- a/src/include/catalog/pg_default_acl.h +++ b/src/include/catalog/pg_default_acl.h @@ -10,8 +10,8 @@ * src/include/catalog/pg_default_acl.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -19,15 +19,14 @@ #define PG_DEFAULT_ACL_H #include "catalog/genbki.h" +#include "catalog/pg_default_acl_d.h" /* ---------------- * pg_default_acl definition. cpp turns this into * typedef struct FormData_pg_default_acl * ---------------- */ -#define DefaultAclRelationId 826 - -CATALOG(pg_default_acl,826) +CATALOG(pg_default_acl,826,DefaultAclRelationId) { Oid defaclrole; /* OID of role owning this ACL */ Oid defaclnamespace; /* OID of namespace, or 0 for all */ @@ -45,21 +44,7 @@ CATALOG(pg_default_acl,826) */ typedef FormData_pg_default_acl *Form_pg_default_acl; -/* ---------------- - * compiler constants for pg_default_acl - * ---------------- - */ - -#define Natts_pg_default_acl 4 -#define Anum_pg_default_acl_defaclrole 1 -#define Anum_pg_default_acl_defaclnamespace 2 -#define Anum_pg_default_acl_defaclobjtype 3 -#define Anum_pg_default_acl_defaclacl 4 - -/* ---------------- - * pg_default_acl has no initial contents - * ---------------- - */ +#ifdef EXPOSE_TO_CLIENT_CODE /* * Types of objects for which the user is allowed to specify default @@ -72,4 +57,6 @@ typedef FormData_pg_default_acl *Form_pg_default_acl; #define DEFACLOBJ_TYPE 'T' /* type */ #define DEFACLOBJ_NAMESPACE 'n' /* namespace */ +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_DEFAULT_ACL_H */ diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h index be3867bbf2..bf31c1ab40 100644 --- a/src/include/catalog/pg_depend.h +++ b/src/include/catalog/pg_depend.h @@ -2,7 +2,18 @@ * * pg_depend.h * definition of the system "dependency" relation (pg_depend) - * along with the relation's initial contents. + * + * pg_depend has no preloaded contents, so there is no pg_depend.dat + * file; system-defined dependencies are loaded into it during a late stage + * of the initdb process. + * + * NOTE: we do not represent all possible dependency pairs in pg_depend; + * for example, there's not much value in creating an explicit dependency + * from an attribute to its relation. Usually we make a dependency for + * cases where the relationship is conditional rather than essential + * (for example, not all triggers are dependent on constraints, but all + * attributes are dependent on relations) or where the dependency is not + * convenient to find from the contents of other catalogs. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +22,8 @@ * src/include/catalog/pg_depend.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +31,14 @@ #define PG_DEPEND_H #include "catalog/genbki.h" +#include "catalog/pg_depend_d.h" /* ---------------- * pg_depend definition. cpp turns this into * typedef struct FormData_pg_depend * ---------------- */ -#define DependRelationId 2608 - -CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS +CATALOG(pg_depend,2608,DependRelationId) BKI_WITHOUT_OIDS { /* * Identification of the dependent (referencing) object. @@ -60,31 +70,4 @@ CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS */ typedef FormData_pg_depend *Form_pg_depend; -/* ---------------- - * compiler constants for pg_depend - * ---------------- - */ -#define Natts_pg_depend 7 -#define Anum_pg_depend_classid 1 -#define Anum_pg_depend_objid 2 -#define Anum_pg_depend_objsubid 3 -#define Anum_pg_depend_refclassid 4 -#define Anum_pg_depend_refobjid 5 -#define Anum_pg_depend_refobjsubid 6 -#define Anum_pg_depend_deptype 7 - - -/* - * pg_depend has no preloaded contents; system-defined dependencies are - * loaded into it during a late stage of the initdb process. - * - * NOTE: we do not represent all possible dependency pairs in pg_depend; - * for example, there's not much value in creating an explicit dependency - * from an attribute to its relation. Usually we make a dependency for - * cases where the relationship is conditional rather than essential - * (for example, not all triggers are dependent on constraints, but all - * attributes are dependent on relations) or where the dependency is not - * convenient to find from the contents of other catalogs. - */ - #endif /* PG_DEPEND_H */ diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h index d29100013e..b95b188d28 100644 --- a/src/include/catalog/pg_description.h +++ b/src/include/catalog/pg_description.h @@ -3,6 +3,10 @@ * pg_description.h * definition of the system "description" relation (pg_description) * + * Because the contents of this table are taken from the *.dat files + * of other catalogs, there is no pg_description.dat file. The initial + * contents are assembled by genbki.pl and loaded during initdb. + * * NOTE: an object is identified by the OID of the row that primarily * defines the object, plus the OID of the table that that row appears in. * For example, a function is identified by the OID of its pg_proc row @@ -25,11 +29,8 @@ * src/include/catalog/pg_description.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -37,15 +38,14 @@ #define PG_DESCRIPTION_H #include "catalog/genbki.h" +#include "catalog/pg_description_d.h" /* ---------------- * pg_description definition. cpp turns this into * typedef struct FormData_pg_description * ---------------- */ -#define DescriptionRelationId 2609 - -CATALOG(pg_description,2609) BKI_WITHOUT_OIDS +CATALOG(pg_description,2609,DescriptionRelationId) BKI_WITHOUT_OIDS { Oid objoid; /* OID of object itself */ Oid classoid; /* OID of table containing object */ @@ -63,25 +63,4 @@ CATALOG(pg_description,2609) BKI_WITHOUT_OIDS */ typedef FormData_pg_description * Form_pg_description; -/* ---------------- - * compiler constants for pg_description - * ---------------- - */ -#define Natts_pg_description 4 -#define Anum_pg_description_objoid 1 -#define Anum_pg_description_classoid 2 -#define Anum_pg_description_objsubid 3 -#define Anum_pg_description_description 4 - -/* ---------------- - * initial contents of pg_description - * ---------------- - */ - -/* - * Because the contents of this table are taken from the other *.h files, - * there is no initialization here. The initial contents are extracted - * by genbki.pl and loaded during initdb. - */ - #endif /* PG_DESCRIPTION_H */ diff --git a/src/include/catalog/pg_enum.h b/src/include/catalog/pg_enum.h index a65a8f45b6..a0922be49b 100644 --- a/src/include/catalog/pg_enum.h +++ b/src/include/catalog/pg_enum.h @@ -2,7 +2,6 @@ * * pg_enum.h * definition of the system "enum" relation (pg_enum) - * along with the relation's initial contents. * * * Copyright (c) 2006-2018, PostgreSQL Global Development Group @@ -10,11 +9,8 @@ * src/include/catalog/pg_enum.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,6 +18,7 @@ #define PG_ENUM_H #include "catalog/genbki.h" +#include "catalog/pg_enum_d.h" #include "nodes/pg_list.h" /* ---------------- @@ -29,9 +26,7 @@ * typedef struct FormData_pg_enum * ---------------- */ -#define EnumRelationId 3501 - -CATALOG(pg_enum,3501) +CATALOG(pg_enum,3501,EnumRelationId) { Oid enumtypid; /* OID of owning enum type */ float4 enumsortorder; /* sort position of this enum value */ @@ -45,20 +40,6 @@ CATALOG(pg_enum,3501) */ typedef FormData_pg_enum *Form_pg_enum; -/* ---------------- - * compiler constants for pg_enum - * ---------------- - */ -#define Natts_pg_enum 3 -#define Anum_pg_enum_enumtypid 1 -#define Anum_pg_enum_enumsortorder 2 -#define Anum_pg_enum_enumlabel 3 - -/* ---------------- - * pg_enum has no initial contents - * ---------------- - */ - /* * prototypes for functions in pg_enum.c */ diff --git a/src/include/catalog/pg_event_trigger.h b/src/include/catalog/pg_event_trigger.h index e03c81997c..f06cbe04dc 100644 --- a/src/include/catalog/pg_event_trigger.h +++ b/src/include/catalog/pg_event_trigger.h @@ -2,7 +2,6 @@ * * pg_event_trigger.h * definition of the system "event trigger" relation (pg_event_trigger) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_event_trigger.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_EVENT_TRIGGER_H #include "catalog/genbki.h" +#include "catalog/pg_event_trigger_d.h" /* ---------------- * pg_event_trigger definition. cpp turns this into * typedef struct FormData_pg_event_trigger * ---------------- */ -#define EventTriggerRelationId 3466 - -CATALOG(pg_event_trigger,3466) +CATALOG(pg_event_trigger,3466,EventTriggerRelationId) { NameData evtname; /* trigger's name */ NameData evtevent; /* trigger's event */ @@ -49,16 +47,4 @@ CATALOG(pg_event_trigger,3466) */ typedef FormData_pg_event_trigger *Form_pg_event_trigger; -/* ---------------- - * compiler constants for pg_event_trigger - * ---------------- - */ -#define Natts_pg_event_trigger 6 -#define Anum_pg_event_trigger_evtname 1 -#define Anum_pg_event_trigger_evtevent 2 -#define Anum_pg_event_trigger_evtowner 3 -#define Anum_pg_event_trigger_evtfoid 4 -#define Anum_pg_event_trigger_evtenabled 5 -#define Anum_pg_event_trigger_evttags 6 - #endif /* PG_EVENT_TRIGGER_H */ diff --git a/src/include/catalog/pg_extension.h b/src/include/catalog/pg_extension.h index 9ca6ca7936..10bbb692a5 100644 --- a/src/include/catalog/pg_extension.h +++ b/src/include/catalog/pg_extension.h @@ -2,7 +2,6 @@ * * pg_extension.h * definition of the system "extension" relation (pg_extension) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_extension.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_EXTENSION_H #include "catalog/genbki.h" +#include "catalog/pg_extension_d.h" /* ---------------- * pg_extension definition. cpp turns this into * typedef struct FormData_pg_extension * ---------------- */ -#define ExtensionRelationId 3079 - -CATALOG(pg_extension,3079) +CATALOG(pg_extension,3079,ExtensionRelationId) { NameData extname; /* extension name */ Oid extowner; /* extension owner */ @@ -50,23 +48,4 @@ CATALOG(pg_extension,3079) */ typedef FormData_pg_extension *Form_pg_extension; -/* ---------------- - * compiler constants for pg_extension - * ---------------- - */ - -#define Natts_pg_extension 7 -#define Anum_pg_extension_extname 1 -#define Anum_pg_extension_extowner 2 -#define Anum_pg_extension_extnamespace 3 -#define Anum_pg_extension_extrelocatable 4 -#define Anum_pg_extension_extversion 5 -#define Anum_pg_extension_extconfig 6 -#define Anum_pg_extension_extcondition 7 - -/* ---------------- - * pg_extension has no initial contents - * ---------------- - */ - #endif /* PG_EXTENSION_H */ diff --git a/src/include/catalog/pg_foreign_data_wrapper.h b/src/include/catalog/pg_foreign_data_wrapper.h index dd00586b6e..67e331987c 100644 --- a/src/include/catalog/pg_foreign_data_wrapper.h +++ b/src/include/catalog/pg_foreign_data_wrapper.h @@ -2,7 +2,6 @@ * * pg_foreign_data_wrapper.h * definition of the system "foreign-data wrapper" relation (pg_foreign_data_wrapper) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_foreign_data_wrapper.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_FOREIGN_DATA_WRAPPER_H #include "catalog/genbki.h" +#include "catalog/pg_foreign_data_wrapper_d.h" /* ---------------- * pg_foreign_data_wrapper definition. cpp turns this into * typedef struct FormData_pg_foreign_data_wrapper * ---------------- */ -#define ForeignDataWrapperRelationId 2328 - -CATALOG(pg_foreign_data_wrapper,2328) +CATALOG(pg_foreign_data_wrapper,2328,ForeignDataWrapperRelationId) { NameData fdwname; /* foreign-data wrapper name */ Oid fdwowner; /* FDW owner */ @@ -48,17 +46,4 @@ CATALOG(pg_foreign_data_wrapper,2328) */ typedef FormData_pg_foreign_data_wrapper *Form_pg_foreign_data_wrapper; -/* ---------------- - * compiler constants for pg_fdw - * ---------------- - */ - -#define Natts_pg_foreign_data_wrapper 6 -#define Anum_pg_foreign_data_wrapper_fdwname 1 -#define Anum_pg_foreign_data_wrapper_fdwowner 2 -#define Anum_pg_foreign_data_wrapper_fdwhandler 3 -#define Anum_pg_foreign_data_wrapper_fdwvalidator 4 -#define Anum_pg_foreign_data_wrapper_fdwacl 5 -#define Anum_pg_foreign_data_wrapper_fdwoptions 6 - #endif /* PG_FOREIGN_DATA_WRAPPER_H */ diff --git a/src/include/catalog/pg_foreign_server.h b/src/include/catalog/pg_foreign_server.h index a8c9e87540..0d25839c3d 100644 --- a/src/include/catalog/pg_foreign_server.h +++ b/src/include/catalog/pg_foreign_server.h @@ -9,8 +9,8 @@ * src/include/catalog/pg_foreign_server.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -18,15 +18,14 @@ #define PG_FOREIGN_SERVER_H #include "catalog/genbki.h" +#include "catalog/pg_foreign_server_d.h" /* ---------------- * pg_foreign_server definition. cpp turns this into * typedef struct FormData_pg_foreign_server * ---------------- */ -#define ForeignServerRelationId 1417 - -CATALOG(pg_foreign_server,1417) +CATALOG(pg_foreign_server,1417,ForeignServerRelationId) { NameData srvname; /* foreign server name */ Oid srvowner; /* server owner */ @@ -47,18 +46,4 @@ CATALOG(pg_foreign_server,1417) */ typedef FormData_pg_foreign_server *Form_pg_foreign_server; -/* ---------------- - * compiler constants for pg_foreign_server - * ---------------- - */ - -#define Natts_pg_foreign_server 7 -#define Anum_pg_foreign_server_srvname 1 -#define Anum_pg_foreign_server_srvowner 2 -#define Anum_pg_foreign_server_srvfdw 3 -#define Anum_pg_foreign_server_srvtype 4 -#define Anum_pg_foreign_server_srvversion 5 -#define Anum_pg_foreign_server_srvacl 6 -#define Anum_pg_foreign_server_srvoptions 7 - #endif /* PG_FOREIGN_SERVER_H */ diff --git a/src/include/catalog/pg_foreign_table.h b/src/include/catalog/pg_foreign_table.h index 210e77b79a..13de918880 100644 --- a/src/include/catalog/pg_foreign_table.h +++ b/src/include/catalog/pg_foreign_table.h @@ -9,8 +9,8 @@ * src/include/catalog/pg_foreign_table.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -18,15 +18,14 @@ #define PG_FOREIGN_TABLE_H #include "catalog/genbki.h" +#include "catalog/pg_foreign_table_d.h" /* ---------------- * pg_foreign_table definition. cpp turns this into * typedef struct FormData_pg_foreign_table * ---------------- */ -#define ForeignTableRelationId 3118 - -CATALOG(pg_foreign_table,3118) BKI_WITHOUT_OIDS +CATALOG(pg_foreign_table,3118,ForeignTableRelationId) BKI_WITHOUT_OIDS { Oid ftrelid; /* OID of foreign table */ Oid ftserver; /* OID of foreign server */ @@ -43,14 +42,4 @@ CATALOG(pg_foreign_table,3118) BKI_WITHOUT_OIDS */ typedef FormData_pg_foreign_table *Form_pg_foreign_table; -/* ---------------- - * compiler constants for pg_foreign_table - * ---------------- - */ - -#define Natts_pg_foreign_table 3 -#define Anum_pg_foreign_table_ftrelid 1 -#define Anum_pg_foreign_table_ftserver 2 -#define Anum_pg_foreign_table_ftoptions 3 - #endif /* PG_FOREIGN_TABLE_H */ diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h index 6ae03dbcbb..88ff40f820 100644 --- a/src/include/catalog/pg_index.h +++ b/src/include/catalog/pg_index.h @@ -2,7 +2,6 @@ * * pg_index.h * definition of the system "index" relation (pg_index) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_index.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_INDEX_H #include "catalog/genbki.h" +#include "catalog/pg_index_d.h" /* ---------------- * pg_index definition. cpp turns this into * typedef struct FormData_pg_index. * ---------------- */ -#define IndexRelationId 2610 - -CATALOG(pg_index,2610) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO +CATALOG(pg_index,2610,IndexRelationId) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO { Oid indexrelid; /* OID of the index */ Oid indrelid; /* OID of the relation it indexes */ @@ -67,31 +65,7 @@ CATALOG(pg_index,2610) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO */ typedef FormData_pg_index *Form_pg_index; -/* ---------------- - * compiler constants for pg_index - * ---------------- - */ -#define Natts_pg_index 20 -#define Anum_pg_index_indexrelid 1 -#define Anum_pg_index_indrelid 2 -#define Anum_pg_index_indnatts 3 -#define Anum_pg_index_indnkeyatts 4 -#define Anum_pg_index_indisunique 5 -#define Anum_pg_index_indisprimary 6 -#define Anum_pg_index_indisexclusion 7 -#define Anum_pg_index_indimmediate 8 -#define Anum_pg_index_indisclustered 9 -#define Anum_pg_index_indisvalid 10 -#define Anum_pg_index_indcheckxmin 11 -#define Anum_pg_index_indisready 12 -#define Anum_pg_index_indislive 13 -#define Anum_pg_index_indisreplident 14 -#define Anum_pg_index_indkey 15 -#define Anum_pg_index_indcollation 16 -#define Anum_pg_index_indclass 17 -#define Anum_pg_index_indoption 18 -#define Anum_pg_index_indexprs 19 -#define Anum_pg_index_indpred 20 +#ifdef EXPOSE_TO_CLIENT_CODE /* * Index AMs that support ordered scans must support these two indoption @@ -101,6 +75,8 @@ typedef FormData_pg_index *Form_pg_index; #define INDOPTION_DESC 0x0001 /* values are in reverse order */ #define INDOPTION_NULLS_FIRST 0x0002 /* NULLs are first instead of last */ +#endif /* EXPOSE_TO_CLIENT_CODE */ + /* * Use of these macros is recommended over direct examination of the state * flag columns where possible; this allows source code compatibility with diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h index 3c572f421b..3b2e03c4bf 100644 --- a/src/include/catalog/pg_inherits.h +++ b/src/include/catalog/pg_inherits.h @@ -2,7 +2,6 @@ * * pg_inherits.h * definition of the system "inherits" relation (pg_inherits) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_inherits.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_INHERITS_H #include "catalog/genbki.h" +#include "catalog/pg_inherits_d.h" /* ---------------- * pg_inherits definition. cpp turns this into * typedef struct FormData_pg_inherits * ---------------- */ -#define InheritsRelationId 2611 - -CATALOG(pg_inherits,2611) BKI_WITHOUT_OIDS +CATALOG(pg_inherits,2611,InheritsRelationId) BKI_WITHOUT_OIDS { Oid inhrelid; Oid inhparent; @@ -42,18 +40,4 @@ CATALOG(pg_inherits,2611) BKI_WITHOUT_OIDS */ typedef FormData_pg_inherits *Form_pg_inherits; -/* ---------------- - * compiler constants for pg_inherits - * ---------------- - */ -#define Natts_pg_inherits 3 -#define Anum_pg_inherits_inhrelid 1 -#define Anum_pg_inherits_inhparent 2 -#define Anum_pg_inherits_inhseqno 3 - -/* ---------------- - * pg_inherits has no initial contents - * ---------------- - */ - #endif /* PG_INHERITS_H */ diff --git a/src/include/catalog/pg_init_privs.h b/src/include/catalog/pg_init_privs.h index 65f02c2aef..6ce2646350 100644 --- a/src/include/catalog/pg_init_privs.h +++ b/src/include/catalog/pg_init_privs.h @@ -15,17 +15,20 @@ * for a table itself, so that it is distinct from any column privilege. * Currently, objsubid is unused and zero for all other kinds of objects. * + * Because the contents of this table depend on what is done with the other + * objects in the system (and, in particular, may change due to changes in + * system_views.sql), there is no pg_init_privs.dat file. The initial contents + * are loaded near the end of initdb. + * + * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_init_privs.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -33,15 +36,14 @@ #define PG_INIT_PRIVS_H #include "catalog/genbki.h" +#include "catalog/pg_init_privs_d.h" /* ---------------- * pg_init_privs definition. cpp turns this into * typedef struct FormData_pg_init_privs * ---------------- */ -#define InitPrivsRelationId 3394 - -CATALOG(pg_init_privs,3394) BKI_WITHOUT_OIDS +CATALOG(pg_init_privs,3394,InitPrivsRelationId) BKI_WITHOUT_OIDS { Oid objoid; /* OID of object itself */ Oid classoid; /* OID of table containing object */ @@ -60,17 +62,6 @@ CATALOG(pg_init_privs,3394) BKI_WITHOUT_OIDS */ typedef FormData_pg_init_privs * Form_pg_init_privs; -/* ---------------- - * compiler constants for pg_init_privs - * ---------------- - */ -#define Natts_pg_init_privs 5 -#define Anum_pg_init_privs_objoid 1 -#define Anum_pg_init_privs_classoid 2 -#define Anum_pg_init_privs_objsubid 3 -#define Anum_pg_init_privs_privtype 4 -#define Anum_pg_init_privs_initprivs 5 - /* * It is important to know if the initial privileges are from initdb or from an * extension. This enum is used to provide that differentiation and the two @@ -84,17 +75,4 @@ typedef enum InitPrivsType INITPRIVS_EXTENSION = 'e' } InitPrivsType; -/* ---------------- - * initial contents of pg_init_privs - * ---------------- - */ - -/* - * Because the contents of this table depend on what is done with the other - * objects in the system (and, in particular, may change due to changes is - * system_views.sql), there is no initialization here. - * - * The initial contents are loaded near the end of initdb. - */ - #endif /* PG_INIT_PRIVS_H */ diff --git a/src/include/catalog/pg_language.dat b/src/include/catalog/pg_language.dat new file mode 100644 index 0000000000..1b50a66ea4 --- /dev/null +++ b/src/include/catalog/pg_language.dat @@ -0,0 +1,31 @@ +#---------------------------------------------------------------------- +# +# pg_language.dat +# Initial contents of the pg_language system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_language.dat +# +#---------------------------------------------------------------------- + +[ + +{ oid => '12', oid_symbol => 'INTERNALlanguageId', + descr => 'built-in functions', + lanname => 'internal', lanowner => 'PGUID', lanispl => 'f', + lanpltrusted => 'f', lanplcallfoid => '0', laninline => '0', + lanvalidator => '2246', lanacl => '_null_' }, +{ oid => '13', oid_symbol => 'ClanguageId', + descr => 'dynamically-loaded C functions', + lanname => 'c', lanowner => 'PGUID', lanispl => 'f', lanpltrusted => 'f', + lanplcallfoid => '0', laninline => '0', lanvalidator => '2247', + lanacl => '_null_' }, +{ oid => '14', oid_symbol => 'SQLlanguageId', + descr => 'SQL-language functions', + lanname => 'sql', lanowner => 'PGUID', lanispl => 'f', lanpltrusted => 't', + lanplcallfoid => '0', laninline => '0', lanvalidator => '2248', + lanacl => '_null_' }, + +] diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h index 6b373f96d5..e2d8d1571b 100644 --- a/src/include/catalog/pg_language.h +++ b/src/include/catalog/pg_language.h @@ -2,7 +2,6 @@ * * pg_language.h * definition of the system "language" relation (pg_language) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_language.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_LANGUAGE_H #include "catalog/genbki.h" +#include "catalog/pg_language_d.h" /* ---------------- * pg_language definition. cpp turns this into * typedef struct FormData_pg_language * ---------------- */ -#define LanguageRelationId 2612 - -CATALOG(pg_language,2612) +CATALOG(pg_language,2612,LanguageRelationId) { NameData lanname; /* Language name */ Oid lanowner; /* Language's owner */ @@ -50,33 +48,4 @@ CATALOG(pg_language,2612) */ typedef FormData_pg_language *Form_pg_language; -/* ---------------- - * compiler constants for pg_language - * ---------------- - */ -#define Natts_pg_language 8 -#define Anum_pg_language_lanname 1 -#define Anum_pg_language_lanowner 2 -#define Anum_pg_language_lanispl 3 -#define Anum_pg_language_lanpltrusted 4 -#define Anum_pg_language_lanplcallfoid 5 -#define Anum_pg_language_laninline 6 -#define Anum_pg_language_lanvalidator 7 -#define Anum_pg_language_lanacl 8 - -/* ---------------- - * initial contents of pg_language - * ---------------- - */ - -DATA(insert OID = 12 ( internal PGUID f f 0 0 2246 _null_ )); -DESCR("built-in functions"); -#define INTERNALlanguageId 12 -DATA(insert OID = 13 ( c PGUID f f 0 0 2247 _null_ )); -DESCR("dynamically-loaded C functions"); -#define ClanguageId 13 -DATA(insert OID = 14 ( sql PGUID f t 0 0 2248 _null_ )); -DESCR("SQL-language functions"); -#define SQLlanguageId 14 - #endif /* PG_LANGUAGE_H */ diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h index 0a15649ddd..481d2ff63b 100644 --- a/src/include/catalog/pg_largeobject.h +++ b/src/include/catalog/pg_largeobject.h @@ -2,7 +2,6 @@ * * pg_largeobject.h * definition of the system "largeobject" relation (pg_largeobject) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_largeobject.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_LARGEOBJECT_H #include "catalog/genbki.h" +#include "catalog/pg_largeobject_d.h" /* ---------------- * pg_largeobject definition. cpp turns this into * typedef struct FormData_pg_largeobject * ---------------- */ -#define LargeObjectRelationId 2613 - -CATALOG(pg_largeobject,2613) BKI_WITHOUT_OIDS +CATALOG(pg_largeobject,2613,LargeObjectRelationId) BKI_WITHOUT_OIDS { Oid loid; /* Identifier of large object */ int32 pageno; /* Page number (starting from 0) */ @@ -45,15 +43,6 @@ CATALOG(pg_largeobject,2613) BKI_WITHOUT_OIDS */ typedef FormData_pg_largeobject *Form_pg_largeobject; -/* ---------------- - * compiler constants for pg_largeobject - * ---------------- - */ -#define Natts_pg_largeobject 3 -#define Anum_pg_largeobject_loid 1 -#define Anum_pg_largeobject_pageno 2 -#define Anum_pg_largeobject_data 3 - extern Oid LargeObjectCreate(Oid loid); extern void LargeObjectDrop(Oid loid); extern bool LargeObjectExists(Oid loid); diff --git a/src/include/catalog/pg_largeobject_metadata.h b/src/include/catalog/pg_largeobject_metadata.h index 4535b51b53..a8732bc489 100644 --- a/src/include/catalog/pg_largeobject_metadata.h +++ b/src/include/catalog/pg_largeobject_metadata.h @@ -2,7 +2,6 @@ * * pg_largeobject_metadata.h * definition of the system "largeobject_metadata" relation (pg_largeobject_metadata) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_largeobject_metadata.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_LARGEOBJECT_METADATA_H #include "catalog/genbki.h" +#include "catalog/pg_largeobject_metadata_d.h" /* ---------------- * pg_largeobject_metadata definition. cpp turns this into * typedef struct FormData_pg_largeobject_metadata * ---------------- */ -#define LargeObjectMetadataRelationId 2995 - -CATALOG(pg_largeobject_metadata,2995) +CATALOG(pg_largeobject_metadata,2995,LargeObjectMetadataRelationId) { Oid lomowner; /* OID of the largeobject owner */ @@ -44,12 +42,4 @@ CATALOG(pg_largeobject_metadata,2995) */ typedef FormData_pg_largeobject_metadata *Form_pg_largeobject_metadata; -/* ---------------- - * compiler constants for pg_largeobject_metadata - * ---------------- - */ -#define Natts_pg_largeobject_metadata 2 -#define Anum_pg_largeobject_metadata_lomowner 1 -#define Anum_pg_largeobject_metadata_lomacl 2 - #endif /* PG_LARGEOBJECT_METADATA_H */ diff --git a/src/include/catalog/pg_namespace.dat b/src/include/catalog/pg_namespace.dat new file mode 100644 index 0000000000..e3549df273 --- /dev/null +++ b/src/include/catalog/pg_namespace.dat @@ -0,0 +1,25 @@ +#---------------------------------------------------------------------- +# +# pg_namespace.dat +# Initial contents of the pg_namespace system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_namespace.dat +# +#---------------------------------------------------------------------- + +[ + +{ oid => '11', oid_symbol => 'PG_CATALOG_NAMESPACE', + descr => 'system catalog schema', + nspname => 'pg_catalog', nspowner => 'PGUID', nspacl => '_null_' }, +{ oid => '99', oid_symbol => 'PG_TOAST_NAMESPACE', + descr => 'reserved schema for TOAST tables', + nspname => 'pg_toast', nspowner => 'PGUID', nspacl => '_null_' }, +{ oid => '2200', oid_symbol => 'PG_PUBLIC_NAMESPACE', + descr => 'standard public schema', + nspname => 'public', nspowner => 'PGUID', nspacl => '_null_' }, + +] diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h index dbb9f6626f..0d9cada79f 100644 --- a/src/include/catalog/pg_namespace.h +++ b/src/include/catalog/pg_namespace.h @@ -2,7 +2,6 @@ * * pg_namespace.h * definition of the system "namespace" relation (pg_namespace) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_namespace.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,6 +19,7 @@ #define PG_NAMESPACE_H #include "catalog/genbki.h" +#include "catalog/pg_namespace_d.h" /* ---------------------------------------------------------------- * pg_namespace definition. @@ -31,9 +31,7 @@ * nspacl access privilege list * ---------------------------------------------------------------- */ -#define NamespaceRelationId 2615 - -CATALOG(pg_namespace,2615) +CATALOG(pg_namespace,2615,NamespaceRelationId) { NameData nspname; Oid nspowner; @@ -50,33 +48,6 @@ CATALOG(pg_namespace,2615) */ typedef FormData_pg_namespace *Form_pg_namespace; -/* ---------------- - * compiler constants for pg_namespace - * ---------------- - */ - -#define Natts_pg_namespace 3 -#define Anum_pg_namespace_nspname 1 -#define Anum_pg_namespace_nspowner 2 -#define Anum_pg_namespace_nspacl 3 - - -/* ---------------- - * initial contents of pg_namespace - * --------------- - */ - -DATA(insert OID = 11 ( pg_catalog PGUID _null_ )); -DESCR("system catalog schema"); -#define PG_CATALOG_NAMESPACE 11 -DATA(insert OID = 99 ( pg_toast PGUID _null_ )); -DESCR("reserved schema for TOAST tables"); -#define PG_TOAST_NAMESPACE 99 -DATA(insert OID = 2200 ( public PGUID _null_ )); -DESCR("standard public schema"); -#define PG_PUBLIC_NAMESPACE 2200 - - /* * prototypes for functions in pg_namespace.c */ diff --git a/src/include/catalog/pg_opclass.dat b/src/include/catalog/pg_opclass.dat new file mode 100644 index 0000000000..94e3e1e5fa --- /dev/null +++ b/src/include/catalog/pg_opclass.dat @@ -0,0 +1,357 @@ +#---------------------------------------------------------------------- +# +# pg_opclass.dat +# Initial contents of the pg_opclass system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_opclass.dat +# +#---------------------------------------------------------------------- + +[ + +# Note: we hard-wire an OID only for a few entries that have to be explicitly +# referenced in the C code or in built-in catalog entries. The rest get OIDs +# assigned on-the-fly during initdb. + +{ opcmethod => 'btree', opcname => 'abstime_ops', + opcfamily => 'btree/abstime_ops', opcintype => 'abstime' }, +{ opcmethod => 'btree', opcname => 'array_ops', opcfamily => 'btree/array_ops', + opcintype => 'anyarray' }, +{ opcmethod => 'hash', opcname => 'array_ops', opcfamily => 'hash/array_ops', + opcintype => 'anyarray' }, +{ opcmethod => 'btree', opcname => 'bit_ops', opcfamily => 'btree/bit_ops', + opcintype => 'bit' }, +{ opcmethod => 'btree', opcname => 'bool_ops', opcfamily => 'btree/bool_ops', + opcintype => 'bool' }, +{ opcmethod => 'btree', opcname => 'bpchar_ops', + opcfamily => 'btree/bpchar_ops', opcintype => 'bpchar' }, +{ opcmethod => 'hash', opcname => 'bpchar_ops', opcfamily => 'hash/bpchar_ops', + opcintype => 'bpchar' }, +{ opcmethod => 'btree', opcname => 'bytea_ops', opcfamily => 'btree/bytea_ops', + opcintype => 'bytea' }, +{ opcmethod => 'btree', opcname => 'char_ops', opcfamily => 'btree/char_ops', + opcintype => 'char' }, +{ opcmethod => 'hash', opcname => 'char_ops', opcfamily => 'hash/char_ops', + opcintype => 'char' }, +{ opcmethod => 'btree', opcname => 'cidr_ops', opcfamily => 'btree/network_ops', + opcintype => 'inet', opcdefault => 'f' }, +{ opcmethod => 'hash', opcname => 'cidr_ops', opcfamily => 'hash/network_ops', + opcintype => 'inet', opcdefault => 'f' }, +{ oid => '3122', oid_symbol => 'DATE_BTREE_OPS_OID', + opcmethod => 'btree', opcname => 'date_ops', + opcfamily => 'btree/datetime_ops', opcintype => 'date' }, +{ opcmethod => 'hash', opcname => 'date_ops', opcfamily => 'hash/date_ops', + opcintype => 'date' }, +{ opcmethod => 'btree', opcname => 'float4_ops', opcfamily => 'btree/float_ops', + opcintype => 'float4' }, +{ opcmethod => 'hash', opcname => 'float4_ops', opcfamily => 'hash/float_ops', + opcintype => 'float4' }, +{ oid => '3123', oid_symbol => 'FLOAT8_BTREE_OPS_OID', + opcmethod => 'btree', opcname => 'float8_ops', opcfamily => 'btree/float_ops', + opcintype => 'float8' }, +{ opcmethod => 'hash', opcname => 'float8_ops', opcfamily => 'hash/float_ops', + opcintype => 'float8' }, +{ opcmethod => 'btree', opcname => 'inet_ops', opcfamily => 'btree/network_ops', + opcintype => 'inet' }, +{ opcmethod => 'hash', opcname => 'inet_ops', opcfamily => 'hash/network_ops', + opcintype => 'inet' }, +{ opcmethod => 'gist', opcname => 'inet_ops', opcfamily => 'gist/network_ops', + opcintype => 'inet', opcdefault => 'f' }, +{ opcmethod => 'spgist', opcname => 'inet_ops', + opcfamily => 'spgist/network_ops', opcintype => 'inet' }, +{ oid => '1979', oid_symbol => 'INT2_BTREE_OPS_OID', + opcmethod => 'btree', opcname => 'int2_ops', opcfamily => 'btree/integer_ops', + opcintype => 'int2' }, +{ opcmethod => 'hash', opcname => 'int2_ops', opcfamily => 'hash/integer_ops', + opcintype => 'int2' }, +{ oid => '1978', oid_symbol => 'INT4_BTREE_OPS_OID', + opcmethod => 'btree', opcname => 'int4_ops', opcfamily => 'btree/integer_ops', + opcintype => 'int4' }, +{ opcmethod => 'hash', opcname => 'int4_ops', opcfamily => 'hash/integer_ops', + opcintype => 'int4' }, +{ oid => '3124', oid_symbol => 'INT8_BTREE_OPS_OID', + opcmethod => 'btree', opcname => 'int8_ops', opcfamily => 'btree/integer_ops', + opcintype => 'int8' }, +{ opcmethod => 'hash', opcname => 'int8_ops', opcfamily => 'hash/integer_ops', + opcintype => 'int8' }, +{ opcmethod => 'btree', opcname => 'interval_ops', + opcfamily => 'btree/interval_ops', opcintype => 'interval' }, +{ opcmethod => 'hash', opcname => 'interval_ops', + opcfamily => 'hash/interval_ops', opcintype => 'interval' }, +{ opcmethod => 'btree', opcname => 'macaddr_ops', + opcfamily => 'btree/macaddr_ops', opcintype => 'macaddr' }, +{ opcmethod => 'hash', opcname => 'macaddr_ops', + opcfamily => 'hash/macaddr_ops', opcintype => 'macaddr' }, +{ opcmethod => 'btree', opcname => 'macaddr8_ops', + opcfamily => 'btree/macaddr8_ops', opcintype => 'macaddr8' }, +{ opcmethod => 'hash', opcname => 'macaddr8_ops', + opcfamily => 'hash/macaddr8_ops', opcintype => 'macaddr8' }, + +# Here's an ugly little hack to save space in the system catalog indexes. +# btree doesn't ordinarily allow a storage type different from input type; +# but cstring and name are the same thing except for trailing padding, +# and we can safely omit that within an index entry. So we declare the +# btree opclass for name as using cstring storage type. +{ opcmethod => 'btree', opcname => 'name_ops', opcfamily => 'btree/name_ops', + opcintype => 'name', opckeytype => 'cstring' }, + +{ opcmethod => 'hash', opcname => 'name_ops', opcfamily => 'hash/name_ops', + opcintype => 'name' }, +{ oid => '3125', oid_symbol => 'NUMERIC_BTREE_OPS_OID', + opcmethod => 'btree', opcname => 'numeric_ops', + opcfamily => 'btree/numeric_ops', opcintype => 'numeric' }, +{ opcmethod => 'hash', opcname => 'numeric_ops', + opcfamily => 'hash/numeric_ops', opcintype => 'numeric' }, +{ oid => '1981', oid_symbol => 'OID_BTREE_OPS_OID', + opcmethod => 'btree', opcname => 'oid_ops', opcfamily => 'btree/oid_ops', + opcintype => 'oid' }, +{ opcmethod => 'hash', opcname => 'oid_ops', opcfamily => 'hash/oid_ops', + opcintype => 'oid' }, +{ opcmethod => 'btree', opcname => 'oidvector_ops', + opcfamily => 'btree/oidvector_ops', opcintype => 'oidvector' }, +{ opcmethod => 'hash', opcname => 'oidvector_ops', + opcfamily => 'hash/oidvector_ops', opcintype => 'oidvector' }, +{ opcmethod => 'btree', opcname => 'record_ops', + opcfamily => 'btree/record_ops', opcintype => 'record' }, +{ opcmethod => 'btree', opcname => 'record_image_ops', + opcfamily => 'btree/record_image_ops', opcintype => 'record', + opcdefault => 'f' }, +{ oid => '3126', oid_symbol => 'TEXT_BTREE_OPS_OID', + opcmethod => 'btree', opcname => 'text_ops', opcfamily => 'btree/text_ops', + opcintype => 'text' }, +{ opcmethod => 'hash', opcname => 'text_ops', opcfamily => 'hash/text_ops', + opcintype => 'text' }, +{ opcmethod => 'btree', opcname => 'time_ops', opcfamily => 'btree/time_ops', + opcintype => 'time' }, +{ opcmethod => 'hash', opcname => 'time_ops', opcfamily => 'hash/time_ops', + opcintype => 'time' }, +{ oid => '3127', oid_symbol => 'TIMESTAMPTZ_BTREE_OPS_OID', + opcmethod => 'btree', opcname => 'timestamptz_ops', + opcfamily => 'btree/datetime_ops', opcintype => 'timestamptz' }, +{ opcmethod => 'hash', opcname => 'timestamptz_ops', + opcfamily => 'hash/timestamptz_ops', opcintype => 'timestamptz' }, +{ opcmethod => 'btree', opcname => 'timetz_ops', + opcfamily => 'btree/timetz_ops', opcintype => 'timetz' }, +{ opcmethod => 'hash', opcname => 'timetz_ops', opcfamily => 'hash/timetz_ops', + opcintype => 'timetz' }, +{ opcmethod => 'btree', opcname => 'varbit_ops', + opcfamily => 'btree/varbit_ops', opcintype => 'varbit' }, +{ opcmethod => 'btree', opcname => 'varchar_ops', opcfamily => 'btree/text_ops', + opcintype => 'text', opcdefault => 'f' }, +{ opcmethod => 'hash', opcname => 'varchar_ops', opcfamily => 'hash/text_ops', + opcintype => 'text', opcdefault => 'f' }, +{ oid => '3128', oid_symbol => 'TIMESTAMP_BTREE_OPS_OID', + opcmethod => 'btree', opcname => 'timestamp_ops', + opcfamily => 'btree/datetime_ops', opcintype => 'timestamp' }, +{ opcmethod => 'hash', opcname => 'timestamp_ops', + opcfamily => 'hash/timestamp_ops', opcintype => 'timestamp' }, +{ opcmethod => 'btree', opcname => 'text_pattern_ops', + opcfamily => 'btree/text_pattern_ops', opcintype => 'text', + opcdefault => 'f' }, +{ opcmethod => 'btree', opcname => 'varchar_pattern_ops', + opcfamily => 'btree/text_pattern_ops', opcintype => 'text', + opcdefault => 'f' }, +{ opcmethod => 'btree', opcname => 'bpchar_pattern_ops', + opcfamily => 'btree/bpchar_pattern_ops', opcintype => 'bpchar', + opcdefault => 'f' }, +{ opcmethod => 'btree', opcname => 'money_ops', opcfamily => 'btree/money_ops', + opcintype => 'money' }, +{ opcmethod => 'hash', opcname => 'bool_ops', opcfamily => 'hash/bool_ops', + opcintype => 'bool' }, +{ opcmethod => 'hash', opcname => 'bytea_ops', opcfamily => 'hash/bytea_ops', + opcintype => 'bytea' }, +{ opcmethod => 'btree', opcname => 'tid_ops', opcfamily => 'btree/tid_ops', + opcintype => 'tid' }, +{ opcmethod => 'hash', opcname => 'xid_ops', opcfamily => 'hash/xid_ops', + opcintype => 'xid' }, +{ opcmethod => 'hash', opcname => 'cid_ops', opcfamily => 'hash/cid_ops', + opcintype => 'cid' }, +{ opcmethod => 'hash', opcname => 'abstime_ops', + opcfamily => 'hash/abstime_ops', opcintype => 'abstime' }, +{ opcmethod => 'hash', opcname => 'reltime_ops', + opcfamily => 'hash/reltime_ops', opcintype => 'reltime' }, +{ opcmethod => 'hash', opcname => 'text_pattern_ops', + opcfamily => 'hash/text_pattern_ops', opcintype => 'text', + opcdefault => 'f' }, +{ opcmethod => 'hash', opcname => 'varchar_pattern_ops', + opcfamily => 'hash/text_pattern_ops', opcintype => 'text', + opcdefault => 'f' }, +{ opcmethod => 'hash', opcname => 'bpchar_pattern_ops', + opcfamily => 'hash/bpchar_pattern_ops', opcintype => 'bpchar', + opcdefault => 'f' }, +{ opcmethod => 'btree', opcname => 'reltime_ops', + opcfamily => 'btree/reltime_ops', opcintype => 'reltime' }, +{ opcmethod => 'btree', opcname => 'tinterval_ops', + opcfamily => 'btree/tinterval_ops', opcintype => 'tinterval' }, +{ opcmethod => 'hash', opcname => 'aclitem_ops', + opcfamily => 'hash/aclitem_ops', opcintype => 'aclitem' }, +{ opcmethod => 'gist', opcname => 'box_ops', opcfamily => 'gist/box_ops', + opcintype => 'box' }, +{ opcmethod => 'gist', opcname => 'point_ops', opcfamily => 'gist/point_ops', + opcintype => 'point', opckeytype => 'box' }, +{ opcmethod => 'gist', opcname => 'poly_ops', opcfamily => 'gist/poly_ops', + opcintype => 'polygon', opckeytype => 'box' }, +{ opcmethod => 'gist', opcname => 'circle_ops', opcfamily => 'gist/circle_ops', + opcintype => 'circle', opckeytype => 'box' }, +{ opcmethod => 'gin', opcname => 'array_ops', opcfamily => 'gin/array_ops', + opcintype => 'anyarray', opckeytype => 'anyelement' }, +{ opcmethod => 'btree', opcname => 'uuid_ops', opcfamily => 'btree/uuid_ops', + opcintype => 'uuid' }, +{ opcmethod => 'hash', opcname => 'uuid_ops', opcfamily => 'hash/uuid_ops', + opcintype => 'uuid' }, +{ opcmethod => 'btree', opcname => 'pg_lsn_ops', + opcfamily => 'btree/pg_lsn_ops', opcintype => 'pg_lsn' }, +{ opcmethod => 'hash', opcname => 'pg_lsn_ops', opcfamily => 'hash/pg_lsn_ops', + opcintype => 'pg_lsn' }, +{ opcmethod => 'btree', opcname => 'enum_ops', opcfamily => 'btree/enum_ops', + opcintype => 'anyenum' }, +{ opcmethod => 'hash', opcname => 'enum_ops', opcfamily => 'hash/enum_ops', + opcintype => 'anyenum' }, +{ opcmethod => 'btree', opcname => 'tsvector_ops', + opcfamily => 'btree/tsvector_ops', opcintype => 'tsvector' }, +{ opcmethod => 'gist', opcname => 'tsvector_ops', + opcfamily => 'gist/tsvector_ops', opcintype => 'tsvector', + opckeytype => 'gtsvector' }, +{ opcmethod => 'gin', opcname => 'tsvector_ops', + opcfamily => 'gin/tsvector_ops', opcintype => 'tsvector', + opckeytype => 'text' }, +{ opcmethod => 'btree', opcname => 'tsquery_ops', + opcfamily => 'btree/tsquery_ops', opcintype => 'tsquery' }, +{ opcmethod => 'gist', opcname => 'tsquery_ops', + opcfamily => 'gist/tsquery_ops', opcintype => 'tsquery', + opckeytype => 'int8' }, +{ opcmethod => 'btree', opcname => 'range_ops', opcfamily => 'btree/range_ops', + opcintype => 'anyrange' }, +{ opcmethod => 'hash', opcname => 'range_ops', opcfamily => 'hash/range_ops', + opcintype => 'anyrange' }, +{ opcmethod => 'gist', opcname => 'range_ops', opcfamily => 'gist/range_ops', + opcintype => 'anyrange' }, +{ opcmethod => 'spgist', opcname => 'range_ops', + opcfamily => 'spgist/range_ops', opcintype => 'anyrange' }, +{ opcmethod => 'spgist', opcname => 'box_ops', opcfamily => 'spgist/box_ops', + opcintype => 'box' }, +{ opcmethod => 'spgist', opcname => 'quad_point_ops', + opcfamily => 'spgist/quad_point_ops', opcintype => 'point' }, +{ opcmethod => 'spgist', opcname => 'kd_point_ops', + opcfamily => 'spgist/kd_point_ops', opcintype => 'point', opcdefault => 'f' }, +{ opcmethod => 'spgist', opcname => 'text_ops', opcfamily => 'spgist/text_ops', + opcintype => 'text' }, +{ opcmethod => 'spgist', opcname => 'poly_ops', opcfamily => 'spgist/poly_ops', + opcintype => 'polygon', opckeytype => 'box' }, +{ opcmethod => 'btree', opcname => 'jsonb_ops', opcfamily => 'btree/jsonb_ops', + opcintype => 'jsonb' }, +{ opcmethod => 'hash', opcname => 'jsonb_ops', opcfamily => 'hash/jsonb_ops', + opcintype => 'jsonb' }, +{ opcmethod => 'gin', opcname => 'jsonb_ops', opcfamily => 'gin/jsonb_ops', + opcintype => 'jsonb', opckeytype => 'text' }, +{ opcmethod => 'gin', opcname => 'jsonb_path_ops', + opcfamily => 'gin/jsonb_path_ops', opcintype => 'jsonb', opcdefault => 'f', + opckeytype => 'int4' }, + +# BRIN operator classes + +# no brin opclass for bool + +{ opcmethod => 'brin', opcname => 'bytea_minmax_ops', + opcfamily => 'brin/bytea_minmax_ops', opcintype => 'bytea', + opckeytype => 'bytea' }, +{ opcmethod => 'brin', opcname => 'char_minmax_ops', + opcfamily => 'brin/char_minmax_ops', opcintype => 'char', + opckeytype => 'char' }, +{ opcmethod => 'brin', opcname => 'name_minmax_ops', + opcfamily => 'brin/name_minmax_ops', opcintype => 'name', + opckeytype => 'name' }, +{ opcmethod => 'brin', opcname => 'int8_minmax_ops', + opcfamily => 'brin/integer_minmax_ops', opcintype => 'int8', + opckeytype => 'int8' }, +{ opcmethod => 'brin', opcname => 'int2_minmax_ops', + opcfamily => 'brin/integer_minmax_ops', opcintype => 'int2', + opckeytype => 'int2' }, +{ opcmethod => 'brin', opcname => 'int4_minmax_ops', + opcfamily => 'brin/integer_minmax_ops', opcintype => 'int4', + opckeytype => 'int4' }, +{ opcmethod => 'brin', opcname => 'text_minmax_ops', + opcfamily => 'brin/text_minmax_ops', opcintype => 'text', + opckeytype => 'text' }, +{ opcmethod => 'brin', opcname => 'oid_minmax_ops', + opcfamily => 'brin/oid_minmax_ops', opcintype => 'oid', opckeytype => 'oid' }, +{ opcmethod => 'brin', opcname => 'tid_minmax_ops', + opcfamily => 'brin/tid_minmax_ops', opcintype => 'tid', opckeytype => 'tid' }, +{ opcmethod => 'brin', opcname => 'float4_minmax_ops', + opcfamily => 'brin/float_minmax_ops', opcintype => 'float4', + opckeytype => 'float4' }, +{ opcmethod => 'brin', opcname => 'float8_minmax_ops', + opcfamily => 'brin/float_minmax_ops', opcintype => 'float8', + opckeytype => 'float8' }, +{ opcmethod => 'brin', opcname => 'abstime_minmax_ops', + opcfamily => 'brin/abstime_minmax_ops', opcintype => 'abstime', + opckeytype => 'abstime' }, +{ opcmethod => 'brin', opcname => 'reltime_minmax_ops', + opcfamily => 'brin/reltime_minmax_ops', opcintype => 'reltime', + opckeytype => 'reltime' }, +{ opcmethod => 'brin', opcname => 'macaddr_minmax_ops', + opcfamily => 'brin/macaddr_minmax_ops', opcintype => 'macaddr', + opckeytype => 'macaddr' }, +{ opcmethod => 'brin', opcname => 'macaddr8_minmax_ops', + opcfamily => 'brin/macaddr8_minmax_ops', opcintype => 'macaddr8', + opckeytype => 'macaddr8' }, +{ opcmethod => 'brin', opcname => 'inet_minmax_ops', + opcfamily => 'brin/network_minmax_ops', opcintype => 'inet', + opcdefault => 'f', opckeytype => 'inet' }, +{ opcmethod => 'brin', opcname => 'inet_inclusion_ops', + opcfamily => 'brin/network_inclusion_ops', opcintype => 'inet', + opckeytype => 'inet' }, +{ opcmethod => 'brin', opcname => 'bpchar_minmax_ops', + opcfamily => 'brin/bpchar_minmax_ops', opcintype => 'bpchar', + opckeytype => 'bpchar' }, +{ opcmethod => 'brin', opcname => 'time_minmax_ops', + opcfamily => 'brin/time_minmax_ops', opcintype => 'time', + opckeytype => 'time' }, +{ opcmethod => 'brin', opcname => 'date_minmax_ops', + opcfamily => 'brin/datetime_minmax_ops', opcintype => 'date', + opckeytype => 'date' }, +{ opcmethod => 'brin', opcname => 'timestamp_minmax_ops', + opcfamily => 'brin/datetime_minmax_ops', opcintype => 'timestamp', + opckeytype => 'timestamp' }, +{ opcmethod => 'brin', opcname => 'timestamptz_minmax_ops', + opcfamily => 'brin/datetime_minmax_ops', opcintype => 'timestamptz', + opckeytype => 'timestamptz' }, +{ opcmethod => 'brin', opcname => 'interval_minmax_ops', + opcfamily => 'brin/interval_minmax_ops', opcintype => 'interval', + opckeytype => 'interval' }, +{ opcmethod => 'brin', opcname => 'timetz_minmax_ops', + opcfamily => 'brin/timetz_minmax_ops', opcintype => 'timetz', + opckeytype => 'timetz' }, +{ opcmethod => 'brin', opcname => 'bit_minmax_ops', + opcfamily => 'brin/bit_minmax_ops', opcintype => 'bit', opckeytype => 'bit' }, +{ opcmethod => 'brin', opcname => 'varbit_minmax_ops', + opcfamily => 'brin/varbit_minmax_ops', opcintype => 'varbit', + opckeytype => 'varbit' }, +{ opcmethod => 'brin', opcname => 'numeric_minmax_ops', + opcfamily => 'brin/numeric_minmax_ops', opcintype => 'numeric', + opckeytype => 'numeric' }, + +# no brin opclass for record, anyarray + +{ opcmethod => 'brin', opcname => 'uuid_minmax_ops', + opcfamily => 'brin/uuid_minmax_ops', opcintype => 'uuid', + opckeytype => 'uuid' }, +{ opcmethod => 'brin', opcname => 'range_inclusion_ops', + opcfamily => 'brin/range_inclusion_ops', opcintype => 'anyrange', + opckeytype => 'anyrange' }, +{ opcmethod => 'brin', opcname => 'pg_lsn_minmax_ops', + opcfamily => 'brin/pg_lsn_minmax_ops', opcintype => 'pg_lsn', + opckeytype => 'pg_lsn' }, + +# no brin opclass for enum, tsvector, tsquery, jsonb + +{ opcmethod => 'brin', opcname => 'box_inclusion_ops', + opcfamily => 'brin/box_inclusion_ops', opcintype => 'box', + opckeytype => 'box' }, + +# no brin opclass for the geometric types except box + +] diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h index e11d52eaa8..16c3875daa 100644 --- a/src/include/catalog/pg_opclass.h +++ b/src/include/catalog/pg_opclass.h @@ -2,7 +2,6 @@ * * pg_opclass.h * definition of the system "opclass" relation (pg_opclass) - * along with the relation's initial contents. * * The primary key for this table is --- * that is, there is a row for each valid combination of opclass name and @@ -31,8 +30,8 @@ * src/include/catalog/pg_opclass.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -40,24 +39,38 @@ #define PG_OPCLASS_H #include "catalog/genbki.h" +#include "catalog/pg_opclass_d.h" /* ---------------- * pg_opclass definition. cpp turns this into * typedef struct FormData_pg_opclass * ---------------- */ -#define OperatorClassRelationId 2616 - -CATALOG(pg_opclass,2616) +CATALOG(pg_opclass,2616,OperatorClassRelationId) { - Oid opcmethod; /* index access method opclass is for */ - NameData opcname; /* name of this opclass */ - Oid opcnamespace; /* namespace of this opclass */ - Oid opcowner; /* opclass owner */ - Oid opcfamily; /* containing operator family */ - Oid opcintype; /* type of data indexed by opclass */ - bool opcdefault; /* T if opclass is default for opcintype */ - Oid opckeytype; /* type of data in index, or InvalidOid */ + /* index access method opclass is for */ + Oid opcmethod BKI_LOOKUP(pg_am); + + /* name of this opclass */ + NameData opcname; + + /* namespace of this opclass */ + Oid opcnamespace BKI_DEFAULT(PGNSP); + + /* opclass owner */ + Oid opcowner BKI_DEFAULT(PGUID); + + /* containing operator family */ + Oid opcfamily BKI_LOOKUP(pg_opfamily); + + /* type of data indexed by opclass */ + Oid opcintype BKI_LOOKUP(pg_type); + + /* T if opclass is default for opcintype */ + bool opcdefault BKI_DEFAULT(t); + + /* type of data in index, or InvalidOid */ + Oid opckeytype BKI_DEFAULT(0) BKI_LOOKUP(pg_type); } FormData_pg_opclass; /* ---------------- @@ -67,185 +80,4 @@ CATALOG(pg_opclass,2616) */ typedef FormData_pg_opclass *Form_pg_opclass; -/* ---------------- - * compiler constants for pg_opclass - * ---------------- - */ -#define Natts_pg_opclass 8 -#define Anum_pg_opclass_opcmethod 1 -#define Anum_pg_opclass_opcname 2 -#define Anum_pg_opclass_opcnamespace 3 -#define Anum_pg_opclass_opcowner 4 -#define Anum_pg_opclass_opcfamily 5 -#define Anum_pg_opclass_opcintype 6 -#define Anum_pg_opclass_opcdefault 7 -#define Anum_pg_opclass_opckeytype 8 - -/* ---------------- - * initial contents of pg_opclass - * - * Note: we hard-wire an OID only for a few entries that have to be explicitly - * referenced in the C code or in built-in catalog entries. The rest get OIDs - * assigned on-the-fly during initdb. - * ---------------- - */ - -DATA(insert ( 403 abstime_ops PGNSP PGUID 421 702 t 0 )); -DATA(insert ( 403 array_ops PGNSP PGUID 397 2277 t 0 )); -DATA(insert ( 405 array_ops PGNSP PGUID 627 2277 t 0 )); -DATA(insert ( 403 bit_ops PGNSP PGUID 423 1560 t 0 )); -DATA(insert ( 403 bool_ops PGNSP PGUID 424 16 t 0 )); -DATA(insert ( 403 bpchar_ops PGNSP PGUID 426 1042 t 0 )); -DATA(insert ( 405 bpchar_ops PGNSP PGUID 427 1042 t 0 )); -DATA(insert ( 403 bytea_ops PGNSP PGUID 428 17 t 0 )); -DATA(insert ( 403 char_ops PGNSP PGUID 429 18 t 0 )); -DATA(insert ( 405 char_ops PGNSP PGUID 431 18 t 0 )); -DATA(insert ( 403 cidr_ops PGNSP PGUID 1974 869 f 0 )); -DATA(insert ( 405 cidr_ops PGNSP PGUID 1975 869 f 0 )); -DATA(insert OID = 3122 ( 403 date_ops PGNSP PGUID 434 1082 t 0 )); -#define DATE_BTREE_OPS_OID 3122 -DATA(insert ( 405 date_ops PGNSP PGUID 435 1082 t 0 )); -DATA(insert ( 403 float4_ops PGNSP PGUID 1970 700 t 0 )); -DATA(insert ( 405 float4_ops PGNSP PGUID 1971 700 t 0 )); -DATA(insert OID = 3123 ( 403 float8_ops PGNSP PGUID 1970 701 t 0 )); -#define FLOAT8_BTREE_OPS_OID 3123 -DATA(insert ( 405 float8_ops PGNSP PGUID 1971 701 t 0 )); -DATA(insert ( 403 inet_ops PGNSP PGUID 1974 869 t 0 )); -DATA(insert ( 405 inet_ops PGNSP PGUID 1975 869 t 0 )); -DATA(insert ( 783 inet_ops PGNSP PGUID 3550 869 f 0 )); -DATA(insert ( 4000 inet_ops PGNSP PGUID 3794 869 t 0 )); -DATA(insert OID = 1979 ( 403 int2_ops PGNSP PGUID 1976 21 t 0 )); -#define INT2_BTREE_OPS_OID 1979 -DATA(insert ( 405 int2_ops PGNSP PGUID 1977 21 t 0 )); -DATA(insert OID = 1978 ( 403 int4_ops PGNSP PGUID 1976 23 t 0 )); -#define INT4_BTREE_OPS_OID 1978 -DATA(insert ( 405 int4_ops PGNSP PGUID 1977 23 t 0 )); -DATA(insert OID = 3124 ( 403 int8_ops PGNSP PGUID 1976 20 t 0 )); -#define INT8_BTREE_OPS_OID 3124 -DATA(insert ( 405 int8_ops PGNSP PGUID 1977 20 t 0 )); -DATA(insert ( 403 interval_ops PGNSP PGUID 1982 1186 t 0 )); -DATA(insert ( 405 interval_ops PGNSP PGUID 1983 1186 t 0 )); -DATA(insert ( 403 macaddr_ops PGNSP PGUID 1984 829 t 0 )); -DATA(insert ( 405 macaddr_ops PGNSP PGUID 1985 829 t 0 )); -DATA(insert ( 403 macaddr8_ops PGNSP PGUID 3371 774 t 0 )); -DATA(insert ( 405 macaddr8_ops PGNSP PGUID 3372 774 t 0 )); -/* - * Here's an ugly little hack to save space in the system catalog indexes. - * btree doesn't ordinarily allow a storage type different from input type; - * but cstring and name are the same thing except for trailing padding, - * and we can safely omit that within an index entry. So we declare the - * btree opclass for name as using cstring storage type. - */ -DATA(insert ( 403 name_ops PGNSP PGUID 1986 19 t 2275 )); -DATA(insert ( 405 name_ops PGNSP PGUID 1987 19 t 0 )); -DATA(insert OID = 3125 ( 403 numeric_ops PGNSP PGUID 1988 1700 t 0 )); -#define NUMERIC_BTREE_OPS_OID 3125 -DATA(insert ( 405 numeric_ops PGNSP PGUID 1998 1700 t 0 )); -DATA(insert OID = 1981 ( 403 oid_ops PGNSP PGUID 1989 26 t 0 )); -#define OID_BTREE_OPS_OID 1981 -DATA(insert ( 405 oid_ops PGNSP PGUID 1990 26 t 0 )); -DATA(insert ( 403 oidvector_ops PGNSP PGUID 1991 30 t 0 )); -DATA(insert ( 405 oidvector_ops PGNSP PGUID 1992 30 t 0 )); -DATA(insert ( 403 record_ops PGNSP PGUID 2994 2249 t 0 )); -DATA(insert ( 403 record_image_ops PGNSP PGUID 3194 2249 f 0 )); -DATA(insert OID = 3126 ( 403 text_ops PGNSP PGUID 1994 25 t 0 )); -#define TEXT_BTREE_OPS_OID 3126 -DATA(insert ( 405 text_ops PGNSP PGUID 1995 25 t 0 )); -DATA(insert ( 403 time_ops PGNSP PGUID 1996 1083 t 0 )); -DATA(insert ( 405 time_ops PGNSP PGUID 1997 1083 t 0 )); -DATA(insert OID = 3127 ( 403 timestamptz_ops PGNSP PGUID 434 1184 t 0 )); -#define TIMESTAMPTZ_BTREE_OPS_OID 3127 -DATA(insert ( 405 timestamptz_ops PGNSP PGUID 1999 1184 t 0 )); -DATA(insert ( 403 timetz_ops PGNSP PGUID 2000 1266 t 0 )); -DATA(insert ( 405 timetz_ops PGNSP PGUID 2001 1266 t 0 )); -DATA(insert ( 403 varbit_ops PGNSP PGUID 2002 1562 t 0 )); -DATA(insert ( 403 varchar_ops PGNSP PGUID 1994 25 f 0 )); -DATA(insert ( 405 varchar_ops PGNSP PGUID 1995 25 f 0 )); -DATA(insert OID = 3128 ( 403 timestamp_ops PGNSP PGUID 434 1114 t 0 )); -#define TIMESTAMP_BTREE_OPS_OID 3128 -DATA(insert ( 405 timestamp_ops PGNSP PGUID 2040 1114 t 0 )); -DATA(insert ( 403 text_pattern_ops PGNSP PGUID 2095 25 f 0 )); -DATA(insert ( 403 varchar_pattern_ops PGNSP PGUID 2095 25 f 0 )); -DATA(insert ( 403 bpchar_pattern_ops PGNSP PGUID 2097 1042 f 0 )); -DATA(insert ( 403 money_ops PGNSP PGUID 2099 790 t 0 )); -DATA(insert ( 405 bool_ops PGNSP PGUID 2222 16 t 0 )); -DATA(insert ( 405 bytea_ops PGNSP PGUID 2223 17 t 0 )); -DATA(insert ( 403 tid_ops PGNSP PGUID 2789 27 t 0 )); -DATA(insert ( 405 xid_ops PGNSP PGUID 2225 28 t 0 )); -DATA(insert ( 405 cid_ops PGNSP PGUID 2226 29 t 0 )); -DATA(insert ( 405 abstime_ops PGNSP PGUID 2227 702 t 0 )); -DATA(insert ( 405 reltime_ops PGNSP PGUID 2228 703 t 0 )); -DATA(insert ( 405 text_pattern_ops PGNSP PGUID 2229 25 f 0 )); -DATA(insert ( 405 varchar_pattern_ops PGNSP PGUID 2229 25 f 0 )); -DATA(insert ( 405 bpchar_pattern_ops PGNSP PGUID 2231 1042 f 0 )); -DATA(insert ( 403 reltime_ops PGNSP PGUID 2233 703 t 0 )); -DATA(insert ( 403 tinterval_ops PGNSP PGUID 2234 704 t 0 )); -DATA(insert ( 405 aclitem_ops PGNSP PGUID 2235 1033 t 0 )); -DATA(insert ( 783 box_ops PGNSP PGUID 2593 603 t 0 )); -DATA(insert ( 783 point_ops PGNSP PGUID 1029 600 t 603 )); -DATA(insert ( 783 poly_ops PGNSP PGUID 2594 604 t 603 )); -DATA(insert ( 783 circle_ops PGNSP PGUID 2595 718 t 603 )); -DATA(insert ( 2742 array_ops PGNSP PGUID 2745 2277 t 2283 )); -DATA(insert ( 403 uuid_ops PGNSP PGUID 2968 2950 t 0 )); -DATA(insert ( 405 uuid_ops PGNSP PGUID 2969 2950 t 0 )); -DATA(insert ( 403 pg_lsn_ops PGNSP PGUID 3253 3220 t 0 )); -DATA(insert ( 405 pg_lsn_ops PGNSP PGUID 3254 3220 t 0 )); -DATA(insert ( 403 enum_ops PGNSP PGUID 3522 3500 t 0 )); -DATA(insert ( 405 enum_ops PGNSP PGUID 3523 3500 t 0 )); -DATA(insert ( 403 tsvector_ops PGNSP PGUID 3626 3614 t 0 )); -DATA(insert ( 783 tsvector_ops PGNSP PGUID 3655 3614 t 3642 )); -DATA(insert ( 2742 tsvector_ops PGNSP PGUID 3659 3614 t 25 )); -DATA(insert ( 403 tsquery_ops PGNSP PGUID 3683 3615 t 0 )); -DATA(insert ( 783 tsquery_ops PGNSP PGUID 3702 3615 t 20 )); -DATA(insert ( 403 range_ops PGNSP PGUID 3901 3831 t 0 )); -DATA(insert ( 405 range_ops PGNSP PGUID 3903 3831 t 0 )); -DATA(insert ( 783 range_ops PGNSP PGUID 3919 3831 t 0 )); -DATA(insert ( 4000 range_ops PGNSP PGUID 3474 3831 t 0 )); -DATA(insert ( 4000 box_ops PGNSP PGUID 5000 603 t 0 )); -DATA(insert ( 4000 quad_point_ops PGNSP PGUID 4015 600 t 0 )); -DATA(insert ( 4000 kd_point_ops PGNSP PGUID 4016 600 f 0 )); -DATA(insert ( 4000 text_ops PGNSP PGUID 4017 25 t 0 )); -DATA(insert ( 4000 poly_ops PGNSP PGUID 5008 604 t 603 )); -DATA(insert ( 403 jsonb_ops PGNSP PGUID 4033 3802 t 0 )); -DATA(insert ( 405 jsonb_ops PGNSP PGUID 4034 3802 t 0 )); -DATA(insert ( 2742 jsonb_ops PGNSP PGUID 4036 3802 t 25 )); -DATA(insert ( 2742 jsonb_path_ops PGNSP PGUID 4037 3802 f 23 )); - -/* BRIN operator classes */ -/* no brin opclass for bool */ -DATA(insert ( 3580 bytea_minmax_ops PGNSP PGUID 4064 17 t 17 )); -DATA(insert ( 3580 char_minmax_ops PGNSP PGUID 4062 18 t 18 )); -DATA(insert ( 3580 name_minmax_ops PGNSP PGUID 4065 19 t 19 )); -DATA(insert ( 3580 int8_minmax_ops PGNSP PGUID 4054 20 t 20 )); -DATA(insert ( 3580 int2_minmax_ops PGNSP PGUID 4054 21 t 21 )); -DATA(insert ( 3580 int4_minmax_ops PGNSP PGUID 4054 23 t 23 )); -DATA(insert ( 3580 text_minmax_ops PGNSP PGUID 4056 25 t 25 )); -DATA(insert ( 3580 oid_minmax_ops PGNSP PGUID 4068 26 t 26 )); -DATA(insert ( 3580 tid_minmax_ops PGNSP PGUID 4069 27 t 27 )); -DATA(insert ( 3580 float4_minmax_ops PGNSP PGUID 4070 700 t 700 )); -DATA(insert ( 3580 float8_minmax_ops PGNSP PGUID 4070 701 t 701 )); -DATA(insert ( 3580 abstime_minmax_ops PGNSP PGUID 4072 702 t 702 )); -DATA(insert ( 3580 reltime_minmax_ops PGNSP PGUID 4073 703 t 703 )); -DATA(insert ( 3580 macaddr_minmax_ops PGNSP PGUID 4074 829 t 829 )); -DATA(insert ( 3580 macaddr8_minmax_ops PGNSP PGUID 4109 774 t 774 )); -DATA(insert ( 3580 inet_minmax_ops PGNSP PGUID 4075 869 f 869 )); -DATA(insert ( 3580 inet_inclusion_ops PGNSP PGUID 4102 869 t 869 )); -DATA(insert ( 3580 bpchar_minmax_ops PGNSP PGUID 4076 1042 t 1042 )); -DATA(insert ( 3580 time_minmax_ops PGNSP PGUID 4077 1083 t 1083 )); -DATA(insert ( 3580 date_minmax_ops PGNSP PGUID 4059 1082 t 1082 )); -DATA(insert ( 3580 timestamp_minmax_ops PGNSP PGUID 4059 1114 t 1114 )); -DATA(insert ( 3580 timestamptz_minmax_ops PGNSP PGUID 4059 1184 t 1184 )); -DATA(insert ( 3580 interval_minmax_ops PGNSP PGUID 4078 1186 t 1186 )); -DATA(insert ( 3580 timetz_minmax_ops PGNSP PGUID 4058 1266 t 1266 )); -DATA(insert ( 3580 bit_minmax_ops PGNSP PGUID 4079 1560 t 1560 )); -DATA(insert ( 3580 varbit_minmax_ops PGNSP PGUID 4080 1562 t 1562 )); -DATA(insert ( 3580 numeric_minmax_ops PGNSP PGUID 4055 1700 t 1700 )); -/* no brin opclass for record, anyarray */ -DATA(insert ( 3580 uuid_minmax_ops PGNSP PGUID 4081 2950 t 2950 )); -DATA(insert ( 3580 range_inclusion_ops PGNSP PGUID 4103 3831 t 3831 )); -DATA(insert ( 3580 pg_lsn_minmax_ops PGNSP PGUID 4082 3220 t 3220 )); -/* no brin opclass for enum, tsvector, tsquery, jsonb */ -DATA(insert ( 3580 box_inclusion_ops PGNSP PGUID 4104 603 t 603 )); -/* no brin opclass for the geometric types except box */ - #endif /* PG_OPCLASS_H */ diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat new file mode 100644 index 0000000000..43827384cf --- /dev/null +++ b/src/include/catalog/pg_operator.dat @@ -0,0 +1,3340 @@ +#---------------------------------------------------------------------- +# +# pg_operator.dat +# Initial contents of the pg_operator system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_operator.dat +# +#---------------------------------------------------------------------- + +[ + +# Note: every entry in pg_operator.dat is expected to have a 'descr' comment. +# If the operator is a deprecated equivalent of some other entry, be sure +# to comment it as such so that initdb doesn't think it's a preferred name +# for the underlying function. + +{ oid => '15', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int4', + oprright => 'int8', oprresult => 'bool', oprcom => '=(int8,int4)', + oprnegate => '<>(int4,int8)', oprcode => 'int48eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '36', descr => 'not equal', + oprname => '<>', oprleft => 'int4', oprright => 'int8', oprresult => 'bool', + oprcom => '<>(int8,int4)', oprnegate => '=(int4,int8)', oprcode => 'int48ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '37', descr => 'less than', + oprname => '<', oprleft => 'int4', oprright => 'int8', oprresult => 'bool', + oprcom => '>(int8,int4)', oprnegate => '>=(int4,int8)', oprcode => 'int48lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '76', descr => 'greater than', + oprname => '>', oprleft => 'int4', oprright => 'int8', oprresult => 'bool', + oprcom => '<(int8,int4)', oprnegate => '<=(int4,int8)', oprcode => 'int48gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '80', descr => 'less than or equal', + oprname => '<=', oprleft => 'int4', oprright => 'int8', oprresult => 'bool', + oprcom => '>=(int8,int4)', oprnegate => '>(int4,int8)', oprcode => 'int48le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '82', descr => 'greater than or equal', + oprname => '>=', oprleft => 'int4', oprright => 'int8', oprresult => 'bool', + oprcom => '<=(int8,int4)', oprnegate => '<(int4,int8)', oprcode => 'int48ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '58', descr => 'less than', + oprname => '<', oprleft => 'bool', oprright => 'bool', oprresult => 'bool', + oprcom => '>(bool,bool)', oprnegate => '>=(bool,bool)', oprcode => 'boollt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '59', descr => 'greater than', + oprname => '>', oprleft => 'bool', oprright => 'bool', oprresult => 'bool', + oprcom => '<(bool,bool)', oprnegate => '<=(bool,bool)', oprcode => 'boolgt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '85', oid_symbol => 'BooleanNotEqualOperator', descr => 'not equal', + oprname => '<>', oprleft => 'bool', oprright => 'bool', oprresult => 'bool', + oprcom => '<>(bool,bool)', oprnegate => '=(bool,bool)', oprcode => 'boolne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '91', oid_symbol => 'BooleanEqualOperator', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'bool', + oprright => 'bool', oprresult => 'bool', oprcom => '=(bool,bool)', + oprnegate => '<>(bool,bool)', oprcode => 'booleq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1694', descr => 'less than or equal', + oprname => '<=', oprleft => 'bool', oprright => 'bool', oprresult => 'bool', + oprcom => '>=(bool,bool)', oprnegate => '>(bool,bool)', oprcode => 'boolle', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1695', descr => 'greater than or equal', + oprname => '>=', oprleft => 'bool', oprright => 'bool', oprresult => 'bool', + oprcom => '<=(bool,bool)', oprnegate => '<(bool,bool)', oprcode => 'boolge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '92', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'char', + oprright => 'char', oprresult => 'bool', oprcom => '=(char,char)', + oprnegate => '<>(char,char)', oprcode => 'chareq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '93', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'name', + oprright => 'name', oprresult => 'bool', oprcom => '=(name,name)', + oprnegate => '<>(name,name)', oprcode => 'nameeq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '94', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int2', + oprright => 'int2', oprresult => 'bool', oprcom => '=(int2,int2)', + oprnegate => '<>(int2,int2)', oprcode => 'int2eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '95', descr => 'less than', + oprname => '<', oprleft => 'int2', oprright => 'int2', oprresult => 'bool', + oprcom => '>(int2,int2)', oprnegate => '>=(int2,int2)', oprcode => 'int2lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '96', oid_symbol => 'Int4EqualOperator', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int4', + oprright => 'int4', oprresult => 'bool', oprcom => '=(int4,int4)', + oprnegate => '<>(int4,int4)', oprcode => 'int4eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '97', oid_symbol => 'Int4LessOperator', descr => 'less than', + oprname => '<', oprleft => 'int4', oprright => 'int4', oprresult => 'bool', + oprcom => '>(int4,int4)', oprnegate => '>=(int4,int4)', oprcode => 'int4lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '98', oid_symbol => 'TextEqualOperator', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'text', + oprright => 'text', oprresult => 'bool', oprcom => '=(text,text)', + oprnegate => '<>(text,text)', oprcode => 'texteq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '3877', descr => 'starts with', + oprname => '^@', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprcode => 'starts_with', oprrest => 'prefixsel', + oprjoin => 'prefixjoinsel' }, + +{ oid => '349', descr => 'append element onto end of array', + oprname => '||', oprleft => 'anyarray', oprright => 'anyelement', + oprresult => 'anyarray', oprcode => 'array_append' }, +{ oid => '374', descr => 'prepend element onto front of array', + oprname => '||', oprleft => 'anyelement', oprright => 'anyarray', + oprresult => 'anyarray', oprcode => 'array_prepend' }, +{ oid => '375', descr => 'concatenate', + oprname => '||', oprleft => 'anyarray', oprright => 'anyarray', + oprresult => 'anyarray', oprcode => 'array_cat' }, + +{ oid => '352', descr => 'equal', + oprname => '=', oprcanhash => 't', oprleft => 'xid', oprright => 'xid', + oprresult => 'bool', oprcom => '=(xid,xid)', oprnegate => '<>(xid,xid)', + oprcode => 'xideq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '353', descr => 'equal', + oprname => '=', oprleft => 'xid', oprright => 'int4', oprresult => 'bool', + oprnegate => '<>(xid,int4)', oprcode => 'xideqint4', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '3315', descr => 'not equal', + oprname => '<>', oprleft => 'xid', oprright => 'xid', oprresult => 'bool', + oprcom => '<>(xid,xid)', oprnegate => '=(xid,xid)', oprcode => 'xidneq', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '3316', descr => 'not equal', + oprname => '<>', oprleft => 'xid', oprright => 'int4', oprresult => 'bool', + oprnegate => '=(xid,int4)', oprcode => 'xidneqint4', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '388', descr => 'factorial', + oprname => '!', oprkind => 'r', oprleft => 'int8', oprright => '0', + oprresult => 'numeric', oprcode => 'numeric_fac' }, +{ oid => '389', descr => 'deprecated, use ! instead', + oprname => '!!', oprkind => 'l', oprleft => '0', oprright => 'int8', + oprresult => 'numeric', oprcode => 'numeric_fac' }, +{ oid => '385', descr => 'equal', + oprname => '=', oprcanhash => 't', oprleft => 'cid', oprright => 'cid', + oprresult => 'bool', oprcom => '=(cid,cid)', oprcode => 'cideq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, + +{ oid => '387', oid_symbol => 'TIDEqualOperator', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'tid', oprright => 'tid', + oprresult => 'bool', oprcom => '=(tid,tid)', oprnegate => '<>(tid,tid)', + oprcode => 'tideq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '402', descr => 'not equal', + oprname => '<>', oprleft => 'tid', oprright => 'tid', oprresult => 'bool', + oprcom => '<>(tid,tid)', oprnegate => '=(tid,tid)', oprcode => 'tidne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '2799', oid_symbol => 'TIDLessOperator', descr => 'less than', + oprname => '<', oprleft => 'tid', oprright => 'tid', oprresult => 'bool', + oprcom => '>(tid,tid)', oprnegate => '>=(tid,tid)', oprcode => 'tidlt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '2800', descr => 'greater than', + oprname => '>', oprleft => 'tid', oprright => 'tid', oprresult => 'bool', + oprcom => '<(tid,tid)', oprnegate => '<=(tid,tid)', oprcode => 'tidgt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '2801', descr => 'less than or equal', + oprname => '<=', oprleft => 'tid', oprright => 'tid', oprresult => 'bool', + oprcom => '>=(tid,tid)', oprnegate => '>(tid,tid)', oprcode => 'tidle', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '2802', descr => 'greater than or equal', + oprname => '>=', oprleft => 'tid', oprright => 'tid', oprresult => 'bool', + oprcom => '<=(tid,tid)', oprnegate => '<(tid,tid)', oprcode => 'tidge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '410', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int8', + oprright => 'int8', oprresult => 'bool', oprcom => '=(int8,int8)', + oprnegate => '<>(int8,int8)', oprcode => 'int8eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '411', descr => 'not equal', + oprname => '<>', oprleft => 'int8', oprright => 'int8', oprresult => 'bool', + oprcom => '<>(int8,int8)', oprnegate => '=(int8,int8)', oprcode => 'int8ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '412', oid_symbol => 'Int8LessOperator', descr => 'less than', + oprname => '<', oprleft => 'int8', oprright => 'int8', oprresult => 'bool', + oprcom => '>(int8,int8)', oprnegate => '>=(int8,int8)', oprcode => 'int8lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '413', descr => 'greater than', + oprname => '>', oprleft => 'int8', oprright => 'int8', oprresult => 'bool', + oprcom => '<(int8,int8)', oprnegate => '<=(int8,int8)', oprcode => 'int8gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '414', descr => 'less than or equal', + oprname => '<=', oprleft => 'int8', oprright => 'int8', oprresult => 'bool', + oprcom => '>=(int8,int8)', oprnegate => '>(int8,int8)', oprcode => 'int8le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '415', descr => 'greater than or equal', + oprname => '>=', oprleft => 'int8', oprright => 'int8', oprresult => 'bool', + oprcom => '<=(int8,int8)', oprnegate => '<(int8,int8)', oprcode => 'int8ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '416', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int8', + oprright => 'int4', oprresult => 'bool', oprcom => '=(int4,int8)', + oprnegate => '<>(int8,int4)', oprcode => 'int84eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '417', descr => 'not equal', + oprname => '<>', oprleft => 'int8', oprright => 'int4', oprresult => 'bool', + oprcom => '<>(int4,int8)', oprnegate => '=(int8,int4)', oprcode => 'int84ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '418', descr => 'less than', + oprname => '<', oprleft => 'int8', oprright => 'int4', oprresult => 'bool', + oprcom => '>(int4,int8)', oprnegate => '>=(int8,int4)', oprcode => 'int84lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '419', descr => 'greater than', + oprname => '>', oprleft => 'int8', oprright => 'int4', oprresult => 'bool', + oprcom => '<(int4,int8)', oprnegate => '<=(int8,int4)', oprcode => 'int84gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '420', descr => 'less than or equal', + oprname => '<=', oprleft => 'int8', oprright => 'int4', oprresult => 'bool', + oprcom => '>=(int4,int8)', oprnegate => '>(int8,int4)', oprcode => 'int84le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '430', descr => 'greater than or equal', + oprname => '>=', oprleft => 'int8', oprright => 'int4', oprresult => 'bool', + oprcom => '<=(int4,int8)', oprnegate => '<(int8,int4)', oprcode => 'int84ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '439', descr => 'modulus', + oprname => '%', oprleft => 'int8', oprright => 'int8', oprresult => 'int8', + oprcode => 'int8mod' }, +{ oid => '473', descr => 'absolute value', + oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'int8', + oprresult => 'int8', oprcode => 'int8abs' }, + +{ oid => '484', descr => 'negate', + oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'int8', + oprresult => 'int8', oprcode => 'int8um' }, +{ oid => '485', descr => 'is left of', + oprname => '<<', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcode => 'poly_left', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '486', descr => 'overlaps or is left of', + oprname => '&<', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcode => 'poly_overleft', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '487', descr => 'overlaps or is right of', + oprname => '&>', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcode => 'poly_overright', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '488', descr => 'is right of', + oprname => '>>', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcode => 'poly_right', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '489', descr => 'is contained by', + oprname => '<@', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcom => '@>(polygon,polygon)', + oprcode => 'poly_contained', oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '490', descr => 'contains', + oprname => '@>', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcom => '<@(polygon,polygon)', + oprcode => 'poly_contain', oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '491', descr => 'same as', + oprname => '~=', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcom => '~=(polygon,polygon)', oprcode => 'poly_same', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '492', descr => 'overlaps', + oprname => '&&', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcom => '&&(polygon,polygon)', + oprcode => 'poly_overlap', oprrest => 'areasel', oprjoin => 'areajoinsel' }, +{ oid => '493', descr => 'is left of', + oprname => '<<', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcode => 'box_left', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '494', descr => 'overlaps or is left of', + oprname => '&<', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcode => 'box_overleft', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '495', descr => 'overlaps or is right of', + oprname => '&>', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcode => 'box_overright', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '496', descr => 'is right of', + oprname => '>>', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcode => 'box_right', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '497', descr => 'is contained by', + oprname => '<@', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcom => '@>(box,box)', oprcode => 'box_contained', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '498', descr => 'contains', + oprname => '@>', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcom => '<@(box,box)', oprcode => 'box_contain', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '499', descr => 'same as', + oprname => '~=', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcom => '~=(box,box)', oprcode => 'box_same', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '500', descr => 'overlaps', + oprname => '&&', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcom => '&&(box,box)', oprcode => 'box_overlap', oprrest => 'areasel', + oprjoin => 'areajoinsel' }, +{ oid => '501', descr => 'greater than or equal by area', + oprname => '>=', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcom => '<=(box,box)', oprnegate => '<(box,box)', oprcode => 'box_ge', + oprrest => 'areasel', oprjoin => 'areajoinsel' }, +{ oid => '502', descr => 'greater than by area', + oprname => '>', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcom => '<(box,box)', oprnegate => '<=(box,box)', oprcode => 'box_gt', + oprrest => 'areasel', oprjoin => 'areajoinsel' }, +{ oid => '503', descr => 'equal by area', + oprname => '=', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcom => '=(box,box)', oprcode => 'box_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '504', descr => 'less than by area', + oprname => '<', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcom => '>(box,box)', oprnegate => '>=(box,box)', oprcode => 'box_lt', + oprrest => 'areasel', oprjoin => 'areajoinsel' }, +{ oid => '505', descr => 'less than or equal by area', + oprname => '<=', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcom => '>=(box,box)', oprnegate => '>(box,box)', oprcode => 'box_le', + oprrest => 'areasel', oprjoin => 'areajoinsel' }, +{ oid => '506', descr => 'is above', + oprname => '>^', oprleft => 'point', oprright => 'point', oprresult => 'bool', + oprcode => 'point_above', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '507', descr => 'is left of', + oprname => '<<', oprleft => 'point', oprright => 'point', oprresult => 'bool', + oprcode => 'point_left', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '508', descr => 'is right of', + oprname => '>>', oprleft => 'point', oprright => 'point', oprresult => 'bool', + oprcode => 'point_right', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '509', descr => 'is below', + oprname => '<^', oprleft => 'point', oprright => 'point', oprresult => 'bool', + oprcode => 'point_below', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '510', descr => 'same as', + oprname => '~=', oprleft => 'point', oprright => 'point', oprresult => 'bool', + oprcom => '~=(point,point)', oprnegate => '<>(point,point)', + oprcode => 'point_eq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '511', descr => 'point inside box', + oprname => '<@', oprleft => 'point', oprright => 'box', oprresult => 'bool', + oprcom => '@>(box,point)', oprcode => 'on_pb', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '433', descr => 'contains', + oprname => '@>', oprleft => 'box', oprright => 'point', oprresult => 'bool', + oprcom => '<@(point,box)', oprcode => 'box_contain_pt', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '512', descr => 'point within closed path, or point on open path', + oprname => '<@', oprleft => 'point', oprright => 'path', oprresult => 'bool', + oprcom => '@>(path,point)', oprcode => 'on_ppath' }, +{ oid => '513', descr => 'center of', + oprname => '@@', oprkind => 'l', oprleft => '0', oprright => 'box', + oprresult => 'point', oprcode => 'box_center' }, +{ oid => '514', descr => 'multiply', + oprname => '*', oprleft => 'int4', oprright => 'int4', oprresult => 'int4', + oprcom => '*(int4,int4)', oprcode => 'int4mul' }, +{ oid => '517', descr => 'distance between', + oprname => '<->', oprleft => 'point', oprright => 'point', + oprresult => 'float8', oprcom => '<->(point,point)', + oprcode => 'point_distance' }, +{ oid => '518', descr => 'not equal', + oprname => '<>', oprleft => 'int4', oprright => 'int4', oprresult => 'bool', + oprcom => '<>(int4,int4)', oprnegate => '=(int4,int4)', oprcode => 'int4ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '519', descr => 'not equal', + oprname => '<>', oprleft => 'int2', oprright => 'int2', oprresult => 'bool', + oprcom => '<>(int2,int2)', oprnegate => '=(int2,int2)', oprcode => 'int2ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '520', descr => 'greater than', + oprname => '>', oprleft => 'int2', oprright => 'int2', oprresult => 'bool', + oprcom => '<(int2,int2)', oprnegate => '<=(int2,int2)', oprcode => 'int2gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '521', descr => 'greater than', + oprname => '>', oprleft => 'int4', oprright => 'int4', oprresult => 'bool', + oprcom => '<(int4,int4)', oprnegate => '<=(int4,int4)', oprcode => 'int4gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '522', descr => 'less than or equal', + oprname => '<=', oprleft => 'int2', oprright => 'int2', oprresult => 'bool', + oprcom => '>=(int2,int2)', oprnegate => '>(int2,int2)', oprcode => 'int2le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '523', descr => 'less than or equal', + oprname => '<=', oprleft => 'int4', oprright => 'int4', oprresult => 'bool', + oprcom => '>=(int4,int4)', oprnegate => '>(int4,int4)', oprcode => 'int4le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '524', descr => 'greater than or equal', + oprname => '>=', oprleft => 'int2', oprright => 'int2', oprresult => 'bool', + oprcom => '<=(int2,int2)', oprnegate => '<(int2,int2)', oprcode => 'int2ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '525', descr => 'greater than or equal', + oprname => '>=', oprleft => 'int4', oprright => 'int4', oprresult => 'bool', + oprcom => '<=(int4,int4)', oprnegate => '<(int4,int4)', oprcode => 'int4ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '526', descr => 'multiply', + oprname => '*', oprleft => 'int2', oprright => 'int2', oprresult => 'int2', + oprcom => '*(int2,int2)', oprcode => 'int2mul' }, +{ oid => '527', descr => 'divide', + oprname => '/', oprleft => 'int2', oprright => 'int2', oprresult => 'int2', + oprcode => 'int2div' }, +{ oid => '528', descr => 'divide', + oprname => '/', oprleft => 'int4', oprright => 'int4', oprresult => 'int4', + oprcode => 'int4div' }, +{ oid => '529', descr => 'modulus', + oprname => '%', oprleft => 'int2', oprright => 'int2', oprresult => 'int2', + oprcode => 'int2mod' }, +{ oid => '530', descr => 'modulus', + oprname => '%', oprleft => 'int4', oprright => 'int4', oprresult => 'int4', + oprcode => 'int4mod' }, +{ oid => '531', descr => 'not equal', + oprname => '<>', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprcom => '<>(text,text)', oprnegate => '=(text,text)', oprcode => 'textne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '532', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int2', + oprright => 'int4', oprresult => 'bool', oprcom => '=(int4,int2)', + oprnegate => '<>(int2,int4)', oprcode => 'int24eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '533', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int4', + oprright => 'int2', oprresult => 'bool', oprcom => '=(int2,int4)', + oprnegate => '<>(int4,int2)', oprcode => 'int42eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '534', descr => 'less than', + oprname => '<', oprleft => 'int2', oprright => 'int4', oprresult => 'bool', + oprcom => '>(int4,int2)', oprnegate => '>=(int2,int4)', oprcode => 'int24lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '535', descr => 'less than', + oprname => '<', oprleft => 'int4', oprright => 'int2', oprresult => 'bool', + oprcom => '>(int2,int4)', oprnegate => '>=(int4,int2)', oprcode => 'int42lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '536', descr => 'greater than', + oprname => '>', oprleft => 'int2', oprright => 'int4', oprresult => 'bool', + oprcom => '<(int4,int2)', oprnegate => '<=(int2,int4)', oprcode => 'int24gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '537', descr => 'greater than', + oprname => '>', oprleft => 'int4', oprright => 'int2', oprresult => 'bool', + oprcom => '<(int2,int4)', oprnegate => '<=(int4,int2)', oprcode => 'int42gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '538', descr => 'not equal', + oprname => '<>', oprleft => 'int2', oprright => 'int4', oprresult => 'bool', + oprcom => '<>(int4,int2)', oprnegate => '=(int2,int4)', oprcode => 'int24ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '539', descr => 'not equal', + oprname => '<>', oprleft => 'int4', oprright => 'int2', oprresult => 'bool', + oprcom => '<>(int2,int4)', oprnegate => '=(int4,int2)', oprcode => 'int42ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '540', descr => 'less than or equal', + oprname => '<=', oprleft => 'int2', oprright => 'int4', oprresult => 'bool', + oprcom => '>=(int4,int2)', oprnegate => '>(int2,int4)', oprcode => 'int24le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '541', descr => 'less than or equal', + oprname => '<=', oprleft => 'int4', oprright => 'int2', oprresult => 'bool', + oprcom => '>=(int2,int4)', oprnegate => '>(int4,int2)', oprcode => 'int42le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '542', descr => 'greater than or equal', + oprname => '>=', oprleft => 'int2', oprright => 'int4', oprresult => 'bool', + oprcom => '<=(int4,int2)', oprnegate => '<(int2,int4)', oprcode => 'int24ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '543', descr => 'greater than or equal', + oprname => '>=', oprleft => 'int4', oprright => 'int2', oprresult => 'bool', + oprcom => '<=(int2,int4)', oprnegate => '<(int4,int2)', oprcode => 'int42ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '544', descr => 'multiply', + oprname => '*', oprleft => 'int2', oprright => 'int4', oprresult => 'int4', + oprcom => '*(int4,int2)', oprcode => 'int24mul' }, +{ oid => '545', descr => 'multiply', + oprname => '*', oprleft => 'int4', oprright => 'int2', oprresult => 'int4', + oprcom => '*(int2,int4)', oprcode => 'int42mul' }, +{ oid => '546', descr => 'divide', + oprname => '/', oprleft => 'int2', oprright => 'int4', oprresult => 'int4', + oprcode => 'int24div' }, +{ oid => '547', descr => 'divide', + oprname => '/', oprleft => 'int4', oprright => 'int2', oprresult => 'int4', + oprcode => 'int42div' }, +{ oid => '550', descr => 'add', + oprname => '+', oprleft => 'int2', oprright => 'int2', oprresult => 'int2', + oprcom => '+(int2,int2)', oprcode => 'int2pl' }, +{ oid => '551', descr => 'add', + oprname => '+', oprleft => 'int4', oprright => 'int4', oprresult => 'int4', + oprcom => '+(int4,int4)', oprcode => 'int4pl' }, +{ oid => '552', descr => 'add', + oprname => '+', oprleft => 'int2', oprright => 'int4', oprresult => 'int4', + oprcom => '+(int4,int2)', oprcode => 'int24pl' }, +{ oid => '553', descr => 'add', + oprname => '+', oprleft => 'int4', oprright => 'int2', oprresult => 'int4', + oprcom => '+(int2,int4)', oprcode => 'int42pl' }, +{ oid => '554', descr => 'subtract', + oprname => '-', oprleft => 'int2', oprright => 'int2', oprresult => 'int2', + oprcode => 'int2mi' }, +{ oid => '555', descr => 'subtract', + oprname => '-', oprleft => 'int4', oprright => 'int4', oprresult => 'int4', + oprcode => 'int4mi' }, +{ oid => '556', descr => 'subtract', + oprname => '-', oprleft => 'int2', oprright => 'int4', oprresult => 'int4', + oprcode => 'int24mi' }, +{ oid => '557', descr => 'subtract', + oprname => '-', oprleft => 'int4', oprright => 'int2', oprresult => 'int4', + oprcode => 'int42mi' }, +{ oid => '558', descr => 'negate', + oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'int4', + oprresult => 'int4', oprcode => 'int4um' }, +{ oid => '559', descr => 'negate', + oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'int2', + oprresult => 'int2', oprcode => 'int2um' }, +{ oid => '560', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'abstime', + oprright => 'abstime', oprresult => 'bool', oprcom => '=(abstime,abstime)', + oprnegate => '<>(abstime,abstime)', oprcode => 'abstimeeq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '561', descr => 'not equal', + oprname => '<>', oprleft => 'abstime', oprright => 'abstime', + oprresult => 'bool', oprcom => '<>(abstime,abstime)', + oprnegate => '=(abstime,abstime)', oprcode => 'abstimene', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '562', descr => 'less than', + oprname => '<', oprleft => 'abstime', oprright => 'abstime', + oprresult => 'bool', oprcom => '>(abstime,abstime)', + oprnegate => '>=(abstime,abstime)', oprcode => 'abstimelt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '563', descr => 'greater than', + oprname => '>', oprleft => 'abstime', oprright => 'abstime', + oprresult => 'bool', oprcom => '<(abstime,abstime)', + oprnegate => '<=(abstime,abstime)', oprcode => 'abstimegt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '564', descr => 'less than or equal', + oprname => '<=', oprleft => 'abstime', oprright => 'abstime', + oprresult => 'bool', oprcom => '>=(abstime,abstime)', + oprnegate => '>(abstime,abstime)', oprcode => 'abstimele', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '565', descr => 'greater than or equal', + oprname => '>=', oprleft => 'abstime', oprright => 'abstime', + oprresult => 'bool', oprcom => '<=(abstime,abstime)', + oprnegate => '<(abstime,abstime)', oprcode => 'abstimege', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '566', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'reltime', + oprright => 'reltime', oprresult => 'bool', oprcom => '=(reltime,reltime)', + oprnegate => '<>(reltime,reltime)', oprcode => 'reltimeeq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '567', descr => 'not equal', + oprname => '<>', oprleft => 'reltime', oprright => 'reltime', + oprresult => 'bool', oprcom => '<>(reltime,reltime)', + oprnegate => '=(reltime,reltime)', oprcode => 'reltimene', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '568', descr => 'less than', + oprname => '<', oprleft => 'reltime', oprright => 'reltime', + oprresult => 'bool', oprcom => '>(reltime,reltime)', + oprnegate => '>=(reltime,reltime)', oprcode => 'reltimelt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '569', descr => 'greater than', + oprname => '>', oprleft => 'reltime', oprright => 'reltime', + oprresult => 'bool', oprcom => '<(reltime,reltime)', + oprnegate => '<=(reltime,reltime)', oprcode => 'reltimegt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '570', descr => 'less than or equal', + oprname => '<=', oprleft => 'reltime', oprright => 'reltime', + oprresult => 'bool', oprcom => '>=(reltime,reltime)', + oprnegate => '>(reltime,reltime)', oprcode => 'reltimele', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '571', descr => 'greater than or equal', + oprname => '>=', oprleft => 'reltime', oprright => 'reltime', + oprresult => 'bool', oprcom => '<=(reltime,reltime)', + oprnegate => '<(reltime,reltime)', oprcode => 'reltimege', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '572', descr => 'same as', + oprname => '~=', oprleft => 'tinterval', oprright => 'tinterval', + oprresult => 'bool', oprcom => '~=(tinterval,tinterval)', + oprcode => 'tintervalsame', oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '573', descr => 'contains', + oprname => '<<', oprleft => 'tinterval', oprright => 'tinterval', + oprresult => 'bool', oprcode => 'tintervalct' }, +{ oid => '574', descr => 'overlaps', + oprname => '&&', oprleft => 'tinterval', oprright => 'tinterval', + oprresult => 'bool', oprcom => '&&(tinterval,tinterval)', + oprcode => 'tintervalov' }, +{ oid => '575', descr => 'equal by length', + oprname => '#=', oprleft => 'tinterval', oprright => 'reltime', + oprresult => 'bool', oprnegate => '#<>(tinterval,reltime)', + oprcode => 'tintervalleneq' }, +{ oid => '576', descr => 'not equal by length', + oprname => '#<>', oprleft => 'tinterval', oprright => 'reltime', + oprresult => 'bool', oprnegate => '#=(tinterval,reltime)', + oprcode => 'tintervallenne' }, +{ oid => '577', descr => 'less than by length', + oprname => '#<', oprleft => 'tinterval', oprright => 'reltime', + oprresult => 'bool', oprnegate => '#>=(tinterval,reltime)', + oprcode => 'tintervallenlt' }, +{ oid => '578', descr => 'greater than by length', + oprname => '#>', oprleft => 'tinterval', oprright => 'reltime', + oprresult => 'bool', oprnegate => '#<=(tinterval,reltime)', + oprcode => 'tintervallengt' }, +{ oid => '579', descr => 'less than or equal by length', + oprname => '#<=', oprleft => 'tinterval', oprright => 'reltime', + oprresult => 'bool', oprnegate => '#>(tinterval,reltime)', + oprcode => 'tintervallenle' }, +{ oid => '580', descr => 'greater than or equal by length', + oprname => '#>=', oprleft => 'tinterval', oprright => 'reltime', + oprresult => 'bool', oprnegate => '#<(tinterval,reltime)', + oprcode => 'tintervallenge' }, +{ oid => '581', descr => 'add', + oprname => '+', oprleft => 'abstime', oprright => 'reltime', + oprresult => 'abstime', oprcode => 'timepl' }, +{ oid => '582', descr => 'subtract', + oprname => '-', oprleft => 'abstime', oprright => 'reltime', + oprresult => 'abstime', oprcode => 'timemi' }, +{ oid => '583', descr => 'is contained by', + oprname => '', oprleft => 'abstime', oprright => 'tinterval', + oprresult => 'bool', oprcode => 'intinterval' }, +{ oid => '584', descr => 'negate', + oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'float4', + oprresult => 'float4', oprcode => 'float4um' }, +{ oid => '585', descr => 'negate', + oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'float8', + oprresult => 'float8', oprcode => 'float8um' }, +{ oid => '586', descr => 'add', + oprname => '+', oprleft => 'float4', oprright => 'float4', + oprresult => 'float4', oprcom => '+(float4,float4)', oprcode => 'float4pl' }, +{ oid => '587', descr => 'subtract', + oprname => '-', oprleft => 'float4', oprright => 'float4', + oprresult => 'float4', oprcode => 'float4mi' }, +{ oid => '588', descr => 'divide', + oprname => '/', oprleft => 'float4', oprright => 'float4', + oprresult => 'float4', oprcode => 'float4div' }, +{ oid => '589', descr => 'multiply', + oprname => '*', oprleft => 'float4', oprright => 'float4', + oprresult => 'float4', oprcom => '*(float4,float4)', oprcode => 'float4mul' }, +{ oid => '590', descr => 'absolute value', + oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'float4', + oprresult => 'float4', oprcode => 'float4abs' }, +{ oid => '591', descr => 'add', + oprname => '+', oprleft => 'float8', oprright => 'float8', + oprresult => 'float8', oprcom => '+(float8,float8)', oprcode => 'float8pl' }, +{ oid => '592', descr => 'subtract', + oprname => '-', oprleft => 'float8', oprright => 'float8', + oprresult => 'float8', oprcode => 'float8mi' }, +{ oid => '593', descr => 'divide', + oprname => '/', oprleft => 'float8', oprright => 'float8', + oprresult => 'float8', oprcode => 'float8div' }, +{ oid => '594', descr => 'multiply', + oprname => '*', oprleft => 'float8', oprright => 'float8', + oprresult => 'float8', oprcom => '*(float8,float8)', oprcode => 'float8mul' }, +{ oid => '595', descr => 'absolute value', + oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'float8', + oprresult => 'float8', oprcode => 'float8abs' }, +{ oid => '596', descr => 'square root', + oprname => '|/', oprkind => 'l', oprleft => '0', oprright => 'float8', + oprresult => 'float8', oprcode => 'dsqrt' }, +{ oid => '597', descr => 'cube root', + oprname => '||/', oprkind => 'l', oprleft => '0', oprright => 'float8', + oprresult => 'float8', oprcode => 'dcbrt' }, +{ oid => '1284', descr => 'start of interval', + oprname => '|', oprkind => 'l', oprleft => '0', oprright => 'tinterval', + oprresult => 'abstime', oprcode => 'tintervalstart' }, +{ oid => '606', descr => 'convert to tinterval', + oprname => '<#>', oprleft => 'abstime', oprright => 'abstime', + oprresult => 'tinterval', oprcode => 'mktinterval' }, + +{ oid => '607', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'oid', + oprright => 'oid', oprresult => 'bool', oprcom => '=(oid,oid)', + oprnegate => '<>(oid,oid)', oprcode => 'oideq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '608', descr => 'not equal', + oprname => '<>', oprleft => 'oid', oprright => 'oid', oprresult => 'bool', + oprcom => '<>(oid,oid)', oprnegate => '=(oid,oid)', oprcode => 'oidne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '609', descr => 'less than', + oprname => '<', oprleft => 'oid', oprright => 'oid', oprresult => 'bool', + oprcom => '>(oid,oid)', oprnegate => '>=(oid,oid)', oprcode => 'oidlt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '610', descr => 'greater than', + oprname => '>', oprleft => 'oid', oprright => 'oid', oprresult => 'bool', + oprcom => '<(oid,oid)', oprnegate => '<=(oid,oid)', oprcode => 'oidgt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '611', descr => 'less than or equal', + oprname => '<=', oprleft => 'oid', oprright => 'oid', oprresult => 'bool', + oprcom => '>=(oid,oid)', oprnegate => '>(oid,oid)', oprcode => 'oidle', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '612', descr => 'greater than or equal', + oprname => '>=', oprleft => 'oid', oprright => 'oid', oprresult => 'bool', + oprcom => '<=(oid,oid)', oprnegate => '<(oid,oid)', oprcode => 'oidge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '644', descr => 'not equal', + oprname => '<>', oprleft => 'oidvector', oprright => 'oidvector', + oprresult => 'bool', oprcom => '<>(oidvector,oidvector)', + oprnegate => '=(oidvector,oidvector)', oprcode => 'oidvectorne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '645', descr => 'less than', + oprname => '<', oprleft => 'oidvector', oprright => 'oidvector', + oprresult => 'bool', oprcom => '>(oidvector,oidvector)', + oprnegate => '>=(oidvector,oidvector)', oprcode => 'oidvectorlt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '646', descr => 'greater than', + oprname => '>', oprleft => 'oidvector', oprright => 'oidvector', + oprresult => 'bool', oprcom => '<(oidvector,oidvector)', + oprnegate => '<=(oidvector,oidvector)', oprcode => 'oidvectorgt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '647', descr => 'less than or equal', + oprname => '<=', oprleft => 'oidvector', oprright => 'oidvector', + oprresult => 'bool', oprcom => '>=(oidvector,oidvector)', + oprnegate => '>(oidvector,oidvector)', oprcode => 'oidvectorle', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '648', descr => 'greater than or equal', + oprname => '>=', oprleft => 'oidvector', oprright => 'oidvector', + oprresult => 'bool', oprcom => '<=(oidvector,oidvector)', + oprnegate => '<(oidvector,oidvector)', oprcode => 'oidvectorge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '649', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'oidvector', + oprright => 'oidvector', oprresult => 'bool', + oprcom => '=(oidvector,oidvector)', oprnegate => '<>(oidvector,oidvector)', + oprcode => 'oidvectoreq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, + +{ oid => '613', descr => 'distance between', + oprname => '<->', oprleft => 'point', oprright => 'line', + oprresult => 'float8', oprcode => 'dist_pl' }, +{ oid => '614', descr => 'distance between', + oprname => '<->', oprleft => 'point', oprright => 'lseg', + oprresult => 'float8', oprcode => 'dist_ps' }, +{ oid => '615', descr => 'distance between', + oprname => '<->', oprleft => 'point', oprright => 'box', + oprresult => 'float8', oprcode => 'dist_pb' }, +{ oid => '616', descr => 'distance between', + oprname => '<->', oprleft => 'lseg', oprright => 'line', + oprresult => 'float8', oprcode => 'dist_sl' }, +{ oid => '617', descr => 'distance between', + oprname => '<->', oprleft => 'lseg', oprright => 'box', oprresult => 'float8', + oprcode => 'dist_sb' }, +{ oid => '618', descr => 'distance between', + oprname => '<->', oprleft => 'point', oprright => 'path', + oprresult => 'float8', oprcode => 'dist_ppath' }, + +{ oid => '620', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'float4', + oprright => 'float4', oprresult => 'bool', oprcom => '=(float4,float4)', + oprnegate => '<>(float4,float4)', oprcode => 'float4eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '621', descr => 'not equal', + oprname => '<>', oprleft => 'float4', oprright => 'float4', + oprresult => 'bool', oprcom => '<>(float4,float4)', + oprnegate => '=(float4,float4)', oprcode => 'float4ne', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '622', descr => 'less than', + oprname => '<', oprleft => 'float4', oprright => 'float4', + oprresult => 'bool', oprcom => '>(float4,float4)', + oprnegate => '>=(float4,float4)', oprcode => 'float4lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '623', descr => 'greater than', + oprname => '>', oprleft => 'float4', oprright => 'float4', + oprresult => 'bool', oprcom => '<(float4,float4)', + oprnegate => '<=(float4,float4)', oprcode => 'float4gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '624', descr => 'less than or equal', + oprname => '<=', oprleft => 'float4', oprright => 'float4', + oprresult => 'bool', oprcom => '>=(float4,float4)', + oprnegate => '>(float4,float4)', oprcode => 'float4le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '625', descr => 'greater than or equal', + oprname => '>=', oprleft => 'float4', oprright => 'float4', + oprresult => 'bool', oprcom => '<=(float4,float4)', + oprnegate => '<(float4,float4)', oprcode => 'float4ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '630', descr => 'not equal', + oprname => '<>', oprleft => 'char', oprright => 'char', oprresult => 'bool', + oprcom => '<>(char,char)', oprnegate => '=(char,char)', oprcode => 'charne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, + +{ oid => '631', descr => 'less than', + oprname => '<', oprleft => 'char', oprright => 'char', oprresult => 'bool', + oprcom => '>(char,char)', oprnegate => '>=(char,char)', oprcode => 'charlt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '632', descr => 'less than or equal', + oprname => '<=', oprleft => 'char', oprright => 'char', oprresult => 'bool', + oprcom => '>=(char,char)', oprnegate => '>(char,char)', oprcode => 'charle', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '633', descr => 'greater than', + oprname => '>', oprleft => 'char', oprright => 'char', oprresult => 'bool', + oprcom => '<(char,char)', oprnegate => '<=(char,char)', oprcode => 'chargt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '634', descr => 'greater than or equal', + oprname => '>=', oprleft => 'char', oprright => 'char', oprresult => 'bool', + oprcom => '<=(char,char)', oprnegate => '<(char,char)', oprcode => 'charge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '639', oid_symbol => 'OID_NAME_REGEXEQ_OP', + descr => 'matches regular expression, case-sensitive', + oprname => '~', oprleft => 'name', oprright => 'text', oprresult => 'bool', + oprnegate => '!~(name,text)', oprcode => 'nameregexeq', + oprrest => 'regexeqsel', oprjoin => 'regexeqjoinsel' }, +{ oid => '640', descr => 'does not match regular expression, case-sensitive', + oprname => '!~', oprleft => 'name', oprright => 'text', oprresult => 'bool', + oprnegate => '~(name,text)', oprcode => 'nameregexne', + oprrest => 'regexnesel', oprjoin => 'regexnejoinsel' }, +{ oid => '641', oid_symbol => 'OID_TEXT_REGEXEQ_OP', + descr => 'matches regular expression, case-sensitive', + oprname => '~', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprnegate => '!~(text,text)', oprcode => 'textregexeq', + oprrest => 'regexeqsel', oprjoin => 'regexeqjoinsel' }, +{ oid => '642', descr => 'does not match regular expression, case-sensitive', + oprname => '!~', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprnegate => '~(text,text)', oprcode => 'textregexne', + oprrest => 'regexnesel', oprjoin => 'regexnejoinsel' }, +{ oid => '643', descr => 'not equal', + oprname => '<>', oprleft => 'name', oprright => 'name', oprresult => 'bool', + oprcom => '<>(name,name)', oprnegate => '=(name,name)', oprcode => 'namene', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '654', descr => 'concatenate', + oprname => '||', oprleft => 'text', oprright => 'text', oprresult => 'text', + oprcode => 'textcat' }, + +{ oid => '660', descr => 'less than', + oprname => '<', oprleft => 'name', oprright => 'name', oprresult => 'bool', + oprcom => '>(name,name)', oprnegate => '>=(name,name)', oprcode => 'namelt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '661', descr => 'less than or equal', + oprname => '<=', oprleft => 'name', oprright => 'name', oprresult => 'bool', + oprcom => '>=(name,name)', oprnegate => '>(name,name)', oprcode => 'namele', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '662', descr => 'greater than', + oprname => '>', oprleft => 'name', oprright => 'name', oprresult => 'bool', + oprcom => '<(name,name)', oprnegate => '<=(name,name)', oprcode => 'namegt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '663', descr => 'greater than or equal', + oprname => '>=', oprleft => 'name', oprright => 'name', oprresult => 'bool', + oprcom => '<=(name,name)', oprnegate => '<(name,name)', oprcode => 'namege', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '664', descr => 'less than', + oprname => '<', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprcom => '>(text,text)', oprnegate => '>=(text,text)', oprcode => 'text_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '665', descr => 'less than or equal', + oprname => '<=', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprcom => '>=(text,text)', oprnegate => '>(text,text)', oprcode => 'text_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '666', descr => 'greater than', + oprname => '>', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprcom => '<(text,text)', oprnegate => '<=(text,text)', oprcode => 'text_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '667', descr => 'greater than or equal', + oprname => '>=', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprcom => '<=(text,text)', oprnegate => '<(text,text)', oprcode => 'text_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '670', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'float8', + oprright => 'float8', oprresult => 'bool', oprcom => '=(float8,float8)', + oprnegate => '<>(float8,float8)', oprcode => 'float8eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '671', descr => 'not equal', + oprname => '<>', oprleft => 'float8', oprright => 'float8', + oprresult => 'bool', oprcom => '<>(float8,float8)', + oprnegate => '=(float8,float8)', oprcode => 'float8ne', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '672', oid_symbol => 'Float8LessOperator', descr => 'less than', + oprname => '<', oprleft => 'float8', oprright => 'float8', + oprresult => 'bool', oprcom => '>(float8,float8)', + oprnegate => '>=(float8,float8)', oprcode => 'float8lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '673', descr => 'less than or equal', + oprname => '<=', oprleft => 'float8', oprright => 'float8', + oprresult => 'bool', oprcom => '>=(float8,float8)', + oprnegate => '>(float8,float8)', oprcode => 'float8le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '674', descr => 'greater than', + oprname => '>', oprleft => 'float8', oprright => 'float8', + oprresult => 'bool', oprcom => '<(float8,float8)', + oprnegate => '<=(float8,float8)', oprcode => 'float8gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '675', descr => 'greater than or equal', + oprname => '>=', oprleft => 'float8', oprright => 'float8', + oprresult => 'bool', oprcom => '<=(float8,float8)', + oprnegate => '<(float8,float8)', oprcode => 'float8ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '682', descr => 'absolute value', + oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'int2', + oprresult => 'int2', oprcode => 'int2abs' }, +{ oid => '684', descr => 'add', + oprname => '+', oprleft => 'int8', oprright => 'int8', oprresult => 'int8', + oprcom => '+(int8,int8)', oprcode => 'int8pl' }, +{ oid => '685', descr => 'subtract', + oprname => '-', oprleft => 'int8', oprright => 'int8', oprresult => 'int8', + oprcode => 'int8mi' }, +{ oid => '686', descr => 'multiply', + oprname => '*', oprleft => 'int8', oprright => 'int8', oprresult => 'int8', + oprcom => '*(int8,int8)', oprcode => 'int8mul' }, +{ oid => '687', descr => 'divide', + oprname => '/', oprleft => 'int8', oprright => 'int8', oprresult => 'int8', + oprcode => 'int8div' }, + +{ oid => '688', descr => 'add', + oprname => '+', oprleft => 'int8', oprright => 'int4', oprresult => 'int8', + oprcom => '+(int4,int8)', oprcode => 'int84pl' }, +{ oid => '689', descr => 'subtract', + oprname => '-', oprleft => 'int8', oprright => 'int4', oprresult => 'int8', + oprcode => 'int84mi' }, +{ oid => '690', descr => 'multiply', + oprname => '*', oprleft => 'int8', oprright => 'int4', oprresult => 'int8', + oprcom => '*(int4,int8)', oprcode => 'int84mul' }, +{ oid => '691', descr => 'divide', + oprname => '/', oprleft => 'int8', oprright => 'int4', oprresult => 'int8', + oprcode => 'int84div' }, +{ oid => '692', descr => 'add', + oprname => '+', oprleft => 'int4', oprright => 'int8', oprresult => 'int8', + oprcom => '+(int8,int4)', oprcode => 'int48pl' }, +{ oid => '693', descr => 'subtract', + oprname => '-', oprleft => 'int4', oprright => 'int8', oprresult => 'int8', + oprcode => 'int48mi' }, +{ oid => '694', descr => 'multiply', + oprname => '*', oprleft => 'int4', oprright => 'int8', oprresult => 'int8', + oprcom => '*(int8,int4)', oprcode => 'int48mul' }, +{ oid => '695', descr => 'divide', + oprname => '/', oprleft => 'int4', oprright => 'int8', oprresult => 'int8', + oprcode => 'int48div' }, + +{ oid => '818', descr => 'add', + oprname => '+', oprleft => 'int8', oprright => 'int2', oprresult => 'int8', + oprcom => '+(int2,int8)', oprcode => 'int82pl' }, +{ oid => '819', descr => 'subtract', + oprname => '-', oprleft => 'int8', oprright => 'int2', oprresult => 'int8', + oprcode => 'int82mi' }, +{ oid => '820', descr => 'multiply', + oprname => '*', oprleft => 'int8', oprright => 'int2', oprresult => 'int8', + oprcom => '*(int2,int8)', oprcode => 'int82mul' }, +{ oid => '821', descr => 'divide', + oprname => '/', oprleft => 'int8', oprright => 'int2', oprresult => 'int8', + oprcode => 'int82div' }, +{ oid => '822', descr => 'add', + oprname => '+', oprleft => 'int2', oprright => 'int8', oprresult => 'int8', + oprcom => '+(int8,int2)', oprcode => 'int28pl' }, +{ oid => '823', descr => 'subtract', + oprname => '-', oprleft => 'int2', oprright => 'int8', oprresult => 'int8', + oprcode => 'int28mi' }, +{ oid => '824', descr => 'multiply', + oprname => '*', oprleft => 'int2', oprright => 'int8', oprresult => 'int8', + oprcom => '*(int8,int2)', oprcode => 'int28mul' }, +{ oid => '825', descr => 'divide', + oprname => '/', oprleft => 'int2', oprright => 'int8', oprresult => 'int8', + oprcode => 'int28div' }, + +{ oid => '706', descr => 'distance between', + oprname => '<->', oprleft => 'box', oprright => 'box', oprresult => 'float8', + oprcom => '<->(box,box)', oprcode => 'box_distance' }, +{ oid => '707', descr => 'distance between', + oprname => '<->', oprleft => 'path', oprright => 'path', + oprresult => 'float8', oprcom => '<->(path,path)', + oprcode => 'path_distance' }, +{ oid => '708', descr => 'distance between', + oprname => '<->', oprleft => 'line', oprright => 'line', + oprresult => 'float8', oprcom => '<->(line,line)', + oprcode => 'line_distance' }, +{ oid => '709', descr => 'distance between', + oprname => '<->', oprleft => 'lseg', oprright => 'lseg', + oprresult => 'float8', oprcom => '<->(lseg,lseg)', + oprcode => 'lseg_distance' }, +{ oid => '712', descr => 'distance between', + oprname => '<->', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'float8', oprcom => '<->(polygon,polygon)', + oprcode => 'poly_distance' }, + +{ oid => '713', descr => 'not equal', + oprname => '<>', oprleft => 'point', oprright => 'point', oprresult => 'bool', + oprcom => '<>(point,point)', oprnegate => '~=(point,point)', + oprcode => 'point_ne', oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, + +# add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 +{ oid => '731', descr => 'add points (translate)', + oprname => '+', oprleft => 'point', oprright => 'point', oprresult => 'point', + oprcom => '+(point,point)', oprcode => 'point_add' }, +{ oid => '732', descr => 'subtract points (translate)', + oprname => '-', oprleft => 'point', oprright => 'point', oprresult => 'point', + oprcode => 'point_sub' }, +{ oid => '733', descr => 'multiply points (scale/rotate)', + oprname => '*', oprleft => 'point', oprright => 'point', oprresult => 'point', + oprcom => '*(point,point)', oprcode => 'point_mul' }, +{ oid => '734', descr => 'divide points (scale/rotate)', + oprname => '/', oprleft => 'point', oprright => 'point', oprresult => 'point', + oprcode => 'point_div' }, +{ oid => '735', descr => 'concatenate', + oprname => '+', oprleft => 'path', oprright => 'path', oprresult => 'path', + oprcom => '+(path,path)', oprcode => 'path_add' }, +{ oid => '736', descr => 'add (translate path)', + oprname => '+', oprleft => 'path', oprright => 'point', oprresult => 'path', + oprcode => 'path_add_pt' }, +{ oid => '737', descr => 'subtract (translate path)', + oprname => '-', oprleft => 'path', oprright => 'point', oprresult => 'path', + oprcode => 'path_sub_pt' }, +{ oid => '738', descr => 'multiply (rotate/scale path)', + oprname => '*', oprleft => 'path', oprright => 'point', oprresult => 'path', + oprcode => 'path_mul_pt' }, +{ oid => '739', descr => 'divide (rotate/scale path)', + oprname => '/', oprleft => 'path', oprright => 'point', oprresult => 'path', + oprcode => 'path_div_pt' }, +{ oid => '755', descr => 'contains', + oprname => '@>', oprleft => 'path', oprright => 'point', oprresult => 'bool', + oprcom => '<@(point,path)', oprcode => 'path_contain_pt' }, +{ oid => '756', descr => 'is contained by', + oprname => '<@', oprleft => 'point', oprright => 'polygon', + oprresult => 'bool', oprcom => '@>(polygon,point)', + oprcode => 'pt_contained_poly', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '757', descr => 'contains', + oprname => '@>', oprleft => 'polygon', oprright => 'point', + oprresult => 'bool', oprcom => '<@(point,polygon)', + oprcode => 'poly_contain_pt', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '758', descr => 'is contained by', + oprname => '<@', oprleft => 'point', oprright => 'circle', + oprresult => 'bool', oprcom => '@>(circle,point)', + oprcode => 'pt_contained_circle', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '759', descr => 'contains', + oprname => '@>', oprleft => 'circle', oprright => 'point', + oprresult => 'bool', oprcom => '<@(point,circle)', + oprcode => 'circle_contain_pt', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, + +{ oid => '773', descr => 'absolute value', + oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'int4', + oprresult => 'int4', oprcode => 'int4abs' }, + +# additional operators for geometric types - thomas 1997-07-09 +{ oid => '792', descr => 'equal', + oprname => '=', oprleft => 'path', oprright => 'path', oprresult => 'bool', + oprcom => '=(path,path)', oprcode => 'path_n_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '793', descr => 'less than', + oprname => '<', oprleft => 'path', oprright => 'path', oprresult => 'bool', + oprcom => '>(path,path)', oprcode => 'path_n_lt' }, +{ oid => '794', descr => 'greater than', + oprname => '>', oprleft => 'path', oprright => 'path', oprresult => 'bool', + oprcom => '<(path,path)', oprcode => 'path_n_gt' }, +{ oid => '795', descr => 'less than or equal', + oprname => '<=', oprleft => 'path', oprright => 'path', oprresult => 'bool', + oprcom => '>=(path,path)', oprcode => 'path_n_le' }, +{ oid => '796', descr => 'greater than or equal', + oprname => '>=', oprleft => 'path', oprright => 'path', oprresult => 'bool', + oprcom => '<=(path,path)', oprcode => 'path_n_ge' }, +{ oid => '797', descr => 'number of points', + oprname => '#', oprkind => 'l', oprleft => '0', oprright => 'path', + oprresult => 'int4', oprcode => 'path_npoints' }, +{ oid => '798', descr => 'intersect', + oprname => '?#', oprleft => 'path', oprright => 'path', oprresult => 'bool', + oprcode => 'path_inter' }, +{ oid => '799', descr => 'sum of path segment lengths', + oprname => '@-@', oprkind => 'l', oprleft => '0', oprright => 'path', + oprresult => 'float8', oprcode => 'path_length' }, +{ oid => '800', descr => 'is above (allows touching)', + oprname => '>^', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcode => 'box_above_eq', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '801', descr => 'is below (allows touching)', + oprname => '<^', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcode => 'box_below_eq', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '802', descr => 'deprecated, use && instead', + oprname => '?#', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcode => 'box_overlap', oprrest => 'areasel', oprjoin => 'areajoinsel' }, +{ oid => '803', descr => 'box intersection', + oprname => '#', oprleft => 'box', oprright => 'box', oprresult => 'box', + oprcode => 'box_intersect' }, +{ oid => '804', descr => 'add point to box (translate)', + oprname => '+', oprleft => 'box', oprright => 'point', oprresult => 'box', + oprcode => 'box_add' }, +{ oid => '805', descr => 'subtract point from box (translate)', + oprname => '-', oprleft => 'box', oprright => 'point', oprresult => 'box', + oprcode => 'box_sub' }, +{ oid => '806', descr => 'multiply box by point (scale)', + oprname => '*', oprleft => 'box', oprright => 'point', oprresult => 'box', + oprcode => 'box_mul' }, +{ oid => '807', descr => 'divide box by point (scale)', + oprname => '/', oprleft => 'box', oprright => 'point', oprresult => 'box', + oprcode => 'box_div' }, +{ oid => '808', descr => 'horizontally aligned', + oprname => '?-', oprleft => 'point', oprright => 'point', oprresult => 'bool', + oprcom => '?-(point,point)', oprcode => 'point_horiz' }, +{ oid => '809', descr => 'vertically aligned', + oprname => '?|', oprleft => 'point', oprright => 'point', oprresult => 'bool', + oprcom => '?|(point,point)', oprcode => 'point_vert' }, + +{ oid => '811', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'tinterval', + oprright => 'tinterval', oprresult => 'bool', + oprcom => '=(tinterval,tinterval)', oprnegate => '<>(tinterval,tinterval)', + oprcode => 'tintervaleq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '812', descr => 'not equal', + oprname => '<>', oprleft => 'tinterval', oprright => 'tinterval', + oprresult => 'bool', oprcom => '<>(tinterval,tinterval)', + oprnegate => '=(tinterval,tinterval)', oprcode => 'tintervalne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '813', descr => 'less than', + oprname => '<', oprleft => 'tinterval', oprright => 'tinterval', + oprresult => 'bool', oprcom => '>(tinterval,tinterval)', + oprnegate => '>=(tinterval,tinterval)', oprcode => 'tintervallt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '814', descr => 'greater than', + oprname => '>', oprleft => 'tinterval', oprright => 'tinterval', + oprresult => 'bool', oprcom => '<(tinterval,tinterval)', + oprnegate => '<=(tinterval,tinterval)', oprcode => 'tintervalgt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '815', descr => 'less than or equal', + oprname => '<=', oprleft => 'tinterval', oprright => 'tinterval', + oprresult => 'bool', oprcom => '>=(tinterval,tinterval)', + oprnegate => '>(tinterval,tinterval)', oprcode => 'tintervalle', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '816', descr => 'greater than or equal', + oprname => '>=', oprleft => 'tinterval', oprright => 'tinterval', + oprresult => 'bool', oprcom => '<=(tinterval,tinterval)', + oprnegate => '<(tinterval,tinterval)', oprcode => 'tintervalge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '843', descr => 'multiply', + oprname => '*', oprleft => 'money', oprright => 'float4', + oprresult => 'money', oprcom => '*(float4,money)', + oprcode => 'cash_mul_flt4' }, +{ oid => '844', descr => 'divide', + oprname => '/', oprleft => 'money', oprright => 'float4', + oprresult => 'money', oprcode => 'cash_div_flt4' }, +{ oid => '845', descr => 'multiply', + oprname => '*', oprleft => 'float4', oprright => 'money', + oprresult => 'money', oprcom => '*(money,float4)', + oprcode => 'flt4_mul_cash' }, + +{ oid => '900', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'money', oprright => 'money', + oprresult => 'bool', oprcom => '=(money,money)', + oprnegate => '<>(money,money)', oprcode => 'cash_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '901', descr => 'not equal', + oprname => '<>', oprleft => 'money', oprright => 'money', oprresult => 'bool', + oprcom => '<>(money,money)', oprnegate => '=(money,money)', + oprcode => 'cash_ne', oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '902', descr => 'less than', + oprname => '<', oprleft => 'money', oprright => 'money', oprresult => 'bool', + oprcom => '>(money,money)', oprnegate => '>=(money,money)', + oprcode => 'cash_lt', oprrest => 'scalarltsel', + oprjoin => 'scalarltjoinsel' }, +{ oid => '903', descr => 'greater than', + oprname => '>', oprleft => 'money', oprright => 'money', oprresult => 'bool', + oprcom => '<(money,money)', oprnegate => '<=(money,money)', + oprcode => 'cash_gt', oprrest => 'scalargtsel', + oprjoin => 'scalargtjoinsel' }, +{ oid => '904', descr => 'less than or equal', + oprname => '<=', oprleft => 'money', oprright => 'money', oprresult => 'bool', + oprcom => '>=(money,money)', oprnegate => '>(money,money)', + oprcode => 'cash_le', oprrest => 'scalarlesel', + oprjoin => 'scalarlejoinsel' }, +{ oid => '905', descr => 'greater than or equal', + oprname => '>=', oprleft => 'money', oprright => 'money', oprresult => 'bool', + oprcom => '<=(money,money)', oprnegate => '<(money,money)', + oprcode => 'cash_ge', oprrest => 'scalargesel', + oprjoin => 'scalargejoinsel' }, +{ oid => '906', descr => 'add', + oprname => '+', oprleft => 'money', oprright => 'money', oprresult => 'money', + oprcom => '+(money,money)', oprcode => 'cash_pl' }, +{ oid => '907', descr => 'subtract', + oprname => '-', oprleft => 'money', oprright => 'money', oprresult => 'money', + oprcode => 'cash_mi' }, +{ oid => '908', descr => 'multiply', + oprname => '*', oprleft => 'money', oprright => 'float8', + oprresult => 'money', oprcom => '*(float8,money)', + oprcode => 'cash_mul_flt8' }, +{ oid => '909', descr => 'divide', + oprname => '/', oprleft => 'money', oprright => 'float8', + oprresult => 'money', oprcode => 'cash_div_flt8' }, +{ oid => '3346', descr => 'multiply', + oprname => '*', oprleft => 'money', oprright => 'int8', oprresult => 'money', + oprcom => '*(int8,money)', oprcode => 'cash_mul_int8' }, +{ oid => '3347', descr => 'divide', + oprname => '/', oprleft => 'money', oprright => 'int8', oprresult => 'money', + oprcode => 'cash_div_int8' }, +{ oid => '912', descr => 'multiply', + oprname => '*', oprleft => 'money', oprright => 'int4', oprresult => 'money', + oprcom => '*(int4,money)', oprcode => 'cash_mul_int4' }, +{ oid => '913', descr => 'divide', + oprname => '/', oprleft => 'money', oprright => 'int4', oprresult => 'money', + oprcode => 'cash_div_int4' }, +{ oid => '914', descr => 'multiply', + oprname => '*', oprleft => 'money', oprright => 'int2', oprresult => 'money', + oprcom => '*(int2,money)', oprcode => 'cash_mul_int2' }, +{ oid => '915', descr => 'divide', + oprname => '/', oprleft => 'money', oprright => 'int2', oprresult => 'money', + oprcode => 'cash_div_int2' }, +{ oid => '916', descr => 'multiply', + oprname => '*', oprleft => 'float8', oprright => 'money', + oprresult => 'money', oprcom => '*(money,float8)', + oprcode => 'flt8_mul_cash' }, +{ oid => '3349', descr => 'multiply', + oprname => '*', oprleft => 'int8', oprright => 'money', oprresult => 'money', + oprcom => '*(money,int8)', oprcode => 'int8_mul_cash' }, +{ oid => '917', descr => 'multiply', + oprname => '*', oprleft => 'int4', oprright => 'money', oprresult => 'money', + oprcom => '*(money,int4)', oprcode => 'int4_mul_cash' }, +{ oid => '918', descr => 'multiply', + oprname => '*', oprleft => 'int2', oprright => 'money', oprresult => 'money', + oprcom => '*(money,int2)', oprcode => 'int2_mul_cash' }, +{ oid => '3825', descr => 'divide', + oprname => '/', oprleft => 'money', oprright => 'money', + oprresult => 'float8', oprcode => 'cash_div_cash' }, + +{ oid => '965', descr => 'exponentiation', + oprname => '^', oprleft => 'float8', oprright => 'float8', + oprresult => 'float8', oprcode => 'dpow' }, +{ oid => '966', descr => 'add/update ACL item', + oprname => '+', oprleft => '_aclitem', oprright => 'aclitem', + oprresult => '_aclitem', oprcode => 'aclinsert' }, +{ oid => '967', descr => 'remove ACL item', + oprname => '-', oprleft => '_aclitem', oprright => 'aclitem', + oprresult => '_aclitem', oprcode => 'aclremove' }, +{ oid => '968', descr => 'contains', + oprname => '@>', oprleft => '_aclitem', oprright => 'aclitem', + oprresult => 'bool', oprcode => 'aclcontains' }, +{ oid => '974', descr => 'equal', + oprname => '=', oprcanhash => 't', oprleft => 'aclitem', + oprright => 'aclitem', oprresult => 'bool', oprcom => '=(aclitem,aclitem)', + oprcode => 'aclitemeq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, + +# additional geometric operators - thomas 1997-07-09 +{ oid => '969', descr => 'center of', + oprname => '@@', oprkind => 'l', oprleft => '0', oprright => 'lseg', + oprresult => 'point', oprcode => 'lseg_center' }, +{ oid => '970', descr => 'center of', + oprname => '@@', oprkind => 'l', oprleft => '0', oprright => 'path', + oprresult => 'point', oprcode => 'path_center' }, +{ oid => '971', descr => 'center of', + oprname => '@@', oprkind => 'l', oprleft => '0', oprright => 'polygon', + oprresult => 'point', oprcode => 'poly_center' }, + +{ oid => '1054', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'bpchar', + oprright => 'bpchar', oprresult => 'bool', oprcom => '=(bpchar,bpchar)', + oprnegate => '<>(bpchar,bpchar)', oprcode => 'bpchareq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, + +{ oid => '1055', oid_symbol => 'OID_BPCHAR_REGEXEQ_OP', + descr => 'matches regular expression, case-sensitive', + oprname => '~', oprleft => 'bpchar', oprright => 'text', oprresult => 'bool', + oprnegate => '!~(bpchar,text)', oprcode => 'bpcharregexeq', + oprrest => 'regexeqsel', oprjoin => 'regexeqjoinsel' }, +{ oid => '1056', descr => 'does not match regular expression, case-sensitive', + oprname => '!~', oprleft => 'bpchar', oprright => 'text', oprresult => 'bool', + oprnegate => '~(bpchar,text)', oprcode => 'bpcharregexne', + oprrest => 'regexnesel', oprjoin => 'regexnejoinsel' }, +{ oid => '1057', descr => 'not equal', + oprname => '<>', oprleft => 'bpchar', oprright => 'bpchar', + oprresult => 'bool', oprcom => '<>(bpchar,bpchar)', + oprnegate => '=(bpchar,bpchar)', oprcode => 'bpcharne', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '1058', descr => 'less than', + oprname => '<', oprleft => 'bpchar', oprright => 'bpchar', + oprresult => 'bool', oprcom => '>(bpchar,bpchar)', + oprnegate => '>=(bpchar,bpchar)', oprcode => 'bpcharlt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1059', descr => 'less than or equal', + oprname => '<=', oprleft => 'bpchar', oprright => 'bpchar', + oprresult => 'bool', oprcom => '>=(bpchar,bpchar)', + oprnegate => '>(bpchar,bpchar)', oprcode => 'bpcharle', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1060', descr => 'greater than', + oprname => '>', oprleft => 'bpchar', oprright => 'bpchar', + oprresult => 'bool', oprcom => '<(bpchar,bpchar)', + oprnegate => '<=(bpchar,bpchar)', oprcode => 'bpchargt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1061', descr => 'greater than or equal', + oprname => '>=', oprleft => 'bpchar', oprright => 'bpchar', + oprresult => 'bool', oprcom => '<=(bpchar,bpchar)', + oprnegate => '<(bpchar,bpchar)', oprcode => 'bpcharge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +# generic array comparison operators +{ oid => '1070', oid_symbol => 'ARRAY_EQ_OP', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'anyarray', + oprright => 'anyarray', oprresult => 'bool', oprcom => '=(anyarray,anyarray)', + oprnegate => '<>(anyarray,anyarray)', oprcode => 'array_eq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '1071', descr => 'not equal', + oprname => '<>', oprleft => 'anyarray', oprright => 'anyarray', + oprresult => 'bool', oprcom => '<>(anyarray,anyarray)', + oprnegate => '=(anyarray,anyarray)', oprcode => 'array_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1072', oid_symbol => 'ARRAY_LT_OP', descr => 'less than', + oprname => '<', oprleft => 'anyarray', oprright => 'anyarray', + oprresult => 'bool', oprcom => '>(anyarray,anyarray)', + oprnegate => '>=(anyarray,anyarray)', oprcode => 'array_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1073', oid_symbol => 'ARRAY_GT_OP', descr => 'greater than', + oprname => '>', oprleft => 'anyarray', oprright => 'anyarray', + oprresult => 'bool', oprcom => '<(anyarray,anyarray)', + oprnegate => '<=(anyarray,anyarray)', oprcode => 'array_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1074', descr => 'less than or equal', + oprname => '<=', oprleft => 'anyarray', oprright => 'anyarray', + oprresult => 'bool', oprcom => '>=(anyarray,anyarray)', + oprnegate => '>(anyarray,anyarray)', oprcode => 'array_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1075', descr => 'greater than or equal', + oprname => '>=', oprleft => 'anyarray', oprright => 'anyarray', + oprresult => 'bool', oprcom => '<=(anyarray,anyarray)', + oprnegate => '<(anyarray,anyarray)', oprcode => 'array_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +# date operators +{ oid => '1076', descr => 'add', + oprname => '+', oprleft => 'date', oprright => 'interval', + oprresult => 'timestamp', oprcom => '+(interval,date)', + oprcode => 'date_pl_interval' }, +{ oid => '1077', descr => 'subtract', + oprname => '-', oprleft => 'date', oprright => 'interval', + oprresult => 'timestamp', oprcode => 'date_mi_interval' }, +{ oid => '1093', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'date', + oprright => 'date', oprresult => 'bool', oprcom => '=(date,date)', + oprnegate => '<>(date,date)', oprcode => 'date_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1094', descr => 'not equal', + oprname => '<>', oprleft => 'date', oprright => 'date', oprresult => 'bool', + oprcom => '<>(date,date)', oprnegate => '=(date,date)', oprcode => 'date_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1095', descr => 'less than', + oprname => '<', oprleft => 'date', oprright => 'date', oprresult => 'bool', + oprcom => '>(date,date)', oprnegate => '>=(date,date)', oprcode => 'date_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1096', descr => 'less than or equal', + oprname => '<=', oprleft => 'date', oprright => 'date', oprresult => 'bool', + oprcom => '>=(date,date)', oprnegate => '>(date,date)', oprcode => 'date_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1097', descr => 'greater than', + oprname => '>', oprleft => 'date', oprright => 'date', oprresult => 'bool', + oprcom => '<(date,date)', oprnegate => '<=(date,date)', oprcode => 'date_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1098', descr => 'greater than or equal', + oprname => '>=', oprleft => 'date', oprright => 'date', oprresult => 'bool', + oprcom => '<=(date,date)', oprnegate => '<(date,date)', oprcode => 'date_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '1099', descr => 'subtract', + oprname => '-', oprleft => 'date', oprright => 'date', oprresult => 'int4', + oprcode => 'date_mi' }, +{ oid => '1100', descr => 'add', + oprname => '+', oprleft => 'date', oprright => 'int4', oprresult => 'date', + oprcom => '+(int4,date)', oprcode => 'date_pli' }, +{ oid => '1101', descr => 'subtract', + oprname => '-', oprleft => 'date', oprright => 'int4', oprresult => 'date', + oprcode => 'date_mii' }, + +# time operators +{ oid => '1108', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'time', + oprright => 'time', oprresult => 'bool', oprcom => '=(time,time)', + oprnegate => '<>(time,time)', oprcode => 'time_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1109', descr => 'not equal', + oprname => '<>', oprleft => 'time', oprright => 'time', oprresult => 'bool', + oprcom => '<>(time,time)', oprnegate => '=(time,time)', oprcode => 'time_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1110', descr => 'less than', + oprname => '<', oprleft => 'time', oprright => 'time', oprresult => 'bool', + oprcom => '>(time,time)', oprnegate => '>=(time,time)', oprcode => 'time_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1111', descr => 'less than or equal', + oprname => '<=', oprleft => 'time', oprright => 'time', oprresult => 'bool', + oprcom => '>=(time,time)', oprnegate => '>(time,time)', oprcode => 'time_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1112', descr => 'greater than', + oprname => '>', oprleft => 'time', oprright => 'time', oprresult => 'bool', + oprcom => '<(time,time)', oprnegate => '<=(time,time)', oprcode => 'time_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1113', descr => 'greater than or equal', + oprname => '>=', oprleft => 'time', oprright => 'time', oprresult => 'bool', + oprcom => '<=(time,time)', oprnegate => '<(time,time)', oprcode => 'time_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +# timetz operators +{ oid => '1550', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'timetz', + oprright => 'timetz', oprresult => 'bool', oprcom => '=(timetz,timetz)', + oprnegate => '<>(timetz,timetz)', oprcode => 'timetz_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1551', descr => 'not equal', + oprname => '<>', oprleft => 'timetz', oprright => 'timetz', + oprresult => 'bool', oprcom => '<>(timetz,timetz)', + oprnegate => '=(timetz,timetz)', oprcode => 'timetz_ne', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '1552', descr => 'less than', + oprname => '<', oprleft => 'timetz', oprright => 'timetz', + oprresult => 'bool', oprcom => '>(timetz,timetz)', + oprnegate => '>=(timetz,timetz)', oprcode => 'timetz_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1553', descr => 'less than or equal', + oprname => '<=', oprleft => 'timetz', oprright => 'timetz', + oprresult => 'bool', oprcom => '>=(timetz,timetz)', + oprnegate => '>(timetz,timetz)', oprcode => 'timetz_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1554', descr => 'greater than', + oprname => '>', oprleft => 'timetz', oprright => 'timetz', + oprresult => 'bool', oprcom => '<(timetz,timetz)', + oprnegate => '<=(timetz,timetz)', oprcode => 'timetz_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1555', descr => 'greater than or equal', + oprname => '>=', oprleft => 'timetz', oprright => 'timetz', + oprresult => 'bool', oprcom => '<=(timetz,timetz)', + oprnegate => '<(timetz,timetz)', oprcode => 'timetz_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +# float48 operators +{ oid => '1116', descr => 'add', + oprname => '+', oprleft => 'float4', oprright => 'float8', + oprresult => 'float8', oprcom => '+(float8,float4)', oprcode => 'float48pl' }, +{ oid => '1117', descr => 'subtract', + oprname => '-', oprleft => 'float4', oprright => 'float8', + oprresult => 'float8', oprcode => 'float48mi' }, +{ oid => '1118', descr => 'divide', + oprname => '/', oprleft => 'float4', oprright => 'float8', + oprresult => 'float8', oprcode => 'float48div' }, +{ oid => '1119', descr => 'multiply', + oprname => '*', oprleft => 'float4', oprright => 'float8', + oprresult => 'float8', oprcom => '*(float8,float4)', + oprcode => 'float48mul' }, +{ oid => '1120', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'float4', + oprright => 'float8', oprresult => 'bool', oprcom => '=(float8,float4)', + oprnegate => '<>(float4,float8)', oprcode => 'float48eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1121', descr => 'not equal', + oprname => '<>', oprleft => 'float4', oprright => 'float8', + oprresult => 'bool', oprcom => '<>(float8,float4)', + oprnegate => '=(float4,float8)', oprcode => 'float48ne', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '1122', descr => 'less than', + oprname => '<', oprleft => 'float4', oprright => 'float8', + oprresult => 'bool', oprcom => '>(float8,float4)', + oprnegate => '>=(float4,float8)', oprcode => 'float48lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1123', descr => 'greater than', + oprname => '>', oprleft => 'float4', oprright => 'float8', + oprresult => 'bool', oprcom => '<(float8,float4)', + oprnegate => '<=(float4,float8)', oprcode => 'float48gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1124', descr => 'less than or equal', + oprname => '<=', oprleft => 'float4', oprright => 'float8', + oprresult => 'bool', oprcom => '>=(float8,float4)', + oprnegate => '>(float4,float8)', oprcode => 'float48le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1125', descr => 'greater than or equal', + oprname => '>=', oprleft => 'float4', oprright => 'float8', + oprresult => 'bool', oprcom => '<=(float8,float4)', + oprnegate => '<(float4,float8)', oprcode => 'float48ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +# float84 operators +{ oid => '1126', descr => 'add', + oprname => '+', oprleft => 'float8', oprright => 'float4', + oprresult => 'float8', oprcom => '+(float4,float8)', oprcode => 'float84pl' }, +{ oid => '1127', descr => 'subtract', + oprname => '-', oprleft => 'float8', oprright => 'float4', + oprresult => 'float8', oprcode => 'float84mi' }, +{ oid => '1128', descr => 'divide', + oprname => '/', oprleft => 'float8', oprright => 'float4', + oprresult => 'float8', oprcode => 'float84div' }, +{ oid => '1129', descr => 'multiply', + oprname => '*', oprleft => 'float8', oprright => 'float4', + oprresult => 'float8', oprcom => '*(float4,float8)', + oprcode => 'float84mul' }, +{ oid => '1130', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'float8', + oprright => 'float4', oprresult => 'bool', oprcom => '=(float4,float8)', + oprnegate => '<>(float8,float4)', oprcode => 'float84eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1131', descr => 'not equal', + oprname => '<>', oprleft => 'float8', oprright => 'float4', + oprresult => 'bool', oprcom => '<>(float4,float8)', + oprnegate => '=(float8,float4)', oprcode => 'float84ne', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '1132', descr => 'less than', + oprname => '<', oprleft => 'float8', oprright => 'float4', + oprresult => 'bool', oprcom => '>(float4,float8)', + oprnegate => '>=(float8,float4)', oprcode => 'float84lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1133', descr => 'greater than', + oprname => '>', oprleft => 'float8', oprright => 'float4', + oprresult => 'bool', oprcom => '<(float4,float8)', + oprnegate => '<=(float8,float4)', oprcode => 'float84gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1134', descr => 'less than or equal', + oprname => '<=', oprleft => 'float8', oprright => 'float4', + oprresult => 'bool', oprcom => '>=(float4,float8)', + oprnegate => '>(float8,float4)', oprcode => 'float84le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1135', descr => 'greater than or equal', + oprname => '>=', oprleft => 'float8', oprright => 'float4', + oprresult => 'bool', oprcom => '<=(float4,float8)', + oprnegate => '<(float8,float4)', oprcode => 'float84ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +# LIKE hacks by Keith Parks. +{ oid => '1207', oid_symbol => 'OID_NAME_LIKE_OP', + descr => 'matches LIKE expression', + oprname => '~~', oprleft => 'name', oprright => 'text', oprresult => 'bool', + oprnegate => '!~~(name,text)', oprcode => 'namelike', oprrest => 'likesel', + oprjoin => 'likejoinsel' }, +{ oid => '1208', descr => 'does not match LIKE expression', + oprname => '!~~', oprleft => 'name', oprright => 'text', oprresult => 'bool', + oprnegate => '~~(name,text)', oprcode => 'namenlike', oprrest => 'nlikesel', + oprjoin => 'nlikejoinsel' }, +{ oid => '1209', oid_symbol => 'OID_TEXT_LIKE_OP', + descr => 'matches LIKE expression', + oprname => '~~', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprnegate => '!~~(text,text)', oprcode => 'textlike', oprrest => 'likesel', + oprjoin => 'likejoinsel' }, +{ oid => '1210', descr => 'does not match LIKE expression', + oprname => '!~~', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprnegate => '~~(text,text)', oprcode => 'textnlike', oprrest => 'nlikesel', + oprjoin => 'nlikejoinsel' }, +{ oid => '1211', oid_symbol => 'OID_BPCHAR_LIKE_OP', + descr => 'matches LIKE expression', + oprname => '~~', oprleft => 'bpchar', oprright => 'text', oprresult => 'bool', + oprnegate => '!~~(bpchar,text)', oprcode => 'bpcharlike', + oprrest => 'likesel', oprjoin => 'likejoinsel' }, +{ oid => '1212', descr => 'does not match LIKE expression', + oprname => '!~~', oprleft => 'bpchar', oprright => 'text', + oprresult => 'bool', oprnegate => '~~(bpchar,text)', oprcode => 'bpcharnlike', + oprrest => 'nlikesel', oprjoin => 'nlikejoinsel' }, + +# case-insensitive regex hacks +{ oid => '1226', oid_symbol => 'OID_NAME_ICREGEXEQ_OP', + descr => 'matches regular expression, case-insensitive', + oprname => '~*', oprleft => 'name', oprright => 'text', oprresult => 'bool', + oprnegate => '!~*(name,text)', oprcode => 'nameicregexeq', + oprrest => 'icregexeqsel', oprjoin => 'icregexeqjoinsel' }, +{ oid => '1227', + descr => 'does not match regular expression, case-insensitive', + oprname => '!~*', oprleft => 'name', oprright => 'text', oprresult => 'bool', + oprnegate => '~*(name,text)', oprcode => 'nameicregexne', + oprrest => 'icregexnesel', oprjoin => 'icregexnejoinsel' }, +{ oid => '1228', oid_symbol => 'OID_TEXT_ICREGEXEQ_OP', + descr => 'matches regular expression, case-insensitive', + oprname => '~*', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprnegate => '!~*(text,text)', oprcode => 'texticregexeq', + oprrest => 'icregexeqsel', oprjoin => 'icregexeqjoinsel' }, +{ oid => '1229', + descr => 'does not match regular expression, case-insensitive', + oprname => '!~*', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprnegate => '~*(text,text)', oprcode => 'texticregexne', + oprrest => 'icregexnesel', oprjoin => 'icregexnejoinsel' }, +{ oid => '1234', oid_symbol => 'OID_BPCHAR_ICREGEXEQ_OP', + descr => 'matches regular expression, case-insensitive', + oprname => '~*', oprleft => 'bpchar', oprright => 'text', oprresult => 'bool', + oprnegate => '!~*(bpchar,text)', oprcode => 'bpcharicregexeq', + oprrest => 'icregexeqsel', oprjoin => 'icregexeqjoinsel' }, +{ oid => '1235', + descr => 'does not match regular expression, case-insensitive', + oprname => '!~*', oprleft => 'bpchar', oprright => 'text', + oprresult => 'bool', oprnegate => '~*(bpchar,text)', + oprcode => 'bpcharicregexne', oprrest => 'icregexnesel', + oprjoin => 'icregexnejoinsel' }, + +# timestamptz operators +{ oid => '1320', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', + oprleft => 'timestamptz', oprright => 'timestamptz', oprresult => 'bool', + oprcom => '=(timestamptz,timestamptz)', + oprnegate => '<>(timestamptz,timestamptz)', oprcode => 'timestamptz_eq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '1321', descr => 'not equal', + oprname => '<>', oprleft => 'timestamptz', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '<>(timestamptz,timestamptz)', + oprnegate => '=(timestamptz,timestamptz)', oprcode => 'timestamptz_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1322', descr => 'less than', + oprname => '<', oprleft => 'timestamptz', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '>(timestamptz,timestamptz)', + oprnegate => '>=(timestamptz,timestamptz)', oprcode => 'timestamptz_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1323', descr => 'less than or equal', + oprname => '<=', oprleft => 'timestamptz', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '>=(timestamptz,timestamptz)', + oprnegate => '>(timestamptz,timestamptz)', oprcode => 'timestamptz_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1324', descr => 'greater than', + oprname => '>', oprleft => 'timestamptz', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '<(timestamptz,timestamptz)', + oprnegate => '<=(timestamptz,timestamptz)', oprcode => 'timestamptz_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1325', descr => 'greater than or equal', + oprname => '>=', oprleft => 'timestamptz', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '<=(timestamptz,timestamptz)', + oprnegate => '<(timestamptz,timestamptz)', oprcode => 'timestamptz_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '1327', descr => 'add', + oprname => '+', oprleft => 'timestamptz', oprright => 'interval', + oprresult => 'timestamptz', oprcom => '+(interval,timestamptz)', + oprcode => 'timestamptz_pl_interval' }, +{ oid => '1328', descr => 'subtract', + oprname => '-', oprleft => 'timestamptz', oprright => 'timestamptz', + oprresult => 'interval', oprcode => 'timestamptz_mi' }, +{ oid => '1329', descr => 'subtract', + oprname => '-', oprleft => 'timestamptz', oprright => 'interval', + oprresult => 'timestamptz', oprcode => 'timestamptz_mi_interval' }, + +# interval operators +{ oid => '1330', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'interval', + oprright => 'interval', oprresult => 'bool', oprcom => '=(interval,interval)', + oprnegate => '<>(interval,interval)', oprcode => 'interval_eq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '1331', descr => 'not equal', + oprname => '<>', oprleft => 'interval', oprright => 'interval', + oprresult => 'bool', oprcom => '<>(interval,interval)', + oprnegate => '=(interval,interval)', oprcode => 'interval_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1332', descr => 'less than', + oprname => '<', oprleft => 'interval', oprright => 'interval', + oprresult => 'bool', oprcom => '>(interval,interval)', + oprnegate => '>=(interval,interval)', oprcode => 'interval_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1333', descr => 'less than or equal', + oprname => '<=', oprleft => 'interval', oprright => 'interval', + oprresult => 'bool', oprcom => '>=(interval,interval)', + oprnegate => '>(interval,interval)', oprcode => 'interval_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1334', descr => 'greater than', + oprname => '>', oprleft => 'interval', oprright => 'interval', + oprresult => 'bool', oprcom => '<(interval,interval)', + oprnegate => '<=(interval,interval)', oprcode => 'interval_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1335', descr => 'greater than or equal', + oprname => '>=', oprleft => 'interval', oprright => 'interval', + oprresult => 'bool', oprcom => '<=(interval,interval)', + oprnegate => '<(interval,interval)', oprcode => 'interval_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '1336', descr => 'negate', + oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'interval', + oprresult => 'interval', oprcode => 'interval_um' }, +{ oid => '1337', descr => 'add', + oprname => '+', oprleft => 'interval', oprright => 'interval', + oprresult => 'interval', oprcom => '+(interval,interval)', + oprcode => 'interval_pl' }, +{ oid => '1338', descr => 'subtract', + oprname => '-', oprleft => 'interval', oprright => 'interval', + oprresult => 'interval', oprcode => 'interval_mi' }, + +{ oid => '1360', descr => 'convert date and time to timestamp', + oprname => '+', oprleft => 'date', oprright => 'time', + oprresult => 'timestamp', oprcom => '+(time,date)', + oprcode => 'datetime_pl' }, +{ oid => '1361', + descr => 'convert date and time with time zone to timestamp with time zone', + oprname => '+', oprleft => 'date', oprright => 'timetz', + oprresult => 'timestamptz', oprcom => '+(timetz,date)', + oprcode => 'datetimetz_pl' }, +{ oid => '1363', descr => 'convert time and date to timestamp', + oprname => '+', oprleft => 'time', oprright => 'date', + oprresult => 'timestamp', oprcom => '+(date,time)', + oprcode => 'timedate_pl' }, +{ oid => '1366', + descr => 'convert time with time zone and date to timestamp with time zone', + oprname => '+', oprleft => 'timetz', oprright => 'date', + oprresult => 'timestamptz', oprcom => '+(date,timetz)', + oprcode => 'timetzdate_pl' }, + +{ oid => '1399', descr => 'subtract', + oprname => '-', oprleft => 'time', oprright => 'time', + oprresult => 'interval', oprcode => 'time_mi_time' }, + +# additional geometric operators - thomas 97/04/18 +{ oid => '1420', descr => 'center of', + oprname => '@@', oprkind => 'l', oprleft => '0', oprright => 'circle', + oprresult => 'point', oprcode => 'circle_center' }, +{ oid => '1500', descr => 'equal by area', + oprname => '=', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '=(circle,circle)', + oprnegate => '<>(circle,circle)', oprcode => 'circle_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1501', descr => 'not equal by area', + oprname => '<>', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '<>(circle,circle)', + oprnegate => '=(circle,circle)', oprcode => 'circle_ne', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '1502', descr => 'less than by area', + oprname => '<', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '>(circle,circle)', + oprnegate => '>=(circle,circle)', oprcode => 'circle_lt', + oprrest => 'areasel', oprjoin => 'areajoinsel' }, +{ oid => '1503', descr => 'greater than by area', + oprname => '>', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '<(circle,circle)', + oprnegate => '<=(circle,circle)', oprcode => 'circle_gt', + oprrest => 'areasel', oprjoin => 'areajoinsel' }, +{ oid => '1504', descr => 'less than or equal by area', + oprname => '<=', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '>=(circle,circle)', + oprnegate => '>(circle,circle)', oprcode => 'circle_le', oprrest => 'areasel', + oprjoin => 'areajoinsel' }, +{ oid => '1505', descr => 'greater than or equal by area', + oprname => '>=', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '<=(circle,circle)', + oprnegate => '<(circle,circle)', oprcode => 'circle_ge', oprrest => 'areasel', + oprjoin => 'areajoinsel' }, + +{ oid => '1506', descr => 'is left of', + oprname => '<<', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcode => 'circle_left', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '1507', descr => 'overlaps or is left of', + oprname => '&<', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcode => 'circle_overleft', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '1508', descr => 'overlaps or is right of', + oprname => '&>', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcode => 'circle_overright', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '1509', descr => 'is right of', + oprname => '>>', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcode => 'circle_right', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '1510', descr => 'is contained by', + oprname => '<@', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '@>(circle,circle)', + oprcode => 'circle_contained', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '1511', descr => 'contains', + oprname => '@>', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '<@(circle,circle)', + oprcode => 'circle_contain', oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '1512', descr => 'same as', + oprname => '~=', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '~=(circle,circle)', oprcode => 'circle_same', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '1513', descr => 'overlaps', + oprname => '&&', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '&&(circle,circle)', + oprcode => 'circle_overlap', oprrest => 'areasel', oprjoin => 'areajoinsel' }, +{ oid => '1514', descr => 'is above', + oprname => '|>>', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcode => 'circle_above', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '1515', descr => 'is below', + oprname => '<<|', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcode => 'circle_below', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, + +{ oid => '1516', descr => 'add', + oprname => '+', oprleft => 'circle', oprright => 'point', + oprresult => 'circle', oprcode => 'circle_add_pt' }, +{ oid => '1517', descr => 'subtract', + oprname => '-', oprleft => 'circle', oprright => 'point', + oprresult => 'circle', oprcode => 'circle_sub_pt' }, +{ oid => '1518', descr => 'multiply', + oprname => '*', oprleft => 'circle', oprright => 'point', + oprresult => 'circle', oprcode => 'circle_mul_pt' }, +{ oid => '1519', descr => 'divide', + oprname => '/', oprleft => 'circle', oprright => 'point', + oprresult => 'circle', oprcode => 'circle_div_pt' }, + +{ oid => '1520', descr => 'distance between', + oprname => '<->', oprleft => 'circle', oprright => 'circle', + oprresult => 'float8', oprcom => '<->(circle,circle)', + oprcode => 'circle_distance' }, +{ oid => '1521', descr => 'number of points', + oprname => '#', oprkind => 'l', oprleft => '0', oprright => 'polygon', + oprresult => 'int4', oprcode => 'poly_npoints' }, +{ oid => '1522', descr => 'distance between', + oprname => '<->', oprleft => 'point', oprright => 'circle', + oprresult => 'float8', oprcom => '<->(circle,point)', oprcode => 'dist_pc' }, +{ oid => '3291', descr => 'distance between', + oprname => '<->', oprleft => 'circle', oprright => 'point', + oprresult => 'float8', oprcom => '<->(point,circle)', + oprcode => 'dist_cpoint' }, +{ oid => '3276', descr => 'distance between', + oprname => '<->', oprleft => 'point', oprright => 'polygon', + oprresult => 'float8', oprcom => '<->(polygon,point)', + oprcode => 'dist_ppoly' }, +{ oid => '3289', descr => 'distance between', + oprname => '<->', oprleft => 'polygon', oprright => 'point', + oprresult => 'float8', oprcom => '<->(point,polygon)', + oprcode => 'dist_polyp' }, +{ oid => '1523', descr => 'distance between', + oprname => '<->', oprleft => 'circle', oprright => 'polygon', + oprresult => 'float8', oprcode => 'dist_cpoly' }, + +# additional geometric operators - thomas 1997-07-09 +{ oid => '1524', descr => 'distance between', + oprname => '<->', oprleft => 'line', oprright => 'box', oprresult => 'float8', + oprcode => 'dist_lb' }, + +{ oid => '1525', descr => 'intersect', + oprname => '?#', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool', + oprcom => '?#(lseg,lseg)', oprcode => 'lseg_intersect' }, +{ oid => '1526', descr => 'parallel', + oprname => '?||', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool', + oprcom => '?||(lseg,lseg)', oprcode => 'lseg_parallel' }, +{ oid => '1527', descr => 'perpendicular', + oprname => '?-|', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool', + oprcom => '?-|(lseg,lseg)', oprcode => 'lseg_perp' }, +{ oid => '1528', descr => 'horizontal', + oprname => '?-', oprkind => 'l', oprleft => '0', oprright => 'lseg', + oprresult => 'bool', oprcode => 'lseg_horizontal' }, +{ oid => '1529', descr => 'vertical', + oprname => '?|', oprkind => 'l', oprleft => '0', oprright => 'lseg', + oprresult => 'bool', oprcode => 'lseg_vertical' }, +{ oid => '1535', descr => 'equal', + oprname => '=', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool', + oprcom => '=(lseg,lseg)', oprnegate => '<>(lseg,lseg)', oprcode => 'lseg_eq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '1536', descr => 'intersection point', + oprname => '#', oprleft => 'lseg', oprright => 'lseg', oprresult => 'point', + oprcom => '#(lseg,lseg)', oprcode => 'lseg_interpt' }, +{ oid => '1537', descr => 'intersect', + oprname => '?#', oprleft => 'lseg', oprright => 'line', oprresult => 'bool', + oprcode => 'inter_sl' }, +{ oid => '1538', descr => 'intersect', + oprname => '?#', oprleft => 'lseg', oprright => 'box', oprresult => 'bool', + oprcode => 'inter_sb' }, +{ oid => '1539', descr => 'intersect', + oprname => '?#', oprleft => 'line', oprright => 'box', oprresult => 'bool', + oprcode => 'inter_lb' }, + +{ oid => '1546', descr => 'point on line', + oprname => '<@', oprleft => 'point', oprright => 'line', oprresult => 'bool', + oprcode => 'on_pl' }, +{ oid => '1547', descr => 'is contained by', + oprname => '<@', oprleft => 'point', oprright => 'lseg', oprresult => 'bool', + oprcode => 'on_ps' }, +{ oid => '1548', descr => 'lseg on line', + oprname => '<@', oprleft => 'lseg', oprright => 'line', oprresult => 'bool', + oprcode => 'on_sl' }, +{ oid => '1549', descr => 'is contained by', + oprname => '<@', oprleft => 'lseg', oprright => 'box', oprresult => 'bool', + oprcode => 'on_sb' }, + +{ oid => '1557', descr => 'closest point to A on B', + oprname => '##', oprleft => 'point', oprright => 'line', oprresult => 'point', + oprcode => 'close_pl' }, +{ oid => '1558', descr => 'closest point to A on B', + oprname => '##', oprleft => 'point', oprright => 'lseg', oprresult => 'point', + oprcode => 'close_ps' }, +{ oid => '1559', descr => 'closest point to A on B', + oprname => '##', oprleft => 'point', oprright => 'box', oprresult => 'point', + oprcode => 'close_pb' }, + +{ oid => '1566', descr => 'closest point to A on B', + oprname => '##', oprleft => 'lseg', oprright => 'line', oprresult => 'point', + oprcode => 'close_sl' }, +{ oid => '1567', descr => 'closest point to A on B', + oprname => '##', oprleft => 'lseg', oprright => 'box', oprresult => 'point', + oprcode => 'close_sb' }, +{ oid => '1568', descr => 'closest point to A on B', + oprname => '##', oprleft => 'line', oprright => 'box', oprresult => 'point', + oprcode => 'close_lb' }, +{ oid => '1577', descr => 'closest point to A on B', + oprname => '##', oprleft => 'line', oprright => 'lseg', oprresult => 'point', + oprcode => 'close_ls' }, +{ oid => '1578', descr => 'closest point to A on B', + oprname => '##', oprleft => 'lseg', oprright => 'lseg', oprresult => 'point', + oprcode => 'close_lseg' }, +{ oid => '1583', descr => 'multiply', + oprname => '*', oprleft => 'interval', oprright => 'float8', + oprresult => 'interval', oprcom => '*(float8,interval)', + oprcode => 'interval_mul' }, +{ oid => '1584', descr => 'multiply', + oprname => '*', oprleft => 'float8', oprright => 'interval', + oprresult => 'interval', oprcom => '*(interval,float8)', + oprcode => 'mul_d_interval' }, +{ oid => '1585', descr => 'divide', + oprname => '/', oprleft => 'interval', oprright => 'float8', + oprresult => 'interval', oprcode => 'interval_div' }, + +{ oid => '1586', descr => 'not equal', + oprname => '<>', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool', + oprcom => '<>(lseg,lseg)', oprnegate => '=(lseg,lseg)', oprcode => 'lseg_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1587', descr => 'less than by length', + oprname => '<', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool', + oprcom => '>(lseg,lseg)', oprnegate => '>=(lseg,lseg)', + oprcode => 'lseg_lt' }, +{ oid => '1588', descr => 'less than or equal by length', + oprname => '<=', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool', + oprcom => '>=(lseg,lseg)', oprnegate => '>(lseg,lseg)', + oprcode => 'lseg_le' }, +{ oid => '1589', descr => 'greater than by length', + oprname => '>', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool', + oprcom => '<(lseg,lseg)', oprnegate => '<=(lseg,lseg)', + oprcode => 'lseg_gt' }, +{ oid => '1590', descr => 'greater than or equal by length', + oprname => '>=', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool', + oprcom => '<=(lseg,lseg)', oprnegate => '<(lseg,lseg)', + oprcode => 'lseg_ge' }, + +{ oid => '1591', descr => 'distance between endpoints', + oprname => '@-@', oprkind => 'l', oprleft => '0', oprright => 'lseg', + oprresult => 'float8', oprcode => 'lseg_length' }, + +{ oid => '1611', descr => 'intersect', + oprname => '?#', oprleft => 'line', oprright => 'line', oprresult => 'bool', + oprcom => '?#(line,line)', oprcode => 'line_intersect' }, +{ oid => '1612', descr => 'parallel', + oprname => '?||', oprleft => 'line', oprright => 'line', oprresult => 'bool', + oprcom => '?||(line,line)', oprcode => 'line_parallel' }, +{ oid => '1613', descr => 'perpendicular', + oprname => '?-|', oprleft => 'line', oprright => 'line', oprresult => 'bool', + oprcom => '?-|(line,line)', oprcode => 'line_perp' }, +{ oid => '1614', descr => 'horizontal', + oprname => '?-', oprkind => 'l', oprleft => '0', oprright => 'line', + oprresult => 'bool', oprcode => 'line_horizontal' }, +{ oid => '1615', descr => 'vertical', + oprname => '?|', oprkind => 'l', oprleft => '0', oprright => 'line', + oprresult => 'bool', oprcode => 'line_vertical' }, +{ oid => '1616', descr => 'equal', + oprname => '=', oprleft => 'line', oprright => 'line', oprresult => 'bool', + oprcom => '=(line,line)', oprcode => 'line_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1617', descr => 'intersection point', + oprname => '#', oprleft => 'line', oprright => 'line', oprresult => 'point', + oprcom => '#(line,line)', oprcode => 'line_interpt' }, + +# MACADDR type +{ oid => '1220', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'macaddr', + oprright => 'macaddr', oprresult => 'bool', oprcom => '=(macaddr,macaddr)', + oprnegate => '<>(macaddr,macaddr)', oprcode => 'macaddr_eq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '1221', descr => 'not equal', + oprname => '<>', oprleft => 'macaddr', oprright => 'macaddr', + oprresult => 'bool', oprcom => '<>(macaddr,macaddr)', + oprnegate => '=(macaddr,macaddr)', oprcode => 'macaddr_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1222', descr => 'less than', + oprname => '<', oprleft => 'macaddr', oprright => 'macaddr', + oprresult => 'bool', oprcom => '>(macaddr,macaddr)', + oprnegate => '>=(macaddr,macaddr)', oprcode => 'macaddr_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1223', descr => 'less than or equal', + oprname => '<=', oprleft => 'macaddr', oprright => 'macaddr', + oprresult => 'bool', oprcom => '>=(macaddr,macaddr)', + oprnegate => '>(macaddr,macaddr)', oprcode => 'macaddr_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1224', descr => 'greater than', + oprname => '>', oprleft => 'macaddr', oprright => 'macaddr', + oprresult => 'bool', oprcom => '<(macaddr,macaddr)', + oprnegate => '<=(macaddr,macaddr)', oprcode => 'macaddr_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1225', descr => 'greater than or equal', + oprname => '>=', oprleft => 'macaddr', oprright => 'macaddr', + oprresult => 'bool', oprcom => '<=(macaddr,macaddr)', + oprnegate => '<(macaddr,macaddr)', oprcode => 'macaddr_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '3147', descr => 'bitwise not', + oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'macaddr', + oprresult => 'macaddr', oprcode => 'macaddr_not' }, +{ oid => '3148', descr => 'bitwise and', + oprname => '&', oprleft => 'macaddr', oprright => 'macaddr', + oprresult => 'macaddr', oprcode => 'macaddr_and' }, +{ oid => '3149', descr => 'bitwise or', + oprname => '|', oprleft => 'macaddr', oprright => 'macaddr', + oprresult => 'macaddr', oprcode => 'macaddr_or' }, + +# MACADDR8 type +{ oid => '3362', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'macaddr8', + oprright => 'macaddr8', oprresult => 'bool', oprcom => '=(macaddr8,macaddr8)', + oprnegate => '<>(macaddr8,macaddr8)', oprcode => 'macaddr8_eq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '3363', descr => 'not equal', + oprname => '<>', oprleft => 'macaddr8', oprright => 'macaddr8', + oprresult => 'bool', oprcom => '<>(macaddr8,macaddr8)', + oprnegate => '=(macaddr8,macaddr8)', oprcode => 'macaddr8_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '3364', descr => 'less than', + oprname => '<', oprleft => 'macaddr8', oprright => 'macaddr8', + oprresult => 'bool', oprcom => '>(macaddr8,macaddr8)', + oprnegate => '>=(macaddr8,macaddr8)', oprcode => 'macaddr8_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '3365', descr => 'less than or equal', + oprname => '<=', oprleft => 'macaddr8', oprright => 'macaddr8', + oprresult => 'bool', oprcom => '>=(macaddr8,macaddr8)', + oprnegate => '>(macaddr8,macaddr8)', oprcode => 'macaddr8_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '3366', descr => 'greater than', + oprname => '>', oprleft => 'macaddr8', oprright => 'macaddr8', + oprresult => 'bool', oprcom => '<(macaddr8,macaddr8)', + oprnegate => '<=(macaddr8,macaddr8)', oprcode => 'macaddr8_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '3367', descr => 'greater than or equal', + oprname => '>=', oprleft => 'macaddr8', oprright => 'macaddr8', + oprresult => 'bool', oprcom => '<=(macaddr8,macaddr8)', + oprnegate => '<(macaddr8,macaddr8)', oprcode => 'macaddr8_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '3368', descr => 'bitwise not', + oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'macaddr8', + oprresult => 'macaddr8', oprcode => 'macaddr8_not' }, +{ oid => '3369', descr => 'bitwise and', + oprname => '&', oprleft => 'macaddr8', oprright => 'macaddr8', + oprresult => 'macaddr8', oprcode => 'macaddr8_and' }, +{ oid => '3370', descr => 'bitwise or', + oprname => '|', oprleft => 'macaddr8', oprright => 'macaddr8', + oprresult => 'macaddr8', oprcode => 'macaddr8_or' }, + +# INET type (these also support CIDR via implicit cast) +{ oid => '1201', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'inet', + oprright => 'inet', oprresult => 'bool', oprcom => '=(inet,inet)', + oprnegate => '<>(inet,inet)', oprcode => 'network_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1202', descr => 'not equal', + oprname => '<>', oprleft => 'inet', oprright => 'inet', oprresult => 'bool', + oprcom => '<>(inet,inet)', oprnegate => '=(inet,inet)', + oprcode => 'network_ne', oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1203', descr => 'less than', + oprname => '<', oprleft => 'inet', oprright => 'inet', oprresult => 'bool', + oprcom => '>(inet,inet)', oprnegate => '>=(inet,inet)', + oprcode => 'network_lt', oprrest => 'scalarltsel', + oprjoin => 'scalarltjoinsel' }, +{ oid => '1204', descr => 'less than or equal', + oprname => '<=', oprleft => 'inet', oprright => 'inet', oprresult => 'bool', + oprcom => '>=(inet,inet)', oprnegate => '>(inet,inet)', + oprcode => 'network_le', oprrest => 'scalarlesel', + oprjoin => 'scalarlejoinsel' }, +{ oid => '1205', descr => 'greater than', + oprname => '>', oprleft => 'inet', oprright => 'inet', oprresult => 'bool', + oprcom => '<(inet,inet)', oprnegate => '<=(inet,inet)', + oprcode => 'network_gt', oprrest => 'scalargtsel', + oprjoin => 'scalargtjoinsel' }, +{ oid => '1206', descr => 'greater than or equal', + oprname => '>=', oprleft => 'inet', oprright => 'inet', oprresult => 'bool', + oprcom => '<=(inet,inet)', oprnegate => '<(inet,inet)', + oprcode => 'network_ge', oprrest => 'scalargesel', + oprjoin => 'scalargejoinsel' }, +{ oid => '931', oid_symbol => 'OID_INET_SUB_OP', descr => 'is subnet', + oprname => '<<', oprleft => 'inet', oprright => 'inet', oprresult => 'bool', + oprcom => '>>(inet,inet)', oprcode => 'network_sub', oprrest => 'networksel', + oprjoin => 'networkjoinsel' }, +{ oid => '932', oid_symbol => 'OID_INET_SUBEQ_OP', + descr => 'is subnet or equal', + oprname => '<<=', oprleft => 'inet', oprright => 'inet', oprresult => 'bool', + oprcom => '>>=(inet,inet)', oprcode => 'network_subeq', + oprrest => 'networksel', oprjoin => 'networkjoinsel' }, +{ oid => '933', oid_symbol => 'OID_INET_SUP_OP', descr => 'is supernet', + oprname => '>>', oprleft => 'inet', oprright => 'inet', oprresult => 'bool', + oprcom => '<<(inet,inet)', oprcode => 'network_sup', oprrest => 'networksel', + oprjoin => 'networkjoinsel' }, +{ oid => '934', oid_symbol => 'OID_INET_SUPEQ_OP', + descr => 'is supernet or equal', + oprname => '>>=', oprleft => 'inet', oprright => 'inet', oprresult => 'bool', + oprcom => '<<=(inet,inet)', oprcode => 'network_supeq', + oprrest => 'networksel', oprjoin => 'networkjoinsel' }, +{ oid => '3552', oid_symbol => 'OID_INET_OVERLAP_OP', + descr => 'overlaps (is subnet or supernet)', + oprname => '&&', oprleft => 'inet', oprright => 'inet', oprresult => 'bool', + oprcom => '&&(inet,inet)', oprcode => 'network_overlap', + oprrest => 'networksel', oprjoin => 'networkjoinsel' }, + +{ oid => '2634', descr => 'bitwise not', + oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'inet', + oprresult => 'inet', oprcode => 'inetnot' }, +{ oid => '2635', descr => 'bitwise and', + oprname => '&', oprleft => 'inet', oprright => 'inet', oprresult => 'inet', + oprcode => 'inetand' }, +{ oid => '2636', descr => 'bitwise or', + oprname => '|', oprleft => 'inet', oprright => 'inet', oprresult => 'inet', + oprcode => 'inetor' }, +{ oid => '2637', descr => 'add', + oprname => '+', oprleft => 'inet', oprright => 'int8', oprresult => 'inet', + oprcom => '+(int8,inet)', oprcode => 'inetpl' }, +{ oid => '2638', descr => 'add', + oprname => '+', oprleft => 'int8', oprright => 'inet', oprresult => 'inet', + oprcom => '+(inet,int8)', oprcode => 'int8pl_inet' }, +{ oid => '2639', descr => 'subtract', + oprname => '-', oprleft => 'inet', oprright => 'int8', oprresult => 'inet', + oprcode => 'inetmi_int8' }, +{ oid => '2640', descr => 'subtract', + oprname => '-', oprleft => 'inet', oprright => 'inet', oprresult => 'int8', + oprcode => 'inetmi' }, + +# case-insensitive LIKE hacks +{ oid => '1625', oid_symbol => 'OID_NAME_ICLIKE_OP', + descr => 'matches LIKE expression, case-insensitive', + oprname => '~~*', oprleft => 'name', oprright => 'text', oprresult => 'bool', + oprnegate => '!~~*(name,text)', oprcode => 'nameiclike', + oprrest => 'iclikesel', oprjoin => 'iclikejoinsel' }, +{ oid => '1626', descr => 'does not match LIKE expression, case-insensitive', + oprname => '!~~*', oprleft => 'name', oprright => 'text', oprresult => 'bool', + oprnegate => '~~*(name,text)', oprcode => 'nameicnlike', + oprrest => 'icnlikesel', oprjoin => 'icnlikejoinsel' }, +{ oid => '1627', oid_symbol => 'OID_TEXT_ICLIKE_OP', + descr => 'matches LIKE expression, case-insensitive', + oprname => '~~*', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprnegate => '!~~*(text,text)', oprcode => 'texticlike', + oprrest => 'iclikesel', oprjoin => 'iclikejoinsel' }, +{ oid => '1628', descr => 'does not match LIKE expression, case-insensitive', + oprname => '!~~*', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprnegate => '~~*(text,text)', oprcode => 'texticnlike', + oprrest => 'icnlikesel', oprjoin => 'icnlikejoinsel' }, +{ oid => '1629', oid_symbol => 'OID_BPCHAR_ICLIKE_OP', + descr => 'matches LIKE expression, case-insensitive', + oprname => '~~*', oprleft => 'bpchar', oprright => 'text', + oprresult => 'bool', oprnegate => '!~~*(bpchar,text)', + oprcode => 'bpchariclike', oprrest => 'iclikesel', + oprjoin => 'iclikejoinsel' }, +{ oid => '1630', descr => 'does not match LIKE expression, case-insensitive', + oprname => '!~~*', oprleft => 'bpchar', oprright => 'text', + oprresult => 'bool', oprnegate => '~~*(bpchar,text)', + oprcode => 'bpcharicnlike', oprrest => 'icnlikesel', + oprjoin => 'icnlikejoinsel' }, + +# NUMERIC type - OID's 1700-1799 +{ oid => '1751', descr => 'negate', + oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'numeric', + oprresult => 'numeric', oprcode => 'numeric_uminus' }, +{ oid => '1752', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'numeric', + oprright => 'numeric', oprresult => 'bool', oprcom => '=(numeric,numeric)', + oprnegate => '<>(numeric,numeric)', oprcode => 'numeric_eq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '1753', descr => 'not equal', + oprname => '<>', oprleft => 'numeric', oprright => 'numeric', + oprresult => 'bool', oprcom => '<>(numeric,numeric)', + oprnegate => '=(numeric,numeric)', oprcode => 'numeric_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1754', descr => 'less than', + oprname => '<', oprleft => 'numeric', oprright => 'numeric', + oprresult => 'bool', oprcom => '>(numeric,numeric)', + oprnegate => '>=(numeric,numeric)', oprcode => 'numeric_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1755', descr => 'less than or equal', + oprname => '<=', oprleft => 'numeric', oprright => 'numeric', + oprresult => 'bool', oprcom => '>=(numeric,numeric)', + oprnegate => '>(numeric,numeric)', oprcode => 'numeric_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1756', descr => 'greater than', + oprname => '>', oprleft => 'numeric', oprright => 'numeric', + oprresult => 'bool', oprcom => '<(numeric,numeric)', + oprnegate => '<=(numeric,numeric)', oprcode => 'numeric_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1757', descr => 'greater than or equal', + oprname => '>=', oprleft => 'numeric', oprright => 'numeric', + oprresult => 'bool', oprcom => '<=(numeric,numeric)', + oprnegate => '<(numeric,numeric)', oprcode => 'numeric_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '1758', descr => 'add', + oprname => '+', oprleft => 'numeric', oprright => 'numeric', + oprresult => 'numeric', oprcom => '+(numeric,numeric)', + oprcode => 'numeric_add' }, +{ oid => '1759', descr => 'subtract', + oprname => '-', oprleft => 'numeric', oprright => 'numeric', + oprresult => 'numeric', oprcode => 'numeric_sub' }, +{ oid => '1760', descr => 'multiply', + oprname => '*', oprleft => 'numeric', oprright => 'numeric', + oprresult => 'numeric', oprcom => '*(numeric,numeric)', + oprcode => 'numeric_mul' }, +{ oid => '1761', descr => 'divide', + oprname => '/', oprleft => 'numeric', oprright => 'numeric', + oprresult => 'numeric', oprcode => 'numeric_div' }, +{ oid => '1762', descr => 'modulus', + oprname => '%', oprleft => 'numeric', oprright => 'numeric', + oprresult => 'numeric', oprcode => 'numeric_mod' }, +{ oid => '1038', descr => 'exponentiation', + oprname => '^', oprleft => 'numeric', oprright => 'numeric', + oprresult => 'numeric', oprcode => 'numeric_power' }, +{ oid => '1763', descr => 'absolute value', + oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'numeric', + oprresult => 'numeric', oprcode => 'numeric_abs' }, + +{ oid => '1784', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'bit', oprright => 'bit', + oprresult => 'bool', oprcom => '=(bit,bit)', oprnegate => '<>(bit,bit)', + oprcode => 'biteq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '1785', descr => 'not equal', + oprname => '<>', oprleft => 'bit', oprright => 'bit', oprresult => 'bool', + oprcom => '<>(bit,bit)', oprnegate => '=(bit,bit)', oprcode => 'bitne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1786', descr => 'less than', + oprname => '<', oprleft => 'bit', oprright => 'bit', oprresult => 'bool', + oprcom => '>(bit,bit)', oprnegate => '>=(bit,bit)', oprcode => 'bitlt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1787', descr => 'greater than', + oprname => '>', oprleft => 'bit', oprright => 'bit', oprresult => 'bool', + oprcom => '<(bit,bit)', oprnegate => '<=(bit,bit)', oprcode => 'bitgt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1788', descr => 'less than or equal', + oprname => '<=', oprleft => 'bit', oprright => 'bit', oprresult => 'bool', + oprcom => '>=(bit,bit)', oprnegate => '>(bit,bit)', oprcode => 'bitle', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1789', descr => 'greater than or equal', + oprname => '>=', oprleft => 'bit', oprright => 'bit', oprresult => 'bool', + oprcom => '<=(bit,bit)', oprnegate => '<(bit,bit)', oprcode => 'bitge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '1791', descr => 'bitwise and', + oprname => '&', oprleft => 'bit', oprright => 'bit', oprresult => 'bit', + oprcom => '&(bit,bit)', oprcode => 'bitand' }, +{ oid => '1792', descr => 'bitwise or', + oprname => '|', oprleft => 'bit', oprright => 'bit', oprresult => 'bit', + oprcom => '|(bit,bit)', oprcode => 'bitor' }, +{ oid => '1793', descr => 'bitwise exclusive or', + oprname => '#', oprleft => 'bit', oprright => 'bit', oprresult => 'bit', + oprcom => '#(bit,bit)', oprcode => 'bitxor' }, +{ oid => '1794', descr => 'bitwise not', + oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'bit', + oprresult => 'bit', oprcode => 'bitnot' }, +{ oid => '1795', descr => 'bitwise shift left', + oprname => '<<', oprleft => 'bit', oprright => 'int4', oprresult => 'bit', + oprcode => 'bitshiftleft' }, +{ oid => '1796', descr => 'bitwise shift right', + oprname => '>>', oprleft => 'bit', oprright => 'int4', oprresult => 'bit', + oprcode => 'bitshiftright' }, +{ oid => '1797', descr => 'concatenate', + oprname => '||', oprleft => 'varbit', oprright => 'varbit', + oprresult => 'varbit', oprcode => 'bitcat' }, + +{ oid => '1800', descr => 'add', + oprname => '+', oprleft => 'time', oprright => 'interval', + oprresult => 'time', oprcom => '+(interval,time)', + oprcode => 'time_pl_interval' }, +{ oid => '1801', descr => 'subtract', + oprname => '-', oprleft => 'time', oprright => 'interval', + oprresult => 'time', oprcode => 'time_mi_interval' }, +{ oid => '1802', descr => 'add', + oprname => '+', oprleft => 'timetz', oprright => 'interval', + oprresult => 'timetz', oprcom => '+(interval,timetz)', + oprcode => 'timetz_pl_interval' }, +{ oid => '1803', descr => 'subtract', + oprname => '-', oprleft => 'timetz', oprright => 'interval', + oprresult => 'timetz', oprcode => 'timetz_mi_interval' }, + +{ oid => '1804', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'varbit', oprright => 'varbit', + oprresult => 'bool', oprcom => '=(varbit,varbit)', + oprnegate => '<>(varbit,varbit)', oprcode => 'varbiteq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1805', descr => 'not equal', + oprname => '<>', oprleft => 'varbit', oprright => 'varbit', + oprresult => 'bool', oprcom => '<>(varbit,varbit)', + oprnegate => '=(varbit,varbit)', oprcode => 'varbitne', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '1806', descr => 'less than', + oprname => '<', oprleft => 'varbit', oprright => 'varbit', + oprresult => 'bool', oprcom => '>(varbit,varbit)', + oprnegate => '>=(varbit,varbit)', oprcode => 'varbitlt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1807', descr => 'greater than', + oprname => '>', oprleft => 'varbit', oprright => 'varbit', + oprresult => 'bool', oprcom => '<(varbit,varbit)', + oprnegate => '<=(varbit,varbit)', oprcode => 'varbitgt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1808', descr => 'less than or equal', + oprname => '<=', oprleft => 'varbit', oprright => 'varbit', + oprresult => 'bool', oprcom => '>=(varbit,varbit)', + oprnegate => '>(varbit,varbit)', oprcode => 'varbitle', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1809', descr => 'greater than or equal', + oprname => '>=', oprleft => 'varbit', oprright => 'varbit', + oprresult => 'bool', oprcom => '<=(varbit,varbit)', + oprnegate => '<(varbit,varbit)', oprcode => 'varbitge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '1849', descr => 'add', + oprname => '+', oprleft => 'interval', oprright => 'time', + oprresult => 'time', oprcom => '+(time,interval)', + oprcode => 'interval_pl_time' }, + +{ oid => '1862', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int2', + oprright => 'int8', oprresult => 'bool', oprcom => '=(int8,int2)', + oprnegate => '<>(int2,int8)', oprcode => 'int28eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1863', descr => 'not equal', + oprname => '<>', oprleft => 'int2', oprright => 'int8', oprresult => 'bool', + oprcom => '<>(int8,int2)', oprnegate => '=(int2,int8)', oprcode => 'int28ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1864', descr => 'less than', + oprname => '<', oprleft => 'int2', oprright => 'int8', oprresult => 'bool', + oprcom => '>(int8,int2)', oprnegate => '>=(int2,int8)', oprcode => 'int28lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1865', descr => 'greater than', + oprname => '>', oprleft => 'int2', oprright => 'int8', oprresult => 'bool', + oprcom => '<(int8,int2)', oprnegate => '<=(int2,int8)', oprcode => 'int28gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1866', descr => 'less than or equal', + oprname => '<=', oprleft => 'int2', oprright => 'int8', oprresult => 'bool', + oprcom => '>=(int8,int2)', oprnegate => '>(int2,int8)', oprcode => 'int28le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1867', descr => 'greater than or equal', + oprname => '>=', oprleft => 'int2', oprright => 'int8', oprresult => 'bool', + oprcom => '<=(int8,int2)', oprnegate => '<(int2,int8)', oprcode => 'int28ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '1868', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int8', + oprright => 'int2', oprresult => 'bool', oprcom => '=(int2,int8)', + oprnegate => '<>(int8,int2)', oprcode => 'int82eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1869', descr => 'not equal', + oprname => '<>', oprleft => 'int8', oprright => 'int2', oprresult => 'bool', + oprcom => '<>(int2,int8)', oprnegate => '=(int8,int2)', oprcode => 'int82ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1870', descr => 'less than', + oprname => '<', oprleft => 'int8', oprright => 'int2', oprresult => 'bool', + oprcom => '>(int2,int8)', oprnegate => '>=(int8,int2)', oprcode => 'int82lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '1871', descr => 'greater than', + oprname => '>', oprleft => 'int8', oprright => 'int2', oprresult => 'bool', + oprcom => '<(int2,int8)', oprnegate => '<=(int8,int2)', oprcode => 'int82gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '1872', descr => 'less than or equal', + oprname => '<=', oprleft => 'int8', oprright => 'int2', oprresult => 'bool', + oprcom => '>=(int2,int8)', oprnegate => '>(int8,int2)', oprcode => 'int82le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '1873', descr => 'greater than or equal', + oprname => '>=', oprleft => 'int8', oprright => 'int2', oprresult => 'bool', + oprcom => '<=(int2,int8)', oprnegate => '<(int8,int2)', oprcode => 'int82ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +{ oid => '1874', descr => 'bitwise and', + oprname => '&', oprleft => 'int2', oprright => 'int2', oprresult => 'int2', + oprcom => '&(int2,int2)', oprcode => 'int2and' }, +{ oid => '1875', descr => 'bitwise or', + oprname => '|', oprleft => 'int2', oprright => 'int2', oprresult => 'int2', + oprcom => '|(int2,int2)', oprcode => 'int2or' }, +{ oid => '1876', descr => 'bitwise exclusive or', + oprname => '#', oprleft => 'int2', oprright => 'int2', oprresult => 'int2', + oprcom => '#(int2,int2)', oprcode => 'int2xor' }, +{ oid => '1877', descr => 'bitwise not', + oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'int2', + oprresult => 'int2', oprcode => 'int2not' }, +{ oid => '1878', descr => 'bitwise shift left', + oprname => '<<', oprleft => 'int2', oprright => 'int4', oprresult => 'int2', + oprcode => 'int2shl' }, +{ oid => '1879', descr => 'bitwise shift right', + oprname => '>>', oprleft => 'int2', oprright => 'int4', oprresult => 'int2', + oprcode => 'int2shr' }, + +{ oid => '1880', descr => 'bitwise and', + oprname => '&', oprleft => 'int4', oprright => 'int4', oprresult => 'int4', + oprcom => '&(int4,int4)', oprcode => 'int4and' }, +{ oid => '1881', descr => 'bitwise or', + oprname => '|', oprleft => 'int4', oprright => 'int4', oprresult => 'int4', + oprcom => '|(int4,int4)', oprcode => 'int4or' }, +{ oid => '1882', descr => 'bitwise exclusive or', + oprname => '#', oprleft => 'int4', oprright => 'int4', oprresult => 'int4', + oprcom => '#(int4,int4)', oprcode => 'int4xor' }, +{ oid => '1883', descr => 'bitwise not', + oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'int4', + oprresult => 'int4', oprcode => 'int4not' }, +{ oid => '1884', descr => 'bitwise shift left', + oprname => '<<', oprleft => 'int4', oprright => 'int4', oprresult => 'int4', + oprcode => 'int4shl' }, +{ oid => '1885', descr => 'bitwise shift right', + oprname => '>>', oprleft => 'int4', oprright => 'int4', oprresult => 'int4', + oprcode => 'int4shr' }, + +{ oid => '1886', descr => 'bitwise and', + oprname => '&', oprleft => 'int8', oprright => 'int8', oprresult => 'int8', + oprcom => '&(int8,int8)', oprcode => 'int8and' }, +{ oid => '1887', descr => 'bitwise or', + oprname => '|', oprleft => 'int8', oprright => 'int8', oprresult => 'int8', + oprcom => '|(int8,int8)', oprcode => 'int8or' }, +{ oid => '1888', descr => 'bitwise exclusive or', + oprname => '#', oprleft => 'int8', oprright => 'int8', oprresult => 'int8', + oprcom => '#(int8,int8)', oprcode => 'int8xor' }, +{ oid => '1889', descr => 'bitwise not', + oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'int8', + oprresult => 'int8', oprcode => 'int8not' }, +{ oid => '1890', descr => 'bitwise shift left', + oprname => '<<', oprleft => 'int8', oprright => 'int4', oprresult => 'int8', + oprcode => 'int8shl' }, +{ oid => '1891', descr => 'bitwise shift right', + oprname => '>>', oprleft => 'int8', oprright => 'int4', oprresult => 'int8', + oprcode => 'int8shr' }, + +{ oid => '1916', descr => 'unary plus', + oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'int8', + oprresult => 'int8', oprcode => 'int8up' }, +{ oid => '1917', descr => 'unary plus', + oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'int2', + oprresult => 'int2', oprcode => 'int2up' }, +{ oid => '1918', descr => 'unary plus', + oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'int4', + oprresult => 'int4', oprcode => 'int4up' }, +{ oid => '1919', descr => 'unary plus', + oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'float4', + oprresult => 'float4', oprcode => 'float4up' }, +{ oid => '1920', descr => 'unary plus', + oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'float8', + oprresult => 'float8', oprcode => 'float8up' }, +{ oid => '1921', descr => 'unary plus', + oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'numeric', + oprresult => 'numeric', oprcode => 'numeric_uplus' }, + +# bytea operators +{ oid => '1955', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'bytea', + oprright => 'bytea', oprresult => 'bool', oprcom => '=(bytea,bytea)', + oprnegate => '<>(bytea,bytea)', oprcode => 'byteaeq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '1956', descr => 'not equal', + oprname => '<>', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool', + oprcom => '<>(bytea,bytea)', oprnegate => '=(bytea,bytea)', + oprcode => 'byteane', oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '1957', descr => 'less than', + oprname => '<', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool', + oprcom => '>(bytea,bytea)', oprnegate => '>=(bytea,bytea)', + oprcode => 'bytealt', oprrest => 'scalarltsel', + oprjoin => 'scalarltjoinsel' }, +{ oid => '1958', descr => 'less than or equal', + oprname => '<=', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool', + oprcom => '>=(bytea,bytea)', oprnegate => '>(bytea,bytea)', + oprcode => 'byteale', oprrest => 'scalarlesel', + oprjoin => 'scalarlejoinsel' }, +{ oid => '1959', descr => 'greater than', + oprname => '>', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool', + oprcom => '<(bytea,bytea)', oprnegate => '<=(bytea,bytea)', + oprcode => 'byteagt', oprrest => 'scalargtsel', + oprjoin => 'scalargtjoinsel' }, +{ oid => '1960', descr => 'greater than or equal', + oprname => '>=', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool', + oprcom => '<=(bytea,bytea)', oprnegate => '<(bytea,bytea)', + oprcode => 'byteage', oprrest => 'scalargesel', + oprjoin => 'scalargejoinsel' }, + +{ oid => '2016', oid_symbol => 'OID_BYTEA_LIKE_OP', + descr => 'matches LIKE expression', + oprname => '~~', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool', + oprnegate => '!~~(bytea,bytea)', oprcode => 'bytealike', oprrest => 'likesel', + oprjoin => 'likejoinsel' }, +{ oid => '2017', descr => 'does not match LIKE expression', + oprname => '!~~', oprleft => 'bytea', oprright => 'bytea', + oprresult => 'bool', oprnegate => '~~(bytea,bytea)', oprcode => 'byteanlike', + oprrest => 'nlikesel', oprjoin => 'nlikejoinsel' }, +{ oid => '2018', descr => 'concatenate', + oprname => '||', oprleft => 'bytea', oprright => 'bytea', + oprresult => 'bytea', oprcode => 'byteacat' }, + +# timestamp operators +{ oid => '2060', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'timestamp', + oprright => 'timestamp', oprresult => 'bool', + oprcom => '=(timestamp,timestamp)', oprnegate => '<>(timestamp,timestamp)', + oprcode => 'timestamp_eq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '2061', descr => 'not equal', + oprname => '<>', oprleft => 'timestamp', oprright => 'timestamp', + oprresult => 'bool', oprcom => '<>(timestamp,timestamp)', + oprnegate => '=(timestamp,timestamp)', oprcode => 'timestamp_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '2062', descr => 'less than', + oprname => '<', oprleft => 'timestamp', oprright => 'timestamp', + oprresult => 'bool', oprcom => '>(timestamp,timestamp)', + oprnegate => '>=(timestamp,timestamp)', oprcode => 'timestamp_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '2063', descr => 'less than or equal', + oprname => '<=', oprleft => 'timestamp', oprright => 'timestamp', + oprresult => 'bool', oprcom => '>=(timestamp,timestamp)', + oprnegate => '>(timestamp,timestamp)', oprcode => 'timestamp_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '2064', descr => 'greater than', + oprname => '>', oprleft => 'timestamp', oprright => 'timestamp', + oprresult => 'bool', oprcom => '<(timestamp,timestamp)', + oprnegate => '<=(timestamp,timestamp)', oprcode => 'timestamp_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '2065', descr => 'greater than or equal', + oprname => '>=', oprleft => 'timestamp', oprright => 'timestamp', + oprresult => 'bool', oprcom => '<=(timestamp,timestamp)', + oprnegate => '<(timestamp,timestamp)', oprcode => 'timestamp_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '2066', descr => 'add', + oprname => '+', oprleft => 'timestamp', oprright => 'interval', + oprresult => 'timestamp', oprcom => '+(interval,timestamp)', + oprcode => 'timestamp_pl_interval' }, +{ oid => '2067', descr => 'subtract', + oprname => '-', oprleft => 'timestamp', oprright => 'timestamp', + oprresult => 'interval', oprcode => 'timestamp_mi' }, +{ oid => '2068', descr => 'subtract', + oprname => '-', oprleft => 'timestamp', oprright => 'interval', + oprresult => 'timestamp', oprcode => 'timestamp_mi_interval' }, + +# character-by-character (not collation order) comparison operators for character types +{ oid => '2314', descr => 'less than', + oprname => '~<~', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprcom => '~>~(text,text)', oprnegate => '~>=~(text,text)', + oprcode => 'text_pattern_lt', oprrest => 'scalarltsel', + oprjoin => 'scalarltjoinsel' }, +{ oid => '2315', descr => 'less than or equal', + oprname => '~<=~', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprcom => '~>=~(text,text)', oprnegate => '~>~(text,text)', + oprcode => 'text_pattern_le', oprrest => 'scalarlesel', + oprjoin => 'scalarlejoinsel' }, +{ oid => '2317', descr => 'greater than or equal', + oprname => '~>=~', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprcom => '~<=~(text,text)', oprnegate => '~<~(text,text)', + oprcode => 'text_pattern_ge', oprrest => 'scalargesel', + oprjoin => 'scalargejoinsel' }, +{ oid => '2318', descr => 'greater than', + oprname => '~>~', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprcom => '~<~(text,text)', oprnegate => '~<=~(text,text)', + oprcode => 'text_pattern_gt', oprrest => 'scalargtsel', + oprjoin => 'scalargtjoinsel' }, + +{ oid => '2326', descr => 'less than', + oprname => '~<~', oprleft => 'bpchar', oprright => 'bpchar', + oprresult => 'bool', oprcom => '~>~(bpchar,bpchar)', + oprnegate => '~>=~(bpchar,bpchar)', oprcode => 'bpchar_pattern_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '2327', descr => 'less than or equal', + oprname => '~<=~', oprleft => 'bpchar', oprright => 'bpchar', + oprresult => 'bool', oprcom => '~>=~(bpchar,bpchar)', + oprnegate => '~>~(bpchar,bpchar)', oprcode => 'bpchar_pattern_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '2329', descr => 'greater than or equal', + oprname => '~>=~', oprleft => 'bpchar', oprright => 'bpchar', + oprresult => 'bool', oprcom => '~<=~(bpchar,bpchar)', + oprnegate => '~<~(bpchar,bpchar)', oprcode => 'bpchar_pattern_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '2330', descr => 'greater than', + oprname => '~>~', oprleft => 'bpchar', oprright => 'bpchar', + oprresult => 'bool', oprcom => '~<~(bpchar,bpchar)', + oprnegate => '~<=~(bpchar,bpchar)', oprcode => 'bpchar_pattern_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, + +# crosstype operations for date vs. timestamp and timestamptz +{ oid => '2345', descr => 'less than', + oprname => '<', oprleft => 'date', oprright => 'timestamp', + oprresult => 'bool', oprcom => '>(timestamp,date)', + oprnegate => '>=(date,timestamp)', oprcode => 'date_lt_timestamp', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '2346', descr => 'less than or equal', + oprname => '<=', oprleft => 'date', oprright => 'timestamp', + oprresult => 'bool', oprcom => '>=(timestamp,date)', + oprnegate => '>(date,timestamp)', oprcode => 'date_le_timestamp', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '2347', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'date', + oprright => 'timestamp', oprresult => 'bool', oprcom => '=(timestamp,date)', + oprnegate => '<>(date,timestamp)', oprcode => 'date_eq_timestamp', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '2348', descr => 'greater than or equal', + oprname => '>=', oprleft => 'date', oprright => 'timestamp', + oprresult => 'bool', oprcom => '<=(timestamp,date)', + oprnegate => '<(date,timestamp)', oprcode => 'date_ge_timestamp', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '2349', descr => 'greater than', + oprname => '>', oprleft => 'date', oprright => 'timestamp', + oprresult => 'bool', oprcom => '<(timestamp,date)', + oprnegate => '<=(date,timestamp)', oprcode => 'date_gt_timestamp', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '2350', descr => 'not equal', + oprname => '<>', oprleft => 'date', oprright => 'timestamp', + oprresult => 'bool', oprcom => '<>(timestamp,date)', + oprnegate => '=(date,timestamp)', oprcode => 'date_ne_timestamp', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, + +{ oid => '2358', descr => 'less than', + oprname => '<', oprleft => 'date', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '>(timestamptz,date)', + oprnegate => '>=(date,timestamptz)', oprcode => 'date_lt_timestamptz', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '2359', descr => 'less than or equal', + oprname => '<=', oprleft => 'date', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '>=(timestamptz,date)', + oprnegate => '>(date,timestamptz)', oprcode => 'date_le_timestamptz', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '2360', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'date', + oprright => 'timestamptz', oprresult => 'bool', + oprcom => '=(timestamptz,date)', oprnegate => '<>(date,timestamptz)', + oprcode => 'date_eq_timestamptz', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '2361', descr => 'greater than or equal', + oprname => '>=', oprleft => 'date', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '<=(timestamptz,date)', + oprnegate => '<(date,timestamptz)', oprcode => 'date_ge_timestamptz', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '2362', descr => 'greater than', + oprname => '>', oprleft => 'date', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '<(timestamptz,date)', + oprnegate => '<=(date,timestamptz)', oprcode => 'date_gt_timestamptz', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '2363', descr => 'not equal', + oprname => '<>', oprleft => 'date', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '<>(timestamptz,date)', + oprnegate => '=(date,timestamptz)', oprcode => 'date_ne_timestamptz', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, + +{ oid => '2371', descr => 'less than', + oprname => '<', oprleft => 'timestamp', oprright => 'date', + oprresult => 'bool', oprcom => '>(date,timestamp)', + oprnegate => '>=(timestamp,date)', oprcode => 'timestamp_lt_date', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '2372', descr => 'less than or equal', + oprname => '<=', oprleft => 'timestamp', oprright => 'date', + oprresult => 'bool', oprcom => '>=(date,timestamp)', + oprnegate => '>(timestamp,date)', oprcode => 'timestamp_le_date', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '2373', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'timestamp', + oprright => 'date', oprresult => 'bool', oprcom => '=(date,timestamp)', + oprnegate => '<>(timestamp,date)', oprcode => 'timestamp_eq_date', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '2374', descr => 'greater than or equal', + oprname => '>=', oprleft => 'timestamp', oprright => 'date', + oprresult => 'bool', oprcom => '<=(date,timestamp)', + oprnegate => '<(timestamp,date)', oprcode => 'timestamp_ge_date', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '2375', descr => 'greater than', + oprname => '>', oprleft => 'timestamp', oprright => 'date', + oprresult => 'bool', oprcom => '<(date,timestamp)', + oprnegate => '<=(timestamp,date)', oprcode => 'timestamp_gt_date', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '2376', descr => 'not equal', + oprname => '<>', oprleft => 'timestamp', oprright => 'date', + oprresult => 'bool', oprcom => '<>(date,timestamp)', + oprnegate => '=(timestamp,date)', oprcode => 'timestamp_ne_date', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, + +{ oid => '2384', descr => 'less than', + oprname => '<', oprleft => 'timestamptz', oprright => 'date', + oprresult => 'bool', oprcom => '>(date,timestamptz)', + oprnegate => '>=(timestamptz,date)', oprcode => 'timestamptz_lt_date', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '2385', descr => 'less than or equal', + oprname => '<=', oprleft => 'timestamptz', oprright => 'date', + oprresult => 'bool', oprcom => '>=(date,timestamptz)', + oprnegate => '>(timestamptz,date)', oprcode => 'timestamptz_le_date', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '2386', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'timestamptz', + oprright => 'date', oprresult => 'bool', oprcom => '=(date,timestamptz)', + oprnegate => '<>(timestamptz,date)', oprcode => 'timestamptz_eq_date', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '2387', descr => 'greater than or equal', + oprname => '>=', oprleft => 'timestamptz', oprright => 'date', + oprresult => 'bool', oprcom => '<=(date,timestamptz)', + oprnegate => '<(timestamptz,date)', oprcode => 'timestamptz_ge_date', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '2388', descr => 'greater than', + oprname => '>', oprleft => 'timestamptz', oprright => 'date', + oprresult => 'bool', oprcom => '<(date,timestamptz)', + oprnegate => '<=(timestamptz,date)', oprcode => 'timestamptz_gt_date', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '2389', descr => 'not equal', + oprname => '<>', oprleft => 'timestamptz', oprright => 'date', + oprresult => 'bool', oprcom => '<>(date,timestamptz)', + oprnegate => '=(timestamptz,date)', oprcode => 'timestamptz_ne_date', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, + +# crosstype operations for timestamp vs. timestamptz +{ oid => '2534', descr => 'less than', + oprname => '<', oprleft => 'timestamp', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '>(timestamptz,timestamp)', + oprnegate => '>=(timestamp,timestamptz)', + oprcode => 'timestamp_lt_timestamptz', oprrest => 'scalarltsel', + oprjoin => 'scalarltjoinsel' }, +{ oid => '2535', descr => 'less than or equal', + oprname => '<=', oprleft => 'timestamp', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '>=(timestamptz,timestamp)', + oprnegate => '>(timestamp,timestamptz)', + oprcode => 'timestamp_le_timestamptz', oprrest => 'scalarlesel', + oprjoin => 'scalarlejoinsel' }, +{ oid => '2536', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'timestamp', + oprright => 'timestamptz', oprresult => 'bool', + oprcom => '=(timestamptz,timestamp)', + oprnegate => '<>(timestamp,timestamptz)', + oprcode => 'timestamp_eq_timestamptz', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '2537', descr => 'greater than or equal', + oprname => '>=', oprleft => 'timestamp', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '<=(timestamptz,timestamp)', + oprnegate => '<(timestamp,timestamptz)', + oprcode => 'timestamp_ge_timestamptz', oprrest => 'scalargesel', + oprjoin => 'scalargejoinsel' }, +{ oid => '2538', descr => 'greater than', + oprname => '>', oprleft => 'timestamp', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '<(timestamptz,timestamp)', + oprnegate => '<=(timestamp,timestamptz)', + oprcode => 'timestamp_gt_timestamptz', oprrest => 'scalargtsel', + oprjoin => 'scalargtjoinsel' }, +{ oid => '2539', descr => 'not equal', + oprname => '<>', oprleft => 'timestamp', oprright => 'timestamptz', + oprresult => 'bool', oprcom => '<>(timestamptz,timestamp)', + oprnegate => '=(timestamp,timestamptz)', + oprcode => 'timestamp_ne_timestamptz', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, + +{ oid => '2540', descr => 'less than', + oprname => '<', oprleft => 'timestamptz', oprright => 'timestamp', + oprresult => 'bool', oprcom => '>(timestamp,timestamptz)', + oprnegate => '>=(timestamptz,timestamp)', + oprcode => 'timestamptz_lt_timestamp', oprrest => 'scalarltsel', + oprjoin => 'scalarltjoinsel' }, +{ oid => '2541', descr => 'less than or equal', + oprname => '<=', oprleft => 'timestamptz', oprright => 'timestamp', + oprresult => 'bool', oprcom => '>=(timestamp,timestamptz)', + oprnegate => '>(timestamptz,timestamp)', + oprcode => 'timestamptz_le_timestamp', oprrest => 'scalarlesel', + oprjoin => 'scalarlejoinsel' }, +{ oid => '2542', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'timestamptz', + oprright => 'timestamp', oprresult => 'bool', + oprcom => '=(timestamp,timestamptz)', + oprnegate => '<>(timestamptz,timestamp)', + oprcode => 'timestamptz_eq_timestamp', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '2543', descr => 'greater than or equal', + oprname => '>=', oprleft => 'timestamptz', oprright => 'timestamp', + oprresult => 'bool', oprcom => '<=(timestamp,timestamptz)', + oprnegate => '<(timestamptz,timestamp)', + oprcode => 'timestamptz_ge_timestamp', oprrest => 'scalargesel', + oprjoin => 'scalargejoinsel' }, +{ oid => '2544', descr => 'greater than', + oprname => '>', oprleft => 'timestamptz', oprright => 'timestamp', + oprresult => 'bool', oprcom => '<(timestamp,timestamptz)', + oprnegate => '<=(timestamptz,timestamp)', + oprcode => 'timestamptz_gt_timestamp', oprrest => 'scalargtsel', + oprjoin => 'scalargtjoinsel' }, +{ oid => '2545', descr => 'not equal', + oprname => '<>', oprleft => 'timestamptz', oprright => 'timestamp', + oprresult => 'bool', oprcom => '<>(timestamp,timestamptz)', + oprnegate => '=(timestamptz,timestamp)', + oprcode => 'timestamptz_ne_timestamp', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, + +# formerly-missing interval + datetime operators +{ oid => '2551', descr => 'add', + oprname => '+', oprleft => 'interval', oprright => 'date', + oprresult => 'timestamp', oprcom => '+(date,interval)', + oprcode => 'interval_pl_date' }, +{ oid => '2552', descr => 'add', + oprname => '+', oprleft => 'interval', oprright => 'timetz', + oprresult => 'timetz', oprcom => '+(timetz,interval)', + oprcode => 'interval_pl_timetz' }, +{ oid => '2553', descr => 'add', + oprname => '+', oprleft => 'interval', oprright => 'timestamp', + oprresult => 'timestamp', oprcom => '+(timestamp,interval)', + oprcode => 'interval_pl_timestamp' }, +{ oid => '2554', descr => 'add', + oprname => '+', oprleft => 'interval', oprright => 'timestamptz', + oprresult => 'timestamptz', oprcom => '+(timestamptz,interval)', + oprcode => 'interval_pl_timestamptz' }, +{ oid => '2555', descr => 'add', + oprname => '+', oprleft => 'int4', oprright => 'date', oprresult => 'date', + oprcom => '+(date,int4)', oprcode => 'integer_pl_date' }, + +# new operators for Y-direction rtree opfamilies +{ oid => '2570', descr => 'is below', + oprname => '<<|', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcode => 'box_below', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '2571', descr => 'overlaps or is below', + oprname => '&<|', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcode => 'box_overbelow', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '2572', descr => 'overlaps or is above', + oprname => '|&>', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcode => 'box_overabove', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '2573', descr => 'is above', + oprname => '|>>', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcode => 'box_above', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '2574', descr => 'is below', + oprname => '<<|', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcode => 'poly_below', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '2575', descr => 'overlaps or is below', + oprname => '&<|', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcode => 'poly_overbelow', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '2576', descr => 'overlaps or is above', + oprname => '|&>', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcode => 'poly_overabove', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '2577', descr => 'is above', + oprname => '|>>', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcode => 'poly_above', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '2589', descr => 'overlaps or is below', + oprname => '&<|', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcode => 'circle_overbelow', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, +{ oid => '2590', descr => 'overlaps or is above', + oprname => '|&>', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcode => 'circle_overabove', oprrest => 'positionsel', + oprjoin => 'positionjoinsel' }, + +# overlap/contains/contained for arrays +{ oid => '2750', oid_symbol => 'OID_ARRAY_OVERLAP_OP', descr => 'overlaps', + oprname => '&&', oprleft => 'anyarray', oprright => 'anyarray', + oprresult => 'bool', oprcom => '&&(anyarray,anyarray)', + oprcode => 'arrayoverlap', oprrest => 'arraycontsel', + oprjoin => 'arraycontjoinsel' }, +{ oid => '2751', oid_symbol => 'OID_ARRAY_CONTAINS_OP', descr => 'contains', + oprname => '@>', oprleft => 'anyarray', oprright => 'anyarray', + oprresult => 'bool', oprcom => '<@(anyarray,anyarray)', + oprcode => 'arraycontains', oprrest => 'arraycontsel', + oprjoin => 'arraycontjoinsel' }, +{ oid => '2752', oid_symbol => 'OID_ARRAY_CONTAINED_OP', + descr => 'is contained by', + oprname => '<@', oprleft => 'anyarray', oprright => 'anyarray', + oprresult => 'bool', oprcom => '@>(anyarray,anyarray)', + oprcode => 'arraycontained', oprrest => 'arraycontsel', + oprjoin => 'arraycontjoinsel' }, + +# capturing operators to preserve pre-8.3 behavior of text concatenation +{ oid => '2779', descr => 'concatenate', + oprname => '||', oprleft => 'text', oprright => 'anynonarray', + oprresult => 'text', oprcode => 'textanycat' }, +{ oid => '2780', descr => 'concatenate', + oprname => '||', oprleft => 'anynonarray', oprright => 'text', + oprresult => 'text', oprcode => 'anytextcat' }, + +# obsolete names for contains/contained-by operators; remove these someday +{ oid => '2860', descr => 'deprecated, use <@ instead', + oprname => '@', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcom => '~(polygon,polygon)', + oprcode => 'poly_contained', oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '2861', descr => 'deprecated, use @> instead', + oprname => '~', oprleft => 'polygon', oprright => 'polygon', + oprresult => 'bool', oprcom => '@(polygon,polygon)', + oprcode => 'poly_contain', oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '2862', descr => 'deprecated, use <@ instead', + oprname => '@', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcom => '~(box,box)', oprcode => 'box_contained', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '2863', descr => 'deprecated, use @> instead', + oprname => '~', oprleft => 'box', oprright => 'box', oprresult => 'bool', + oprcom => '@(box,box)', oprcode => 'box_contain', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '2864', descr => 'deprecated, use <@ instead', + oprname => '@', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '~(circle,circle)', + oprcode => 'circle_contained', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '2865', descr => 'deprecated, use @> instead', + oprname => '~', oprleft => 'circle', oprright => 'circle', + oprresult => 'bool', oprcom => '@(circle,circle)', + oprcode => 'circle_contain', oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '2866', descr => 'deprecated, use <@ instead', + oprname => '@', oprleft => 'point', oprright => 'box', oprresult => 'bool', + oprcode => 'on_pb' }, +{ oid => '2867', descr => 'deprecated, use <@ instead', + oprname => '@', oprleft => 'point', oprright => 'path', oprresult => 'bool', + oprcom => '~(path,point)', oprcode => 'on_ppath' }, +{ oid => '2868', descr => 'deprecated, use @> instead', + oprname => '~', oprleft => 'path', oprright => 'point', oprresult => 'bool', + oprcom => '@(point,path)', oprcode => 'path_contain_pt' }, +{ oid => '2869', descr => 'deprecated, use <@ instead', + oprname => '@', oprleft => 'point', oprright => 'polygon', + oprresult => 'bool', oprcom => '~(polygon,point)', + oprcode => 'pt_contained_poly' }, +{ oid => '2870', descr => 'deprecated, use @> instead', + oprname => '~', oprleft => 'polygon', oprright => 'point', + oprresult => 'bool', oprcom => '@(point,polygon)', + oprcode => 'poly_contain_pt' }, +{ oid => '2871', descr => 'deprecated, use <@ instead', + oprname => '@', oprleft => 'point', oprright => 'circle', oprresult => 'bool', + oprcom => '~(circle,point)', oprcode => 'pt_contained_circle' }, +{ oid => '2872', descr => 'deprecated, use @> instead', + oprname => '~', oprleft => 'circle', oprright => 'point', oprresult => 'bool', + oprcom => '@(point,circle)', oprcode => 'circle_contain_pt' }, +{ oid => '2873', descr => 'deprecated, use <@ instead', + oprname => '@', oprleft => 'point', oprright => 'line', oprresult => 'bool', + oprcode => 'on_pl' }, +{ oid => '2874', descr => 'deprecated, use <@ instead', + oprname => '@', oprleft => 'point', oprright => 'lseg', oprresult => 'bool', + oprcode => 'on_ps' }, +{ oid => '2875', descr => 'deprecated, use <@ instead', + oprname => '@', oprleft => 'lseg', oprright => 'line', oprresult => 'bool', + oprcode => 'on_sl' }, +{ oid => '2876', descr => 'deprecated, use <@ instead', + oprname => '@', oprleft => 'lseg', oprright => 'box', oprresult => 'bool', + oprcode => 'on_sb' }, +{ oid => '2877', descr => 'deprecated, use @> instead', + oprname => '~', oprleft => '_aclitem', oprright => 'aclitem', + oprresult => 'bool', oprcode => 'aclcontains' }, + +# uuid operators +{ oid => '2972', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'uuid', + oprright => 'uuid', oprresult => 'bool', oprcom => '=(uuid,uuid)', + oprnegate => '<>(uuid,uuid)', oprcode => 'uuid_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '2973', descr => 'not equal', + oprname => '<>', oprleft => 'uuid', oprright => 'uuid', oprresult => 'bool', + oprcom => '<>(uuid,uuid)', oprnegate => '=(uuid,uuid)', oprcode => 'uuid_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '2974', descr => 'less than', + oprname => '<', oprleft => 'uuid', oprright => 'uuid', oprresult => 'bool', + oprcom => '>(uuid,uuid)', oprnegate => '>=(uuid,uuid)', oprcode => 'uuid_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '2975', descr => 'greater than', + oprname => '>', oprleft => 'uuid', oprright => 'uuid', oprresult => 'bool', + oprcom => '<(uuid,uuid)', oprnegate => '<=(uuid,uuid)', oprcode => 'uuid_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '2976', descr => 'less than or equal', + oprname => '<=', oprleft => 'uuid', oprright => 'uuid', oprresult => 'bool', + oprcom => '>=(uuid,uuid)', oprnegate => '>(uuid,uuid)', oprcode => 'uuid_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '2977', descr => 'greater than or equal', + oprname => '>=', oprleft => 'uuid', oprright => 'uuid', oprresult => 'bool', + oprcom => '<=(uuid,uuid)', oprnegate => '<(uuid,uuid)', oprcode => 'uuid_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +# pg_lsn operators +{ oid => '3222', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'pg_lsn', + oprright => 'pg_lsn', oprresult => 'bool', oprcom => '=(pg_lsn,pg_lsn)', + oprnegate => '<>(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '3223', descr => 'not equal', + oprname => '<>', oprleft => 'pg_lsn', oprright => 'pg_lsn', + oprresult => 'bool', oprcom => '<>(pg_lsn,pg_lsn)', + oprnegate => '=(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_ne', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '3224', descr => 'less than', + oprname => '<', oprleft => 'pg_lsn', oprright => 'pg_lsn', + oprresult => 'bool', oprcom => '>(pg_lsn,pg_lsn)', + oprnegate => '>=(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '3225', descr => 'greater than', + oprname => '>', oprleft => 'pg_lsn', oprright => 'pg_lsn', + oprresult => 'bool', oprcom => '<(pg_lsn,pg_lsn)', + oprnegate => '<=(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '3226', descr => 'less than or equal', + oprname => '<=', oprleft => 'pg_lsn', oprright => 'pg_lsn', + oprresult => 'bool', oprcom => '>=(pg_lsn,pg_lsn)', + oprnegate => '>(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '3227', descr => 'greater than or equal', + oprname => '>=', oprleft => 'pg_lsn', oprright => 'pg_lsn', + oprresult => 'bool', oprcom => '<=(pg_lsn,pg_lsn)', + oprnegate => '<(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '3228', descr => 'minus', + oprname => '-', oprleft => 'pg_lsn', oprright => 'pg_lsn', + oprresult => 'numeric', oprcode => 'pg_lsn_mi' }, + +# enum operators +{ oid => '3516', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'anyenum', + oprright => 'anyenum', oprresult => 'bool', oprcom => '=(anyenum,anyenum)', + oprnegate => '<>(anyenum,anyenum)', oprcode => 'enum_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '3517', descr => 'not equal', + oprname => '<>', oprleft => 'anyenum', oprright => 'anyenum', + oprresult => 'bool', oprcom => '<>(anyenum,anyenum)', + oprnegate => '=(anyenum,anyenum)', oprcode => 'enum_ne', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '3518', descr => 'less than', + oprname => '<', oprleft => 'anyenum', oprright => 'anyenum', + oprresult => 'bool', oprcom => '>(anyenum,anyenum)', + oprnegate => '>=(anyenum,anyenum)', oprcode => 'enum_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '3519', descr => 'greater than', + oprname => '>', oprleft => 'anyenum', oprright => 'anyenum', + oprresult => 'bool', oprcom => '<(anyenum,anyenum)', + oprnegate => '<=(anyenum,anyenum)', oprcode => 'enum_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '3520', descr => 'less than or equal', + oprname => '<=', oprleft => 'anyenum', oprright => 'anyenum', + oprresult => 'bool', oprcom => '>=(anyenum,anyenum)', + oprnegate => '>(anyenum,anyenum)', oprcode => 'enum_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '3521', descr => 'greater than or equal', + oprname => '>=', oprleft => 'anyenum', oprright => 'anyenum', + oprresult => 'bool', oprcom => '<=(anyenum,anyenum)', + oprnegate => '<(anyenum,anyenum)', oprcode => 'enum_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +# tsearch operations +{ oid => '3627', descr => 'less than', + oprname => '<', oprleft => 'tsvector', oprright => 'tsvector', + oprresult => 'bool', oprcom => '>(tsvector,tsvector)', + oprnegate => '>=(tsvector,tsvector)', oprcode => 'tsvector_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '3628', descr => 'less than or equal', + oprname => '<=', oprleft => 'tsvector', oprright => 'tsvector', + oprresult => 'bool', oprcom => '>=(tsvector,tsvector)', + oprnegate => '>(tsvector,tsvector)', oprcode => 'tsvector_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '3629', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'tsvector', + oprright => 'tsvector', oprresult => 'bool', oprcom => '=(tsvector,tsvector)', + oprnegate => '<>(tsvector,tsvector)', oprcode => 'tsvector_eq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '3630', descr => 'not equal', + oprname => '<>', oprleft => 'tsvector', oprright => 'tsvector', + oprresult => 'bool', oprcom => '<>(tsvector,tsvector)', + oprnegate => '=(tsvector,tsvector)', oprcode => 'tsvector_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '3631', descr => 'greater than or equal', + oprname => '>=', oprleft => 'tsvector', oprright => 'tsvector', + oprresult => 'bool', oprcom => '<=(tsvector,tsvector)', + oprnegate => '<(tsvector,tsvector)', oprcode => 'tsvector_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '3632', descr => 'greater than', + oprname => '>', oprleft => 'tsvector', oprright => 'tsvector', + oprresult => 'bool', oprcom => '<(tsvector,tsvector)', + oprnegate => '<=(tsvector,tsvector)', oprcode => 'tsvector_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '3633', descr => 'concatenate', + oprname => '||', oprleft => 'tsvector', oprright => 'tsvector', + oprresult => 'tsvector', oprcode => 'tsvector_concat' }, +{ oid => '3636', descr => 'text search match', + oprname => '@@', oprleft => 'tsvector', oprright => 'tsquery', + oprresult => 'bool', oprcom => '@@(tsquery,tsvector)', + oprcode => 'ts_match_vq', oprrest => 'tsmatchsel', + oprjoin => 'tsmatchjoinsel' }, +{ oid => '3637', descr => 'text search match', + oprname => '@@', oprleft => 'tsquery', oprright => 'tsvector', + oprresult => 'bool', oprcom => '@@(tsvector,tsquery)', + oprcode => 'ts_match_qv', oprrest => 'tsmatchsel', + oprjoin => 'tsmatchjoinsel' }, +{ oid => '3660', descr => 'deprecated, use @@ instead', + oprname => '@@@', oprleft => 'tsvector', oprright => 'tsquery', + oprresult => 'bool', oprcom => '@@@(tsquery,tsvector)', + oprcode => 'ts_match_vq', oprrest => 'tsmatchsel', + oprjoin => 'tsmatchjoinsel' }, +{ oid => '3661', descr => 'deprecated, use @@ instead', + oprname => '@@@', oprleft => 'tsquery', oprright => 'tsvector', + oprresult => 'bool', oprcom => '@@@(tsvector,tsquery)', + oprcode => 'ts_match_qv', oprrest => 'tsmatchsel', + oprjoin => 'tsmatchjoinsel' }, +{ oid => '3674', descr => 'less than', + oprname => '<', oprleft => 'tsquery', oprright => 'tsquery', + oprresult => 'bool', oprcom => '>(tsquery,tsquery)', + oprnegate => '>=(tsquery,tsquery)', oprcode => 'tsquery_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '3675', descr => 'less than or equal', + oprname => '<=', oprleft => 'tsquery', oprright => 'tsquery', + oprresult => 'bool', oprcom => '>=(tsquery,tsquery)', + oprnegate => '>(tsquery,tsquery)', oprcode => 'tsquery_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '3676', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'tsquery', + oprright => 'tsquery', oprresult => 'bool', oprcom => '=(tsquery,tsquery)', + oprnegate => '<>(tsquery,tsquery)', oprcode => 'tsquery_eq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '3677', descr => 'not equal', + oprname => '<>', oprleft => 'tsquery', oprright => 'tsquery', + oprresult => 'bool', oprcom => '<>(tsquery,tsquery)', + oprnegate => '=(tsquery,tsquery)', oprcode => 'tsquery_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '3678', descr => 'greater than or equal', + oprname => '>=', oprleft => 'tsquery', oprright => 'tsquery', + oprresult => 'bool', oprcom => '<=(tsquery,tsquery)', + oprnegate => '<(tsquery,tsquery)', oprcode => 'tsquery_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, +{ oid => '3679', descr => 'greater than', + oprname => '>', oprleft => 'tsquery', oprright => 'tsquery', + oprresult => 'bool', oprcom => '<(tsquery,tsquery)', + oprnegate => '<=(tsquery,tsquery)', oprcode => 'tsquery_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '3680', descr => 'AND-concatenate', + oprname => '&&', oprleft => 'tsquery', oprright => 'tsquery', + oprresult => 'tsquery', oprcode => 'tsquery_and' }, +{ oid => '3681', descr => 'OR-concatenate', + oprname => '||', oprleft => 'tsquery', oprright => 'tsquery', + oprresult => 'tsquery', oprcode => 'tsquery_or' }, +{ oid => '5005', descr => 'phrase-concatenate', + oprname => '<->', oprleft => 'tsquery', oprright => 'tsquery', + oprresult => 'tsquery', oprcode => 'tsquery_phrase(tsquery,tsquery)' }, +{ oid => '3682', descr => 'NOT tsquery', + oprname => '!!', oprkind => 'l', oprleft => '0', oprright => 'tsquery', + oprresult => 'tsquery', oprcode => 'tsquery_not' }, +{ oid => '3693', descr => 'contains', + oprname => '@>', oprleft => 'tsquery', oprright => 'tsquery', + oprresult => 'bool', oprcom => '<@(tsquery,tsquery)', + oprcode => 'tsq_mcontains', oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '3694', descr => 'is contained by', + oprname => '<@', oprleft => 'tsquery', oprright => 'tsquery', + oprresult => 'bool', oprcom => '@>(tsquery,tsquery)', + oprcode => 'tsq_mcontained', oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '3762', descr => 'text search match', + oprname => '@@', oprleft => 'text', oprright => 'text', oprresult => 'bool', + oprcode => 'ts_match_tt', oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '3763', descr => 'text search match', + oprname => '@@', oprleft => 'text', oprright => 'tsquery', + oprresult => 'bool', oprcode => 'ts_match_tq', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, + +# generic record comparison operators +{ oid => '2988', oid_symbol => 'RECORD_EQ_OP', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprleft => 'record', oprright => 'record', + oprresult => 'bool', oprcom => '=(record,record)', + oprnegate => '<>(record,record)', oprcode => 'record_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '2989', descr => 'not equal', + oprname => '<>', oprleft => 'record', oprright => 'record', + oprresult => 'bool', oprcom => '<>(record,record)', + oprnegate => '=(record,record)', oprcode => 'record_ne', oprrest => 'neqsel', + oprjoin => 'neqjoinsel' }, +{ oid => '2990', oid_symbol => 'RECORD_LT_OP', descr => 'less than', + oprname => '<', oprleft => 'record', oprright => 'record', + oprresult => 'bool', oprcom => '>(record,record)', + oprnegate => '>=(record,record)', oprcode => 'record_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '2991', oid_symbol => 'RECORD_GT_OP', descr => 'greater than', + oprname => '>', oprleft => 'record', oprright => 'record', + oprresult => 'bool', oprcom => '<(record,record)', + oprnegate => '<=(record,record)', oprcode => 'record_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '2992', descr => 'less than or equal', + oprname => '<=', oprleft => 'record', oprright => 'record', + oprresult => 'bool', oprcom => '>=(record,record)', + oprnegate => '>(record,record)', oprcode => 'record_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '2993', descr => 'greater than or equal', + oprname => '>=', oprleft => 'record', oprright => 'record', + oprresult => 'bool', oprcom => '<=(record,record)', + oprnegate => '<(record,record)', oprcode => 'record_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +# byte-oriented tests for identical rows and fast sorting +{ oid => '3188', descr => 'identical', + oprname => '*=', oprcanmerge => 't', oprleft => 'record', + oprright => 'record', oprresult => 'bool', oprcom => '*=(record,record)', + oprnegate => '*<>(record,record)', oprcode => 'record_image_eq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '3189', descr => 'not identical', + oprname => '*<>', oprleft => 'record', oprright => 'record', + oprresult => 'bool', oprcom => '*<>(record,record)', + oprnegate => '*=(record,record)', oprcode => 'record_image_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '3190', descr => 'less than', + oprname => '*<', oprleft => 'record', oprright => 'record', + oprresult => 'bool', oprcom => '*>(record,record)', + oprnegate => '*>=(record,record)', oprcode => 'record_image_lt', + oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' }, +{ oid => '3191', descr => 'greater than', + oprname => '*>', oprleft => 'record', oprright => 'record', + oprresult => 'bool', oprcom => '*<(record,record)', + oprnegate => '*<=(record,record)', oprcode => 'record_image_gt', + oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' }, +{ oid => '3192', descr => 'less than or equal', + oprname => '*<=', oprleft => 'record', oprright => 'record', + oprresult => 'bool', oprcom => '*>=(record,record)', + oprnegate => '*>(record,record)', oprcode => 'record_image_le', + oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '3193', descr => 'greater than or equal', + oprname => '*>=', oprleft => 'record', oprright => 'record', + oprresult => 'bool', oprcom => '*<=(record,record)', + oprnegate => '*<(record,record)', oprcode => 'record_image_ge', + oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, + +# generic range type operators +{ oid => '3882', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'anyrange', + oprright => 'anyrange', oprresult => 'bool', oprcom => '=(anyrange,anyrange)', + oprnegate => '<>(anyrange,anyrange)', oprcode => 'range_eq', + oprrest => 'eqsel', oprjoin => 'eqjoinsel' }, +{ oid => '3883', descr => 'not equal', + oprname => '<>', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcom => '<>(anyrange,anyrange)', + oprnegate => '=(anyrange,anyrange)', oprcode => 'range_ne', + oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '3884', oid_symbol => 'OID_RANGE_LESS_OP', descr => 'less than', + oprname => '<', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcom => '>(anyrange,anyrange)', + oprnegate => '>=(anyrange,anyrange)', oprcode => 'range_lt', + oprrest => 'rangesel', oprjoin => 'scalarltjoinsel' }, +{ oid => '3885', oid_symbol => 'OID_RANGE_LESS_EQUAL_OP', + descr => 'less than or equal', + oprname => '<=', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcom => '>=(anyrange,anyrange)', + oprnegate => '>(anyrange,anyrange)', oprcode => 'range_le', + oprrest => 'rangesel', oprjoin => 'scalarlejoinsel' }, +{ oid => '3886', oid_symbol => 'OID_RANGE_GREATER_EQUAL_OP', + descr => 'greater than or equal', + oprname => '>=', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcom => '<=(anyrange,anyrange)', + oprnegate => '<(anyrange,anyrange)', oprcode => 'range_ge', + oprrest => 'rangesel', oprjoin => 'scalargejoinsel' }, +{ oid => '3887', oid_symbol => 'OID_RANGE_GREATER_OP', + descr => 'greater than', + oprname => '>', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcom => '<(anyrange,anyrange)', + oprnegate => '<=(anyrange,anyrange)', oprcode => 'range_gt', + oprrest => 'rangesel', oprjoin => 'scalargtjoinsel' }, +{ oid => '3888', oid_symbol => 'OID_RANGE_OVERLAP_OP', descr => 'overlaps', + oprname => '&&', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcom => '&&(anyrange,anyrange)', + oprcode => 'range_overlaps', oprrest => 'rangesel', + oprjoin => 'areajoinsel' }, +{ oid => '3889', oid_symbol => 'OID_RANGE_CONTAINS_ELEM_OP', + descr => 'contains', + oprname => '@>', oprleft => 'anyrange', oprright => 'anyelement', + oprresult => 'bool', oprcom => '<@(anyelement,anyrange)', + oprcode => 'range_contains_elem', oprrest => 'rangesel', + oprjoin => 'contjoinsel' }, +{ oid => '3890', oid_symbol => 'OID_RANGE_CONTAINS_OP', descr => 'contains', + oprname => '@>', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcom => '<@(anyrange,anyrange)', + oprcode => 'range_contains', oprrest => 'rangesel', + oprjoin => 'contjoinsel' }, +{ oid => '3891', oid_symbol => 'OID_RANGE_ELEM_CONTAINED_OP', + descr => 'is contained by', + oprname => '<@', oprleft => 'anyelement', oprright => 'anyrange', + oprresult => 'bool', oprcom => '@>(anyrange,anyelement)', + oprcode => 'elem_contained_by_range', oprrest => 'rangesel', + oprjoin => 'contjoinsel' }, +{ oid => '3892', oid_symbol => 'OID_RANGE_CONTAINED_OP', + descr => 'is contained by', + oprname => '<@', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcom => '@>(anyrange,anyrange)', + oprcode => 'range_contained_by', oprrest => 'rangesel', + oprjoin => 'contjoinsel' }, +{ oid => '3893', oid_symbol => 'OID_RANGE_LEFT_OP', descr => 'is left of', + oprname => '<<', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcom => '>>(anyrange,anyrange)', + oprcode => 'range_before', oprrest => 'rangesel', + oprjoin => 'scalarltjoinsel' }, +{ oid => '3894', oid_symbol => 'OID_RANGE_RIGHT_OP', descr => 'is right of', + oprname => '>>', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcom => '<<(anyrange,anyrange)', + oprcode => 'range_after', oprrest => 'rangesel', + oprjoin => 'scalargtjoinsel' }, +{ oid => '3895', oid_symbol => 'OID_RANGE_OVERLAPS_LEFT_OP', + descr => 'overlaps or is left of', + oprname => '&<', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcode => 'range_overleft', oprrest => 'rangesel', + oprjoin => 'scalarltjoinsel' }, +{ oid => '3896', oid_symbol => 'OID_RANGE_OVERLAPS_RIGHT_OP', + descr => 'overlaps or is right of', + oprname => '&>', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcode => 'range_overright', oprrest => 'rangesel', + oprjoin => 'scalargtjoinsel' }, +{ oid => '3897', descr => 'is adjacent to', + oprname => '-|-', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'bool', oprcom => '-|-(anyrange,anyrange)', + oprcode => 'range_adjacent', oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '3898', descr => 'range union', + oprname => '+', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'anyrange', oprcom => '+(anyrange,anyrange)', + oprcode => 'range_union' }, +{ oid => '3899', descr => 'range difference', + oprname => '-', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'anyrange', oprcode => 'range_minus' }, +{ oid => '3900', descr => 'range intersection', + oprname => '*', oprleft => 'anyrange', oprright => 'anyrange', + oprresult => 'anyrange', oprcom => '*(anyrange,anyrange)', + oprcode => 'range_intersect' }, +{ oid => '3962', descr => 'get json object field', + oprname => '->', oprleft => 'json', oprright => 'text', oprresult => 'json', + oprcode => 'json_object_field' }, +{ oid => '3963', descr => 'get json object field as text', + oprname => '->>', oprleft => 'json', oprright => 'text', oprresult => 'text', + oprcode => 'json_object_field_text' }, +{ oid => '3964', descr => 'get json array element', + oprname => '->', oprleft => 'json', oprright => 'int4', oprresult => 'json', + oprcode => 'json_array_element' }, +{ oid => '3965', descr => 'get json array element as text', + oprname => '->>', oprleft => 'json', oprright => 'int4', oprresult => 'text', + oprcode => 'json_array_element_text' }, +{ oid => '3966', descr => 'get value from json with path elements', + oprname => '#>', oprleft => 'json', oprright => '_text', oprresult => 'json', + oprcode => 'json_extract_path' }, +{ oid => '3967', descr => 'get value from json as text with path elements', + oprname => '#>>', oprleft => 'json', oprright => '_text', oprresult => 'text', + oprcode => 'json_extract_path_text' }, +{ oid => '3211', descr => 'get jsonb object field', + oprname => '->', oprleft => 'jsonb', oprright => 'text', oprresult => 'jsonb', + oprcode => 'jsonb_object_field' }, +{ oid => '3477', descr => 'get jsonb object field as text', + oprname => '->>', oprleft => 'jsonb', oprright => 'text', oprresult => 'text', + oprcode => 'jsonb_object_field_text' }, +{ oid => '3212', descr => 'get jsonb array element', + oprname => '->', oprleft => 'jsonb', oprright => 'int4', oprresult => 'jsonb', + oprcode => 'jsonb_array_element' }, +{ oid => '3481', descr => 'get jsonb array element as text', + oprname => '->>', oprleft => 'jsonb', oprright => 'int4', oprresult => 'text', + oprcode => 'jsonb_array_element_text' }, +{ oid => '3213', descr => 'get value from jsonb with path elements', + oprname => '#>', oprleft => 'jsonb', oprright => '_text', + oprresult => 'jsonb', oprcode => 'jsonb_extract_path' }, +{ oid => '3206', descr => 'get value from jsonb as text with path elements', + oprname => '#>>', oprleft => 'jsonb', oprright => '_text', + oprresult => 'text', oprcode => 'jsonb_extract_path_text' }, +{ oid => '3240', descr => 'equal', + oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'jsonb', + oprright => 'jsonb', oprresult => 'bool', oprcom => '=(jsonb,jsonb)', + oprnegate => '<>(jsonb,jsonb)', oprcode => 'jsonb_eq', oprrest => 'eqsel', + oprjoin => 'eqjoinsel' }, +{ oid => '3241', descr => 'not equal', + oprname => '<>', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool', + oprcom => '<>(jsonb,jsonb)', oprnegate => '=(jsonb,jsonb)', + oprcode => 'jsonb_ne', oprrest => 'neqsel', oprjoin => 'neqjoinsel' }, +{ oid => '3242', descr => 'less than', + oprname => '<', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool', + oprcom => '>(jsonb,jsonb)', oprnegate => '>=(jsonb,jsonb)', + oprcode => 'jsonb_lt', oprrest => 'scalarltsel', + oprjoin => 'scalarltjoinsel' }, +{ oid => '3243', descr => 'greater than', + oprname => '>', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool', + oprcom => '<(jsonb,jsonb)', oprnegate => '<=(jsonb,jsonb)', + oprcode => 'jsonb_gt', oprrest => 'scalargtsel', + oprjoin => 'scalargtjoinsel' }, +{ oid => '3244', descr => 'less than or equal', + oprname => '<=', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool', + oprcom => '>=(jsonb,jsonb)', oprnegate => '>(jsonb,jsonb)', + oprcode => 'jsonb_le', oprrest => 'scalarlesel', + oprjoin => 'scalarlejoinsel' }, +{ oid => '3245', descr => 'greater than or equal', + oprname => '>=', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool', + oprcom => '<=(jsonb,jsonb)', oprnegate => '<(jsonb,jsonb)', + oprcode => 'jsonb_ge', oprrest => 'scalargesel', + oprjoin => 'scalargejoinsel' }, +{ oid => '3246', descr => 'contains', + oprname => '@>', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool', + oprcom => '<@(jsonb,jsonb)', oprcode => 'jsonb_contains', + oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '3247', descr => 'key exists', + oprname => '?', oprleft => 'jsonb', oprright => 'text', oprresult => 'bool', + oprcode => 'jsonb_exists', oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '3248', descr => 'any key exists', + oprname => '?|', oprleft => 'jsonb', oprright => '_text', oprresult => 'bool', + oprcode => 'jsonb_exists_any', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '3249', descr => 'all keys exist', + oprname => '?&', oprleft => 'jsonb', oprright => '_text', oprresult => 'bool', + oprcode => 'jsonb_exists_all', oprrest => 'contsel', + oprjoin => 'contjoinsel' }, +{ oid => '3250', descr => 'is contained by', + oprname => '<@', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool', + oprcom => '@>(jsonb,jsonb)', oprcode => 'jsonb_contained', + oprrest => 'contsel', oprjoin => 'contjoinsel' }, +{ oid => '3284', descr => 'concatenate', + oprname => '||', oprleft => 'jsonb', oprright => 'jsonb', + oprresult => 'jsonb', oprcode => 'jsonb_concat' }, +{ oid => '3285', descr => 'delete object field', + oprname => '-', oprleft => 'jsonb', oprright => 'text', oprresult => 'jsonb', + oprcode => 'jsonb_delete(jsonb,text)' }, +{ oid => '3398', descr => 'delete object fields', + oprname => '-', oprleft => 'jsonb', oprright => '_text', oprresult => 'jsonb', + oprcode => 'jsonb_delete(jsonb,_text)' }, +{ oid => '3286', descr => 'delete array element', + oprname => '-', oprleft => 'jsonb', oprright => 'int4', oprresult => 'jsonb', + oprcode => 'jsonb_delete(jsonb,int4)' }, +{ oid => '3287', descr => 'delete path', + oprname => '#-', oprleft => 'jsonb', oprright => '_text', + oprresult => 'jsonb', oprcode => 'jsonb_delete_path' }, + +] diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h index 6a6f708914..4950d28f1a 100644 --- a/src/include/catalog/pg_operator.h +++ b/src/include/catalog/pg_operator.h @@ -2,7 +2,6 @@ * * pg_operator.h * definition of the system "operator" relation (pg_operator) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,11 +10,8 @@ * src/include/catalog/pg_operator.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -23,30 +19,56 @@ #define PG_OPERATOR_H #include "catalog/genbki.h" +#include "catalog/pg_operator_d.h" /* ---------------- * pg_operator definition. cpp turns this into * typedef struct FormData_pg_operator * ---------------- */ -#define OperatorRelationId 2617 - -CATALOG(pg_operator,2617) +CATALOG(pg_operator,2617,OperatorRelationId) { - NameData oprname; /* name of operator */ - Oid oprnamespace; /* OID of namespace containing this oper */ - Oid oprowner; /* operator owner */ - char oprkind; /* 'l', 'r', or 'b' */ - bool oprcanmerge; /* can be used in merge join? */ - bool oprcanhash; /* can be used in hash join? */ - Oid oprleft; /* left arg type, or 0 if 'l' oprkind */ - Oid oprright; /* right arg type, or 0 if 'r' oprkind */ - Oid oprresult; /* result datatype */ - Oid oprcom; /* OID of commutator oper, or 0 if none */ - Oid oprnegate; /* OID of negator oper, or 0 if none */ - regproc oprcode; /* OID of underlying function */ - regproc oprrest; /* OID of restriction estimator, or 0 */ - regproc oprjoin; /* OID of join estimator, or 0 */ + /* name of operator */ + NameData oprname; + + /* OID of namespace containing this oper */ + Oid oprnamespace BKI_DEFAULT(PGNSP); + + /* operator owner */ + Oid oprowner BKI_DEFAULT(PGUID); + + /* 'l', 'r', or 'b' */ + char oprkind BKI_DEFAULT(b); + + /* can be used in merge join? */ + bool oprcanmerge BKI_DEFAULT(f); + + /* can be used in hash join? */ + bool oprcanhash BKI_DEFAULT(f); + + /* left arg type, or 0 if 'l' oprkind */ + Oid oprleft BKI_LOOKUP(pg_type); + + /* right arg type, or 0 if 'r' oprkind */ + Oid oprright BKI_LOOKUP(pg_type); + + /* result datatype */ + Oid oprresult BKI_LOOKUP(pg_type); + + /* OID of commutator oper, or 0 if none */ + Oid oprcom BKI_DEFAULT(0) BKI_LOOKUP(pg_operator); + + /* OID of negator oper, or 0 if none */ + Oid oprnegate BKI_DEFAULT(0) BKI_LOOKUP(pg_operator); + + /* OID of underlying function */ + regproc oprcode BKI_LOOKUP(pg_proc); + + /* OID of restriction estimator, or 0 */ + regproc oprrest BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + + /* OID of join estimator, or 0 */ + regproc oprjoin BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); } FormData_pg_operator; /* ---------------- @@ -56,1804 +78,4 @@ CATALOG(pg_operator,2617) */ typedef FormData_pg_operator *Form_pg_operator; -/* ---------------- - * compiler constants for pg_operator - * ---------------- - */ - -#define Natts_pg_operator 14 -#define Anum_pg_operator_oprname 1 -#define Anum_pg_operator_oprnamespace 2 -#define Anum_pg_operator_oprowner 3 -#define Anum_pg_operator_oprkind 4 -#define Anum_pg_operator_oprcanmerge 5 -#define Anum_pg_operator_oprcanhash 6 -#define Anum_pg_operator_oprleft 7 -#define Anum_pg_operator_oprright 8 -#define Anum_pg_operator_oprresult 9 -#define Anum_pg_operator_oprcom 10 -#define Anum_pg_operator_oprnegate 11 -#define Anum_pg_operator_oprcode 12 -#define Anum_pg_operator_oprrest 13 -#define Anum_pg_operator_oprjoin 14 - -/* ---------------- - * initial contents of pg_operator - * ---------------- - */ - -/* - * Note: every entry in pg_operator.h is expected to have a DESCR() comment. - * If the operator is a deprecated equivalent of some other entry, be sure - * to comment it as such so that initdb doesn't think it's a preferred name - * for the underlying function. - */ - -DATA(insert OID = 15 ( "=" PGNSP PGUID b t t 23 20 16 416 36 int48eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 36 ( "<>" PGNSP PGUID b f f 23 20 16 417 15 int48ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 37 ( "<" PGNSP PGUID b f f 23 20 16 419 82 int48lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 76 ( ">" PGNSP PGUID b f f 23 20 16 418 80 int48gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 80 ( "<=" PGNSP PGUID b f f 23 20 16 430 76 int48le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 82 ( ">=" PGNSP PGUID b f f 23 20 16 420 37 int48ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 58 ( "<" PGNSP PGUID b f f 16 16 16 59 1695 boollt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 59 ( ">" PGNSP PGUID b f f 16 16 16 58 1694 boolgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 85 ( "<>" PGNSP PGUID b f f 16 16 16 85 91 boolne neqsel neqjoinsel )); -DESCR("not equal"); -#define BooleanNotEqualOperator 85 -DATA(insert OID = 91 ( "=" PGNSP PGUID b t t 16 16 16 91 85 booleq eqsel eqjoinsel )); -DESCR("equal"); -#define BooleanEqualOperator 91 -DATA(insert OID = 1694 ( "<=" PGNSP PGUID b f f 16 16 16 1695 59 boolle scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1695 ( ">=" PGNSP PGUID b f f 16 16 16 1694 58 boolge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 92 ( "=" PGNSP PGUID b t t 18 18 16 92 630 chareq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 93 ( "=" PGNSP PGUID b t t 19 19 16 93 643 nameeq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 94 ( "=" PGNSP PGUID b t t 21 21 16 94 519 int2eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 95 ( "<" PGNSP PGUID b f f 21 21 16 520 524 int2lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 96 ( "=" PGNSP PGUID b t t 23 23 16 96 518 int4eq eqsel eqjoinsel )); -DESCR("equal"); -#define Int4EqualOperator 96 -DATA(insert OID = 97 ( "<" PGNSP PGUID b f f 23 23 16 521 525 int4lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define Int4LessOperator 97 -DATA(insert OID = 98 ( "=" PGNSP PGUID b t t 25 25 16 98 531 texteq eqsel eqjoinsel )); -DESCR("equal"); -#define TextEqualOperator 98 -DATA(insert OID = 3877 ( "^@" PGNSP PGUID b f f 25 25 16 0 0 starts_with prefixsel prefixjoinsel )); -DESCR("starts with"); - -DATA(insert OID = 349 ( "||" PGNSP PGUID b f f 2277 2283 2277 0 0 array_append - - )); -DESCR("append element onto end of array"); -DATA(insert OID = 374 ( "||" PGNSP PGUID b f f 2283 2277 2277 0 0 array_prepend - - )); -DESCR("prepend element onto front of array"); -DATA(insert OID = 375 ( "||" PGNSP PGUID b f f 2277 2277 2277 0 0 array_cat - - )); -DESCR("concatenate"); - -DATA(insert OID = 352 ( "=" PGNSP PGUID b f t 28 28 16 352 3315 xideq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 353 ( "=" PGNSP PGUID b f f 28 23 16 0 3316 xideqint4 eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3315 ( "<>" PGNSP PGUID b f f 28 28 16 3315 352 xidneq neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3316 ( "<>" PGNSP PGUID b f f 28 23 16 0 353 xidneqint4 neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 388 ( "!" PGNSP PGUID r f f 20 0 1700 0 0 numeric_fac - - )); -DESCR("factorial"); -DATA(insert OID = 389 ( "!!" PGNSP PGUID l f f 0 20 1700 0 0 numeric_fac - - )); -DESCR("deprecated, use ! instead"); -DATA(insert OID = 385 ( "=" PGNSP PGUID b f t 29 29 16 385 0 cideq eqsel eqjoinsel )); -DESCR("equal"); - -DATA(insert OID = 387 ( "=" PGNSP PGUID b t f 27 27 16 387 402 tideq eqsel eqjoinsel )); -DESCR("equal"); -#define TIDEqualOperator 387 -DATA(insert OID = 402 ( "<>" PGNSP PGUID b f f 27 27 16 402 387 tidne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 2799 ( "<" PGNSP PGUID b f f 27 27 16 2800 2802 tidlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define TIDLessOperator 2799 -DATA(insert OID = 2800 ( ">" PGNSP PGUID b f f 27 27 16 2799 2801 tidgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2801 ( "<=" PGNSP PGUID b f f 27 27 16 2802 2800 tidle scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2802 ( ">=" PGNSP PGUID b f f 27 27 16 2801 2799 tidge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 410 ( "=" PGNSP PGUID b t t 20 20 16 410 411 int8eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 411 ( "<>" PGNSP PGUID b f f 20 20 16 411 410 int8ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 412 ( "<" PGNSP PGUID b f f 20 20 16 413 415 int8lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define Int8LessOperator 412 -DATA(insert OID = 413 ( ">" PGNSP PGUID b f f 20 20 16 412 414 int8gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 414 ( "<=" PGNSP PGUID b f f 20 20 16 415 413 int8le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 415 ( ">=" PGNSP PGUID b f f 20 20 16 414 412 int8ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 416 ( "=" PGNSP PGUID b t t 20 23 16 15 417 int84eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 417 ( "<>" PGNSP PGUID b f f 20 23 16 36 416 int84ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 418 ( "<" PGNSP PGUID b f f 20 23 16 76 430 int84lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 419 ( ">" PGNSP PGUID b f f 20 23 16 37 420 int84gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 420 ( "<=" PGNSP PGUID b f f 20 23 16 82 419 int84le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 430 ( ">=" PGNSP PGUID b f f 20 23 16 80 418 int84ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 439 ( "%" PGNSP PGUID b f f 20 20 20 0 0 int8mod - - )); -DESCR("modulus"); -DATA(insert OID = 473 ( "@" PGNSP PGUID l f f 0 20 20 0 0 int8abs - - )); -DESCR("absolute value"); - -DATA(insert OID = 484 ( "-" PGNSP PGUID l f f 0 20 20 0 0 int8um - - )); -DESCR("negate"); -DATA(insert OID = 485 ( "<<" PGNSP PGUID b f f 604 604 16 0 0 poly_left positionsel positionjoinsel )); -DESCR("is left of"); -DATA(insert OID = 486 ( "&<" PGNSP PGUID b f f 604 604 16 0 0 poly_overleft positionsel positionjoinsel )); -DESCR("overlaps or is left of"); -DATA(insert OID = 487 ( "&>" PGNSP PGUID b f f 604 604 16 0 0 poly_overright positionsel positionjoinsel )); -DESCR("overlaps or is right of"); -DATA(insert OID = 488 ( ">>" PGNSP PGUID b f f 604 604 16 0 0 poly_right positionsel positionjoinsel )); -DESCR("is right of"); -DATA(insert OID = 489 ( "<@" PGNSP PGUID b f f 604 604 16 490 0 poly_contained contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 490 ( "@>" PGNSP PGUID b f f 604 604 16 489 0 poly_contain contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 491 ( "~=" PGNSP PGUID b f f 604 604 16 491 0 poly_same eqsel eqjoinsel )); -DESCR("same as"); -DATA(insert OID = 492 ( "&&" PGNSP PGUID b f f 604 604 16 492 0 poly_overlap areasel areajoinsel )); -DESCR("overlaps"); -DATA(insert OID = 493 ( "<<" PGNSP PGUID b f f 603 603 16 0 0 box_left positionsel positionjoinsel )); -DESCR("is left of"); -DATA(insert OID = 494 ( "&<" PGNSP PGUID b f f 603 603 16 0 0 box_overleft positionsel positionjoinsel )); -DESCR("overlaps or is left of"); -DATA(insert OID = 495 ( "&>" PGNSP PGUID b f f 603 603 16 0 0 box_overright positionsel positionjoinsel )); -DESCR("overlaps or is right of"); -DATA(insert OID = 496 ( ">>" PGNSP PGUID b f f 603 603 16 0 0 box_right positionsel positionjoinsel )); -DESCR("is right of"); -DATA(insert OID = 497 ( "<@" PGNSP PGUID b f f 603 603 16 498 0 box_contained contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 498 ( "@>" PGNSP PGUID b f f 603 603 16 497 0 box_contain contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 499 ( "~=" PGNSP PGUID b f f 603 603 16 499 0 box_same eqsel eqjoinsel )); -DESCR("same as"); -DATA(insert OID = 500 ( "&&" PGNSP PGUID b f f 603 603 16 500 0 box_overlap areasel areajoinsel )); -DESCR("overlaps"); -DATA(insert OID = 501 ( ">=" PGNSP PGUID b f f 603 603 16 505 504 box_ge areasel areajoinsel )); -DESCR("greater than or equal by area"); -DATA(insert OID = 502 ( ">" PGNSP PGUID b f f 603 603 16 504 505 box_gt areasel areajoinsel )); -DESCR("greater than by area"); -DATA(insert OID = 503 ( "=" PGNSP PGUID b f f 603 603 16 503 0 box_eq eqsel eqjoinsel )); -DESCR("equal by area"); -DATA(insert OID = 504 ( "<" PGNSP PGUID b f f 603 603 16 502 501 box_lt areasel areajoinsel )); -DESCR("less than by area"); -DATA(insert OID = 505 ( "<=" PGNSP PGUID b f f 603 603 16 501 502 box_le areasel areajoinsel )); -DESCR("less than or equal by area"); -DATA(insert OID = 506 ( ">^" PGNSP PGUID b f f 600 600 16 0 0 point_above positionsel positionjoinsel )); -DESCR("is above"); -DATA(insert OID = 507 ( "<<" PGNSP PGUID b f f 600 600 16 0 0 point_left positionsel positionjoinsel )); -DESCR("is left of"); -DATA(insert OID = 508 ( ">>" PGNSP PGUID b f f 600 600 16 0 0 point_right positionsel positionjoinsel )); -DESCR("is right of"); -DATA(insert OID = 509 ( "<^" PGNSP PGUID b f f 600 600 16 0 0 point_below positionsel positionjoinsel )); -DESCR("is below"); -DATA(insert OID = 510 ( "~=" PGNSP PGUID b f f 600 600 16 510 713 point_eq eqsel eqjoinsel )); -DESCR("same as"); -DATA(insert OID = 511 ( "<@" PGNSP PGUID b f f 600 603 16 433 0 on_pb contsel contjoinsel )); -DESCR("point inside box"); -DATA(insert OID = 433 ( "@>" PGNSP PGUID b f f 603 600 16 511 0 box_contain_pt contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 512 ( "<@" PGNSP PGUID b f f 600 602 16 755 0 on_ppath - - )); -DESCR("point within closed path, or point on open path"); -DATA(insert OID = 513 ( "@@" PGNSP PGUID l f f 0 603 600 0 0 box_center - - )); -DESCR("center of"); -DATA(insert OID = 514 ( "*" PGNSP PGUID b f f 23 23 23 514 0 int4mul - - )); -DESCR("multiply"); -DATA(insert OID = 517 ( "<->" PGNSP PGUID b f f 600 600 701 517 0 point_distance - - )); -DESCR("distance between"); -DATA(insert OID = 518 ( "<>" PGNSP PGUID b f f 23 23 16 518 96 int4ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 519 ( "<>" PGNSP PGUID b f f 21 21 16 519 94 int2ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 520 ( ">" PGNSP PGUID b f f 21 21 16 95 522 int2gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 521 ( ">" PGNSP PGUID b f f 23 23 16 97 523 int4gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 522 ( "<=" PGNSP PGUID b f f 21 21 16 524 520 int2le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 523 ( "<=" PGNSP PGUID b f f 23 23 16 525 521 int4le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 524 ( ">=" PGNSP PGUID b f f 21 21 16 522 95 int2ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 525 ( ">=" PGNSP PGUID b f f 23 23 16 523 97 int4ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 526 ( "*" PGNSP PGUID b f f 21 21 21 526 0 int2mul - - )); -DESCR("multiply"); -DATA(insert OID = 527 ( "/" PGNSP PGUID b f f 21 21 21 0 0 int2div - - )); -DESCR("divide"); -DATA(insert OID = 528 ( "/" PGNSP PGUID b f f 23 23 23 0 0 int4div - - )); -DESCR("divide"); -DATA(insert OID = 529 ( "%" PGNSP PGUID b f f 21 21 21 0 0 int2mod - - )); -DESCR("modulus"); -DATA(insert OID = 530 ( "%" PGNSP PGUID b f f 23 23 23 0 0 int4mod - - )); -DESCR("modulus"); -DATA(insert OID = 531 ( "<>" PGNSP PGUID b f f 25 25 16 531 98 textne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 532 ( "=" PGNSP PGUID b t t 21 23 16 533 538 int24eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 533 ( "=" PGNSP PGUID b t t 23 21 16 532 539 int42eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 534 ( "<" PGNSP PGUID b f f 21 23 16 537 542 int24lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 535 ( "<" PGNSP PGUID b f f 23 21 16 536 543 int42lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 536 ( ">" PGNSP PGUID b f f 21 23 16 535 540 int24gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 537 ( ">" PGNSP PGUID b f f 23 21 16 534 541 int42gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 538 ( "<>" PGNSP PGUID b f f 21 23 16 539 532 int24ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 539 ( "<>" PGNSP PGUID b f f 23 21 16 538 533 int42ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 540 ( "<=" PGNSP PGUID b f f 21 23 16 543 536 int24le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 541 ( "<=" PGNSP PGUID b f f 23 21 16 542 537 int42le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 542 ( ">=" PGNSP PGUID b f f 21 23 16 541 534 int24ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 543 ( ">=" PGNSP PGUID b f f 23 21 16 540 535 int42ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 544 ( "*" PGNSP PGUID b f f 21 23 23 545 0 int24mul - - )); -DESCR("multiply"); -DATA(insert OID = 545 ( "*" PGNSP PGUID b f f 23 21 23 544 0 int42mul - - )); -DESCR("multiply"); -DATA(insert OID = 546 ( "/" PGNSP PGUID b f f 21 23 23 0 0 int24div - - )); -DESCR("divide"); -DATA(insert OID = 547 ( "/" PGNSP PGUID b f f 23 21 23 0 0 int42div - - )); -DESCR("divide"); -DATA(insert OID = 550 ( "+" PGNSP PGUID b f f 21 21 21 550 0 int2pl - - )); -DESCR("add"); -DATA(insert OID = 551 ( "+" PGNSP PGUID b f f 23 23 23 551 0 int4pl - - )); -DESCR("add"); -DATA(insert OID = 552 ( "+" PGNSP PGUID b f f 21 23 23 553 0 int24pl - - )); -DESCR("add"); -DATA(insert OID = 553 ( "+" PGNSP PGUID b f f 23 21 23 552 0 int42pl - - )); -DESCR("add"); -DATA(insert OID = 554 ( "-" PGNSP PGUID b f f 21 21 21 0 0 int2mi - - )); -DESCR("subtract"); -DATA(insert OID = 555 ( "-" PGNSP PGUID b f f 23 23 23 0 0 int4mi - - )); -DESCR("subtract"); -DATA(insert OID = 556 ( "-" PGNSP PGUID b f f 21 23 23 0 0 int24mi - - )); -DESCR("subtract"); -DATA(insert OID = 557 ( "-" PGNSP PGUID b f f 23 21 23 0 0 int42mi - - )); -DESCR("subtract"); -DATA(insert OID = 558 ( "-" PGNSP PGUID l f f 0 23 23 0 0 int4um - - )); -DESCR("negate"); -DATA(insert OID = 559 ( "-" PGNSP PGUID l f f 0 21 21 0 0 int2um - - )); -DESCR("negate"); -DATA(insert OID = 560 ( "=" PGNSP PGUID b t t 702 702 16 560 561 abstimeeq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 561 ( "<>" PGNSP PGUID b f f 702 702 16 561 560 abstimene neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 562 ( "<" PGNSP PGUID b f f 702 702 16 563 565 abstimelt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 563 ( ">" PGNSP PGUID b f f 702 702 16 562 564 abstimegt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 564 ( "<=" PGNSP PGUID b f f 702 702 16 565 563 abstimele scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 565 ( ">=" PGNSP PGUID b f f 702 702 16 564 562 abstimege scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 566 ( "=" PGNSP PGUID b t t 703 703 16 566 567 reltimeeq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 567 ( "<>" PGNSP PGUID b f f 703 703 16 567 566 reltimene neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 568 ( "<" PGNSP PGUID b f f 703 703 16 569 571 reltimelt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 569 ( ">" PGNSP PGUID b f f 703 703 16 568 570 reltimegt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 570 ( "<=" PGNSP PGUID b f f 703 703 16 571 569 reltimele scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 571 ( ">=" PGNSP PGUID b f f 703 703 16 570 568 reltimege scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 572 ( "~=" PGNSP PGUID b f f 704 704 16 572 0 tintervalsame eqsel eqjoinsel )); -DESCR("same as"); -DATA(insert OID = 573 ( "<<" PGNSP PGUID b f f 704 704 16 0 0 tintervalct - - )); -DESCR("contains"); -DATA(insert OID = 574 ( "&&" PGNSP PGUID b f f 704 704 16 574 0 tintervalov - - )); -DESCR("overlaps"); -DATA(insert OID = 575 ( "#=" PGNSP PGUID b f f 704 703 16 0 576 tintervalleneq - - )); -DESCR("equal by length"); -DATA(insert OID = 576 ( "#<>" PGNSP PGUID b f f 704 703 16 0 575 tintervallenne - - )); -DESCR("not equal by length"); -DATA(insert OID = 577 ( "#<" PGNSP PGUID b f f 704 703 16 0 580 tintervallenlt - - )); -DESCR("less than by length"); -DATA(insert OID = 578 ( "#>" PGNSP PGUID b f f 704 703 16 0 579 tintervallengt - - )); -DESCR("greater than by length"); -DATA(insert OID = 579 ( "#<=" PGNSP PGUID b f f 704 703 16 0 578 tintervallenle - - )); -DESCR("less than or equal by length"); -DATA(insert OID = 580 ( "#>=" PGNSP PGUID b f f 704 703 16 0 577 tintervallenge - - )); -DESCR("greater than or equal by length"); -DATA(insert OID = 581 ( "+" PGNSP PGUID b f f 702 703 702 0 0 timepl - - )); -DESCR("add"); -DATA(insert OID = 582 ( "-" PGNSP PGUID b f f 702 703 702 0 0 timemi - - )); -DESCR("subtract"); -DATA(insert OID = 583 ( "" PGNSP PGUID b f f 702 704 16 0 0 intinterval - - )); -DESCR("is contained by"); -DATA(insert OID = 584 ( "-" PGNSP PGUID l f f 0 700 700 0 0 float4um - - )); -DESCR("negate"); -DATA(insert OID = 585 ( "-" PGNSP PGUID l f f 0 701 701 0 0 float8um - - )); -DESCR("negate"); -DATA(insert OID = 586 ( "+" PGNSP PGUID b f f 700 700 700 586 0 float4pl - - )); -DESCR("add"); -DATA(insert OID = 587 ( "-" PGNSP PGUID b f f 700 700 700 0 0 float4mi - - )); -DESCR("subtract"); -DATA(insert OID = 588 ( "/" PGNSP PGUID b f f 700 700 700 0 0 float4div - - )); -DESCR("divide"); -DATA(insert OID = 589 ( "*" PGNSP PGUID b f f 700 700 700 589 0 float4mul - - )); -DESCR("multiply"); -DATA(insert OID = 590 ( "@" PGNSP PGUID l f f 0 700 700 0 0 float4abs - - )); -DESCR("absolute value"); -DATA(insert OID = 591 ( "+" PGNSP PGUID b f f 701 701 701 591 0 float8pl - - )); -DESCR("add"); -DATA(insert OID = 592 ( "-" PGNSP PGUID b f f 701 701 701 0 0 float8mi - - )); -DESCR("subtract"); -DATA(insert OID = 593 ( "/" PGNSP PGUID b f f 701 701 701 0 0 float8div - - )); -DESCR("divide"); -DATA(insert OID = 594 ( "*" PGNSP PGUID b f f 701 701 701 594 0 float8mul - - )); -DESCR("multiply"); -DATA(insert OID = 595 ( "@" PGNSP PGUID l f f 0 701 701 0 0 float8abs - - )); -DESCR("absolute value"); -DATA(insert OID = 596 ( "|/" PGNSP PGUID l f f 0 701 701 0 0 dsqrt - - )); -DESCR("square root"); -DATA(insert OID = 597 ( "||/" PGNSP PGUID l f f 0 701 701 0 0 dcbrt - - )); -DESCR("cube root"); -DATA(insert OID = 1284 ( "|" PGNSP PGUID l f f 0 704 702 0 0 tintervalstart - - )); -DESCR("start of interval"); -DATA(insert OID = 606 ( "<#>" PGNSP PGUID b f f 702 702 704 0 0 mktinterval - - )); -DESCR("convert to tinterval"); - -DATA(insert OID = 607 ( "=" PGNSP PGUID b t t 26 26 16 607 608 oideq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 608 ( "<>" PGNSP PGUID b f f 26 26 16 608 607 oidne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 609 ( "<" PGNSP PGUID b f f 26 26 16 610 612 oidlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 610 ( ">" PGNSP PGUID b f f 26 26 16 609 611 oidgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 611 ( "<=" PGNSP PGUID b f f 26 26 16 612 610 oidle scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 612 ( ">=" PGNSP PGUID b f f 26 26 16 611 609 oidge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 644 ( "<>" PGNSP PGUID b f f 30 30 16 644 649 oidvectorne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 645 ( "<" PGNSP PGUID b f f 30 30 16 646 648 oidvectorlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 646 ( ">" PGNSP PGUID b f f 30 30 16 645 647 oidvectorgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 647 ( "<=" PGNSP PGUID b f f 30 30 16 648 646 oidvectorle scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 648 ( ">=" PGNSP PGUID b f f 30 30 16 647 645 oidvectorge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 649 ( "=" PGNSP PGUID b t t 30 30 16 649 644 oidvectoreq eqsel eqjoinsel )); -DESCR("equal"); - -DATA(insert OID = 613 ( "<->" PGNSP PGUID b f f 600 628 701 0 0 dist_pl - - )); -DESCR("distance between"); -DATA(insert OID = 614 ( "<->" PGNSP PGUID b f f 600 601 701 0 0 dist_ps - - )); -DESCR("distance between"); -DATA(insert OID = 615 ( "<->" PGNSP PGUID b f f 600 603 701 0 0 dist_pb - - )); -DESCR("distance between"); -DATA(insert OID = 616 ( "<->" PGNSP PGUID b f f 601 628 701 0 0 dist_sl - - )); -DESCR("distance between"); -DATA(insert OID = 617 ( "<->" PGNSP PGUID b f f 601 603 701 0 0 dist_sb - - )); -DESCR("distance between"); -DATA(insert OID = 618 ( "<->" PGNSP PGUID b f f 600 602 701 0 0 dist_ppath - - )); -DESCR("distance between"); - -DATA(insert OID = 620 ( "=" PGNSP PGUID b t t 700 700 16 620 621 float4eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 621 ( "<>" PGNSP PGUID b f f 700 700 16 621 620 float4ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 622 ( "<" PGNSP PGUID b f f 700 700 16 623 625 float4lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 623 ( ">" PGNSP PGUID b f f 700 700 16 622 624 float4gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 624 ( "<=" PGNSP PGUID b f f 700 700 16 625 623 float4le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 625 ( ">=" PGNSP PGUID b f f 700 700 16 624 622 float4ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 630 ( "<>" PGNSP PGUID b f f 18 18 16 630 92 charne neqsel neqjoinsel )); -DESCR("not equal"); - -DATA(insert OID = 631 ( "<" PGNSP PGUID b f f 18 18 16 633 634 charlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 632 ( "<=" PGNSP PGUID b f f 18 18 16 634 633 charle scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 633 ( ">" PGNSP PGUID b f f 18 18 16 631 632 chargt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 634 ( ">=" PGNSP PGUID b f f 18 18 16 632 631 charge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 639 ( "~" PGNSP PGUID b f f 19 25 16 0 640 nameregexeq regexeqsel regexeqjoinsel )); -DESCR("matches regular expression, case-sensitive"); -#define OID_NAME_REGEXEQ_OP 639 -DATA(insert OID = 640 ( "!~" PGNSP PGUID b f f 19 25 16 0 639 nameregexne regexnesel regexnejoinsel )); -DESCR("does not match regular expression, case-sensitive"); -DATA(insert OID = 641 ( "~" PGNSP PGUID b f f 25 25 16 0 642 textregexeq regexeqsel regexeqjoinsel )); -DESCR("matches regular expression, case-sensitive"); -#define OID_TEXT_REGEXEQ_OP 641 -DATA(insert OID = 642 ( "!~" PGNSP PGUID b f f 25 25 16 0 641 textregexne regexnesel regexnejoinsel )); -DESCR("does not match regular expression, case-sensitive"); -DATA(insert OID = 643 ( "<>" PGNSP PGUID b f f 19 19 16 643 93 namene neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 654 ( "||" PGNSP PGUID b f f 25 25 25 0 0 textcat - - )); -DESCR("concatenate"); - -DATA(insert OID = 660 ( "<" PGNSP PGUID b f f 19 19 16 662 663 namelt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 661 ( "<=" PGNSP PGUID b f f 19 19 16 663 662 namele scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 662 ( ">" PGNSP PGUID b f f 19 19 16 660 661 namegt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 663 ( ">=" PGNSP PGUID b f f 19 19 16 661 660 namege scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 664 ( "<" PGNSP PGUID b f f 25 25 16 666 667 text_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 665 ( "<=" PGNSP PGUID b f f 25 25 16 667 666 text_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 666 ( ">" PGNSP PGUID b f f 25 25 16 664 665 text_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 667 ( ">=" PGNSP PGUID b f f 25 25 16 665 664 text_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 670 ( "=" PGNSP PGUID b t t 701 701 16 670 671 float8eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 671 ( "<>" PGNSP PGUID b f f 701 701 16 671 670 float8ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 672 ( "<" PGNSP PGUID b f f 701 701 16 674 675 float8lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define Float8LessOperator 672 -DATA(insert OID = 673 ( "<=" PGNSP PGUID b f f 701 701 16 675 674 float8le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 674 ( ">" PGNSP PGUID b f f 701 701 16 672 673 float8gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 675 ( ">=" PGNSP PGUID b f f 701 701 16 673 672 float8ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 682 ( "@" PGNSP PGUID l f f 0 21 21 0 0 int2abs - - )); -DESCR("absolute value"); -DATA(insert OID = 684 ( "+" PGNSP PGUID b f f 20 20 20 684 0 int8pl - - )); -DESCR("add"); -DATA(insert OID = 685 ( "-" PGNSP PGUID b f f 20 20 20 0 0 int8mi - - )); -DESCR("subtract"); -DATA(insert OID = 686 ( "*" PGNSP PGUID b f f 20 20 20 686 0 int8mul - - )); -DESCR("multiply"); -DATA(insert OID = 687 ( "/" PGNSP PGUID b f f 20 20 20 0 0 int8div - - )); -DESCR("divide"); - -DATA(insert OID = 688 ( "+" PGNSP PGUID b f f 20 23 20 692 0 int84pl - - )); -DESCR("add"); -DATA(insert OID = 689 ( "-" PGNSP PGUID b f f 20 23 20 0 0 int84mi - - )); -DESCR("subtract"); -DATA(insert OID = 690 ( "*" PGNSP PGUID b f f 20 23 20 694 0 int84mul - - )); -DESCR("multiply"); -DATA(insert OID = 691 ( "/" PGNSP PGUID b f f 20 23 20 0 0 int84div - - )); -DESCR("divide"); -DATA(insert OID = 692 ( "+" PGNSP PGUID b f f 23 20 20 688 0 int48pl - - )); -DESCR("add"); -DATA(insert OID = 693 ( "-" PGNSP PGUID b f f 23 20 20 0 0 int48mi - - )); -DESCR("subtract"); -DATA(insert OID = 694 ( "*" PGNSP PGUID b f f 23 20 20 690 0 int48mul - - )); -DESCR("multiply"); -DATA(insert OID = 695 ( "/" PGNSP PGUID b f f 23 20 20 0 0 int48div - - )); -DESCR("divide"); - -DATA(insert OID = 818 ( "+" PGNSP PGUID b f f 20 21 20 822 0 int82pl - - )); -DESCR("add"); -DATA(insert OID = 819 ( "-" PGNSP PGUID b f f 20 21 20 0 0 int82mi - - )); -DESCR("subtract"); -DATA(insert OID = 820 ( "*" PGNSP PGUID b f f 20 21 20 824 0 int82mul - - )); -DESCR("multiply"); -DATA(insert OID = 821 ( "/" PGNSP PGUID b f f 20 21 20 0 0 int82div - - )); -DESCR("divide"); -DATA(insert OID = 822 ( "+" PGNSP PGUID b f f 21 20 20 818 0 int28pl - - )); -DESCR("add"); -DATA(insert OID = 823 ( "-" PGNSP PGUID b f f 21 20 20 0 0 int28mi - - )); -DESCR("subtract"); -DATA(insert OID = 824 ( "*" PGNSP PGUID b f f 21 20 20 820 0 int28mul - - )); -DESCR("multiply"); -DATA(insert OID = 825 ( "/" PGNSP PGUID b f f 21 20 20 0 0 int28div - - )); -DESCR("divide"); - -DATA(insert OID = 706 ( "<->" PGNSP PGUID b f f 603 603 701 706 0 box_distance - - )); -DESCR("distance between"); -DATA(insert OID = 707 ( "<->" PGNSP PGUID b f f 602 602 701 707 0 path_distance - - )); -DESCR("distance between"); -DATA(insert OID = 708 ( "<->" PGNSP PGUID b f f 628 628 701 708 0 line_distance - - )); -DESCR("distance between"); -DATA(insert OID = 709 ( "<->" PGNSP PGUID b f f 601 601 701 709 0 lseg_distance - - )); -DESCR("distance between"); -DATA(insert OID = 712 ( "<->" PGNSP PGUID b f f 604 604 701 712 0 poly_distance - - )); -DESCR("distance between"); - -DATA(insert OID = 713 ( "<>" PGNSP PGUID b f f 600 600 16 713 510 point_ne neqsel neqjoinsel )); -DESCR("not equal"); - -/* add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 */ -DATA(insert OID = 731 ( "+" PGNSP PGUID b f f 600 600 600 731 0 point_add - - )); -DESCR("add points (translate)"); -DATA(insert OID = 732 ( "-" PGNSP PGUID b f f 600 600 600 0 0 point_sub - - )); -DESCR("subtract points (translate)"); -DATA(insert OID = 733 ( "*" PGNSP PGUID b f f 600 600 600 733 0 point_mul - - )); -DESCR("multiply points (scale/rotate)"); -DATA(insert OID = 734 ( "/" PGNSP PGUID b f f 600 600 600 0 0 point_div - - )); -DESCR("divide points (scale/rotate)"); -DATA(insert OID = 735 ( "+" PGNSP PGUID b f f 602 602 602 735 0 path_add - - )); -DESCR("concatenate"); -DATA(insert OID = 736 ( "+" PGNSP PGUID b f f 602 600 602 0 0 path_add_pt - - )); -DESCR("add (translate path)"); -DATA(insert OID = 737 ( "-" PGNSP PGUID b f f 602 600 602 0 0 path_sub_pt - - )); -DESCR("subtract (translate path)"); -DATA(insert OID = 738 ( "*" PGNSP PGUID b f f 602 600 602 0 0 path_mul_pt - - )); -DESCR("multiply (rotate/scale path)"); -DATA(insert OID = 739 ( "/" PGNSP PGUID b f f 602 600 602 0 0 path_div_pt - - )); -DESCR("divide (rotate/scale path)"); -DATA(insert OID = 755 ( "@>" PGNSP PGUID b f f 602 600 16 512 0 path_contain_pt - - )); -DESCR("contains"); -DATA(insert OID = 756 ( "<@" PGNSP PGUID b f f 600 604 16 757 0 pt_contained_poly contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 757 ( "@>" PGNSP PGUID b f f 604 600 16 756 0 poly_contain_pt contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 758 ( "<@" PGNSP PGUID b f f 600 718 16 759 0 pt_contained_circle contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 759 ( "@>" PGNSP PGUID b f f 718 600 16 758 0 circle_contain_pt contsel contjoinsel )); -DESCR("contains"); - -DATA(insert OID = 773 ( "@" PGNSP PGUID l f f 0 23 23 0 0 int4abs - - )); -DESCR("absolute value"); - -/* additional operators for geometric types - thomas 1997-07-09 */ -DATA(insert OID = 792 ( "=" PGNSP PGUID b f f 602 602 16 792 0 path_n_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 793 ( "<" PGNSP PGUID b f f 602 602 16 794 0 path_n_lt - - )); -DESCR("less than"); -DATA(insert OID = 794 ( ">" PGNSP PGUID b f f 602 602 16 793 0 path_n_gt - - )); -DESCR("greater than"); -DATA(insert OID = 795 ( "<=" PGNSP PGUID b f f 602 602 16 796 0 path_n_le - - )); -DESCR("less than or equal"); -DATA(insert OID = 796 ( ">=" PGNSP PGUID b f f 602 602 16 795 0 path_n_ge - - )); -DESCR("greater than or equal"); -DATA(insert OID = 797 ( "#" PGNSP PGUID l f f 0 602 23 0 0 path_npoints - - )); -DESCR("number of points"); -DATA(insert OID = 798 ( "?#" PGNSP PGUID b f f 602 602 16 0 0 path_inter - - )); -DESCR("intersect"); -DATA(insert OID = 799 ( "@-@" PGNSP PGUID l f f 0 602 701 0 0 path_length - - )); -DESCR("sum of path segment lengths"); -DATA(insert OID = 800 ( ">^" PGNSP PGUID b f f 603 603 16 0 0 box_above_eq positionsel positionjoinsel )); -DESCR("is above (allows touching)"); -DATA(insert OID = 801 ( "<^" PGNSP PGUID b f f 603 603 16 0 0 box_below_eq positionsel positionjoinsel )); -DESCR("is below (allows touching)"); -DATA(insert OID = 802 ( "?#" PGNSP PGUID b f f 603 603 16 0 0 box_overlap areasel areajoinsel )); -DESCR("deprecated, use && instead"); -DATA(insert OID = 803 ( "#" PGNSP PGUID b f f 603 603 603 0 0 box_intersect - - )); -DESCR("box intersection"); -DATA(insert OID = 804 ( "+" PGNSP PGUID b f f 603 600 603 0 0 box_add - - )); -DESCR("add point to box (translate)"); -DATA(insert OID = 805 ( "-" PGNSP PGUID b f f 603 600 603 0 0 box_sub - - )); -DESCR("subtract point from box (translate)"); -DATA(insert OID = 806 ( "*" PGNSP PGUID b f f 603 600 603 0 0 box_mul - - )); -DESCR("multiply box by point (scale)"); -DATA(insert OID = 807 ( "/" PGNSP PGUID b f f 603 600 603 0 0 box_div - - )); -DESCR("divide box by point (scale)"); -DATA(insert OID = 808 ( "?-" PGNSP PGUID b f f 600 600 16 808 0 point_horiz - - )); -DESCR("horizontally aligned"); -DATA(insert OID = 809 ( "?|" PGNSP PGUID b f f 600 600 16 809 0 point_vert - - )); -DESCR("vertically aligned"); - -DATA(insert OID = 811 ( "=" PGNSP PGUID b t f 704 704 16 811 812 tintervaleq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 812 ( "<>" PGNSP PGUID b f f 704 704 16 812 811 tintervalne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 813 ( "<" PGNSP PGUID b f f 704 704 16 814 816 tintervallt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 814 ( ">" PGNSP PGUID b f f 704 704 16 813 815 tintervalgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 815 ( "<=" PGNSP PGUID b f f 704 704 16 816 814 tintervalle scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 816 ( ">=" PGNSP PGUID b f f 704 704 16 815 813 tintervalge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 843 ( "*" PGNSP PGUID b f f 790 700 790 845 0 cash_mul_flt4 - - )); -DESCR("multiply"); -DATA(insert OID = 844 ( "/" PGNSP PGUID b f f 790 700 790 0 0 cash_div_flt4 - - )); -DESCR("divide"); -DATA(insert OID = 845 ( "*" PGNSP PGUID b f f 700 790 790 843 0 flt4_mul_cash - - )); -DESCR("multiply"); - -DATA(insert OID = 900 ( "=" PGNSP PGUID b t f 790 790 16 900 901 cash_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 901 ( "<>" PGNSP PGUID b f f 790 790 16 901 900 cash_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 902 ( "<" PGNSP PGUID b f f 790 790 16 903 905 cash_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 903 ( ">" PGNSP PGUID b f f 790 790 16 902 904 cash_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 904 ( "<=" PGNSP PGUID b f f 790 790 16 905 903 cash_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 905 ( ">=" PGNSP PGUID b f f 790 790 16 904 902 cash_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 906 ( "+" PGNSP PGUID b f f 790 790 790 906 0 cash_pl - - )); -DESCR("add"); -DATA(insert OID = 907 ( "-" PGNSP PGUID b f f 790 790 790 0 0 cash_mi - - )); -DESCR("subtract"); -DATA(insert OID = 908 ( "*" PGNSP PGUID b f f 790 701 790 916 0 cash_mul_flt8 - - )); -DESCR("multiply"); -DATA(insert OID = 909 ( "/" PGNSP PGUID b f f 790 701 790 0 0 cash_div_flt8 - - )); -DESCR("divide"); -DATA(insert OID = 3346 ( "*" PGNSP PGUID b f f 790 20 790 3349 0 cash_mul_int8 - - )); -DESCR("multiply"); -DATA(insert OID = 3347 ( "/" PGNSP PGUID b f f 790 20 790 0 0 cash_div_int8 - - )); -DESCR("divide"); -DATA(insert OID = 912 ( "*" PGNSP PGUID b f f 790 23 790 917 0 cash_mul_int4 - - )); -DESCR("multiply"); -DATA(insert OID = 913 ( "/" PGNSP PGUID b f f 790 23 790 0 0 cash_div_int4 - - )); -DESCR("divide"); -DATA(insert OID = 914 ( "*" PGNSP PGUID b f f 790 21 790 918 0 cash_mul_int2 - - )); -DESCR("multiply"); -DATA(insert OID = 915 ( "/" PGNSP PGUID b f f 790 21 790 0 0 cash_div_int2 - - )); -DESCR("divide"); -DATA(insert OID = 916 ( "*" PGNSP PGUID b f f 701 790 790 908 0 flt8_mul_cash - - )); -DESCR("multiply"); -DATA(insert OID = 3349 ( "*" PGNSP PGUID b f f 20 790 790 3346 0 int8_mul_cash - - )); -DESCR("multiply"); -DATA(insert OID = 917 ( "*" PGNSP PGUID b f f 23 790 790 912 0 int4_mul_cash - - )); -DESCR("multiply"); -DATA(insert OID = 918 ( "*" PGNSP PGUID b f f 21 790 790 914 0 int2_mul_cash - - )); -DESCR("multiply"); -DATA(insert OID = 3825 ( "/" PGNSP PGUID b f f 790 790 701 0 0 cash_div_cash - - )); -DESCR("divide"); - -DATA(insert OID = 965 ( "^" PGNSP PGUID b f f 701 701 701 0 0 dpow - - )); -DESCR("exponentiation"); -DATA(insert OID = 966 ( "+" PGNSP PGUID b f f 1034 1033 1034 0 0 aclinsert - - )); -DESCR("add/update ACL item"); -DATA(insert OID = 967 ( "-" PGNSP PGUID b f f 1034 1033 1034 0 0 aclremove - - )); -DESCR("remove ACL item"); -DATA(insert OID = 968 ( "@>" PGNSP PGUID b f f 1034 1033 16 0 0 aclcontains - - )); -DESCR("contains"); -DATA(insert OID = 974 ( "=" PGNSP PGUID b f t 1033 1033 16 974 0 aclitemeq eqsel eqjoinsel )); -DESCR("equal"); - -/* additional geometric operators - thomas 1997-07-09 */ -DATA(insert OID = 969 ( "@@" PGNSP PGUID l f f 0 601 600 0 0 lseg_center - - )); -DESCR("center of"); -DATA(insert OID = 970 ( "@@" PGNSP PGUID l f f 0 602 600 0 0 path_center - - )); -DESCR("center of"); -DATA(insert OID = 971 ( "@@" PGNSP PGUID l f f 0 604 600 0 0 poly_center - - )); -DESCR("center of"); - -DATA(insert OID = 1054 ( "=" PGNSP PGUID b t t 1042 1042 16 1054 1057 bpchareq eqsel eqjoinsel )); -DESCR("equal"); - -DATA(insert OID = 1055 ( "~" PGNSP PGUID b f f 1042 25 16 0 1056 bpcharregexeq regexeqsel regexeqjoinsel )); -DESCR("matches regular expression, case-sensitive"); -#define OID_BPCHAR_REGEXEQ_OP 1055 -DATA(insert OID = 1056 ( "!~" PGNSP PGUID b f f 1042 25 16 0 1055 bpcharregexne regexnesel regexnejoinsel )); -DESCR("does not match regular expression, case-sensitive"); -DATA(insert OID = 1057 ( "<>" PGNSP PGUID b f f 1042 1042 16 1057 1054 bpcharne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1058 ( "<" PGNSP PGUID b f f 1042 1042 16 1060 1061 bpcharlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1059 ( "<=" PGNSP PGUID b f f 1042 1042 16 1061 1060 bpcharle scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1060 ( ">" PGNSP PGUID b f f 1042 1042 16 1058 1059 bpchargt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1061 ( ">=" PGNSP PGUID b f f 1042 1042 16 1059 1058 bpcharge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -/* generic array comparison operators */ -DATA(insert OID = 1070 ( "=" PGNSP PGUID b t t 2277 2277 16 1070 1071 array_eq eqsel eqjoinsel )); -DESCR("equal"); -#define ARRAY_EQ_OP 1070 -DATA(insert OID = 1071 ( "<>" PGNSP PGUID b f f 2277 2277 16 1071 1070 array_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1072 ( "<" PGNSP PGUID b f f 2277 2277 16 1073 1075 array_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define ARRAY_LT_OP 1072 -DATA(insert OID = 1073 ( ">" PGNSP PGUID b f f 2277 2277 16 1072 1074 array_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -#define ARRAY_GT_OP 1073 -DATA(insert OID = 1074 ( "<=" PGNSP PGUID b f f 2277 2277 16 1075 1073 array_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1075 ( ">=" PGNSP PGUID b f f 2277 2277 16 1074 1072 array_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -/* date operators */ -DATA(insert OID = 1076 ( "+" PGNSP PGUID b f f 1082 1186 1114 2551 0 date_pl_interval - - )); -DESCR("add"); -DATA(insert OID = 1077 ( "-" PGNSP PGUID b f f 1082 1186 1114 0 0 date_mi_interval - - )); -DESCR("subtract"); -DATA(insert OID = 1093 ( "=" PGNSP PGUID b t t 1082 1082 16 1093 1094 date_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1094 ( "<>" PGNSP PGUID b f f 1082 1082 16 1094 1093 date_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1095 ( "<" PGNSP PGUID b f f 1082 1082 16 1097 1098 date_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1096 ( "<=" PGNSP PGUID b f f 1082 1082 16 1098 1097 date_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1097 ( ">" PGNSP PGUID b f f 1082 1082 16 1095 1096 date_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1098 ( ">=" PGNSP PGUID b f f 1082 1082 16 1096 1095 date_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 1099 ( "-" PGNSP PGUID b f f 1082 1082 23 0 0 date_mi - - )); -DESCR("subtract"); -DATA(insert OID = 1100 ( "+" PGNSP PGUID b f f 1082 23 1082 2555 0 date_pli - - )); -DESCR("add"); -DATA(insert OID = 1101 ( "-" PGNSP PGUID b f f 1082 23 1082 0 0 date_mii - - )); -DESCR("subtract"); - -/* time operators */ -DATA(insert OID = 1108 ( "=" PGNSP PGUID b t t 1083 1083 16 1108 1109 time_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1109 ( "<>" PGNSP PGUID b f f 1083 1083 16 1109 1108 time_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1110 ( "<" PGNSP PGUID b f f 1083 1083 16 1112 1113 time_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1111 ( "<=" PGNSP PGUID b f f 1083 1083 16 1113 1112 time_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1112 ( ">" PGNSP PGUID b f f 1083 1083 16 1110 1111 time_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1113 ( ">=" PGNSP PGUID b f f 1083 1083 16 1111 1110 time_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -/* timetz operators */ -DATA(insert OID = 1550 ( "=" PGNSP PGUID b t t 1266 1266 16 1550 1551 timetz_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1551 ( "<>" PGNSP PGUID b f f 1266 1266 16 1551 1550 timetz_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1552 ( "<" PGNSP PGUID b f f 1266 1266 16 1554 1555 timetz_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1553 ( "<=" PGNSP PGUID b f f 1266 1266 16 1555 1554 timetz_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1554 ( ">" PGNSP PGUID b f f 1266 1266 16 1552 1553 timetz_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1555 ( ">=" PGNSP PGUID b f f 1266 1266 16 1553 1552 timetz_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -/* float48 operators */ -DATA(insert OID = 1116 ( "+" PGNSP PGUID b f f 700 701 701 1126 0 float48pl - - )); -DESCR("add"); -DATA(insert OID = 1117 ( "-" PGNSP PGUID b f f 700 701 701 0 0 float48mi - - )); -DESCR("subtract"); -DATA(insert OID = 1118 ( "/" PGNSP PGUID b f f 700 701 701 0 0 float48div - - )); -DESCR("divide"); -DATA(insert OID = 1119 ( "*" PGNSP PGUID b f f 700 701 701 1129 0 float48mul - - )); -DESCR("multiply"); -DATA(insert OID = 1120 ( "=" PGNSP PGUID b t t 700 701 16 1130 1121 float48eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1121 ( "<>" PGNSP PGUID b f f 700 701 16 1131 1120 float48ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1122 ( "<" PGNSP PGUID b f f 700 701 16 1133 1125 float48lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1123 ( ">" PGNSP PGUID b f f 700 701 16 1132 1124 float48gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1124 ( "<=" PGNSP PGUID b f f 700 701 16 1135 1123 float48le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1125 ( ">=" PGNSP PGUID b f f 700 701 16 1134 1122 float48ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -/* float84 operators */ -DATA(insert OID = 1126 ( "+" PGNSP PGUID b f f 701 700 701 1116 0 float84pl - - )); -DESCR("add"); -DATA(insert OID = 1127 ( "-" PGNSP PGUID b f f 701 700 701 0 0 float84mi - - )); -DESCR("subtract"); -DATA(insert OID = 1128 ( "/" PGNSP PGUID b f f 701 700 701 0 0 float84div - - )); -DESCR("divide"); -DATA(insert OID = 1129 ( "*" PGNSP PGUID b f f 701 700 701 1119 0 float84mul - - )); -DESCR("multiply"); -DATA(insert OID = 1130 ( "=" PGNSP PGUID b t t 701 700 16 1120 1131 float84eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1131 ( "<>" PGNSP PGUID b f f 701 700 16 1121 1130 float84ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1132 ( "<" PGNSP PGUID b f f 701 700 16 1123 1135 float84lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1133 ( ">" PGNSP PGUID b f f 701 700 16 1122 1134 float84gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1134 ( "<=" PGNSP PGUID b f f 701 700 16 1125 1133 float84le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1135 ( ">=" PGNSP PGUID b f f 701 700 16 1124 1132 float84ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - - -/* LIKE hacks by Keith Parks. */ -DATA(insert OID = 1207 ( "~~" PGNSP PGUID b f f 19 25 16 0 1208 namelike likesel likejoinsel )); -DESCR("matches LIKE expression"); -#define OID_NAME_LIKE_OP 1207 -DATA(insert OID = 1208 ( "!~~" PGNSP PGUID b f f 19 25 16 0 1207 namenlike nlikesel nlikejoinsel )); -DESCR("does not match LIKE expression"); -DATA(insert OID = 1209 ( "~~" PGNSP PGUID b f f 25 25 16 0 1210 textlike likesel likejoinsel )); -DESCR("matches LIKE expression"); -#define OID_TEXT_LIKE_OP 1209 -DATA(insert OID = 1210 ( "!~~" PGNSP PGUID b f f 25 25 16 0 1209 textnlike nlikesel nlikejoinsel )); -DESCR("does not match LIKE expression"); -DATA(insert OID = 1211 ( "~~" PGNSP PGUID b f f 1042 25 16 0 1212 bpcharlike likesel likejoinsel )); -DESCR("matches LIKE expression"); -#define OID_BPCHAR_LIKE_OP 1211 -DATA(insert OID = 1212 ( "!~~" PGNSP PGUID b f f 1042 25 16 0 1211 bpcharnlike nlikesel nlikejoinsel )); -DESCR("does not match LIKE expression"); - -/* case-insensitive regex hacks */ -DATA(insert OID = 1226 ( "~*" PGNSP PGUID b f f 19 25 16 0 1227 nameicregexeq icregexeqsel icregexeqjoinsel )); -DESCR("matches regular expression, case-insensitive"); -#define OID_NAME_ICREGEXEQ_OP 1226 -DATA(insert OID = 1227 ( "!~*" PGNSP PGUID b f f 19 25 16 0 1226 nameicregexne icregexnesel icregexnejoinsel )); -DESCR("does not match regular expression, case-insensitive"); -DATA(insert OID = 1228 ( "~*" PGNSP PGUID b f f 25 25 16 0 1229 texticregexeq icregexeqsel icregexeqjoinsel )); -DESCR("matches regular expression, case-insensitive"); -#define OID_TEXT_ICREGEXEQ_OP 1228 -DATA(insert OID = 1229 ( "!~*" PGNSP PGUID b f f 25 25 16 0 1228 texticregexne icregexnesel icregexnejoinsel )); -DESCR("does not match regular expression, case-insensitive"); -DATA(insert OID = 1234 ( "~*" PGNSP PGUID b f f 1042 25 16 0 1235 bpcharicregexeq icregexeqsel icregexeqjoinsel )); -DESCR("matches regular expression, case-insensitive"); -#define OID_BPCHAR_ICREGEXEQ_OP 1234 -DATA(insert OID = 1235 ( "!~*" PGNSP PGUID b f f 1042 25 16 0 1234 bpcharicregexne icregexnesel icregexnejoinsel )); -DESCR("does not match regular expression, case-insensitive"); - -/* timestamptz operators */ -DATA(insert OID = 1320 ( "=" PGNSP PGUID b t t 1184 1184 16 1320 1321 timestamptz_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1321 ( "<>" PGNSP PGUID b f f 1184 1184 16 1321 1320 timestamptz_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1322 ( "<" PGNSP PGUID b f f 1184 1184 16 1324 1325 timestamptz_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1323 ( "<=" PGNSP PGUID b f f 1184 1184 16 1325 1324 timestamptz_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1324 ( ">" PGNSP PGUID b f f 1184 1184 16 1322 1323 timestamptz_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1325 ( ">=" PGNSP PGUID b f f 1184 1184 16 1323 1322 timestamptz_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 1327 ( "+" PGNSP PGUID b f f 1184 1186 1184 2554 0 timestamptz_pl_interval - - )); -DESCR("add"); -DATA(insert OID = 1328 ( "-" PGNSP PGUID b f f 1184 1184 1186 0 0 timestamptz_mi - - )); -DESCR("subtract"); -DATA(insert OID = 1329 ( "-" PGNSP PGUID b f f 1184 1186 1184 0 0 timestamptz_mi_interval - - )); -DESCR("subtract"); - -/* interval operators */ -DATA(insert OID = 1330 ( "=" PGNSP PGUID b t t 1186 1186 16 1330 1331 interval_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1331 ( "<>" PGNSP PGUID b f f 1186 1186 16 1331 1330 interval_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1332 ( "<" PGNSP PGUID b f f 1186 1186 16 1334 1335 interval_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1333 ( "<=" PGNSP PGUID b f f 1186 1186 16 1335 1334 interval_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1334 ( ">" PGNSP PGUID b f f 1186 1186 16 1332 1333 interval_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1335 ( ">=" PGNSP PGUID b f f 1186 1186 16 1333 1332 interval_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 1336 ( "-" PGNSP PGUID l f f 0 1186 1186 0 0 interval_um - - )); -DESCR("negate"); -DATA(insert OID = 1337 ( "+" PGNSP PGUID b f f 1186 1186 1186 1337 0 interval_pl - - )); -DESCR("add"); -DATA(insert OID = 1338 ( "-" PGNSP PGUID b f f 1186 1186 1186 0 0 interval_mi - - )); -DESCR("subtract"); - -DATA(insert OID = 1360 ( "+" PGNSP PGUID b f f 1082 1083 1114 1363 0 datetime_pl - - )); -DESCR("convert date and time to timestamp"); -DATA(insert OID = 1361 ( "+" PGNSP PGUID b f f 1082 1266 1184 1366 0 datetimetz_pl - - )); -DESCR("convert date and time with time zone to timestamp with time zone"); -DATA(insert OID = 1363 ( "+" PGNSP PGUID b f f 1083 1082 1114 1360 0 timedate_pl - - )); -DESCR("convert time and date to timestamp"); -DATA(insert OID = 1366 ( "+" PGNSP PGUID b f f 1266 1082 1184 1361 0 timetzdate_pl - - )); -DESCR("convert time with time zone and date to timestamp with time zone"); - -DATA(insert OID = 1399 ( "-" PGNSP PGUID b f f 1083 1083 1186 0 0 time_mi_time - - )); -DESCR("subtract"); - -/* additional geometric operators - thomas 97/04/18 */ -DATA(insert OID = 1420 ( "@@" PGNSP PGUID l f f 0 718 600 0 0 circle_center - - )); -DESCR("center of"); -DATA(insert OID = 1500 ( "=" PGNSP PGUID b f f 718 718 16 1500 1501 circle_eq eqsel eqjoinsel )); -DESCR("equal by area"); -DATA(insert OID = 1501 ( "<>" PGNSP PGUID b f f 718 718 16 1501 1500 circle_ne neqsel neqjoinsel )); -DESCR("not equal by area"); -DATA(insert OID = 1502 ( "<" PGNSP PGUID b f f 718 718 16 1503 1505 circle_lt areasel areajoinsel )); -DESCR("less than by area"); -DATA(insert OID = 1503 ( ">" PGNSP PGUID b f f 718 718 16 1502 1504 circle_gt areasel areajoinsel )); -DESCR("greater than by area"); -DATA(insert OID = 1504 ( "<=" PGNSP PGUID b f f 718 718 16 1505 1503 circle_le areasel areajoinsel )); -DESCR("less than or equal by area"); -DATA(insert OID = 1505 ( ">=" PGNSP PGUID b f f 718 718 16 1504 1502 circle_ge areasel areajoinsel )); -DESCR("greater than or equal by area"); - -DATA(insert OID = 1506 ( "<<" PGNSP PGUID b f f 718 718 16 0 0 circle_left positionsel positionjoinsel )); -DESCR("is left of"); -DATA(insert OID = 1507 ( "&<" PGNSP PGUID b f f 718 718 16 0 0 circle_overleft positionsel positionjoinsel )); -DESCR("overlaps or is left of"); -DATA(insert OID = 1508 ( "&>" PGNSP PGUID b f f 718 718 16 0 0 circle_overright positionsel positionjoinsel )); -DESCR("overlaps or is right of"); -DATA(insert OID = 1509 ( ">>" PGNSP PGUID b f f 718 718 16 0 0 circle_right positionsel positionjoinsel )); -DESCR("is right of"); -DATA(insert OID = 1510 ( "<@" PGNSP PGUID b f f 718 718 16 1511 0 circle_contained contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 1511 ( "@>" PGNSP PGUID b f f 718 718 16 1510 0 circle_contain contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 1512 ( "~=" PGNSP PGUID b f f 718 718 16 1512 0 circle_same eqsel eqjoinsel )); -DESCR("same as"); -DATA(insert OID = 1513 ( "&&" PGNSP PGUID b f f 718 718 16 1513 0 circle_overlap areasel areajoinsel )); -DESCR("overlaps"); -DATA(insert OID = 1514 ( "|>>" PGNSP PGUID b f f 718 718 16 0 0 circle_above positionsel positionjoinsel )); -DESCR("is above"); -DATA(insert OID = 1515 ( "<<|" PGNSP PGUID b f f 718 718 16 0 0 circle_below positionsel positionjoinsel )); -DESCR("is below"); - -DATA(insert OID = 1516 ( "+" PGNSP PGUID b f f 718 600 718 0 0 circle_add_pt - - )); -DESCR("add"); -DATA(insert OID = 1517 ( "-" PGNSP PGUID b f f 718 600 718 0 0 circle_sub_pt - - )); -DESCR("subtract"); -DATA(insert OID = 1518 ( "*" PGNSP PGUID b f f 718 600 718 0 0 circle_mul_pt - - )); -DESCR("multiply"); -DATA(insert OID = 1519 ( "/" PGNSP PGUID b f f 718 600 718 0 0 circle_div_pt - - )); -DESCR("divide"); - -DATA(insert OID = 1520 ( "<->" PGNSP PGUID b f f 718 718 701 1520 0 circle_distance - - )); -DESCR("distance between"); -DATA(insert OID = 1521 ( "#" PGNSP PGUID l f f 0 604 23 0 0 poly_npoints - - )); -DESCR("number of points"); -DATA(insert OID = 1522 ( "<->" PGNSP PGUID b f f 600 718 701 3291 0 dist_pc - - )); -DESCR("distance between"); -DATA(insert OID = 3291 ( "<->" PGNSP PGUID b f f 718 600 701 1522 0 dist_cpoint - - )); -DESCR("distance between"); -DATA(insert OID = 3276 ( "<->" PGNSP PGUID b f f 600 604 701 3289 0 dist_ppoly - - )); -DESCR("distance between"); -DATA(insert OID = 3289 ( "<->" PGNSP PGUID b f f 604 600 701 3276 0 dist_polyp - - )); -DESCR("distance between"); -DATA(insert OID = 1523 ( "<->" PGNSP PGUID b f f 718 604 701 0 0 dist_cpoly - - )); -DESCR("distance between"); - -/* additional geometric operators - thomas 1997-07-09 */ -DATA(insert OID = 1524 ( "<->" PGNSP PGUID b f f 628 603 701 0 0 dist_lb - - )); -DESCR("distance between"); - -DATA(insert OID = 1525 ( "?#" PGNSP PGUID b f f 601 601 16 1525 0 lseg_intersect - - )); -DESCR("intersect"); -DATA(insert OID = 1526 ( "?||" PGNSP PGUID b f f 601 601 16 1526 0 lseg_parallel - - )); -DESCR("parallel"); -DATA(insert OID = 1527 ( "?-|" PGNSP PGUID b f f 601 601 16 1527 0 lseg_perp - - )); -DESCR("perpendicular"); -DATA(insert OID = 1528 ( "?-" PGNSP PGUID l f f 0 601 16 0 0 lseg_horizontal - - )); -DESCR("horizontal"); -DATA(insert OID = 1529 ( "?|" PGNSP PGUID l f f 0 601 16 0 0 lseg_vertical - - )); -DESCR("vertical"); -DATA(insert OID = 1535 ( "=" PGNSP PGUID b f f 601 601 16 1535 1586 lseg_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1536 ( "#" PGNSP PGUID b f f 601 601 600 1536 0 lseg_interpt - - )); -DESCR("intersection point"); -DATA(insert OID = 1537 ( "?#" PGNSP PGUID b f f 601 628 16 0 0 inter_sl - - )); -DESCR("intersect"); -DATA(insert OID = 1538 ( "?#" PGNSP PGUID b f f 601 603 16 0 0 inter_sb - - )); -DESCR("intersect"); -DATA(insert OID = 1539 ( "?#" PGNSP PGUID b f f 628 603 16 0 0 inter_lb - - )); -DESCR("intersect"); - -DATA(insert OID = 1546 ( "<@" PGNSP PGUID b f f 600 628 16 0 0 on_pl - - )); -DESCR("point on line"); -DATA(insert OID = 1547 ( "<@" PGNSP PGUID b f f 600 601 16 0 0 on_ps - - )); -DESCR("is contained by"); -DATA(insert OID = 1548 ( "<@" PGNSP PGUID b f f 601 628 16 0 0 on_sl - - )); -DESCR("lseg on line"); -DATA(insert OID = 1549 ( "<@" PGNSP PGUID b f f 601 603 16 0 0 on_sb - - )); -DESCR("is contained by"); - -DATA(insert OID = 1557 ( "##" PGNSP PGUID b f f 600 628 600 0 0 close_pl - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1558 ( "##" PGNSP PGUID b f f 600 601 600 0 0 close_ps - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1559 ( "##" PGNSP PGUID b f f 600 603 600 0 0 close_pb - - )); -DESCR("closest point to A on B"); - -DATA(insert OID = 1566 ( "##" PGNSP PGUID b f f 601 628 600 0 0 close_sl - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1567 ( "##" PGNSP PGUID b f f 601 603 600 0 0 close_sb - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1568 ( "##" PGNSP PGUID b f f 628 603 600 0 0 close_lb - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1577 ( "##" PGNSP PGUID b f f 628 601 600 0 0 close_ls - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1578 ( "##" PGNSP PGUID b f f 601 601 600 0 0 close_lseg - - )); -DESCR("closest point to A on B"); -DATA(insert OID = 1583 ( "*" PGNSP PGUID b f f 1186 701 1186 1584 0 interval_mul - - )); -DESCR("multiply"); -DATA(insert OID = 1584 ( "*" PGNSP PGUID b f f 701 1186 1186 1583 0 mul_d_interval - - )); -DESCR("multiply"); -DATA(insert OID = 1585 ( "/" PGNSP PGUID b f f 1186 701 1186 0 0 interval_div - - )); -DESCR("divide"); - -DATA(insert OID = 1586 ( "<>" PGNSP PGUID b f f 601 601 16 1586 1535 lseg_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1587 ( "<" PGNSP PGUID b f f 601 601 16 1589 1590 lseg_lt - - )); -DESCR("less than by length"); -DATA(insert OID = 1588 ( "<=" PGNSP PGUID b f f 601 601 16 1590 1589 lseg_le - - )); -DESCR("less than or equal by length"); -DATA(insert OID = 1589 ( ">" PGNSP PGUID b f f 601 601 16 1587 1588 lseg_gt - - )); -DESCR("greater than by length"); -DATA(insert OID = 1590 ( ">=" PGNSP PGUID b f f 601 601 16 1588 1587 lseg_ge - - )); -DESCR("greater than or equal by length"); - -DATA(insert OID = 1591 ( "@-@" PGNSP PGUID l f f 0 601 701 0 0 lseg_length - - )); -DESCR("distance between endpoints"); - -DATA(insert OID = 1611 ( "?#" PGNSP PGUID b f f 628 628 16 1611 0 line_intersect - - )); -DESCR("intersect"); -DATA(insert OID = 1612 ( "?||" PGNSP PGUID b f f 628 628 16 1612 0 line_parallel - - )); -DESCR("parallel"); -DATA(insert OID = 1613 ( "?-|" PGNSP PGUID b f f 628 628 16 1613 0 line_perp - - )); -DESCR("perpendicular"); -DATA(insert OID = 1614 ( "?-" PGNSP PGUID l f f 0 628 16 0 0 line_horizontal - - )); -DESCR("horizontal"); -DATA(insert OID = 1615 ( "?|" PGNSP PGUID l f f 0 628 16 0 0 line_vertical - - )); -DESCR("vertical"); -DATA(insert OID = 1616 ( "=" PGNSP PGUID b f f 628 628 16 1616 0 line_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1617 ( "#" PGNSP PGUID b f f 628 628 600 1617 0 line_interpt - - )); -DESCR("intersection point"); - -/* MACADDR type */ -DATA(insert OID = 1220 ( "=" PGNSP PGUID b t t 829 829 16 1220 1221 macaddr_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1221 ( "<>" PGNSP PGUID b f f 829 829 16 1221 1220 macaddr_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1222 ( "<" PGNSP PGUID b f f 829 829 16 1224 1225 macaddr_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1223 ( "<=" PGNSP PGUID b f f 829 829 16 1225 1224 macaddr_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1224 ( ">" PGNSP PGUID b f f 829 829 16 1222 1223 macaddr_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1225 ( ">=" PGNSP PGUID b f f 829 829 16 1223 1222 macaddr_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 3147 ( "~" PGNSP PGUID l f f 0 829 829 0 0 macaddr_not - - )); -DESCR("bitwise not"); -DATA(insert OID = 3148 ( "&" PGNSP PGUID b f f 829 829 829 0 0 macaddr_and - - )); -DESCR("bitwise and"); -DATA(insert OID = 3149 ( "|" PGNSP PGUID b f f 829 829 829 0 0 macaddr_or - - )); -DESCR("bitwise or"); - -/* MACADDR8 type */ -DATA(insert OID = 3362 ( "=" PGNSP PGUID b t t 774 774 16 3362 3363 macaddr8_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3363 ( "<>" PGNSP PGUID b f f 774 774 16 3363 3362 macaddr8_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3364 ( "<" PGNSP PGUID b f f 774 774 16 3366 3367 macaddr8_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3365 ( "<=" PGNSP PGUID b f f 774 774 16 3367 3366 macaddr8_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3366 ( ">" PGNSP PGUID b f f 774 774 16 3364 3365 macaddr8_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3367 ( ">=" PGNSP PGUID b f f 774 774 16 3365 3364 macaddr8_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 3368 ( "~" PGNSP PGUID l f f 0 774 774 0 0 macaddr8_not - - )); -DESCR("bitwise not"); -DATA(insert OID = 3369 ( "&" PGNSP PGUID b f f 774 774 774 0 0 macaddr8_and - - )); -DESCR("bitwise and"); -DATA(insert OID = 3370 ( "|" PGNSP PGUID b f f 774 774 774 0 0 macaddr8_or - - )); -DESCR("bitwise or"); - -/* INET type (these also support CIDR via implicit cast) */ -DATA(insert OID = 1201 ( "=" PGNSP PGUID b t t 869 869 16 1201 1202 network_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1202 ( "<>" PGNSP PGUID b f f 869 869 16 1202 1201 network_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1203 ( "<" PGNSP PGUID b f f 869 869 16 1205 1206 network_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1204 ( "<=" PGNSP PGUID b f f 869 869 16 1206 1205 network_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1205 ( ">" PGNSP PGUID b f f 869 869 16 1203 1204 network_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1206 ( ">=" PGNSP PGUID b f f 869 869 16 1204 1203 network_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 931 ( "<<" PGNSP PGUID b f f 869 869 16 933 0 network_sub networksel networkjoinsel )); -DESCR("is subnet"); -#define OID_INET_SUB_OP 931 -DATA(insert OID = 932 ( "<<=" PGNSP PGUID b f f 869 869 16 934 0 network_subeq networksel networkjoinsel )); -DESCR("is subnet or equal"); -#define OID_INET_SUBEQ_OP 932 -DATA(insert OID = 933 ( ">>" PGNSP PGUID b f f 869 869 16 931 0 network_sup networksel networkjoinsel )); -DESCR("is supernet"); -#define OID_INET_SUP_OP 933 -DATA(insert OID = 934 ( ">>=" PGNSP PGUID b f f 869 869 16 932 0 network_supeq networksel networkjoinsel )); -DESCR("is supernet or equal"); -#define OID_INET_SUPEQ_OP 934 -DATA(insert OID = 3552 ( "&&" PGNSP PGUID b f f 869 869 16 3552 0 network_overlap networksel networkjoinsel )); -DESCR("overlaps (is subnet or supernet)"); -#define OID_INET_OVERLAP_OP 3552 - -DATA(insert OID = 2634 ( "~" PGNSP PGUID l f f 0 869 869 0 0 inetnot - - )); -DESCR("bitwise not"); -DATA(insert OID = 2635 ( "&" PGNSP PGUID b f f 869 869 869 0 0 inetand - - )); -DESCR("bitwise and"); -DATA(insert OID = 2636 ( "|" PGNSP PGUID b f f 869 869 869 0 0 inetor - - )); -DESCR("bitwise or"); -DATA(insert OID = 2637 ( "+" PGNSP PGUID b f f 869 20 869 2638 0 inetpl - - )); -DESCR("add"); -DATA(insert OID = 2638 ( "+" PGNSP PGUID b f f 20 869 869 2637 0 int8pl_inet - - )); -DESCR("add"); -DATA(insert OID = 2639 ( "-" PGNSP PGUID b f f 869 20 869 0 0 inetmi_int8 - - )); -DESCR("subtract"); -DATA(insert OID = 2640 ( "-" PGNSP PGUID b f f 869 869 20 0 0 inetmi - - )); -DESCR("subtract"); - -/* case-insensitive LIKE hacks */ -DATA(insert OID = 1625 ( "~~*" PGNSP PGUID b f f 19 25 16 0 1626 nameiclike iclikesel iclikejoinsel )); -DESCR("matches LIKE expression, case-insensitive"); -#define OID_NAME_ICLIKE_OP 1625 -DATA(insert OID = 1626 ( "!~~*" PGNSP PGUID b f f 19 25 16 0 1625 nameicnlike icnlikesel icnlikejoinsel )); -DESCR("does not match LIKE expression, case-insensitive"); -DATA(insert OID = 1627 ( "~~*" PGNSP PGUID b f f 25 25 16 0 1628 texticlike iclikesel iclikejoinsel )); -DESCR("matches LIKE expression, case-insensitive"); -#define OID_TEXT_ICLIKE_OP 1627 -DATA(insert OID = 1628 ( "!~~*" PGNSP PGUID b f f 25 25 16 0 1627 texticnlike icnlikesel icnlikejoinsel )); -DESCR("does not match LIKE expression, case-insensitive"); -DATA(insert OID = 1629 ( "~~*" PGNSP PGUID b f f 1042 25 16 0 1630 bpchariclike iclikesel iclikejoinsel )); -DESCR("matches LIKE expression, case-insensitive"); -#define OID_BPCHAR_ICLIKE_OP 1629 -DATA(insert OID = 1630 ( "!~~*" PGNSP PGUID b f f 1042 25 16 0 1629 bpcharicnlike icnlikesel icnlikejoinsel )); -DESCR("does not match LIKE expression, case-insensitive"); - -/* NUMERIC type - OID's 1700-1799 */ -DATA(insert OID = 1751 ( "-" PGNSP PGUID l f f 0 1700 1700 0 0 numeric_uminus - - )); -DESCR("negate"); -DATA(insert OID = 1752 ( "=" PGNSP PGUID b t t 1700 1700 16 1752 1753 numeric_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1753 ( "<>" PGNSP PGUID b f f 1700 1700 16 1753 1752 numeric_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1754 ( "<" PGNSP PGUID b f f 1700 1700 16 1756 1757 numeric_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1755 ( "<=" PGNSP PGUID b f f 1700 1700 16 1757 1756 numeric_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1756 ( ">" PGNSP PGUID b f f 1700 1700 16 1754 1755 numeric_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1757 ( ">=" PGNSP PGUID b f f 1700 1700 16 1755 1754 numeric_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 1758 ( "+" PGNSP PGUID b f f 1700 1700 1700 1758 0 numeric_add - - )); -DESCR("add"); -DATA(insert OID = 1759 ( "-" PGNSP PGUID b f f 1700 1700 1700 0 0 numeric_sub - - )); -DESCR("subtract"); -DATA(insert OID = 1760 ( "*" PGNSP PGUID b f f 1700 1700 1700 1760 0 numeric_mul - - )); -DESCR("multiply"); -DATA(insert OID = 1761 ( "/" PGNSP PGUID b f f 1700 1700 1700 0 0 numeric_div - - )); -DESCR("divide"); -DATA(insert OID = 1762 ( "%" PGNSP PGUID b f f 1700 1700 1700 0 0 numeric_mod - - )); -DESCR("modulus"); -DATA(insert OID = 1038 ( "^" PGNSP PGUID b f f 1700 1700 1700 0 0 numeric_power - - )); -DESCR("exponentiation"); -DATA(insert OID = 1763 ( "@" PGNSP PGUID l f f 0 1700 1700 0 0 numeric_abs - - )); -DESCR("absolute value"); - -DATA(insert OID = 1784 ( "=" PGNSP PGUID b t f 1560 1560 16 1784 1785 biteq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1785 ( "<>" PGNSP PGUID b f f 1560 1560 16 1785 1784 bitne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1786 ( "<" PGNSP PGUID b f f 1560 1560 16 1787 1789 bitlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1787 ( ">" PGNSP PGUID b f f 1560 1560 16 1786 1788 bitgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1788 ( "<=" PGNSP PGUID b f f 1560 1560 16 1789 1787 bitle scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1789 ( ">=" PGNSP PGUID b f f 1560 1560 16 1788 1786 bitge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 1791 ( "&" PGNSP PGUID b f f 1560 1560 1560 1791 0 bitand - - )); -DESCR("bitwise and"); -DATA(insert OID = 1792 ( "|" PGNSP PGUID b f f 1560 1560 1560 1792 0 bitor - - )); -DESCR("bitwise or"); -DATA(insert OID = 1793 ( "#" PGNSP PGUID b f f 1560 1560 1560 1793 0 bitxor - - )); -DESCR("bitwise exclusive or"); -DATA(insert OID = 1794 ( "~" PGNSP PGUID l f f 0 1560 1560 0 0 bitnot - - )); -DESCR("bitwise not"); -DATA(insert OID = 1795 ( "<<" PGNSP PGUID b f f 1560 23 1560 0 0 bitshiftleft - - )); -DESCR("bitwise shift left"); -DATA(insert OID = 1796 ( ">>" PGNSP PGUID b f f 1560 23 1560 0 0 bitshiftright - - )); -DESCR("bitwise shift right"); -DATA(insert OID = 1797 ( "||" PGNSP PGUID b f f 1562 1562 1562 0 0 bitcat - - )); -DESCR("concatenate"); - -DATA(insert OID = 1800 ( "+" PGNSP PGUID b f f 1083 1186 1083 1849 0 time_pl_interval - - )); -DESCR("add"); -DATA(insert OID = 1801 ( "-" PGNSP PGUID b f f 1083 1186 1083 0 0 time_mi_interval - - )); -DESCR("subtract"); -DATA(insert OID = 1802 ( "+" PGNSP PGUID b f f 1266 1186 1266 2552 0 timetz_pl_interval - - )); -DESCR("add"); -DATA(insert OID = 1803 ( "-" PGNSP PGUID b f f 1266 1186 1266 0 0 timetz_mi_interval - - )); -DESCR("subtract"); - -DATA(insert OID = 1804 ( "=" PGNSP PGUID b t f 1562 1562 16 1804 1805 varbiteq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1805 ( "<>" PGNSP PGUID b f f 1562 1562 16 1805 1804 varbitne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1806 ( "<" PGNSP PGUID b f f 1562 1562 16 1807 1809 varbitlt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1807 ( ">" PGNSP PGUID b f f 1562 1562 16 1806 1808 varbitgt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1808 ( "<=" PGNSP PGUID b f f 1562 1562 16 1809 1807 varbitle scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1809 ( ">=" PGNSP PGUID b f f 1562 1562 16 1808 1806 varbitge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 1849 ( "+" PGNSP PGUID b f f 1186 1083 1083 1800 0 interval_pl_time - - )); -DESCR("add"); - -DATA(insert OID = 1862 ( "=" PGNSP PGUID b t t 21 20 16 1868 1863 int28eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1863 ( "<>" PGNSP PGUID b f f 21 20 16 1869 1862 int28ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1864 ( "<" PGNSP PGUID b f f 21 20 16 1871 1867 int28lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1865 ( ">" PGNSP PGUID b f f 21 20 16 1870 1866 int28gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1866 ( "<=" PGNSP PGUID b f f 21 20 16 1873 1865 int28le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1867 ( ">=" PGNSP PGUID b f f 21 20 16 1872 1864 int28ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 1868 ( "=" PGNSP PGUID b t t 20 21 16 1862 1869 int82eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1869 ( "<>" PGNSP PGUID b f f 20 21 16 1863 1868 int82ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1870 ( "<" PGNSP PGUID b f f 20 21 16 1865 1873 int82lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1871 ( ">" PGNSP PGUID b f f 20 21 16 1864 1872 int82gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1872 ( "<=" PGNSP PGUID b f f 20 21 16 1867 1871 int82le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1873 ( ">=" PGNSP PGUID b f f 20 21 16 1866 1870 int82ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 1874 ( "&" PGNSP PGUID b f f 21 21 21 1874 0 int2and - - )); -DESCR("bitwise and"); -DATA(insert OID = 1875 ( "|" PGNSP PGUID b f f 21 21 21 1875 0 int2or - - )); -DESCR("bitwise or"); -DATA(insert OID = 1876 ( "#" PGNSP PGUID b f f 21 21 21 1876 0 int2xor - - )); -DESCR("bitwise exclusive or"); -DATA(insert OID = 1877 ( "~" PGNSP PGUID l f f 0 21 21 0 0 int2not - - )); -DESCR("bitwise not"); -DATA(insert OID = 1878 ( "<<" PGNSP PGUID b f f 21 23 21 0 0 int2shl - - )); -DESCR("bitwise shift left"); -DATA(insert OID = 1879 ( ">>" PGNSP PGUID b f f 21 23 21 0 0 int2shr - - )); -DESCR("bitwise shift right"); - -DATA(insert OID = 1880 ( "&" PGNSP PGUID b f f 23 23 23 1880 0 int4and - - )); -DESCR("bitwise and"); -DATA(insert OID = 1881 ( "|" PGNSP PGUID b f f 23 23 23 1881 0 int4or - - )); -DESCR("bitwise or"); -DATA(insert OID = 1882 ( "#" PGNSP PGUID b f f 23 23 23 1882 0 int4xor - - )); -DESCR("bitwise exclusive or"); -DATA(insert OID = 1883 ( "~" PGNSP PGUID l f f 0 23 23 0 0 int4not - - )); -DESCR("bitwise not"); -DATA(insert OID = 1884 ( "<<" PGNSP PGUID b f f 23 23 23 0 0 int4shl - - )); -DESCR("bitwise shift left"); -DATA(insert OID = 1885 ( ">>" PGNSP PGUID b f f 23 23 23 0 0 int4shr - - )); -DESCR("bitwise shift right"); - -DATA(insert OID = 1886 ( "&" PGNSP PGUID b f f 20 20 20 1886 0 int8and - - )); -DESCR("bitwise and"); -DATA(insert OID = 1887 ( "|" PGNSP PGUID b f f 20 20 20 1887 0 int8or - - )); -DESCR("bitwise or"); -DATA(insert OID = 1888 ( "#" PGNSP PGUID b f f 20 20 20 1888 0 int8xor - - )); -DESCR("bitwise exclusive or"); -DATA(insert OID = 1889 ( "~" PGNSP PGUID l f f 0 20 20 0 0 int8not - - )); -DESCR("bitwise not"); -DATA(insert OID = 1890 ( "<<" PGNSP PGUID b f f 20 23 20 0 0 int8shl - - )); -DESCR("bitwise shift left"); -DATA(insert OID = 1891 ( ">>" PGNSP PGUID b f f 20 23 20 0 0 int8shr - - )); -DESCR("bitwise shift right"); - -DATA(insert OID = 1916 ( "+" PGNSP PGUID l f f 0 20 20 0 0 int8up - - )); -DESCR("unary plus"); -DATA(insert OID = 1917 ( "+" PGNSP PGUID l f f 0 21 21 0 0 int2up - - )); -DESCR("unary plus"); -DATA(insert OID = 1918 ( "+" PGNSP PGUID l f f 0 23 23 0 0 int4up - - )); -DESCR("unary plus"); -DATA(insert OID = 1919 ( "+" PGNSP PGUID l f f 0 700 700 0 0 float4up - - )); -DESCR("unary plus"); -DATA(insert OID = 1920 ( "+" PGNSP PGUID l f f 0 701 701 0 0 float8up - - )); -DESCR("unary plus"); -DATA(insert OID = 1921 ( "+" PGNSP PGUID l f f 0 1700 1700 0 0 numeric_uplus - - )); -DESCR("unary plus"); - -/* bytea operators */ -DATA(insert OID = 1955 ( "=" PGNSP PGUID b t t 17 17 16 1955 1956 byteaeq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 1956 ( "<>" PGNSP PGUID b f f 17 17 16 1956 1955 byteane neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 1957 ( "<" PGNSP PGUID b f f 17 17 16 1959 1960 bytealt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 1958 ( "<=" PGNSP PGUID b f f 17 17 16 1960 1959 byteale scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 1959 ( ">" PGNSP PGUID b f f 17 17 16 1957 1958 byteagt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 1960 ( ">=" PGNSP PGUID b f f 17 17 16 1958 1957 byteage scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -DATA(insert OID = 2016 ( "~~" PGNSP PGUID b f f 17 17 16 0 2017 bytealike likesel likejoinsel )); -DESCR("matches LIKE expression"); -#define OID_BYTEA_LIKE_OP 2016 -DATA(insert OID = 2017 ( "!~~" PGNSP PGUID b f f 17 17 16 0 2016 byteanlike nlikesel nlikejoinsel )); -DESCR("does not match LIKE expression"); -DATA(insert OID = 2018 ( "||" PGNSP PGUID b f f 17 17 17 0 0 byteacat - - )); -DESCR("concatenate"); - -/* timestamp operators */ -DATA(insert OID = 2060 ( "=" PGNSP PGUID b t t 1114 1114 16 2060 2061 timestamp_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2061 ( "<>" PGNSP PGUID b f f 1114 1114 16 2061 2060 timestamp_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 2062 ( "<" PGNSP PGUID b f f 1114 1114 16 2064 2065 timestamp_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2063 ( "<=" PGNSP PGUID b f f 1114 1114 16 2065 2064 timestamp_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2064 ( ">" PGNSP PGUID b f f 1114 1114 16 2062 2063 timestamp_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2065 ( ">=" PGNSP PGUID b f f 1114 1114 16 2063 2062 timestamp_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2066 ( "+" PGNSP PGUID b f f 1114 1186 1114 2553 0 timestamp_pl_interval - - )); -DESCR("add"); -DATA(insert OID = 2067 ( "-" PGNSP PGUID b f f 1114 1114 1186 0 0 timestamp_mi - - )); -DESCR("subtract"); -DATA(insert OID = 2068 ( "-" PGNSP PGUID b f f 1114 1186 1114 0 0 timestamp_mi_interval - - )); -DESCR("subtract"); - -/* character-by-character (not collation order) comparison operators for character types */ - -DATA(insert OID = 2314 ( "~<~" PGNSP PGUID b f f 25 25 16 2318 2317 text_pattern_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2315 ( "~<=~" PGNSP PGUID b f f 25 25 16 2317 2318 text_pattern_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2317 ( "~>=~" PGNSP PGUID b f f 25 25 16 2315 2314 text_pattern_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2318 ( "~>~" PGNSP PGUID b f f 25 25 16 2314 2315 text_pattern_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); - -DATA(insert OID = 2326 ( "~<~" PGNSP PGUID b f f 1042 1042 16 2330 2329 bpchar_pattern_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2327 ( "~<=~" PGNSP PGUID b f f 1042 1042 16 2329 2330 bpchar_pattern_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2329 ( "~>=~" PGNSP PGUID b f f 1042 1042 16 2327 2326 bpchar_pattern_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2330 ( "~>~" PGNSP PGUID b f f 1042 1042 16 2326 2327 bpchar_pattern_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); - -/* crosstype operations for date vs. timestamp and timestamptz */ - -DATA(insert OID = 2345 ( "<" PGNSP PGUID b f f 1082 1114 16 2375 2348 date_lt_timestamp scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2346 ( "<=" PGNSP PGUID b f f 1082 1114 16 2374 2349 date_le_timestamp scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2347 ( "=" PGNSP PGUID b t f 1082 1114 16 2373 2350 date_eq_timestamp eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2348 ( ">=" PGNSP PGUID b f f 1082 1114 16 2372 2345 date_ge_timestamp scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2349 ( ">" PGNSP PGUID b f f 1082 1114 16 2371 2346 date_gt_timestamp scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2350 ( "<>" PGNSP PGUID b f f 1082 1114 16 2376 2347 date_ne_timestamp neqsel neqjoinsel )); -DESCR("not equal"); - -DATA(insert OID = 2358 ( "<" PGNSP PGUID b f f 1082 1184 16 2388 2361 date_lt_timestamptz scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2359 ( "<=" PGNSP PGUID b f f 1082 1184 16 2387 2362 date_le_timestamptz scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2360 ( "=" PGNSP PGUID b t f 1082 1184 16 2386 2363 date_eq_timestamptz eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2361 ( ">=" PGNSP PGUID b f f 1082 1184 16 2385 2358 date_ge_timestamptz scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2362 ( ">" PGNSP PGUID b f f 1082 1184 16 2384 2359 date_gt_timestamptz scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2363 ( "<>" PGNSP PGUID b f f 1082 1184 16 2389 2360 date_ne_timestamptz neqsel neqjoinsel )); -DESCR("not equal"); - -DATA(insert OID = 2371 ( "<" PGNSP PGUID b f f 1114 1082 16 2349 2374 timestamp_lt_date scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2372 ( "<=" PGNSP PGUID b f f 1114 1082 16 2348 2375 timestamp_le_date scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2373 ( "=" PGNSP PGUID b t f 1114 1082 16 2347 2376 timestamp_eq_date eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2374 ( ">=" PGNSP PGUID b f f 1114 1082 16 2346 2371 timestamp_ge_date scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2375 ( ">" PGNSP PGUID b f f 1114 1082 16 2345 2372 timestamp_gt_date scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2376 ( "<>" PGNSP PGUID b f f 1114 1082 16 2350 2373 timestamp_ne_date neqsel neqjoinsel )); -DESCR("not equal"); - -DATA(insert OID = 2384 ( "<" PGNSP PGUID b f f 1184 1082 16 2362 2387 timestamptz_lt_date scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2385 ( "<=" PGNSP PGUID b f f 1184 1082 16 2361 2388 timestamptz_le_date scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2386 ( "=" PGNSP PGUID b t f 1184 1082 16 2360 2389 timestamptz_eq_date eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2387 ( ">=" PGNSP PGUID b f f 1184 1082 16 2359 2384 timestamptz_ge_date scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2388 ( ">" PGNSP PGUID b f f 1184 1082 16 2358 2385 timestamptz_gt_date scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2389 ( "<>" PGNSP PGUID b f f 1184 1082 16 2363 2386 timestamptz_ne_date neqsel neqjoinsel )); -DESCR("not equal"); - -/* crosstype operations for timestamp vs. timestamptz */ - -DATA(insert OID = 2534 ( "<" PGNSP PGUID b f f 1114 1184 16 2544 2537 timestamp_lt_timestamptz scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2535 ( "<=" PGNSP PGUID b f f 1114 1184 16 2543 2538 timestamp_le_timestamptz scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2536 ( "=" PGNSP PGUID b t f 1114 1184 16 2542 2539 timestamp_eq_timestamptz eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2537 ( ">=" PGNSP PGUID b f f 1114 1184 16 2541 2534 timestamp_ge_timestamptz scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2538 ( ">" PGNSP PGUID b f f 1114 1184 16 2540 2535 timestamp_gt_timestamptz scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2539 ( "<>" PGNSP PGUID b f f 1114 1184 16 2545 2536 timestamp_ne_timestamptz neqsel neqjoinsel )); -DESCR("not equal"); - -DATA(insert OID = 2540 ( "<" PGNSP PGUID b f f 1184 1114 16 2538 2543 timestamptz_lt_timestamp scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2541 ( "<=" PGNSP PGUID b f f 1184 1114 16 2537 2544 timestamptz_le_timestamp scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2542 ( "=" PGNSP PGUID b t f 1184 1114 16 2536 2545 timestamptz_eq_timestamp eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2543 ( ">=" PGNSP PGUID b f f 1184 1114 16 2535 2540 timestamptz_ge_timestamp scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 2544 ( ">" PGNSP PGUID b f f 1184 1114 16 2534 2541 timestamptz_gt_timestamp scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2545 ( "<>" PGNSP PGUID b f f 1184 1114 16 2539 2542 timestamptz_ne_timestamp neqsel neqjoinsel )); -DESCR("not equal"); - -/* formerly-missing interval + datetime operators */ -DATA(insert OID = 2551 ( "+" PGNSP PGUID b f f 1186 1082 1114 1076 0 interval_pl_date - - )); -DESCR("add"); -DATA(insert OID = 2552 ( "+" PGNSP PGUID b f f 1186 1266 1266 1802 0 interval_pl_timetz - - )); -DESCR("add"); -DATA(insert OID = 2553 ( "+" PGNSP PGUID b f f 1186 1114 1114 2066 0 interval_pl_timestamp - - )); -DESCR("add"); -DATA(insert OID = 2554 ( "+" PGNSP PGUID b f f 1186 1184 1184 1327 0 interval_pl_timestamptz - - )); -DESCR("add"); -DATA(insert OID = 2555 ( "+" PGNSP PGUID b f f 23 1082 1082 1100 0 integer_pl_date - - )); -DESCR("add"); - -/* new operators for Y-direction rtree opfamilies */ -DATA(insert OID = 2570 ( "<<|" PGNSP PGUID b f f 603 603 16 0 0 box_below positionsel positionjoinsel )); -DESCR("is below"); -DATA(insert OID = 2571 ( "&<|" PGNSP PGUID b f f 603 603 16 0 0 box_overbelow positionsel positionjoinsel )); -DESCR("overlaps or is below"); -DATA(insert OID = 2572 ( "|&>" PGNSP PGUID b f f 603 603 16 0 0 box_overabove positionsel positionjoinsel )); -DESCR("overlaps or is above"); -DATA(insert OID = 2573 ( "|>>" PGNSP PGUID b f f 603 603 16 0 0 box_above positionsel positionjoinsel )); -DESCR("is above"); -DATA(insert OID = 2574 ( "<<|" PGNSP PGUID b f f 604 604 16 0 0 poly_below positionsel positionjoinsel )); -DESCR("is below"); -DATA(insert OID = 2575 ( "&<|" PGNSP PGUID b f f 604 604 16 0 0 poly_overbelow positionsel positionjoinsel )); -DESCR("overlaps or is below"); -DATA(insert OID = 2576 ( "|&>" PGNSP PGUID b f f 604 604 16 0 0 poly_overabove positionsel positionjoinsel )); -DESCR("overlaps or is above"); -DATA(insert OID = 2577 ( "|>>" PGNSP PGUID b f f 604 604 16 0 0 poly_above positionsel positionjoinsel )); -DESCR("is above"); -DATA(insert OID = 2589 ( "&<|" PGNSP PGUID b f f 718 718 16 0 0 circle_overbelow positionsel positionjoinsel )); -DESCR("overlaps or is below"); -DATA(insert OID = 2590 ( "|&>" PGNSP PGUID b f f 718 718 16 0 0 circle_overabove positionsel positionjoinsel )); -DESCR("overlaps or is above"); - -/* overlap/contains/contained for arrays */ -DATA(insert OID = 2750 ( "&&" PGNSP PGUID b f f 2277 2277 16 2750 0 arrayoverlap arraycontsel arraycontjoinsel )); -DESCR("overlaps"); -#define OID_ARRAY_OVERLAP_OP 2750 -DATA(insert OID = 2751 ( "@>" PGNSP PGUID b f f 2277 2277 16 2752 0 arraycontains arraycontsel arraycontjoinsel )); -DESCR("contains"); -#define OID_ARRAY_CONTAINS_OP 2751 -DATA(insert OID = 2752 ( "<@" PGNSP PGUID b f f 2277 2277 16 2751 0 arraycontained arraycontsel arraycontjoinsel )); -DESCR("is contained by"); -#define OID_ARRAY_CONTAINED_OP 2752 - -/* capturing operators to preserve pre-8.3 behavior of text concatenation */ -DATA(insert OID = 2779 ( "||" PGNSP PGUID b f f 25 2776 25 0 0 textanycat - - )); -DESCR("concatenate"); -DATA(insert OID = 2780 ( "||" PGNSP PGUID b f f 2776 25 25 0 0 anytextcat - - )); -DESCR("concatenate"); - -/* obsolete names for contains/contained-by operators; remove these someday */ -DATA(insert OID = 2860 ( "@" PGNSP PGUID b f f 604 604 16 2861 0 poly_contained contsel contjoinsel )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2861 ( "~" PGNSP PGUID b f f 604 604 16 2860 0 poly_contain contsel contjoinsel )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2862 ( "@" PGNSP PGUID b f f 603 603 16 2863 0 box_contained contsel contjoinsel )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2863 ( "~" PGNSP PGUID b f f 603 603 16 2862 0 box_contain contsel contjoinsel )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2864 ( "@" PGNSP PGUID b f f 718 718 16 2865 0 circle_contained contsel contjoinsel )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2865 ( "~" PGNSP PGUID b f f 718 718 16 2864 0 circle_contain contsel contjoinsel )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2866 ( "@" PGNSP PGUID b f f 600 603 16 0 0 on_pb - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2867 ( "@" PGNSP PGUID b f f 600 602 16 2868 0 on_ppath - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2868 ( "~" PGNSP PGUID b f f 602 600 16 2867 0 path_contain_pt - - )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2869 ( "@" PGNSP PGUID b f f 600 604 16 2870 0 pt_contained_poly - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2870 ( "~" PGNSP PGUID b f f 604 600 16 2869 0 poly_contain_pt - - )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2871 ( "@" PGNSP PGUID b f f 600 718 16 2872 0 pt_contained_circle - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2872 ( "~" PGNSP PGUID b f f 718 600 16 2871 0 circle_contain_pt - - )); -DESCR("deprecated, use @> instead"); -DATA(insert OID = 2873 ( "@" PGNSP PGUID b f f 600 628 16 0 0 on_pl - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2874 ( "@" PGNSP PGUID b f f 600 601 16 0 0 on_ps - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2875 ( "@" PGNSP PGUID b f f 601 628 16 0 0 on_sl - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2876 ( "@" PGNSP PGUID b f f 601 603 16 0 0 on_sb - - )); -DESCR("deprecated, use <@ instead"); -DATA(insert OID = 2877 ( "~" PGNSP PGUID b f f 1034 1033 16 0 0 aclcontains - - )); -DESCR("deprecated, use @> instead"); - -/* uuid operators */ -DATA(insert OID = 2972 ( "=" PGNSP PGUID b t t 2950 2950 16 2972 2973 uuid_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 2973 ( "<>" PGNSP PGUID b f f 2950 2950 16 2973 2972 uuid_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 2974 ( "<" PGNSP PGUID b f f 2950 2950 16 2975 2977 uuid_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 2975 ( ">" PGNSP PGUID b f f 2950 2950 16 2974 2976 uuid_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 2976 ( "<=" PGNSP PGUID b f f 2950 2950 16 2977 2975 uuid_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2977 ( ">=" PGNSP PGUID b f f 2950 2950 16 2976 2974 uuid_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -/* pg_lsn operators */ -DATA(insert OID = 3222 ( "=" PGNSP PGUID b t t 3220 3220 16 3222 3223 pg_lsn_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3223 ( "<>" PGNSP PGUID b f f 3220 3220 16 3223 3222 pg_lsn_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3224 ( "<" PGNSP PGUID b f f 3220 3220 16 3225 3227 pg_lsn_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3225 ( ">" PGNSP PGUID b f f 3220 3220 16 3224 3226 pg_lsn_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3226 ( "<=" PGNSP PGUID b f f 3220 3220 16 3227 3225 pg_lsn_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3227 ( ">=" PGNSP PGUID b f f 3220 3220 16 3226 3224 pg_lsn_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 3228 ( "-" PGNSP PGUID b f f 3220 3220 1700 0 0 pg_lsn_mi - - )); -DESCR("minus"); - -/* enum operators */ -DATA(insert OID = 3516 ( "=" PGNSP PGUID b t t 3500 3500 16 3516 3517 enum_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3517 ( "<>" PGNSP PGUID b f f 3500 3500 16 3517 3516 enum_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3518 ( "<" PGNSP PGUID b f f 3500 3500 16 3519 3521 enum_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3519 ( ">" PGNSP PGUID b f f 3500 3500 16 3518 3520 enum_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3520 ( "<=" PGNSP PGUID b f f 3500 3500 16 3521 3519 enum_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3521 ( ">=" PGNSP PGUID b f f 3500 3500 16 3520 3518 enum_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -/* - * tsearch operations - */ -DATA(insert OID = 3627 ( "<" PGNSP PGUID b f f 3614 3614 16 3632 3631 tsvector_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3628 ( "<=" PGNSP PGUID b f f 3614 3614 16 3631 3632 tsvector_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3629 ( "=" PGNSP PGUID b t f 3614 3614 16 3629 3630 tsvector_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3630 ( "<>" PGNSP PGUID b f f 3614 3614 16 3630 3629 tsvector_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3631 ( ">=" PGNSP PGUID b f f 3614 3614 16 3628 3627 tsvector_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 3632 ( ">" PGNSP PGUID b f f 3614 3614 16 3627 3628 tsvector_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3633 ( "||" PGNSP PGUID b f f 3614 3614 3614 0 0 tsvector_concat - - )); -DESCR("concatenate"); -DATA(insert OID = 3636 ( "@@" PGNSP PGUID b f f 3614 3615 16 3637 0 ts_match_vq tsmatchsel tsmatchjoinsel )); -DESCR("text search match"); -DATA(insert OID = 3637 ( "@@" PGNSP PGUID b f f 3615 3614 16 3636 0 ts_match_qv tsmatchsel tsmatchjoinsel )); -DESCR("text search match"); -DATA(insert OID = 3660 ( "@@@" PGNSP PGUID b f f 3614 3615 16 3661 0 ts_match_vq tsmatchsel tsmatchjoinsel )); -DESCR("deprecated, use @@ instead"); -DATA(insert OID = 3661 ( "@@@" PGNSP PGUID b f f 3615 3614 16 3660 0 ts_match_qv tsmatchsel tsmatchjoinsel )); -DESCR("deprecated, use @@ instead"); -DATA(insert OID = 3674 ( "<" PGNSP PGUID b f f 3615 3615 16 3679 3678 tsquery_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3675 ( "<=" PGNSP PGUID b f f 3615 3615 16 3678 3679 tsquery_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3676 ( "=" PGNSP PGUID b t f 3615 3615 16 3676 3677 tsquery_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3677 ( "<>" PGNSP PGUID b f f 3615 3615 16 3677 3676 tsquery_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3678 ( ">=" PGNSP PGUID b f f 3615 3615 16 3675 3674 tsquery_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 3679 ( ">" PGNSP PGUID b f f 3615 3615 16 3674 3675 tsquery_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3680 ( "&&" PGNSP PGUID b f f 3615 3615 3615 0 0 tsquery_and - - )); -DESCR("AND-concatenate"); -DATA(insert OID = 3681 ( "||" PGNSP PGUID b f f 3615 3615 3615 0 0 tsquery_or - - )); -DESCR("OR-concatenate"); -/* <-> operation calls tsquery_phrase, but function is polymorphic. So, point to OID of the tsquery_phrase */ -DATA(insert OID = 5005 ( "<->" PGNSP PGUID b f f 3615 3615 3615 0 0 5003 - - )); -DESCR("phrase-concatenate"); -DATA(insert OID = 3682 ( "!!" PGNSP PGUID l f f 0 3615 3615 0 0 tsquery_not - - )); -DESCR("NOT tsquery"); -DATA(insert OID = 3693 ( "@>" PGNSP PGUID b f f 3615 3615 16 3694 0 tsq_mcontains contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 3694 ( "<@" PGNSP PGUID b f f 3615 3615 16 3693 0 tsq_mcontained contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 3762 ( "@@" PGNSP PGUID b f f 25 25 16 0 0 ts_match_tt contsel contjoinsel )); -DESCR("text search match"); -DATA(insert OID = 3763 ( "@@" PGNSP PGUID b f f 25 3615 16 0 0 ts_match_tq contsel contjoinsel )); -DESCR("text search match"); - -/* generic record comparison operators */ -DATA(insert OID = 2988 ( "=" PGNSP PGUID b t f 2249 2249 16 2988 2989 record_eq eqsel eqjoinsel )); -DESCR("equal"); -#define RECORD_EQ_OP 2988 -DATA(insert OID = 2989 ( "<>" PGNSP PGUID b f f 2249 2249 16 2989 2988 record_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 2990 ( "<" PGNSP PGUID b f f 2249 2249 16 2991 2993 record_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -#define RECORD_LT_OP 2990 -DATA(insert OID = 2991 ( ">" PGNSP PGUID b f f 2249 2249 16 2990 2992 record_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -#define RECORD_GT_OP 2991 -DATA(insert OID = 2992 ( "<=" PGNSP PGUID b f f 2249 2249 16 2993 2991 record_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 2993 ( ">=" PGNSP PGUID b f f 2249 2249 16 2992 2990 record_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -/* byte-oriented tests for identical rows and fast sorting */ -DATA(insert OID = 3188 ( "*=" PGNSP PGUID b t f 2249 2249 16 3188 3189 record_image_eq eqsel eqjoinsel )); -DESCR("identical"); -DATA(insert OID = 3189 ( "*<>" PGNSP PGUID b f f 2249 2249 16 3189 3188 record_image_ne neqsel neqjoinsel )); -DESCR("not identical"); -DATA(insert OID = 3190 ( "*<" PGNSP PGUID b f f 2249 2249 16 3191 3193 record_image_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3191 ( "*>" PGNSP PGUID b f f 2249 2249 16 3190 3192 record_image_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3192 ( "*<=" PGNSP PGUID b f f 2249 2249 16 3193 3191 record_image_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3193 ( "*>=" PGNSP PGUID b f f 2249 2249 16 3192 3190 record_image_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); - -/* generic range type operators */ -DATA(insert OID = 3882 ( "=" PGNSP PGUID b t t 3831 3831 16 3882 3883 range_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3883 ( "<>" PGNSP PGUID b f f 3831 3831 16 3883 3882 range_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3884 ( "<" PGNSP PGUID b f f 3831 3831 16 3887 3886 range_lt rangesel scalarltjoinsel )); -DESCR("less than"); -#define OID_RANGE_LESS_OP 3884 -DATA(insert OID = 3885 ( "<=" PGNSP PGUID b f f 3831 3831 16 3886 3887 range_le rangesel scalarlejoinsel )); -DESCR("less than or equal"); -#define OID_RANGE_LESS_EQUAL_OP 3885 -DATA(insert OID = 3886 ( ">=" PGNSP PGUID b f f 3831 3831 16 3885 3884 range_ge rangesel scalargejoinsel )); -DESCR("greater than or equal"); -#define OID_RANGE_GREATER_EQUAL_OP 3886 -DATA(insert OID = 3887 ( ">" PGNSP PGUID b f f 3831 3831 16 3884 3885 range_gt rangesel scalargtjoinsel )); -DESCR("greater than"); -#define OID_RANGE_GREATER_OP 3887 -DATA(insert OID = 3888 ( "&&" PGNSP PGUID b f f 3831 3831 16 3888 0 range_overlaps rangesel areajoinsel )); -DESCR("overlaps"); -#define OID_RANGE_OVERLAP_OP 3888 -DATA(insert OID = 3889 ( "@>" PGNSP PGUID b f f 3831 2283 16 3891 0 range_contains_elem rangesel contjoinsel )); -DESCR("contains"); -#define OID_RANGE_CONTAINS_ELEM_OP 3889 -DATA(insert OID = 3890 ( "@>" PGNSP PGUID b f f 3831 3831 16 3892 0 range_contains rangesel contjoinsel )); -DESCR("contains"); -#define OID_RANGE_CONTAINS_OP 3890 -DATA(insert OID = 3891 ( "<@" PGNSP PGUID b f f 2283 3831 16 3889 0 elem_contained_by_range rangesel contjoinsel )); -DESCR("is contained by"); -#define OID_RANGE_ELEM_CONTAINED_OP 3891 -DATA(insert OID = 3892 ( "<@" PGNSP PGUID b f f 3831 3831 16 3890 0 range_contained_by rangesel contjoinsel )); -DESCR("is contained by"); -#define OID_RANGE_CONTAINED_OP 3892 -DATA(insert OID = 3893 ( "<<" PGNSP PGUID b f f 3831 3831 16 3894 0 range_before rangesel scalarltjoinsel )); -DESCR("is left of"); -#define OID_RANGE_LEFT_OP 3893 -DATA(insert OID = 3894 ( ">>" PGNSP PGUID b f f 3831 3831 16 3893 0 range_after rangesel scalargtjoinsel )); -DESCR("is right of"); -#define OID_RANGE_RIGHT_OP 3894 -DATA(insert OID = 3895 ( "&<" PGNSP PGUID b f f 3831 3831 16 0 0 range_overleft rangesel scalarltjoinsel )); -DESCR("overlaps or is left of"); -#define OID_RANGE_OVERLAPS_LEFT_OP 3895 -DATA(insert OID = 3896 ( "&>" PGNSP PGUID b f f 3831 3831 16 0 0 range_overright rangesel scalargtjoinsel )); -DESCR("overlaps or is right of"); -#define OID_RANGE_OVERLAPS_RIGHT_OP 3896 -DATA(insert OID = 3897 ( "-|-" PGNSP PGUID b f f 3831 3831 16 3897 0 range_adjacent contsel contjoinsel )); -DESCR("is adjacent to"); -DATA(insert OID = 3898 ( "+" PGNSP PGUID b f f 3831 3831 3831 3898 0 range_union - - )); -DESCR("range union"); -DATA(insert OID = 3899 ( "-" PGNSP PGUID b f f 3831 3831 3831 0 0 range_minus - - )); -DESCR("range difference"); -DATA(insert OID = 3900 ( "*" PGNSP PGUID b f f 3831 3831 3831 3900 0 range_intersect - - )); -DESCR("range intersection"); -DATA(insert OID = 3962 ( "->" PGNSP PGUID b f f 114 25 114 0 0 json_object_field - - )); -DESCR("get json object field"); -DATA(insert OID = 3963 ( "->>" PGNSP PGUID b f f 114 25 25 0 0 json_object_field_text - - )); -DESCR("get json object field as text"); -DATA(insert OID = 3964 ( "->" PGNSP PGUID b f f 114 23 114 0 0 json_array_element - - )); -DESCR("get json array element"); -DATA(insert OID = 3965 ( "->>" PGNSP PGUID b f f 114 23 25 0 0 json_array_element_text - - )); -DESCR("get json array element as text"); -DATA(insert OID = 3966 ( "#>" PGNSP PGUID b f f 114 1009 114 0 0 json_extract_path - - )); -DESCR("get value from json with path elements"); -DATA(insert OID = 3967 ( "#>>" PGNSP PGUID b f f 114 1009 25 0 0 json_extract_path_text - - )); -DESCR("get value from json as text with path elements"); -DATA(insert OID = 3211 ( "->" PGNSP PGUID b f f 3802 25 3802 0 0 jsonb_object_field - - )); -DESCR("get jsonb object field"); -DATA(insert OID = 3477 ( "->>" PGNSP PGUID b f f 3802 25 25 0 0 jsonb_object_field_text - - )); -DESCR("get jsonb object field as text"); -DATA(insert OID = 3212 ( "->" PGNSP PGUID b f f 3802 23 3802 0 0 jsonb_array_element - - )); -DESCR("get jsonb array element"); -DATA(insert OID = 3481 ( "->>" PGNSP PGUID b f f 3802 23 25 0 0 jsonb_array_element_text - - )); -DESCR("get jsonb array element as text"); -DATA(insert OID = 3213 ( "#>" PGNSP PGUID b f f 3802 1009 3802 0 0 jsonb_extract_path - - )); -DESCR("get value from jsonb with path elements"); -DATA(insert OID = 3206 ( "#>>" PGNSP PGUID b f f 3802 1009 25 0 0 jsonb_extract_path_text - - )); -DESCR("get value from jsonb as text with path elements"); -DATA(insert OID = 3240 ( "=" PGNSP PGUID b t t 3802 3802 16 3240 3241 jsonb_eq eqsel eqjoinsel )); -DESCR("equal"); -DATA(insert OID = 3241 ( "<>" PGNSP PGUID b f f 3802 3802 16 3241 3240 jsonb_ne neqsel neqjoinsel )); -DESCR("not equal"); -DATA(insert OID = 3242 ( "<" PGNSP PGUID b f f 3802 3802 16 3243 3245 jsonb_lt scalarltsel scalarltjoinsel )); -DESCR("less than"); -DATA(insert OID = 3243 ( ">" PGNSP PGUID b f f 3802 3802 16 3242 3244 jsonb_gt scalargtsel scalargtjoinsel )); -DESCR("greater than"); -DATA(insert OID = 3244 ( "<=" PGNSP PGUID b f f 3802 3802 16 3245 3243 jsonb_le scalarlesel scalarlejoinsel )); -DESCR("less than or equal"); -DATA(insert OID = 3245 ( ">=" PGNSP PGUID b f f 3802 3802 16 3244 3242 jsonb_ge scalargesel scalargejoinsel )); -DESCR("greater than or equal"); -DATA(insert OID = 3246 ( "@>" PGNSP PGUID b f f 3802 3802 16 3250 0 jsonb_contains contsel contjoinsel )); -DESCR("contains"); -DATA(insert OID = 3247 ( "?" PGNSP PGUID b f f 3802 25 16 0 0 jsonb_exists contsel contjoinsel )); -DESCR("key exists"); -DATA(insert OID = 3248 ( "?|" PGNSP PGUID b f f 3802 1009 16 0 0 jsonb_exists_any contsel contjoinsel )); -DESCR("any key exists"); -DATA(insert OID = 3249 ( "?&" PGNSP PGUID b f f 3802 1009 16 0 0 jsonb_exists_all contsel contjoinsel )); -DESCR("all keys exist"); -DATA(insert OID = 3250 ( "<@" PGNSP PGUID b f f 3802 3802 16 3246 0 jsonb_contained contsel contjoinsel )); -DESCR("is contained by"); -DATA(insert OID = 3284 ( "||" PGNSP PGUID b f f 3802 3802 3802 0 0 jsonb_concat - - )); -DESCR("concatenate"); -DATA(insert OID = 3285 ( "-" PGNSP PGUID b f f 3802 25 3802 0 0 3302 - - )); -DESCR("delete object field"); -DATA(insert OID = 3398 ( "-" PGNSP PGUID b f f 3802 1009 3802 0 0 3343 - -)); -DESCR("delete object fields"); -DATA(insert OID = 3286 ( "-" PGNSP PGUID b f f 3802 23 3802 0 0 3303 - - )); -DESCR("delete array element"); -DATA(insert OID = 3287 ( "#-" PGNSP PGUID b f f 3802 1009 3802 0 0 jsonb_delete_path - - )); -DESCR("delete path"); - #endif /* PG_OPERATOR_H */ diff --git a/src/include/catalog/pg_opfamily.dat b/src/include/catalog/pg_opfamily.dat new file mode 100644 index 0000000000..72d71ee5b2 --- /dev/null +++ b/src/include/catalog/pg_opfamily.dat @@ -0,0 +1,248 @@ +#---------------------------------------------------------------------- +# +# pg_opfamily.dat +# Initial contents of the pg_opfamily system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_opfamily.dat +# +#---------------------------------------------------------------------- + +[ + +{ oid => '421', + opfmethod => 'btree', opfname => 'abstime_ops' }, +{ oid => '397', + opfmethod => 'btree', opfname => 'array_ops' }, +{ oid => '627', + opfmethod => 'hash', opfname => 'array_ops' }, +{ oid => '423', + opfmethod => 'btree', opfname => 'bit_ops' }, +{ oid => '424', oid_symbol => 'BOOL_BTREE_FAM_OID', + opfmethod => 'btree', opfname => 'bool_ops' }, +{ oid => '426', oid_symbol => 'BPCHAR_BTREE_FAM_OID', + opfmethod => 'btree', opfname => 'bpchar_ops' }, +{ oid => '427', + opfmethod => 'hash', opfname => 'bpchar_ops' }, +{ oid => '428', oid_symbol => 'BYTEA_BTREE_FAM_OID', + opfmethod => 'btree', opfname => 'bytea_ops' }, +{ oid => '429', + opfmethod => 'btree', opfname => 'char_ops' }, +{ oid => '431', + opfmethod => 'hash', opfname => 'char_ops' }, +{ oid => '434', + opfmethod => 'btree', opfname => 'datetime_ops' }, +{ oid => '435', + opfmethod => 'hash', opfname => 'date_ops' }, +{ oid => '1970', + opfmethod => 'btree', opfname => 'float_ops' }, +{ oid => '1971', + opfmethod => 'hash', opfname => 'float_ops' }, +{ oid => '1974', oid_symbol => 'NETWORK_BTREE_FAM_OID', + opfmethod => 'btree', opfname => 'network_ops' }, +{ oid => '1975', + opfmethod => 'hash', opfname => 'network_ops' }, +{ oid => '3550', + opfmethod => 'gist', opfname => 'network_ops' }, +{ oid => '3794', + opfmethod => 'spgist', opfname => 'network_ops' }, +{ oid => '1976', oid_symbol => 'INTEGER_BTREE_FAM_OID', + opfmethod => 'btree', opfname => 'integer_ops' }, +{ oid => '1977', + opfmethod => 'hash', opfname => 'integer_ops' }, +{ oid => '1982', + opfmethod => 'btree', opfname => 'interval_ops' }, +{ oid => '1983', + opfmethod => 'hash', opfname => 'interval_ops' }, +{ oid => '1984', + opfmethod => 'btree', opfname => 'macaddr_ops' }, +{ oid => '1985', + opfmethod => 'hash', opfname => 'macaddr_ops' }, +{ oid => '3371', + opfmethod => 'btree', opfname => 'macaddr8_ops' }, +{ oid => '3372', + opfmethod => 'hash', opfname => 'macaddr8_ops' }, +{ oid => '1986', oid_symbol => 'NAME_BTREE_FAM_OID', + opfmethod => 'btree', opfname => 'name_ops' }, +{ oid => '1987', + opfmethod => 'hash', opfname => 'name_ops' }, +{ oid => '1988', + opfmethod => 'btree', opfname => 'numeric_ops' }, +{ oid => '1998', + opfmethod => 'hash', opfname => 'numeric_ops' }, +{ oid => '1989', oid_symbol => 'OID_BTREE_FAM_OID', + opfmethod => 'btree', opfname => 'oid_ops' }, +{ oid => '1990', + opfmethod => 'hash', opfname => 'oid_ops' }, +{ oid => '1991', + opfmethod => 'btree', opfname => 'oidvector_ops' }, +{ oid => '1992', + opfmethod => 'hash', opfname => 'oidvector_ops' }, +{ oid => '2994', + opfmethod => 'btree', opfname => 'record_ops' }, +{ oid => '3194', + opfmethod => 'btree', opfname => 'record_image_ops' }, +{ oid => '1994', oid_symbol => 'TEXT_BTREE_FAM_OID', + opfmethod => 'btree', opfname => 'text_ops' }, +{ oid => '1995', + opfmethod => 'hash', opfname => 'text_ops' }, +{ oid => '1996', + opfmethod => 'btree', opfname => 'time_ops' }, +{ oid => '1997', + opfmethod => 'hash', opfname => 'time_ops' }, +{ oid => '1999', + opfmethod => 'hash', opfname => 'timestamptz_ops' }, +{ oid => '2000', + opfmethod => 'btree', opfname => 'timetz_ops' }, +{ oid => '2001', + opfmethod => 'hash', opfname => 'timetz_ops' }, +{ oid => '2002', + opfmethod => 'btree', opfname => 'varbit_ops' }, +{ oid => '2040', + opfmethod => 'hash', opfname => 'timestamp_ops' }, +{ oid => '2095', oid_symbol => 'TEXT_PATTERN_BTREE_FAM_OID', + opfmethod => 'btree', opfname => 'text_pattern_ops' }, +{ oid => '2097', oid_symbol => 'BPCHAR_PATTERN_BTREE_FAM_OID', + opfmethod => 'btree', opfname => 'bpchar_pattern_ops' }, +{ oid => '2099', + opfmethod => 'btree', opfname => 'money_ops' }, +{ oid => '2222', oid_symbol => 'BOOL_HASH_FAM_OID', + opfmethod => 'hash', opfname => 'bool_ops' }, +{ oid => '2223', + opfmethod => 'hash', opfname => 'bytea_ops' }, +{ oid => '2789', + opfmethod => 'btree', opfname => 'tid_ops' }, +{ oid => '2225', + opfmethod => 'hash', opfname => 'xid_ops' }, +{ oid => '2226', + opfmethod => 'hash', opfname => 'cid_ops' }, +{ oid => '2227', + opfmethod => 'hash', opfname => 'abstime_ops' }, +{ oid => '2228', + opfmethod => 'hash', opfname => 'reltime_ops' }, +{ oid => '2229', + opfmethod => 'hash', opfname => 'text_pattern_ops' }, +{ oid => '2231', + opfmethod => 'hash', opfname => 'bpchar_pattern_ops' }, +{ oid => '2233', + opfmethod => 'btree', opfname => 'reltime_ops' }, +{ oid => '2234', + opfmethod => 'btree', opfname => 'tinterval_ops' }, +{ oid => '2235', + opfmethod => 'hash', opfname => 'aclitem_ops' }, +{ oid => '2593', + opfmethod => 'gist', opfname => 'box_ops' }, +{ oid => '2594', + opfmethod => 'gist', opfname => 'poly_ops' }, +{ oid => '2595', + opfmethod => 'gist', opfname => 'circle_ops' }, +{ oid => '1029', + opfmethod => 'gist', opfname => 'point_ops' }, +{ oid => '2745', + opfmethod => 'gin', opfname => 'array_ops' }, +{ oid => '2968', + opfmethod => 'btree', opfname => 'uuid_ops' }, +{ oid => '2969', + opfmethod => 'hash', opfname => 'uuid_ops' }, +{ oid => '3253', + opfmethod => 'btree', opfname => 'pg_lsn_ops' }, +{ oid => '3254', + opfmethod => 'hash', opfname => 'pg_lsn_ops' }, +{ oid => '3522', + opfmethod => 'btree', opfname => 'enum_ops' }, +{ oid => '3523', + opfmethod => 'hash', opfname => 'enum_ops' }, +{ oid => '3626', + opfmethod => 'btree', opfname => 'tsvector_ops' }, +{ oid => '3655', + opfmethod => 'gist', opfname => 'tsvector_ops' }, +{ oid => '3659', + opfmethod => 'gin', opfname => 'tsvector_ops' }, +{ oid => '3683', + opfmethod => 'btree', opfname => 'tsquery_ops' }, +{ oid => '3702', + opfmethod => 'gist', opfname => 'tsquery_ops' }, +{ oid => '3901', + opfmethod => 'btree', opfname => 'range_ops' }, +{ oid => '3903', + opfmethod => 'hash', opfname => 'range_ops' }, +{ oid => '3919', + opfmethod => 'gist', opfname => 'range_ops' }, +{ oid => '3474', + opfmethod => 'spgist', opfname => 'range_ops' }, +{ oid => '4015', + opfmethod => 'spgist', opfname => 'quad_point_ops' }, +{ oid => '4016', + opfmethod => 'spgist', opfname => 'kd_point_ops' }, +{ oid => '4017', oid_symbol => 'TEXT_SPGIST_FAM_OID', + opfmethod => 'spgist', opfname => 'text_ops' }, +{ oid => '4033', + opfmethod => 'btree', opfname => 'jsonb_ops' }, +{ oid => '4034', + opfmethod => 'hash', opfname => 'jsonb_ops' }, +{ oid => '4035', + opfmethod => 'gist', opfname => 'jsonb_ops' }, +{ oid => '4036', + opfmethod => 'gin', opfname => 'jsonb_ops' }, +{ oid => '4037', + opfmethod => 'gin', opfname => 'jsonb_path_ops' }, +{ oid => '4054', + opfmethod => 'brin', opfname => 'integer_minmax_ops' }, +{ oid => '4055', + opfmethod => 'brin', opfname => 'numeric_minmax_ops' }, +{ oid => '4056', + opfmethod => 'brin', opfname => 'text_minmax_ops' }, +{ oid => '4058', + opfmethod => 'brin', opfname => 'timetz_minmax_ops' }, +{ oid => '4059', + opfmethod => 'brin', opfname => 'datetime_minmax_ops' }, +{ oid => '4062', + opfmethod => 'brin', opfname => 'char_minmax_ops' }, +{ oid => '4064', + opfmethod => 'brin', opfname => 'bytea_minmax_ops' }, +{ oid => '4065', + opfmethod => 'brin', opfname => 'name_minmax_ops' }, +{ oid => '4068', + opfmethod => 'brin', opfname => 'oid_minmax_ops' }, +{ oid => '4069', + opfmethod => 'brin', opfname => 'tid_minmax_ops' }, +{ oid => '4070', + opfmethod => 'brin', opfname => 'float_minmax_ops' }, +{ oid => '4072', + opfmethod => 'brin', opfname => 'abstime_minmax_ops' }, +{ oid => '4073', + opfmethod => 'brin', opfname => 'reltime_minmax_ops' }, +{ oid => '4074', + opfmethod => 'brin', opfname => 'macaddr_minmax_ops' }, +{ oid => '4109', + opfmethod => 'brin', opfname => 'macaddr8_minmax_ops' }, +{ oid => '4075', + opfmethod => 'brin', opfname => 'network_minmax_ops' }, +{ oid => '4102', + opfmethod => 'brin', opfname => 'network_inclusion_ops' }, +{ oid => '4076', + opfmethod => 'brin', opfname => 'bpchar_minmax_ops' }, +{ oid => '4077', + opfmethod => 'brin', opfname => 'time_minmax_ops' }, +{ oid => '4078', + opfmethod => 'brin', opfname => 'interval_minmax_ops' }, +{ oid => '4079', + opfmethod => 'brin', opfname => 'bit_minmax_ops' }, +{ oid => '4080', + opfmethod => 'brin', opfname => 'varbit_minmax_ops' }, +{ oid => '4081', + opfmethod => 'brin', opfname => 'uuid_minmax_ops' }, +{ oid => '4103', + opfmethod => 'brin', opfname => 'range_inclusion_ops' }, +{ oid => '4082', + opfmethod => 'brin', opfname => 'pg_lsn_minmax_ops' }, +{ oid => '4104', + opfmethod => 'brin', opfname => 'box_inclusion_ops' }, +{ oid => '5000', + opfmethod => 'spgist', opfname => 'box_ops' }, +{ oid => '5008', + opfmethod => 'spgist', opfname => 'poly_ops' }, + +] diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h index 5b20dd77a1..ddb0641228 100644 --- a/src/include/catalog/pg_opfamily.h +++ b/src/include/catalog/pg_opfamily.h @@ -2,7 +2,6 @@ * * pg_opfamily.h * definition of the system "opfamily" relation (pg_opfamily) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_opfamily.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,20 +19,26 @@ #define PG_OPFAMILY_H #include "catalog/genbki.h" +#include "catalog/pg_opfamily_d.h" /* ---------------- * pg_opfamily definition. cpp turns this into * typedef struct FormData_pg_opfamily * ---------------- */ -#define OperatorFamilyRelationId 2753 - -CATALOG(pg_opfamily,2753) +CATALOG(pg_opfamily,2753,OperatorFamilyRelationId) { - Oid opfmethod; /* index access method opfamily is for */ - NameData opfname; /* name of this opfamily */ - Oid opfnamespace; /* namespace of this opfamily */ - Oid opfowner; /* opfamily owner */ + /* index access method opfamily is for */ + Oid opfmethod BKI_LOOKUP(pg_am); + + /* name of this opfamily */ + NameData opfname; + + /* namespace of this opfamily */ + Oid opfnamespace BKI_DEFAULT(PGNSP); + + /* opfamily owner */ + Oid opfowner BKI_DEFAULT(PGUID); } FormData_pg_opfamily; /* ---------------- @@ -43,152 +48,11 @@ CATALOG(pg_opfamily,2753) */ typedef FormData_pg_opfamily *Form_pg_opfamily; -/* ---------------- - * compiler constants for pg_opfamily - * ---------------- - */ -#define Natts_pg_opfamily 4 -#define Anum_pg_opfamily_opfmethod 1 -#define Anum_pg_opfamily_opfname 2 -#define Anum_pg_opfamily_opfnamespace 3 -#define Anum_pg_opfamily_opfowner 4 +#ifdef EXPOSE_TO_CLIENT_CODE #define IsBooleanOpfamily(opfamily) \ ((opfamily) == BOOL_BTREE_FAM_OID || (opfamily) == BOOL_HASH_FAM_OID) -/* ---------------- - * initial contents of pg_opfamily - * ---------------- - */ - -DATA(insert OID = 421 ( 403 abstime_ops PGNSP PGUID )); -DATA(insert OID = 397 ( 403 array_ops PGNSP PGUID )); -DATA(insert OID = 627 ( 405 array_ops PGNSP PGUID )); -DATA(insert OID = 423 ( 403 bit_ops PGNSP PGUID )); -DATA(insert OID = 424 ( 403 bool_ops PGNSP PGUID )); -#define BOOL_BTREE_FAM_OID 424 -DATA(insert OID = 426 ( 403 bpchar_ops PGNSP PGUID )); -#define BPCHAR_BTREE_FAM_OID 426 -DATA(insert OID = 427 ( 405 bpchar_ops PGNSP PGUID )); -DATA(insert OID = 428 ( 403 bytea_ops PGNSP PGUID )); -#define BYTEA_BTREE_FAM_OID 428 -DATA(insert OID = 429 ( 403 char_ops PGNSP PGUID )); -DATA(insert OID = 431 ( 405 char_ops PGNSP PGUID )); -DATA(insert OID = 434 ( 403 datetime_ops PGNSP PGUID )); -DATA(insert OID = 435 ( 405 date_ops PGNSP PGUID )); -DATA(insert OID = 1970 ( 403 float_ops PGNSP PGUID )); -DATA(insert OID = 1971 ( 405 float_ops PGNSP PGUID )); -DATA(insert OID = 1974 ( 403 network_ops PGNSP PGUID )); -#define NETWORK_BTREE_FAM_OID 1974 -DATA(insert OID = 1975 ( 405 network_ops PGNSP PGUID )); -DATA(insert OID = 3550 ( 783 network_ops PGNSP PGUID )); -DATA(insert OID = 3794 ( 4000 network_ops PGNSP PGUID )); -DATA(insert OID = 1976 ( 403 integer_ops PGNSP PGUID )); -#define INTEGER_BTREE_FAM_OID 1976 -DATA(insert OID = 1977 ( 405 integer_ops PGNSP PGUID )); -DATA(insert OID = 1982 ( 403 interval_ops PGNSP PGUID )); -DATA(insert OID = 1983 ( 405 interval_ops PGNSP PGUID )); -DATA(insert OID = 1984 ( 403 macaddr_ops PGNSP PGUID )); -DATA(insert OID = 1985 ( 405 macaddr_ops PGNSP PGUID )); -DATA(insert OID = 3371 ( 403 macaddr8_ops PGNSP PGUID )); -DATA(insert OID = 3372 ( 405 macaddr8_ops PGNSP PGUID )); -DATA(insert OID = 1986 ( 403 name_ops PGNSP PGUID )); -#define NAME_BTREE_FAM_OID 1986 -DATA(insert OID = 1987 ( 405 name_ops PGNSP PGUID )); -DATA(insert OID = 1988 ( 403 numeric_ops PGNSP PGUID )); -DATA(insert OID = 1998 ( 405 numeric_ops PGNSP PGUID )); -DATA(insert OID = 1989 ( 403 oid_ops PGNSP PGUID )); -#define OID_BTREE_FAM_OID 1989 -DATA(insert OID = 1990 ( 405 oid_ops PGNSP PGUID )); -DATA(insert OID = 1991 ( 403 oidvector_ops PGNSP PGUID )); -DATA(insert OID = 1992 ( 405 oidvector_ops PGNSP PGUID )); -DATA(insert OID = 2994 ( 403 record_ops PGNSP PGUID )); -DATA(insert OID = 3194 ( 403 record_image_ops PGNSP PGUID )); -DATA(insert OID = 1994 ( 403 text_ops PGNSP PGUID )); -#define TEXT_BTREE_FAM_OID 1994 -DATA(insert OID = 1995 ( 405 text_ops PGNSP PGUID )); -DATA(insert OID = 1996 ( 403 time_ops PGNSP PGUID )); -DATA(insert OID = 1997 ( 405 time_ops PGNSP PGUID )); -DATA(insert OID = 1999 ( 405 timestamptz_ops PGNSP PGUID )); -DATA(insert OID = 2000 ( 403 timetz_ops PGNSP PGUID )); -DATA(insert OID = 2001 ( 405 timetz_ops PGNSP PGUID )); -DATA(insert OID = 2002 ( 403 varbit_ops PGNSP PGUID )); -DATA(insert OID = 2040 ( 405 timestamp_ops PGNSP PGUID )); -DATA(insert OID = 2095 ( 403 text_pattern_ops PGNSP PGUID )); -#define TEXT_PATTERN_BTREE_FAM_OID 2095 -DATA(insert OID = 2097 ( 403 bpchar_pattern_ops PGNSP PGUID )); -#define BPCHAR_PATTERN_BTREE_FAM_OID 2097 -DATA(insert OID = 2099 ( 403 money_ops PGNSP PGUID )); -DATA(insert OID = 2222 ( 405 bool_ops PGNSP PGUID )); -#define BOOL_HASH_FAM_OID 2222 -DATA(insert OID = 2223 ( 405 bytea_ops PGNSP PGUID )); -DATA(insert OID = 2789 ( 403 tid_ops PGNSP PGUID )); -DATA(insert OID = 2225 ( 405 xid_ops PGNSP PGUID )); -DATA(insert OID = 2226 ( 405 cid_ops PGNSP PGUID )); -DATA(insert OID = 2227 ( 405 abstime_ops PGNSP PGUID )); -DATA(insert OID = 2228 ( 405 reltime_ops PGNSP PGUID )); -DATA(insert OID = 2229 ( 405 text_pattern_ops PGNSP PGUID )); -DATA(insert OID = 2231 ( 405 bpchar_pattern_ops PGNSP PGUID )); -DATA(insert OID = 2233 ( 403 reltime_ops PGNSP PGUID )); -DATA(insert OID = 2234 ( 403 tinterval_ops PGNSP PGUID )); -DATA(insert OID = 2235 ( 405 aclitem_ops PGNSP PGUID )); -DATA(insert OID = 2593 ( 783 box_ops PGNSP PGUID )); -DATA(insert OID = 2594 ( 783 poly_ops PGNSP PGUID )); -DATA(insert OID = 2595 ( 783 circle_ops PGNSP PGUID )); -DATA(insert OID = 1029 ( 783 point_ops PGNSP PGUID )); -DATA(insert OID = 2745 ( 2742 array_ops PGNSP PGUID )); -DATA(insert OID = 2968 ( 403 uuid_ops PGNSP PGUID )); -DATA(insert OID = 2969 ( 405 uuid_ops PGNSP PGUID )); -DATA(insert OID = 3253 ( 403 pg_lsn_ops PGNSP PGUID )); -DATA(insert OID = 3254 ( 405 pg_lsn_ops PGNSP PGUID )); -DATA(insert OID = 3522 ( 403 enum_ops PGNSP PGUID )); -DATA(insert OID = 3523 ( 405 enum_ops PGNSP PGUID )); -DATA(insert OID = 3626 ( 403 tsvector_ops PGNSP PGUID )); -DATA(insert OID = 3655 ( 783 tsvector_ops PGNSP PGUID )); -DATA(insert OID = 3659 ( 2742 tsvector_ops PGNSP PGUID )); -DATA(insert OID = 3683 ( 403 tsquery_ops PGNSP PGUID )); -DATA(insert OID = 3702 ( 783 tsquery_ops PGNSP PGUID )); -DATA(insert OID = 3901 ( 403 range_ops PGNSP PGUID )); -DATA(insert OID = 3903 ( 405 range_ops PGNSP PGUID )); -DATA(insert OID = 3919 ( 783 range_ops PGNSP PGUID )); -DATA(insert OID = 3474 ( 4000 range_ops PGNSP PGUID )); -DATA(insert OID = 4015 ( 4000 quad_point_ops PGNSP PGUID )); -DATA(insert OID = 4016 ( 4000 kd_point_ops PGNSP PGUID )); -DATA(insert OID = 4017 ( 4000 text_ops PGNSP PGUID )); -#define TEXT_SPGIST_FAM_OID 4017 -DATA(insert OID = 4033 ( 403 jsonb_ops PGNSP PGUID )); -DATA(insert OID = 4034 ( 405 jsonb_ops PGNSP PGUID )); -DATA(insert OID = 4035 ( 783 jsonb_ops PGNSP PGUID )); -DATA(insert OID = 4036 ( 2742 jsonb_ops PGNSP PGUID )); -DATA(insert OID = 4037 ( 2742 jsonb_path_ops PGNSP PGUID )); - -DATA(insert OID = 4054 ( 3580 integer_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4055 ( 3580 numeric_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4056 ( 3580 text_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4058 ( 3580 timetz_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4059 ( 3580 datetime_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4062 ( 3580 char_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4064 ( 3580 bytea_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4065 ( 3580 name_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4068 ( 3580 oid_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4069 ( 3580 tid_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4070 ( 3580 float_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4072 ( 3580 abstime_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4073 ( 3580 reltime_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4074 ( 3580 macaddr_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4109 ( 3580 macaddr8_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4075 ( 3580 network_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4102 ( 3580 network_inclusion_ops PGNSP PGUID )); -DATA(insert OID = 4076 ( 3580 bpchar_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4077 ( 3580 time_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4078 ( 3580 interval_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4079 ( 3580 bit_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4080 ( 3580 varbit_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4081 ( 3580 uuid_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4103 ( 3580 range_inclusion_ops PGNSP PGUID )); -DATA(insert OID = 4082 ( 3580 pg_lsn_minmax_ops PGNSP PGUID )); -DATA(insert OID = 4104 ( 3580 box_inclusion_ops PGNSP PGUID )); -DATA(insert OID = 5000 ( 4000 box_ops PGNSP PGUID )); -DATA(insert OID = 5008 ( 4000 poly_ops PGNSP PGUID )); +#endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_OPFAMILY_H */ diff --git a/src/include/catalog/pg_partitioned_table.h b/src/include/catalog/pg_partitioned_table.h index 9dc66f4954..676532ae3f 100644 --- a/src/include/catalog/pg_partitioned_table.h +++ b/src/include/catalog/pg_partitioned_table.h @@ -2,7 +2,6 @@ * * pg_partitioned_table.h * definition of the system "partitioned table" relation - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -10,8 +9,8 @@ * src/include/catalog/pg_partitioned_table.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -19,15 +18,14 @@ #define PG_PARTITIONED_TABLE_H #include "catalog/genbki.h" +#include "catalog/pg_partitioned_table_d.h" /* ---------------- * pg_partitioned_table definition. cpp turns this into * typedef struct FormData_pg_partitioned_table * ---------------- */ -#define PartitionedRelationId 3350 - -CATALOG(pg_partitioned_table,3350) BKI_WITHOUT_OIDS +CATALOG(pg_partitioned_table,3350,PartitionedRelationId) BKI_WITHOUT_OIDS { Oid partrelid; /* partitioned table oid */ char partstrat; /* partitioning strategy */ @@ -60,18 +58,4 @@ CATALOG(pg_partitioned_table,3350) BKI_WITHOUT_OIDS */ typedef FormData_pg_partitioned_table *Form_pg_partitioned_table; -/* ---------------- - * compiler constants for pg_partitioned_table - * ---------------- - */ -#define Natts_pg_partitioned_table 8 -#define Anum_pg_partitioned_table_partrelid 1 -#define Anum_pg_partitioned_table_partstrat 2 -#define Anum_pg_partitioned_table_partnatts 3 -#define Anum_pg_partitioned_table_partdefid 4 -#define Anum_pg_partitioned_table_partattrs 5 -#define Anum_pg_partitioned_table_partclass 6 -#define Anum_pg_partitioned_table_partcollation 7 -#define Anum_pg_partitioned_table_partexprs 8 - #endif /* PG_PARTITIONED_TABLE_H */ diff --git a/src/include/catalog/pg_pltemplate.dat b/src/include/catalog/pg_pltemplate.dat new file mode 100644 index 0000000000..2d8bfabbe0 --- /dev/null +++ b/src/include/catalog/pg_pltemplate.dat @@ -0,0 +1,51 @@ +#---------------------------------------------------------------------- +# +# pg_pltemplate.dat +# Initial contents of the pg_pltemplate system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_pltemplate.dat +# +#---------------------------------------------------------------------- + +[ + +{ tmplname => 'plpgsql', tmpltrusted => 't', tmpldbacreate => 't', + tmplhandler => 'plpgsql_call_handler', tmplinline => 'plpgsql_inline_handler', + tmplvalidator => 'plpgsql_validator', tmpllibrary => '$libdir/plpgsql', + tmplacl => '_null_' }, +{ tmplname => 'pltcl', tmpltrusted => 't', tmpldbacreate => 't', + tmplhandler => 'pltcl_call_handler', tmplinline => '_null_', + tmplvalidator => '_null_', tmpllibrary => '$libdir/pltcl', + tmplacl => '_null_' }, +{ tmplname => 'pltclu', tmpltrusted => 'f', tmpldbacreate => 'f', + tmplhandler => 'pltclu_call_handler', tmplinline => '_null_', + tmplvalidator => '_null_', tmpllibrary => '$libdir/pltcl', + tmplacl => '_null_' }, +{ tmplname => 'plperl', tmpltrusted => 't', tmpldbacreate => 't', + tmplhandler => 'plperl_call_handler', tmplinline => 'plperl_inline_handler', + tmplvalidator => 'plperl_validator', tmpllibrary => '$libdir/plperl', + tmplacl => '_null_' }, +{ tmplname => 'plperlu', tmpltrusted => 'f', tmpldbacreate => 'f', + tmplhandler => 'plperlu_call_handler', tmplinline => 'plperlu_inline_handler', + tmplvalidator => 'plperlu_validator', tmpllibrary => '$libdir/plperl', + tmplacl => '_null_' }, +{ tmplname => 'plpythonu', tmpltrusted => 'f', tmpldbacreate => 'f', + tmplhandler => 'plpython_call_handler', + tmplinline => 'plpython_inline_handler', + tmplvalidator => 'plpython_validator', tmpllibrary => '$libdir/plpython2', + tmplacl => '_null_' }, +{ tmplname => 'plpython2u', tmpltrusted => 'f', tmpldbacreate => 'f', + tmplhandler => 'plpython2_call_handler', + tmplinline => 'plpython2_inline_handler', + tmplvalidator => 'plpython2_validator', tmpllibrary => '$libdir/plpython2', + tmplacl => '_null_' }, +{ tmplname => 'plpython3u', tmpltrusted => 'f', tmpldbacreate => 'f', + tmplhandler => 'plpython3_call_handler', + tmplinline => 'plpython3_inline_handler', + tmplvalidator => 'plpython3_validator', tmpllibrary => '$libdir/plpython3', + tmplacl => '_null_' }, + +] diff --git a/src/include/catalog/pg_pltemplate.h b/src/include/catalog/pg_pltemplate.h index d28d1883f6..d84c86b08d 100644 --- a/src/include/catalog/pg_pltemplate.h +++ b/src/include/catalog/pg_pltemplate.h @@ -2,7 +2,6 @@ * * pg_pltemplate.h * definition of the system "PL template" relation (pg_pltemplate) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_pltemplate.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_PLTEMPLATE_H #include "catalog/genbki.h" +#include "catalog/pg_pltemplate_d.h" /* ---------------- * pg_pltemplate definition. cpp turns this into * typedef struct FormData_pg_pltemplate * ---------------- */ -#define PLTemplateRelationId 1136 - -CATALOG(pg_pltemplate,1136) BKI_SHARED_RELATION BKI_WITHOUT_OIDS +CATALOG(pg_pltemplate,1136,PLTemplateRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS { NameData tmplname; /* name of PL */ bool tmpltrusted; /* PL is trusted? */ @@ -51,33 +49,4 @@ CATALOG(pg_pltemplate,1136) BKI_SHARED_RELATION BKI_WITHOUT_OIDS */ typedef FormData_pg_pltemplate *Form_pg_pltemplate; -/* ---------------- - * compiler constants for pg_pltemplate - * ---------------- - */ -#define Natts_pg_pltemplate 8 -#define Anum_pg_pltemplate_tmplname 1 -#define Anum_pg_pltemplate_tmpltrusted 2 -#define Anum_pg_pltemplate_tmpldbacreate 3 -#define Anum_pg_pltemplate_tmplhandler 4 -#define Anum_pg_pltemplate_tmplinline 5 -#define Anum_pg_pltemplate_tmplvalidator 6 -#define Anum_pg_pltemplate_tmpllibrary 7 -#define Anum_pg_pltemplate_tmplacl 8 - - -/* ---------------- - * initial contents of pg_pltemplate - * ---------------- - */ - -DATA(insert ( plpgsql t t plpgsql_call_handler plpgsql_inline_handler plpgsql_validator "$libdir/plpgsql" _null_ )); -DATA(insert ( pltcl t t pltcl_call_handler _null_ _null_ "$libdir/pltcl" _null_ )); -DATA(insert ( pltclu f f pltclu_call_handler _null_ _null_ "$libdir/pltcl" _null_ )); -DATA(insert ( plperl t t plperl_call_handler plperl_inline_handler plperl_validator "$libdir/plperl" _null_ )); -DATA(insert ( plperlu f f plperlu_call_handler plperlu_inline_handler plperlu_validator "$libdir/plperl" _null_ )); -DATA(insert ( plpythonu f f plpython_call_handler plpython_inline_handler plpython_validator "$libdir/plpython2" _null_ )); -DATA(insert ( plpython2u f f plpython2_call_handler plpython2_inline_handler plpython2_validator "$libdir/plpython2" _null_ )); -DATA(insert ( plpython3u f f plpython3_call_handler plpython3_inline_handler plpython3_validator "$libdir/plpython3" _null_ )); - #endif /* PG_PLTEMPLATE_H */ diff --git a/src/include/catalog/pg_policy.h b/src/include/catalog/pg_policy.h index 0d94f1ad72..45fdc285f7 100644 --- a/src/include/catalog/pg_policy.h +++ b/src/include/catalog/pg_policy.h @@ -1,24 +1,32 @@ -/* +/*------------------------------------------------------------------------- + * * pg_policy.h * definition of the system "policy" relation (pg_policy) * + * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * + * src/include/catalog/pg_policy.h + * + * NOTES + * The Catalog.pm module reads this file and derives schema + * information. + * + *------------------------------------------------------------------------- */ #ifndef PG_POLICY_H #define PG_POLICY_H #include "catalog/genbki.h" +#include "catalog/pg_policy_d.h" /* ---------------- * pg_policy definition. cpp turns this into * typedef struct FormData_pg_policy * ---------------- */ -#define PolicyRelationId 3256 - -CATALOG(pg_policy,3256) +CATALOG(pg_policy,3256,PolicyRelationId) { NameData polname; /* Policy name. */ Oid polrelid; /* Oid of the relation with policy. */ @@ -39,17 +47,4 @@ CATALOG(pg_policy,3256) */ typedef FormData_pg_policy *Form_pg_policy; -/* ---------------- - * compiler constants for pg_policy - * ---------------- - */ -#define Natts_pg_policy 7 -#define Anum_pg_policy_polname 1 -#define Anum_pg_policy_polrelid 2 -#define Anum_pg_policy_polcmd 3 -#define Anum_pg_policy_polpermissive 4 -#define Anum_pg_policy_polroles 5 -#define Anum_pg_policy_polqual 6 -#define Anum_pg_policy_polwithcheck 7 - #endif /* PG_POLICY_H */ diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat new file mode 100644 index 0000000000..ad685f7dce --- /dev/null +++ b/src/include/catalog/pg_proc.dat @@ -0,0 +1,10210 @@ +#---------------------------------------------------------------------- +# +# pg_proc.dat +# Initial contents of the pg_proc system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_proc.dat +# +#---------------------------------------------------------------------- + +[ + +# Note: every entry in pg_proc.dat is expected to have a 'descr' comment, +# except for functions that implement pg_operator.dat operators and don't +# have a good reason to be called directly rather than via the operator. +# (If you do expect such a function to be used directly, you should +# duplicate the operator's comment.) initdb will supply suitable default +# comments for functions referenced by pg_operator. + +# Try to follow the style of existing functions' comments. +# Some recommended conventions: + +# "I/O" for typinput, typoutput, typreceive, typsend functions +# "I/O typmod" for typmodin, typmodout functions +# "aggregate transition function" for aggtransfn functions, unless +# they are reasonably useful in their own right +# "aggregate final function" for aggfinalfn functions (likewise) +# "convert srctypename to desttypename" for cast functions +# "less-equal-greater" for B-tree comparison functions + +# Once upon a time these entries were ordered by OID. Lately it's often +# been the custom to insert new entries adjacent to related older entries. +# Try to do one or the other though, don't just insert entries at random. + +# OIDS 1 - 99 + +{ oid => '1242', descr => 'I/O', + proname => 'boolin', prorettype => 'bool', proargtypes => 'cstring', + prosrc => 'boolin' }, +{ oid => '1243', descr => 'I/O', + proname => 'boolout', prorettype => 'cstring', proargtypes => 'bool', + prosrc => 'boolout' }, +{ oid => '1244', descr => 'I/O', + proname => 'byteain', prorettype => 'bytea', proargtypes => 'cstring', + prosrc => 'byteain' }, +{ oid => '31', descr => 'I/O', + proname => 'byteaout', prorettype => 'cstring', proargtypes => 'bytea', + prosrc => 'byteaout' }, +{ oid => '1245', descr => 'I/O', + proname => 'charin', prorettype => 'char', proargtypes => 'cstring', + prosrc => 'charin' }, +{ oid => '33', descr => 'I/O', + proname => 'charout', prorettype => 'cstring', proargtypes => 'char', + prosrc => 'charout' }, +{ oid => '34', descr => 'I/O', + proname => 'namein', prorettype => 'name', proargtypes => 'cstring', + prosrc => 'namein' }, +{ oid => '35', descr => 'I/O', + proname => 'nameout', prorettype => 'cstring', proargtypes => 'name', + prosrc => 'nameout' }, +{ oid => '38', descr => 'I/O', + proname => 'int2in', prorettype => 'int2', proargtypes => 'cstring', + prosrc => 'int2in' }, +{ oid => '39', descr => 'I/O', + proname => 'int2out', prorettype => 'cstring', proargtypes => 'int2', + prosrc => 'int2out' }, +{ oid => '40', descr => 'I/O', + proname => 'int2vectorin', prorettype => 'int2vector', + proargtypes => 'cstring', prosrc => 'int2vectorin' }, +{ oid => '41', descr => 'I/O', + proname => 'int2vectorout', prorettype => 'cstring', + proargtypes => 'int2vector', prosrc => 'int2vectorout' }, +{ oid => '42', descr => 'I/O', + proname => 'int4in', prorettype => 'int4', proargtypes => 'cstring', + prosrc => 'int4in' }, +{ oid => '43', descr => 'I/O', + proname => 'int4out', prorettype => 'cstring', proargtypes => 'int4', + prosrc => 'int4out' }, +{ oid => '44', descr => 'I/O', + proname => 'regprocin', provolatile => 's', prorettype => 'regproc', + proargtypes => 'cstring', prosrc => 'regprocin' }, +{ oid => '45', descr => 'I/O', + proname => 'regprocout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'regproc', prosrc => 'regprocout' }, +{ oid => '3494', descr => 'convert proname to regproc', + proname => 'to_regproc', provolatile => 's', prorettype => 'regproc', + proargtypes => 'text', prosrc => 'to_regproc' }, +{ oid => '3479', descr => 'convert proname to regprocedure', + proname => 'to_regprocedure', provolatile => 's', + prorettype => 'regprocedure', proargtypes => 'text', + prosrc => 'to_regprocedure' }, +{ oid => '46', descr => 'I/O', + proname => 'textin', prorettype => 'text', proargtypes => 'cstring', + prosrc => 'textin' }, +{ oid => '47', descr => 'I/O', + proname => 'textout', prorettype => 'cstring', proargtypes => 'text', + prosrc => 'textout' }, +{ oid => '48', descr => 'I/O', + proname => 'tidin', prorettype => 'tid', proargtypes => 'cstring', + prosrc => 'tidin' }, +{ oid => '49', descr => 'I/O', + proname => 'tidout', prorettype => 'cstring', proargtypes => 'tid', + prosrc => 'tidout' }, +{ oid => '50', descr => 'I/O', + proname => 'xidin', prorettype => 'xid', proargtypes => 'cstring', + prosrc => 'xidin' }, +{ oid => '51', descr => 'I/O', + proname => 'xidout', prorettype => 'cstring', proargtypes => 'xid', + prosrc => 'xidout' }, +{ oid => '52', descr => 'I/O', + proname => 'cidin', prorettype => 'cid', proargtypes => 'cstring', + prosrc => 'cidin' }, +{ oid => '53', descr => 'I/O', + proname => 'cidout', prorettype => 'cstring', proargtypes => 'cid', + prosrc => 'cidout' }, +{ oid => '54', descr => 'I/O', + proname => 'oidvectorin', prorettype => 'oidvector', proargtypes => 'cstring', + prosrc => 'oidvectorin' }, +{ oid => '55', descr => 'I/O', + proname => 'oidvectorout', prorettype => 'cstring', + proargtypes => 'oidvector', prosrc => 'oidvectorout' }, +{ oid => '56', + proname => 'boollt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bool bool', prosrc => 'boollt' }, +{ oid => '57', + proname => 'boolgt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bool bool', prosrc => 'boolgt' }, +{ oid => '60', + proname => 'booleq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bool bool', prosrc => 'booleq' }, +{ oid => '61', + proname => 'chareq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'char char', prosrc => 'chareq' }, +{ oid => '62', + proname => 'nameeq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'name name', prosrc => 'nameeq' }, +{ oid => '63', + proname => 'int2eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int2', prosrc => 'int2eq' }, +{ oid => '64', + proname => 'int2lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int2', prosrc => 'int2lt' }, +{ oid => '65', + proname => 'int4eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int4', prosrc => 'int4eq' }, +{ oid => '66', + proname => 'int4lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int4', prosrc => 'int4lt' }, +{ oid => '67', + proname => 'texteq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'texteq' }, +{ oid => '3696', + proname => 'starts_with', proleakproof => 't', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'text_starts_with' }, +{ oid => '68', + proname => 'xideq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'xid xid', prosrc => 'xideq' }, +{ oid => '3308', + proname => 'xidneq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'xid xid', prosrc => 'xidneq' }, +{ oid => '69', + proname => 'cideq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'cid cid', prosrc => 'cideq' }, +{ oid => '70', + proname => 'charne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'char char', prosrc => 'charne' }, +{ oid => '1246', + proname => 'charlt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'char char', prosrc => 'charlt' }, +{ oid => '72', + proname => 'charle', proleakproof => 't', prorettype => 'bool', + proargtypes => 'char char', prosrc => 'charle' }, +{ oid => '73', + proname => 'chargt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'char char', prosrc => 'chargt' }, +{ oid => '74', + proname => 'charge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'char char', prosrc => 'charge' }, +{ oid => '77', descr => 'convert char to int4', + proname => 'int4', prorettype => 'int4', proargtypes => 'char', + prosrc => 'chartoi4' }, +{ oid => '78', descr => 'convert int4 to char', + proname => 'char', prorettype => 'char', proargtypes => 'int4', + prosrc => 'i4tochar' }, + +{ oid => '79', + proname => 'nameregexeq', prorettype => 'bool', proargtypes => 'name text', + prosrc => 'nameregexeq' }, +{ oid => '1252', + proname => 'nameregexne', prorettype => 'bool', proargtypes => 'name text', + prosrc => 'nameregexne' }, +{ oid => '1254', + proname => 'textregexeq', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'textregexeq' }, +{ oid => '1256', + proname => 'textregexne', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'textregexne' }, +{ oid => '1257', descr => 'length', + proname => 'textlen', prorettype => 'int4', proargtypes => 'text', + prosrc => 'textlen' }, +{ oid => '1258', + proname => 'textcat', prorettype => 'text', proargtypes => 'text text', + prosrc => 'textcat' }, + +{ oid => '84', + proname => 'boolne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bool bool', prosrc => 'boolne' }, +{ oid => '89', descr => 'PostgreSQL version string', + proname => 'version', provolatile => 's', prorettype => 'text', + proargtypes => '', prosrc => 'pgsql_version' }, + +{ oid => '86', descr => 'I/O', + proname => 'pg_ddl_command_in', prorettype => 'pg_ddl_command', + proargtypes => 'cstring', prosrc => 'pg_ddl_command_in' }, +{ oid => '87', descr => 'I/O', + proname => 'pg_ddl_command_out', prorettype => 'cstring', + proargtypes => 'pg_ddl_command', prosrc => 'pg_ddl_command_out' }, +{ oid => '88', descr => 'I/O', + proname => 'pg_ddl_command_recv', prorettype => 'pg_ddl_command', + proargtypes => 'internal', prosrc => 'pg_ddl_command_recv' }, +{ oid => '90', descr => 'I/O', + proname => 'pg_ddl_command_send', prorettype => 'bytea', + proargtypes => 'pg_ddl_command', prosrc => 'pg_ddl_command_send' }, + +# OIDS 100 - 199 + +{ oid => '101', descr => 'restriction selectivity of = and related operators', + proname => 'eqsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'eqsel' }, +{ oid => '102', + descr => 'restriction selectivity of <> and related operators', + proname => 'neqsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'neqsel' }, +{ oid => '103', + descr => 'restriction selectivity of < and related operators on scalar datatypes', + proname => 'scalarltsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'scalarltsel' }, +{ oid => '104', + descr => 'restriction selectivity of > and related operators on scalar datatypes', + proname => 'scalargtsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'scalargtsel' }, +{ oid => '105', descr => 'join selectivity of = and related operators', + proname => 'eqjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', prosrc => 'eqjoinsel' }, +{ oid => '106', descr => 'join selectivity of <> and related operators', + proname => 'neqjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'neqjoinsel' }, +{ oid => '107', + descr => 'join selectivity of < and related operators on scalar datatypes', + proname => 'scalarltjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'scalarltjoinsel' }, +{ oid => '108', + descr => 'join selectivity of > and related operators on scalar datatypes', + proname => 'scalargtjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'scalargtjoinsel' }, + +{ oid => '336', + descr => 'restriction selectivity of <= and related operators on scalar datatypes', + proname => 'scalarlesel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'scalarlesel' }, +{ oid => '337', + descr => 'restriction selectivity of >= and related operators on scalar datatypes', + proname => 'scalargesel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'scalargesel' }, +{ oid => '386', + descr => 'join selectivity of <= and related operators on scalar datatypes', + proname => 'scalarlejoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'scalarlejoinsel' }, +{ oid => '398', + descr => 'join selectivity of >= and related operators on scalar datatypes', + proname => 'scalargejoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'scalargejoinsel' }, + +{ oid => '109', descr => 'I/O', + proname => 'unknownin', prorettype => 'unknown', proargtypes => 'cstring', + prosrc => 'unknownin' }, +{ oid => '110', descr => 'I/O', + proname => 'unknownout', prorettype => 'cstring', proargtypes => 'unknown', + prosrc => 'unknownout' }, +{ oid => '111', + proname => 'numeric_fac', prorettype => 'numeric', proargtypes => 'int8', + prosrc => 'numeric_fac' }, + +{ oid => '115', + proname => 'box_above_eq', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_above_eq' }, +{ oid => '116', + proname => 'box_below_eq', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_below_eq' }, + +{ oid => '117', descr => 'I/O', + proname => 'point_in', prorettype => 'point', proargtypes => 'cstring', + prosrc => 'point_in' }, +{ oid => '118', descr => 'I/O', + proname => 'point_out', prorettype => 'cstring', proargtypes => 'point', + prosrc => 'point_out' }, +{ oid => '119', descr => 'I/O', + proname => 'lseg_in', prorettype => 'lseg', proargtypes => 'cstring', + prosrc => 'lseg_in' }, +{ oid => '120', descr => 'I/O', + proname => 'lseg_out', prorettype => 'cstring', proargtypes => 'lseg', + prosrc => 'lseg_out' }, +{ oid => '121', descr => 'I/O', + proname => 'path_in', prorettype => 'path', proargtypes => 'cstring', + prosrc => 'path_in' }, +{ oid => '122', descr => 'I/O', + proname => 'path_out', prorettype => 'cstring', proargtypes => 'path', + prosrc => 'path_out' }, +{ oid => '123', descr => 'I/O', + proname => 'box_in', prorettype => 'box', proargtypes => 'cstring', + prosrc => 'box_in' }, +{ oid => '124', descr => 'I/O', + proname => 'box_out', prorettype => 'cstring', proargtypes => 'box', + prosrc => 'box_out' }, +{ oid => '125', + proname => 'box_overlap', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_overlap' }, +{ oid => '126', + proname => 'box_ge', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_ge' }, +{ oid => '127', + proname => 'box_gt', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_gt' }, +{ oid => '128', + proname => 'box_eq', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_eq' }, +{ oid => '129', + proname => 'box_lt', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_lt' }, +{ oid => '130', + proname => 'box_le', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_le' }, +{ oid => '131', + proname => 'point_above', prorettype => 'bool', proargtypes => 'point point', + prosrc => 'point_above' }, +{ oid => '132', + proname => 'point_left', prorettype => 'bool', proargtypes => 'point point', + prosrc => 'point_left' }, +{ oid => '133', + proname => 'point_right', prorettype => 'bool', proargtypes => 'point point', + prosrc => 'point_right' }, +{ oid => '134', + proname => 'point_below', prorettype => 'bool', proargtypes => 'point point', + prosrc => 'point_below' }, +{ oid => '135', + proname => 'point_eq', prorettype => 'bool', proargtypes => 'point point', + prosrc => 'point_eq' }, +{ oid => '136', + proname => 'on_pb', prorettype => 'bool', proargtypes => 'point box', + prosrc => 'on_pb' }, +{ oid => '137', + proname => 'on_ppath', prorettype => 'bool', proargtypes => 'point path', + prosrc => 'on_ppath' }, +{ oid => '138', + proname => 'box_center', prorettype => 'point', proargtypes => 'box', + prosrc => 'box_center' }, +{ oid => '139', + descr => 'restriction selectivity for area-comparison operators', + proname => 'areasel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'areasel' }, +{ oid => '140', descr => 'join selectivity for area-comparison operators', + proname => 'areajoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'areajoinsel' }, +{ oid => '141', + proname => 'int4mul', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4mul' }, +{ oid => '144', + proname => 'int4ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int4', prosrc => 'int4ne' }, +{ oid => '145', + proname => 'int2ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int2', prosrc => 'int2ne' }, +{ oid => '146', + proname => 'int2gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int2', prosrc => 'int2gt' }, +{ oid => '147', + proname => 'int4gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int4', prosrc => 'int4gt' }, +{ oid => '148', + proname => 'int2le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int2', prosrc => 'int2le' }, +{ oid => '149', + proname => 'int4le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int4', prosrc => 'int4le' }, +{ oid => '150', + proname => 'int4ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int4', prosrc => 'int4ge' }, +{ oid => '151', + proname => 'int2ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int2', prosrc => 'int2ge' }, +{ oid => '152', + proname => 'int2mul', prorettype => 'int2', proargtypes => 'int2 int2', + prosrc => 'int2mul' }, +{ oid => '153', + proname => 'int2div', prorettype => 'int2', proargtypes => 'int2 int2', + prosrc => 'int2div' }, +{ oid => '154', + proname => 'int4div', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4div' }, +{ oid => '155', + proname => 'int2mod', prorettype => 'int2', proargtypes => 'int2 int2', + prosrc => 'int2mod' }, +{ oid => '156', + proname => 'int4mod', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4mod' }, +{ oid => '157', + proname => 'textne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'textne' }, +{ oid => '158', + proname => 'int24eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int4', prosrc => 'int24eq' }, +{ oid => '159', + proname => 'int42eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int2', prosrc => 'int42eq' }, +{ oid => '160', + proname => 'int24lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int4', prosrc => 'int24lt' }, +{ oid => '161', + proname => 'int42lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int2', prosrc => 'int42lt' }, +{ oid => '162', + proname => 'int24gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int4', prosrc => 'int24gt' }, +{ oid => '163', + proname => 'int42gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int2', prosrc => 'int42gt' }, +{ oid => '164', + proname => 'int24ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int4', prosrc => 'int24ne' }, +{ oid => '165', + proname => 'int42ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int2', prosrc => 'int42ne' }, +{ oid => '166', + proname => 'int24le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int4', prosrc => 'int24le' }, +{ oid => '167', + proname => 'int42le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int2', prosrc => 'int42le' }, +{ oid => '168', + proname => 'int24ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int4', prosrc => 'int24ge' }, +{ oid => '169', + proname => 'int42ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int2', prosrc => 'int42ge' }, +{ oid => '170', + proname => 'int24mul', prorettype => 'int4', proargtypes => 'int2 int4', + prosrc => 'int24mul' }, +{ oid => '171', + proname => 'int42mul', prorettype => 'int4', proargtypes => 'int4 int2', + prosrc => 'int42mul' }, +{ oid => '172', + proname => 'int24div', prorettype => 'int4', proargtypes => 'int2 int4', + prosrc => 'int24div' }, +{ oid => '173', + proname => 'int42div', prorettype => 'int4', proargtypes => 'int4 int2', + prosrc => 'int42div' }, +{ oid => '176', + proname => 'int2pl', prorettype => 'int2', proargtypes => 'int2 int2', + prosrc => 'int2pl' }, +{ oid => '177', + proname => 'int4pl', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4pl' }, +{ oid => '178', + proname => 'int24pl', prorettype => 'int4', proargtypes => 'int2 int4', + prosrc => 'int24pl' }, +{ oid => '179', + proname => 'int42pl', prorettype => 'int4', proargtypes => 'int4 int2', + prosrc => 'int42pl' }, +{ oid => '180', + proname => 'int2mi', prorettype => 'int2', proargtypes => 'int2 int2', + prosrc => 'int2mi' }, +{ oid => '181', + proname => 'int4mi', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4mi' }, +{ oid => '182', + proname => 'int24mi', prorettype => 'int4', proargtypes => 'int2 int4', + prosrc => 'int24mi' }, +{ oid => '183', + proname => 'int42mi', prorettype => 'int4', proargtypes => 'int4 int2', + prosrc => 'int42mi' }, +{ oid => '184', + proname => 'oideq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'oid oid', prosrc => 'oideq' }, +{ oid => '185', + proname => 'oidne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'oid oid', prosrc => 'oidne' }, +{ oid => '186', + proname => 'box_same', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_same' }, +{ oid => '187', + proname => 'box_contain', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_contain' }, +{ oid => '188', + proname => 'box_left', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_left' }, +{ oid => '189', + proname => 'box_overleft', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_overleft' }, +{ oid => '190', + proname => 'box_overright', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_overright' }, +{ oid => '191', + proname => 'box_right', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_right' }, +{ oid => '192', + proname => 'box_contained', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_contained' }, +{ oid => '193', + proname => 'box_contain_pt', prorettype => 'bool', proargtypes => 'box point', + prosrc => 'box_contain_pt' }, + +{ oid => '195', descr => 'I/O', + proname => 'pg_node_tree_in', prorettype => 'pg_node_tree', + proargtypes => 'cstring', prosrc => 'pg_node_tree_in' }, +{ oid => '196', descr => 'I/O', + proname => 'pg_node_tree_out', prorettype => 'cstring', + proargtypes => 'pg_node_tree', prosrc => 'pg_node_tree_out' }, +{ oid => '197', descr => 'I/O', + proname => 'pg_node_tree_recv', provolatile => 's', + prorettype => 'pg_node_tree', proargtypes => 'internal', + prosrc => 'pg_node_tree_recv' }, +{ oid => '198', descr => 'I/O', + proname => 'pg_node_tree_send', provolatile => 's', prorettype => 'bytea', + proargtypes => 'pg_node_tree', prosrc => 'pg_node_tree_send' }, + +# OIDS 200 - 299 + +{ oid => '200', descr => 'I/O', + proname => 'float4in', prorettype => 'float4', proargtypes => 'cstring', + prosrc => 'float4in' }, +{ oid => '201', descr => 'I/O', + proname => 'float4out', prorettype => 'cstring', proargtypes => 'float4', + prosrc => 'float4out' }, +{ oid => '202', + proname => 'float4mul', prorettype => 'float4', + proargtypes => 'float4 float4', prosrc => 'float4mul' }, +{ oid => '203', + proname => 'float4div', prorettype => 'float4', + proargtypes => 'float4 float4', prosrc => 'float4div' }, +{ oid => '204', + proname => 'float4pl', prorettype => 'float4', proargtypes => 'float4 float4', + prosrc => 'float4pl' }, +{ oid => '205', + proname => 'float4mi', prorettype => 'float4', proargtypes => 'float4 float4', + prosrc => 'float4mi' }, +{ oid => '206', + proname => 'float4um', prorettype => 'float4', proargtypes => 'float4', + prosrc => 'float4um' }, +{ oid => '207', + proname => 'float4abs', prorettype => 'float4', proargtypes => 'float4', + prosrc => 'float4abs' }, +{ oid => '208', descr => 'aggregate transition function', + proname => 'float4_accum', prorettype => '_float8', + proargtypes => '_float8 float4', prosrc => 'float4_accum' }, +{ oid => '209', descr => 'larger of two', + proname => 'float4larger', prorettype => 'float4', + proargtypes => 'float4 float4', prosrc => 'float4larger' }, +{ oid => '211', descr => 'smaller of two', + proname => 'float4smaller', prorettype => 'float4', + proargtypes => 'float4 float4', prosrc => 'float4smaller' }, + +{ oid => '212', + proname => 'int4um', prorettype => 'int4', proargtypes => 'int4', + prosrc => 'int4um' }, +{ oid => '213', + proname => 'int2um', prorettype => 'int2', proargtypes => 'int2', + prosrc => 'int2um' }, + +{ oid => '214', descr => 'I/O', + proname => 'float8in', prorettype => 'float8', proargtypes => 'cstring', + prosrc => 'float8in' }, +{ oid => '215', descr => 'I/O', + proname => 'float8out', prorettype => 'cstring', proargtypes => 'float8', + prosrc => 'float8out' }, +{ oid => '216', + proname => 'float8mul', prorettype => 'float8', + proargtypes => 'float8 float8', prosrc => 'float8mul' }, +{ oid => '217', + proname => 'float8div', prorettype => 'float8', + proargtypes => 'float8 float8', prosrc => 'float8div' }, +{ oid => '218', + proname => 'float8pl', prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'float8pl' }, +{ oid => '219', + proname => 'float8mi', prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'float8mi' }, +{ oid => '220', + proname => 'float8um', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'float8um' }, +{ oid => '221', + proname => 'float8abs', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'float8abs' }, +{ oid => '222', descr => 'aggregate transition function', + proname => 'float8_accum', prorettype => '_float8', + proargtypes => '_float8 float8', prosrc => 'float8_accum' }, +{ oid => '276', descr => 'aggregate combine function', + proname => 'float8_combine', prorettype => '_float8', + proargtypes => '_float8 _float8', prosrc => 'float8_combine' }, +{ oid => '223', descr => 'larger of two', + proname => 'float8larger', prorettype => 'float8', + proargtypes => 'float8 float8', prosrc => 'float8larger' }, +{ oid => '224', descr => 'smaller of two', + proname => 'float8smaller', prorettype => 'float8', + proargtypes => 'float8 float8', prosrc => 'float8smaller' }, + +{ oid => '225', + proname => 'lseg_center', prorettype => 'point', proargtypes => 'lseg', + prosrc => 'lseg_center' }, +{ oid => '226', + proname => 'path_center', prorettype => 'point', proargtypes => 'path', + prosrc => 'path_center' }, +{ oid => '227', + proname => 'poly_center', prorettype => 'point', proargtypes => 'polygon', + prosrc => 'poly_center' }, + +{ oid => '228', descr => 'round to nearest integer', + proname => 'dround', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dround' }, +{ oid => '229', descr => 'truncate to integer', + proname => 'dtrunc', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dtrunc' }, +{ oid => '2308', descr => 'nearest integer >= value', + proname => 'ceil', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dceil' }, +{ oid => '2320', descr => 'nearest integer >= value', + proname => 'ceiling', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dceil' }, +{ oid => '2309', descr => 'nearest integer <= value', + proname => 'floor', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dfloor' }, +{ oid => '2310', descr => 'sign of value', + proname => 'sign', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dsign' }, +{ oid => '230', + proname => 'dsqrt', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dsqrt' }, +{ oid => '231', + proname => 'dcbrt', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dcbrt' }, +{ oid => '232', + proname => 'dpow', prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'dpow' }, +{ oid => '233', descr => 'natural exponential (e^x)', + proname => 'dexp', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dexp' }, +{ oid => '234', descr => 'natural logarithm', + proname => 'dlog1', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dlog1' }, +{ oid => '235', descr => 'convert int2 to float8', + proname => 'float8', prorettype => 'float8', proargtypes => 'int2', + prosrc => 'i2tod' }, +{ oid => '236', descr => 'convert int2 to float4', + proname => 'float4', prorettype => 'float4', proargtypes => 'int2', + prosrc => 'i2tof' }, +{ oid => '237', descr => 'convert float8 to int2', + proname => 'int2', prorettype => 'int2', proargtypes => 'float8', + prosrc => 'dtoi2' }, +{ oid => '238', descr => 'convert float4 to int2', + proname => 'int2', prorettype => 'int2', proargtypes => 'float4', + prosrc => 'ftoi2' }, +{ oid => '239', + proname => 'line_distance', prorettype => 'float8', + proargtypes => 'line line', prosrc => 'line_distance' }, + +{ oid => '240', descr => 'I/O', + proname => 'abstimein', provolatile => 's', prorettype => 'abstime', + proargtypes => 'cstring', prosrc => 'abstimein' }, +{ oid => '241', descr => 'I/O', + proname => 'abstimeout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'abstime', prosrc => 'abstimeout' }, +{ oid => '242', descr => 'I/O', + proname => 'reltimein', provolatile => 's', prorettype => 'reltime', + proargtypes => 'cstring', prosrc => 'reltimein' }, +{ oid => '243', descr => 'I/O', + proname => 'reltimeout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'reltime', prosrc => 'reltimeout' }, +{ oid => '244', + proname => 'timepl', prorettype => 'abstime', + proargtypes => 'abstime reltime', prosrc => 'timepl' }, +{ oid => '245', + proname => 'timemi', prorettype => 'abstime', + proargtypes => 'abstime reltime', prosrc => 'timemi' }, +{ oid => '246', descr => 'I/O', + proname => 'tintervalin', provolatile => 's', prorettype => 'tinterval', + proargtypes => 'cstring', prosrc => 'tintervalin' }, +{ oid => '247', descr => 'I/O', + proname => 'tintervalout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'tinterval', prosrc => 'tintervalout' }, +{ oid => '248', + proname => 'intinterval', prorettype => 'bool', + proargtypes => 'abstime tinterval', prosrc => 'intinterval' }, +{ oid => '249', descr => 'tinterval to reltime', + proname => 'tintervalrel', prorettype => 'reltime', + proargtypes => 'tinterval', prosrc => 'tintervalrel' }, +{ oid => '250', descr => 'current date and time (abstime)', + proname => 'timenow', provolatile => 's', prorettype => 'abstime', + proargtypes => '', prosrc => 'timenow' }, +{ oid => '251', + proname => 'abstimeeq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'abstime abstime', prosrc => 'abstimeeq' }, +{ oid => '252', + proname => 'abstimene', proleakproof => 't', prorettype => 'bool', + proargtypes => 'abstime abstime', prosrc => 'abstimene' }, +{ oid => '253', + proname => 'abstimelt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'abstime abstime', prosrc => 'abstimelt' }, +{ oid => '254', + proname => 'abstimegt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'abstime abstime', prosrc => 'abstimegt' }, +{ oid => '255', + proname => 'abstimele', proleakproof => 't', prorettype => 'bool', + proargtypes => 'abstime abstime', prosrc => 'abstimele' }, +{ oid => '256', + proname => 'abstimege', proleakproof => 't', prorettype => 'bool', + proargtypes => 'abstime abstime', prosrc => 'abstimege' }, +{ oid => '257', + proname => 'reltimeeq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'reltime reltime', prosrc => 'reltimeeq' }, +{ oid => '258', + proname => 'reltimene', proleakproof => 't', prorettype => 'bool', + proargtypes => 'reltime reltime', prosrc => 'reltimene' }, +{ oid => '259', + proname => 'reltimelt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'reltime reltime', prosrc => 'reltimelt' }, +{ oid => '260', + proname => 'reltimegt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'reltime reltime', prosrc => 'reltimegt' }, +{ oid => '261', + proname => 'reltimele', proleakproof => 't', prorettype => 'bool', + proargtypes => 'reltime reltime', prosrc => 'reltimele' }, +{ oid => '262', + proname => 'reltimege', proleakproof => 't', prorettype => 'bool', + proargtypes => 'reltime reltime', prosrc => 'reltimege' }, +{ oid => '263', + proname => 'tintervalsame', prorettype => 'bool', + proargtypes => 'tinterval tinterval', prosrc => 'tintervalsame' }, +{ oid => '264', + proname => 'tintervalct', prorettype => 'bool', + proargtypes => 'tinterval tinterval', prosrc => 'tintervalct' }, +{ oid => '265', + proname => 'tintervalov', prorettype => 'bool', + proargtypes => 'tinterval tinterval', prosrc => 'tintervalov' }, +{ oid => '266', + proname => 'tintervalleneq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval reltime', prosrc => 'tintervalleneq' }, +{ oid => '267', + proname => 'tintervallenne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval reltime', prosrc => 'tintervallenne' }, +{ oid => '268', + proname => 'tintervallenlt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval reltime', prosrc => 'tintervallenlt' }, +{ oid => '269', + proname => 'tintervallengt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval reltime', prosrc => 'tintervallengt' }, +{ oid => '270', + proname => 'tintervallenle', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval reltime', prosrc => 'tintervallenle' }, +{ oid => '271', + proname => 'tintervallenge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval reltime', prosrc => 'tintervallenge' }, +{ oid => '272', + proname => 'tintervalstart', prorettype => 'abstime', + proargtypes => 'tinterval', prosrc => 'tintervalstart' }, +{ oid => '273', descr => 'end of interval', + proname => 'tintervalend', prorettype => 'abstime', + proargtypes => 'tinterval', prosrc => 'tintervalend' }, +{ oid => '274', + descr => 'current date and time - increments during transactions', + proname => 'timeofday', provolatile => 'v', prorettype => 'text', + proargtypes => '', prosrc => 'timeofday' }, +{ oid => '275', descr => 'finite abstime?', + proname => 'isfinite', prorettype => 'bool', proargtypes => 'abstime', + prosrc => 'abstime_finite' }, + +{ oid => '277', + proname => 'inter_sl', prorettype => 'bool', proargtypes => 'lseg line', + prosrc => 'inter_sl' }, +{ oid => '278', + proname => 'inter_lb', prorettype => 'bool', proargtypes => 'line box', + prosrc => 'inter_lb' }, + +{ oid => '279', + proname => 'float48mul', prorettype => 'float8', + proargtypes => 'float4 float8', prosrc => 'float48mul' }, +{ oid => '280', + proname => 'float48div', prorettype => 'float8', + proargtypes => 'float4 float8', prosrc => 'float48div' }, +{ oid => '281', + proname => 'float48pl', prorettype => 'float8', + proargtypes => 'float4 float8', prosrc => 'float48pl' }, +{ oid => '282', + proname => 'float48mi', prorettype => 'float8', + proargtypes => 'float4 float8', prosrc => 'float48mi' }, +{ oid => '283', + proname => 'float84mul', prorettype => 'float8', + proargtypes => 'float8 float4', prosrc => 'float84mul' }, +{ oid => '284', + proname => 'float84div', prorettype => 'float8', + proargtypes => 'float8 float4', prosrc => 'float84div' }, +{ oid => '285', + proname => 'float84pl', prorettype => 'float8', + proargtypes => 'float8 float4', prosrc => 'float84pl' }, +{ oid => '286', + proname => 'float84mi', prorettype => 'float8', + proargtypes => 'float8 float4', prosrc => 'float84mi' }, + +{ oid => '287', + proname => 'float4eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float4', prosrc => 'float4eq' }, +{ oid => '288', + proname => 'float4ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float4', prosrc => 'float4ne' }, +{ oid => '289', + proname => 'float4lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float4', prosrc => 'float4lt' }, +{ oid => '290', + proname => 'float4le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float4', prosrc => 'float4le' }, +{ oid => '291', + proname => 'float4gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float4', prosrc => 'float4gt' }, +{ oid => '292', + proname => 'float4ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float4', prosrc => 'float4ge' }, + +{ oid => '293', + proname => 'float8eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float8', prosrc => 'float8eq' }, +{ oid => '294', + proname => 'float8ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float8', prosrc => 'float8ne' }, +{ oid => '295', + proname => 'float8lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float8', prosrc => 'float8lt' }, +{ oid => '296', + proname => 'float8le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float8', prosrc => 'float8le' }, +{ oid => '297', + proname => 'float8gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float8', prosrc => 'float8gt' }, +{ oid => '298', + proname => 'float8ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float8', prosrc => 'float8ge' }, + +{ oid => '299', + proname => 'float48eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float8', prosrc => 'float48eq' }, + +# OIDS 300 - 399 + +{ oid => '300', + proname => 'float48ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float8', prosrc => 'float48ne' }, +{ oid => '301', + proname => 'float48lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float8', prosrc => 'float48lt' }, +{ oid => '302', + proname => 'float48le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float8', prosrc => 'float48le' }, +{ oid => '303', + proname => 'float48gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float8', prosrc => 'float48gt' }, +{ oid => '304', + proname => 'float48ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float4 float8', prosrc => 'float48ge' }, +{ oid => '305', + proname => 'float84eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float4', prosrc => 'float84eq' }, +{ oid => '306', + proname => 'float84ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float4', prosrc => 'float84ne' }, +{ oid => '307', + proname => 'float84lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float4', prosrc => 'float84lt' }, +{ oid => '308', + proname => 'float84le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float4', prosrc => 'float84le' }, +{ oid => '309', + proname => 'float84gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float4', prosrc => 'float84gt' }, +{ oid => '310', + proname => 'float84ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'float8 float4', prosrc => 'float84ge' }, +{ oid => '320', descr => 'bucket number of operand in equal-width histogram', + proname => 'width_bucket', prorettype => 'int4', + proargtypes => 'float8 float8 float8 int4', prosrc => 'width_bucket_float8' }, + +{ oid => '311', descr => 'convert float4 to float8', + proname => 'float8', prorettype => 'float8', proargtypes => 'float4', + prosrc => 'ftod' }, +{ oid => '312', descr => 'convert float8 to float4', + proname => 'float4', prorettype => 'float4', proargtypes => 'float8', + prosrc => 'dtof' }, +{ oid => '313', descr => 'convert int2 to int4', + proname => 'int4', prorettype => 'int4', proargtypes => 'int2', + prosrc => 'i2toi4' }, +{ oid => '314', descr => 'convert int4 to int2', + proname => 'int2', prorettype => 'int2', proargtypes => 'int4', + prosrc => 'i4toi2' }, +{ oid => '316', descr => 'convert int4 to float8', + proname => 'float8', prorettype => 'float8', proargtypes => 'int4', + prosrc => 'i4tod' }, +{ oid => '317', descr => 'convert float8 to int4', + proname => 'int4', prorettype => 'int4', proargtypes => 'float8', + prosrc => 'dtoi4' }, +{ oid => '318', descr => 'convert int4 to float4', + proname => 'float4', prorettype => 'float4', proargtypes => 'int4', + prosrc => 'i4tof' }, +{ oid => '319', descr => 'convert float4 to int4', + proname => 'int4', prorettype => 'int4', proargtypes => 'float4', + prosrc => 'ftoi4' }, + +# Index access method handlers +{ oid => '330', descr => 'btree index access method handler', + proname => 'bthandler', provolatile => 'v', prorettype => 'index_am_handler', + proargtypes => 'internal', prosrc => 'bthandler' }, +{ oid => '331', descr => 'hash index access method handler', + proname => 'hashhandler', provolatile => 'v', + prorettype => 'index_am_handler', proargtypes => 'internal', + prosrc => 'hashhandler' }, +{ oid => '332', descr => 'gist index access method handler', + proname => 'gisthandler', provolatile => 'v', + prorettype => 'index_am_handler', proargtypes => 'internal', + prosrc => 'gisthandler' }, +{ oid => '333', descr => 'gin index access method handler', + proname => 'ginhandler', provolatile => 'v', prorettype => 'index_am_handler', + proargtypes => 'internal', prosrc => 'ginhandler' }, +{ oid => '334', descr => 'spgist index access method handler', + proname => 'spghandler', provolatile => 'v', prorettype => 'index_am_handler', + proargtypes => 'internal', prosrc => 'spghandler' }, +{ oid => '335', descr => 'brin index access method handler', + proname => 'brinhandler', provolatile => 'v', + prorettype => 'index_am_handler', proargtypes => 'internal', + prosrc => 'brinhandler' }, +{ oid => '3952', descr => 'brin: standalone scan new table pages', + proname => 'brin_summarize_new_values', provolatile => 'v', + proparallel => 'u', prorettype => 'int4', proargtypes => 'regclass', + prosrc => 'brin_summarize_new_values' }, +{ oid => '3999', descr => 'brin: standalone scan new table pages', + proname => 'brin_summarize_range', provolatile => 'v', proparallel => 'u', + prorettype => 'int4', proargtypes => 'regclass int8', + prosrc => 'brin_summarize_range' }, +{ oid => '4014', descr => 'brin: desummarize page range', + proname => 'brin_desummarize_range', provolatile => 'v', proparallel => 'u', + prorettype => 'void', proargtypes => 'regclass int8', + prosrc => 'brin_desummarize_range' }, + +{ oid => '338', descr => 'validate an operator class', + proname => 'amvalidate', provolatile => 'v', prorettype => 'bool', + proargtypes => 'oid', prosrc => 'amvalidate' }, + +{ oid => '636', descr => 'test property of an index access method', + proname => 'pg_indexam_has_property', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid text', + prosrc => 'pg_indexam_has_property' }, +{ oid => '637', descr => 'test property of an index', + proname => 'pg_index_has_property', provolatile => 's', prorettype => 'bool', + proargtypes => 'regclass text', prosrc => 'pg_index_has_property' }, +{ oid => '638', descr => 'test property of an index column', + proname => 'pg_index_column_has_property', provolatile => 's', + prorettype => 'bool', proargtypes => 'regclass int4 text', + prosrc => 'pg_index_column_has_property' }, + +{ oid => '339', + proname => 'poly_same', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_same' }, +{ oid => '340', + proname => 'poly_contain', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_contain' }, +{ oid => '341', + proname => 'poly_left', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_left' }, +{ oid => '342', + proname => 'poly_overleft', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_overleft' }, +{ oid => '343', + proname => 'poly_overright', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_overright' }, +{ oid => '344', + proname => 'poly_right', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_right' }, +{ oid => '345', + proname => 'poly_contained', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_contained' }, +{ oid => '346', + proname => 'poly_overlap', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_overlap' }, +{ oid => '347', descr => 'I/O', + proname => 'poly_in', prorettype => 'polygon', proargtypes => 'cstring', + prosrc => 'poly_in' }, +{ oid => '348', descr => 'I/O', + proname => 'poly_out', prorettype => 'cstring', proargtypes => 'polygon', + prosrc => 'poly_out' }, + +{ oid => '350', descr => 'less-equal-greater', + proname => 'btint2cmp', prorettype => 'int4', proargtypes => 'int2 int2', + prosrc => 'btint2cmp' }, +{ oid => '3129', descr => 'sort support', + proname => 'btint2sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'btint2sortsupport' }, +{ oid => '351', descr => 'less-equal-greater', + proname => 'btint4cmp', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'btint4cmp' }, +{ oid => '3130', descr => 'sort support', + proname => 'btint4sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'btint4sortsupport' }, +{ oid => '842', descr => 'less-equal-greater', + proname => 'btint8cmp', prorettype => 'int4', proargtypes => 'int8 int8', + prosrc => 'btint8cmp' }, +{ oid => '3131', descr => 'sort support', + proname => 'btint8sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'btint8sortsupport' }, +{ oid => '354', descr => 'less-equal-greater', + proname => 'btfloat4cmp', prorettype => 'int4', + proargtypes => 'float4 float4', prosrc => 'btfloat4cmp' }, +{ oid => '3132', descr => 'sort support', + proname => 'btfloat4sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'btfloat4sortsupport' }, +{ oid => '355', descr => 'less-equal-greater', + proname => 'btfloat8cmp', prorettype => 'int4', + proargtypes => 'float8 float8', prosrc => 'btfloat8cmp' }, +{ oid => '3133', descr => 'sort support', + proname => 'btfloat8sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'btfloat8sortsupport' }, +{ oid => '356', descr => 'less-equal-greater', + proname => 'btoidcmp', prorettype => 'int4', proargtypes => 'oid oid', + prosrc => 'btoidcmp' }, +{ oid => '3134', descr => 'sort support', + proname => 'btoidsortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'btoidsortsupport' }, +{ oid => '404', descr => 'less-equal-greater', + proname => 'btoidvectorcmp', prorettype => 'int4', + proargtypes => 'oidvector oidvector', prosrc => 'btoidvectorcmp' }, +{ oid => '357', descr => 'less-equal-greater', + proname => 'btabstimecmp', prorettype => 'int4', + proargtypes => 'abstime abstime', prosrc => 'btabstimecmp' }, +{ oid => '358', descr => 'less-equal-greater', + proname => 'btcharcmp', prorettype => 'int4', proargtypes => 'char char', + prosrc => 'btcharcmp' }, +{ oid => '359', descr => 'less-equal-greater', + proname => 'btnamecmp', prorettype => 'int4', proargtypes => 'name name', + prosrc => 'btnamecmp' }, +{ oid => '3135', descr => 'sort support', + proname => 'btnamesortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'btnamesortsupport' }, +{ oid => '360', descr => 'less-equal-greater', + proname => 'bttextcmp', prorettype => 'int4', proargtypes => 'text text', + prosrc => 'bttextcmp' }, +{ oid => '3255', descr => 'sort support', + proname => 'bttextsortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'bttextsortsupport' }, +{ oid => '377', descr => 'less-equal-greater', + proname => 'cash_cmp', prorettype => 'int4', proargtypes => 'money money', + prosrc => 'cash_cmp' }, +{ oid => '380', descr => 'less-equal-greater', + proname => 'btreltimecmp', prorettype => 'int4', + proargtypes => 'reltime reltime', prosrc => 'btreltimecmp' }, +{ oid => '381', descr => 'less-equal-greater', + proname => 'bttintervalcmp', prorettype => 'int4', + proargtypes => 'tinterval tinterval', prosrc => 'bttintervalcmp' }, +{ oid => '382', descr => 'less-equal-greater', + proname => 'btarraycmp', prorettype => 'int4', + proargtypes => 'anyarray anyarray', prosrc => 'btarraycmp' }, +{ oid => '4126', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'int8 int8 int8 bool bool', prosrc => 'in_range_int8_int8' }, +{ oid => '4127', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'int4 int4 int8 bool bool', prosrc => 'in_range_int4_int8' }, +{ oid => '4128', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'int4 int4 int4 bool bool', prosrc => 'in_range_int4_int4' }, +{ oid => '4129', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'int4 int4 int2 bool bool', prosrc => 'in_range_int4_int2' }, +{ oid => '4130', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'int2 int2 int8 bool bool', prosrc => 'in_range_int2_int8' }, +{ oid => '4131', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'int2 int2 int4 bool bool', prosrc => 'in_range_int2_int4' }, +{ oid => '4132', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'int2 int2 int2 bool bool', prosrc => 'in_range_int2_int2' }, +{ oid => '4139', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'float8 float8 float8 bool bool', + prosrc => 'in_range_float8_float8' }, +{ oid => '4140', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'float4 float4 float8 bool bool', + prosrc => 'in_range_float4_float8' }, +{ oid => '4141', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'numeric numeric numeric bool bool', + prosrc => 'in_range_numeric_numeric' }, + +{ oid => '361', + proname => 'lseg_distance', prorettype => 'float8', + proargtypes => 'lseg lseg', prosrc => 'lseg_distance' }, +{ oid => '362', + proname => 'lseg_interpt', prorettype => 'point', proargtypes => 'lseg lseg', + prosrc => 'lseg_interpt' }, +{ oid => '363', + proname => 'dist_ps', prorettype => 'float8', proargtypes => 'point lseg', + prosrc => 'dist_ps' }, +{ oid => '364', + proname => 'dist_pb', prorettype => 'float8', proargtypes => 'point box', + prosrc => 'dist_pb' }, +{ oid => '365', + proname => 'dist_sb', prorettype => 'float8', proargtypes => 'lseg box', + prosrc => 'dist_sb' }, +{ oid => '366', + proname => 'close_ps', prorettype => 'point', proargtypes => 'point lseg', + prosrc => 'close_ps' }, +{ oid => '367', + proname => 'close_pb', prorettype => 'point', proargtypes => 'point box', + prosrc => 'close_pb' }, +{ oid => '368', + proname => 'close_sb', prorettype => 'point', proargtypes => 'lseg box', + prosrc => 'close_sb' }, +{ oid => '369', + proname => 'on_ps', prorettype => 'bool', proargtypes => 'point lseg', + prosrc => 'on_ps' }, +{ oid => '370', + proname => 'path_distance', prorettype => 'float8', + proargtypes => 'path path', prosrc => 'path_distance' }, +{ oid => '371', + proname => 'dist_ppath', prorettype => 'float8', proargtypes => 'point path', + prosrc => 'dist_ppath' }, +{ oid => '372', + proname => 'on_sb', prorettype => 'bool', proargtypes => 'lseg box', + prosrc => 'on_sb' }, +{ oid => '373', + proname => 'inter_sb', prorettype => 'bool', proargtypes => 'lseg box', + prosrc => 'inter_sb' }, + +# OIDS 400 - 499 + +{ oid => '401', descr => 'convert char(n) to text', + proname => 'text', prorettype => 'text', proargtypes => 'bpchar', + prosrc => 'rtrim1' }, +{ oid => '406', descr => 'convert name to text', + proname => 'text', prorettype => 'text', proargtypes => 'name', + prosrc => 'name_text' }, +{ oid => '407', descr => 'convert text to name', + proname => 'name', prorettype => 'name', proargtypes => 'text', + prosrc => 'text_name' }, +{ oid => '408', descr => 'convert name to char(n)', + proname => 'bpchar', prorettype => 'bpchar', proargtypes => 'name', + prosrc => 'name_bpchar' }, +{ oid => '409', descr => 'convert char(n) to name', + proname => 'name', prorettype => 'name', proargtypes => 'bpchar', + prosrc => 'bpchar_name' }, + +{ oid => '449', descr => 'hash', + proname => 'hashint2', prorettype => 'int4', proargtypes => 'int2', + prosrc => 'hashint2' }, +{ oid => '441', descr => 'hash', + proname => 'hashint2extended', prorettype => 'int8', + proargtypes => 'int2 int8', prosrc => 'hashint2extended' }, +{ oid => '450', descr => 'hash', + proname => 'hashint4', prorettype => 'int4', proargtypes => 'int4', + prosrc => 'hashint4' }, +{ oid => '425', descr => 'hash', + proname => 'hashint4extended', prorettype => 'int8', + proargtypes => 'int4 int8', prosrc => 'hashint4extended' }, +{ oid => '949', descr => 'hash', + proname => 'hashint8', prorettype => 'int4', proargtypes => 'int8', + prosrc => 'hashint8' }, +{ oid => '442', descr => 'hash', + proname => 'hashint8extended', prorettype => 'int8', + proargtypes => 'int8 int8', prosrc => 'hashint8extended' }, +{ oid => '451', descr => 'hash', + proname => 'hashfloat4', prorettype => 'int4', proargtypes => 'float4', + prosrc => 'hashfloat4' }, +{ oid => '443', descr => 'hash', + proname => 'hashfloat4extended', prorettype => 'int8', + proargtypes => 'float4 int8', prosrc => 'hashfloat4extended' }, +{ oid => '452', descr => 'hash', + proname => 'hashfloat8', prorettype => 'int4', proargtypes => 'float8', + prosrc => 'hashfloat8' }, +{ oid => '444', descr => 'hash', + proname => 'hashfloat8extended', prorettype => 'int8', + proargtypes => 'float8 int8', prosrc => 'hashfloat8extended' }, +{ oid => '453', descr => 'hash', + proname => 'hashoid', prorettype => 'int4', proargtypes => 'oid', + prosrc => 'hashoid' }, +{ oid => '445', descr => 'hash', + proname => 'hashoidextended', prorettype => 'int8', proargtypes => 'oid int8', + prosrc => 'hashoidextended' }, +{ oid => '454', descr => 'hash', + proname => 'hashchar', prorettype => 'int4', proargtypes => 'char', + prosrc => 'hashchar' }, +{ oid => '446', descr => 'hash', + proname => 'hashcharextended', prorettype => 'int8', + proargtypes => 'char int8', prosrc => 'hashcharextended' }, +{ oid => '455', descr => 'hash', + proname => 'hashname', prorettype => 'int4', proargtypes => 'name', + prosrc => 'hashname' }, +{ oid => '447', descr => 'hash', + proname => 'hashnameextended', prorettype => 'int8', + proargtypes => 'name int8', prosrc => 'hashnameextended' }, +{ oid => '400', descr => 'hash', + proname => 'hashtext', prorettype => 'int4', proargtypes => 'text', + prosrc => 'hashtext' }, +{ oid => '448', descr => 'hash', + proname => 'hashtextextended', prorettype => 'int8', + proargtypes => 'text int8', prosrc => 'hashtextextended' }, +{ oid => '456', descr => 'hash', + proname => 'hashvarlena', prorettype => 'int4', proargtypes => 'internal', + prosrc => 'hashvarlena' }, +{ oid => '772', descr => 'hash', + proname => 'hashvarlenaextended', prorettype => 'int8', + proargtypes => 'internal int8', prosrc => 'hashvarlenaextended' }, +{ oid => '457', descr => 'hash', + proname => 'hashoidvector', prorettype => 'int4', proargtypes => 'oidvector', + prosrc => 'hashoidvector' }, +{ oid => '776', descr => 'hash', + proname => 'hashoidvectorextended', prorettype => 'int8', + proargtypes => 'oidvector int8', prosrc => 'hashoidvectorextended' }, +{ oid => '329', descr => 'hash', + proname => 'hash_aclitem', prorettype => 'int4', proargtypes => 'aclitem', + prosrc => 'hash_aclitem' }, +{ oid => '777', descr => 'hash', + proname => 'hash_aclitem_extended', prorettype => 'int8', + proargtypes => 'aclitem int8', prosrc => 'hash_aclitem_extended' }, +{ oid => '399', descr => 'hash', + proname => 'hashmacaddr', prorettype => 'int4', proargtypes => 'macaddr', + prosrc => 'hashmacaddr' }, +{ oid => '778', descr => 'hash', + proname => 'hashmacaddrextended', prorettype => 'int8', + proargtypes => 'macaddr int8', prosrc => 'hashmacaddrextended' }, +{ oid => '422', descr => 'hash', + proname => 'hashinet', prorettype => 'int4', proargtypes => 'inet', + prosrc => 'hashinet' }, +{ oid => '779', descr => 'hash', + proname => 'hashinetextended', prorettype => 'int8', + proargtypes => 'inet int8', prosrc => 'hashinetextended' }, +{ oid => '432', descr => 'hash', + proname => 'hash_numeric', prorettype => 'int4', proargtypes => 'numeric', + prosrc => 'hash_numeric' }, +{ oid => '780', descr => 'hash', + proname => 'hash_numeric_extended', prorettype => 'int8', + proargtypes => 'numeric int8', prosrc => 'hash_numeric_extended' }, +{ oid => '328', descr => 'hash', + proname => 'hashmacaddr8', prorettype => 'int4', proargtypes => 'macaddr8', + prosrc => 'hashmacaddr8' }, +{ oid => '781', descr => 'hash', + proname => 'hashmacaddr8extended', prorettype => 'int8', + proargtypes => 'macaddr8 int8', prosrc => 'hashmacaddr8extended' }, + +{ oid => '438', descr => 'count the number of NULL arguments', + proname => 'num_nulls', provariadic => 'any', proisstrict => 'f', + prorettype => 'int4', proargtypes => 'any', proallargtypes => '{any}', + proargmodes => '{v}', prosrc => 'pg_num_nulls' }, +{ oid => '440', descr => 'count the number of non-NULL arguments', + proname => 'num_nonnulls', provariadic => 'any', proisstrict => 'f', + prorettype => 'int4', proargtypes => 'any', proallargtypes => '{any}', + proargmodes => '{v}', prosrc => 'pg_num_nonnulls' }, + +{ oid => '458', descr => 'larger of two', + proname => 'text_larger', prorettype => 'text', proargtypes => 'text text', + prosrc => 'text_larger' }, +{ oid => '459', descr => 'smaller of two', + proname => 'text_smaller', prorettype => 'text', proargtypes => 'text text', + prosrc => 'text_smaller' }, + +{ oid => '460', descr => 'I/O', + proname => 'int8in', prorettype => 'int8', proargtypes => 'cstring', + prosrc => 'int8in' }, +{ oid => '461', descr => 'I/O', + proname => 'int8out', prorettype => 'cstring', proargtypes => 'int8', + prosrc => 'int8out' }, +{ oid => '462', + proname => 'int8um', prorettype => 'int8', proargtypes => 'int8', + prosrc => 'int8um' }, +{ oid => '463', + proname => 'int8pl', prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'int8pl' }, +{ oid => '464', + proname => 'int8mi', prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'int8mi' }, +{ oid => '465', + proname => 'int8mul', prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'int8mul' }, +{ oid => '466', + proname => 'int8div', prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'int8div' }, +{ oid => '467', + proname => 'int8eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int8', prosrc => 'int8eq' }, +{ oid => '468', + proname => 'int8ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int8', prosrc => 'int8ne' }, +{ oid => '469', + proname => 'int8lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int8', prosrc => 'int8lt' }, +{ oid => '470', + proname => 'int8gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int8', prosrc => 'int8gt' }, +{ oid => '471', + proname => 'int8le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int8', prosrc => 'int8le' }, +{ oid => '472', + proname => 'int8ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int8', prosrc => 'int8ge' }, + +{ oid => '474', + proname => 'int84eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int4', prosrc => 'int84eq' }, +{ oid => '475', + proname => 'int84ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int4', prosrc => 'int84ne' }, +{ oid => '476', + proname => 'int84lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int4', prosrc => 'int84lt' }, +{ oid => '477', + proname => 'int84gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int4', prosrc => 'int84gt' }, +{ oid => '478', + proname => 'int84le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int4', prosrc => 'int84le' }, +{ oid => '479', + proname => 'int84ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int4', prosrc => 'int84ge' }, + +{ oid => '480', descr => 'convert int8 to int4', + proname => 'int4', prorettype => 'int4', proargtypes => 'int8', + prosrc => 'int84' }, +{ oid => '481', descr => 'convert int4 to int8', + proname => 'int8', prorettype => 'int8', proargtypes => 'int4', + prosrc => 'int48' }, +{ oid => '482', descr => 'convert int8 to float8', + proname => 'float8', prorettype => 'float8', proargtypes => 'int8', + prosrc => 'i8tod' }, +{ oid => '483', descr => 'convert float8 to int8', + proname => 'int8', prorettype => 'int8', proargtypes => 'float8', + prosrc => 'dtoi8' }, + +# OIDS 500 - 599 + +# OIDS 600 - 699 + +{ oid => '626', descr => 'hash', + proname => 'hash_array', prorettype => 'int4', proargtypes => 'anyarray', + prosrc => 'hash_array' }, +{ oid => '782', descr => 'hash', + proname => 'hash_array_extended', prorettype => 'int8', + proargtypes => 'anyarray int8', prosrc => 'hash_array_extended' }, + +{ oid => '652', descr => 'convert int8 to float4', + proname => 'float4', prorettype => 'float4', proargtypes => 'int8', + prosrc => 'i8tof' }, +{ oid => '653', descr => 'convert float4 to int8', + proname => 'int8', prorettype => 'int8', proargtypes => 'float4', + prosrc => 'ftoi8' }, + +{ oid => '714', descr => 'convert int8 to int2', + proname => 'int2', prorettype => 'int2', proargtypes => 'int8', + prosrc => 'int82' }, +{ oid => '754', descr => 'convert int2 to int8', + proname => 'int8', prorettype => 'int8', proargtypes => 'int2', + prosrc => 'int28' }, + +{ oid => '655', + proname => 'namelt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'name name', prosrc => 'namelt' }, +{ oid => '656', + proname => 'namele', proleakproof => 't', prorettype => 'bool', + proargtypes => 'name name', prosrc => 'namele' }, +{ oid => '657', + proname => 'namegt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'name name', prosrc => 'namegt' }, +{ oid => '658', + proname => 'namege', proleakproof => 't', prorettype => 'bool', + proargtypes => 'name name', prosrc => 'namege' }, +{ oid => '659', + proname => 'namene', proleakproof => 't', prorettype => 'bool', + proargtypes => 'name name', prosrc => 'namene' }, + +{ oid => '668', descr => 'adjust char() to typmod length', + proname => 'bpchar', prorettype => 'bpchar', + proargtypes => 'bpchar int4 bool', prosrc => 'bpchar' }, +{ oid => '3097', descr => 'transform a varchar length coercion', + proname => 'varchar_transform', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'varchar_transform' }, +{ oid => '669', descr => 'adjust varchar() to typmod length', + proname => 'varchar', protransform => 'varchar_transform', + prorettype => 'varchar', proargtypes => 'varchar int4 bool', + prosrc => 'varchar' }, + +{ oid => '676', + proname => 'mktinterval', prorettype => 'tinterval', + proargtypes => 'abstime abstime', prosrc => 'mktinterval' }, + +{ oid => '619', + proname => 'oidvectorne', prorettype => 'bool', + proargtypes => 'oidvector oidvector', prosrc => 'oidvectorne' }, +{ oid => '677', + proname => 'oidvectorlt', prorettype => 'bool', + proargtypes => 'oidvector oidvector', prosrc => 'oidvectorlt' }, +{ oid => '678', + proname => 'oidvectorle', prorettype => 'bool', + proargtypes => 'oidvector oidvector', prosrc => 'oidvectorle' }, +{ oid => '679', + proname => 'oidvectoreq', prorettype => 'bool', + proargtypes => 'oidvector oidvector', prosrc => 'oidvectoreq' }, +{ oid => '680', + proname => 'oidvectorge', prorettype => 'bool', + proargtypes => 'oidvector oidvector', prosrc => 'oidvectorge' }, +{ oid => '681', + proname => 'oidvectorgt', prorettype => 'bool', + proargtypes => 'oidvector oidvector', prosrc => 'oidvectorgt' }, + +# OIDS 700 - 799 +{ oid => '710', descr => 'deprecated, use current_user instead', + proname => 'getpgusername', provolatile => 's', prorettype => 'name', + proargtypes => '', prosrc => 'current_user' }, +{ oid => '716', + proname => 'oidlt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'oid oid', prosrc => 'oidlt' }, +{ oid => '717', + proname => 'oidle', proleakproof => 't', prorettype => 'bool', + proargtypes => 'oid oid', prosrc => 'oidle' }, + +{ oid => '720', descr => 'octet length', + proname => 'octet_length', prorettype => 'int4', proargtypes => 'bytea', + prosrc => 'byteaoctetlen' }, +{ oid => '721', descr => 'get byte', + proname => 'get_byte', prorettype => 'int4', proargtypes => 'bytea int4', + prosrc => 'byteaGetByte' }, +{ oid => '722', descr => 'set byte', + proname => 'set_byte', prorettype => 'bytea', + proargtypes => 'bytea int4 int4', prosrc => 'byteaSetByte' }, +{ oid => '723', descr => 'get bit', + proname => 'get_bit', prorettype => 'int4', proargtypes => 'bytea int4', + prosrc => 'byteaGetBit' }, +{ oid => '724', descr => 'set bit', + proname => 'set_bit', prorettype => 'bytea', proargtypes => 'bytea int4 int4', + prosrc => 'byteaSetBit' }, +{ oid => '749', descr => 'substitute portion of string', + proname => 'overlay', prorettype => 'bytea', + proargtypes => 'bytea bytea int4 int4', prosrc => 'byteaoverlay' }, +{ oid => '752', descr => 'substitute portion of string', + proname => 'overlay', prorettype => 'bytea', + proargtypes => 'bytea bytea int4', prosrc => 'byteaoverlay_no_len' }, + +{ oid => '725', + proname => 'dist_pl', prorettype => 'float8', proargtypes => 'point line', + prosrc => 'dist_pl' }, +{ oid => '726', + proname => 'dist_lb', prorettype => 'float8', proargtypes => 'line box', + prosrc => 'dist_lb' }, +{ oid => '727', + proname => 'dist_sl', prorettype => 'float8', proargtypes => 'lseg line', + prosrc => 'dist_sl' }, +{ oid => '728', + proname => 'dist_cpoly', prorettype => 'float8', + proargtypes => 'circle polygon', prosrc => 'dist_cpoly' }, +{ oid => '729', + proname => 'poly_distance', prorettype => 'float8', + proargtypes => 'polygon polygon', prosrc => 'poly_distance' }, +{ oid => '3275', + proname => 'dist_ppoly', prorettype => 'float8', + proargtypes => 'point polygon', prosrc => 'dist_ppoly' }, +{ oid => '3292', + proname => 'dist_polyp', prorettype => 'float8', + proargtypes => 'polygon point', prosrc => 'dist_polyp' }, +{ oid => '3290', + proname => 'dist_cpoint', prorettype => 'float8', + proargtypes => 'circle point', prosrc => 'dist_cpoint' }, + +{ oid => '740', + proname => 'text_lt', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'text_lt' }, +{ oid => '741', + proname => 'text_le', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'text_le' }, +{ oid => '742', + proname => 'text_gt', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'text_gt' }, +{ oid => '743', + proname => 'text_ge', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'text_ge' }, + +{ oid => '745', descr => 'current user name', + proname => 'current_user', provolatile => 's', prorettype => 'name', + proargtypes => '', prosrc => 'current_user' }, +{ oid => '746', descr => 'session user name', + proname => 'session_user', provolatile => 's', prorettype => 'name', + proargtypes => '', prosrc => 'session_user' }, + +{ oid => '744', + proname => 'array_eq', prorettype => 'bool', + proargtypes => 'anyarray anyarray', prosrc => 'array_eq' }, +{ oid => '390', + proname => 'array_ne', prorettype => 'bool', + proargtypes => 'anyarray anyarray', prosrc => 'array_ne' }, +{ oid => '391', + proname => 'array_lt', prorettype => 'bool', + proargtypes => 'anyarray anyarray', prosrc => 'array_lt' }, +{ oid => '392', + proname => 'array_gt', prorettype => 'bool', + proargtypes => 'anyarray anyarray', prosrc => 'array_gt' }, +{ oid => '393', + proname => 'array_le', prorettype => 'bool', + proargtypes => 'anyarray anyarray', prosrc => 'array_le' }, +{ oid => '396', + proname => 'array_ge', prorettype => 'bool', + proargtypes => 'anyarray anyarray', prosrc => 'array_ge' }, +{ oid => '747', descr => 'array dimensions', + proname => 'array_dims', prorettype => 'text', proargtypes => 'anyarray', + prosrc => 'array_dims' }, +{ oid => '748', descr => 'number of array dimensions', + proname => 'array_ndims', prorettype => 'int4', proargtypes => 'anyarray', + prosrc => 'array_ndims' }, +{ oid => '750', descr => 'I/O', + proname => 'array_in', provolatile => 's', prorettype => 'anyarray', + proargtypes => 'cstring oid int4', prosrc => 'array_in' }, +{ oid => '751', descr => 'I/O', + proname => 'array_out', provolatile => 's', prorettype => 'cstring', + proargtypes => 'anyarray', prosrc => 'array_out' }, +{ oid => '2091', descr => 'array lower dimension', + proname => 'array_lower', prorettype => 'int4', + proargtypes => 'anyarray int4', prosrc => 'array_lower' }, +{ oid => '2092', descr => 'array upper dimension', + proname => 'array_upper', prorettype => 'int4', + proargtypes => 'anyarray int4', prosrc => 'array_upper' }, +{ oid => '2176', descr => 'array length', + proname => 'array_length', prorettype => 'int4', + proargtypes => 'anyarray int4', prosrc => 'array_length' }, +{ oid => '3179', descr => 'array cardinality', + proname => 'cardinality', prorettype => 'int4', proargtypes => 'anyarray', + prosrc => 'array_cardinality' }, +{ oid => '378', descr => 'append element onto end of array', + proname => 'array_append', proisstrict => 'f', prorettype => 'anyarray', + proargtypes => 'anyarray anyelement', prosrc => 'array_append' }, +{ oid => '379', descr => 'prepend element onto front of array', + proname => 'array_prepend', proisstrict => 'f', prorettype => 'anyarray', + proargtypes => 'anyelement anyarray', prosrc => 'array_prepend' }, +{ oid => '383', + proname => 'array_cat', proisstrict => 'f', prorettype => 'anyarray', + proargtypes => 'anyarray anyarray', prosrc => 'array_cat' }, +{ oid => '394', descr => 'split delimited text into text[]', + proname => 'string_to_array', proisstrict => 'f', prorettype => '_text', + proargtypes => 'text text', prosrc => 'text_to_array' }, +{ oid => '395', + descr => 'concatenate array elements, using delimiter, into text', + proname => 'array_to_string', provolatile => 's', prorettype => 'text', + proargtypes => 'anyarray text', prosrc => 'array_to_text' }, +{ oid => '376', descr => 'split delimited text into text[], with null string', + proname => 'string_to_array', proisstrict => 'f', prorettype => '_text', + proargtypes => 'text text text', prosrc => 'text_to_array_null' }, +{ oid => '384', + descr => 'concatenate array elements, using delimiter and null string, into text', + proname => 'array_to_string', proisstrict => 'f', provolatile => 's', + prorettype => 'text', proargtypes => 'anyarray text text', + prosrc => 'array_to_text_null' }, +{ oid => '515', descr => 'larger of two', + proname => 'array_larger', prorettype => 'anyarray', + proargtypes => 'anyarray anyarray', prosrc => 'array_larger' }, +{ oid => '516', descr => 'smaller of two', + proname => 'array_smaller', prorettype => 'anyarray', + proargtypes => 'anyarray anyarray', prosrc => 'array_smaller' }, +{ oid => '3277', descr => 'returns an offset of value in array', + proname => 'array_position', proisstrict => 'f', prorettype => 'int4', + proargtypes => 'anyarray anyelement', prosrc => 'array_position' }, +{ oid => '3278', + descr => 'returns an offset of value in array with start index', + proname => 'array_position', proisstrict => 'f', prorettype => 'int4', + proargtypes => 'anyarray anyelement int4', prosrc => 'array_position_start' }, +{ oid => '3279', + descr => 'returns an array of offsets of some value in array', + proname => 'array_positions', proisstrict => 'f', prorettype => '_int4', + proargtypes => 'anyarray anyelement', prosrc => 'array_positions' }, +{ oid => '1191', descr => 'array subscripts generator', + proname => 'generate_subscripts', prorows => '1000', proretset => 't', + prorettype => 'int4', proargtypes => 'anyarray int4 bool', + prosrc => 'generate_subscripts' }, +{ oid => '1192', descr => 'array subscripts generator', + proname => 'generate_subscripts', prorows => '1000', proretset => 't', + prorettype => 'int4', proargtypes => 'anyarray int4', + prosrc => 'generate_subscripts_nodir' }, +{ oid => '1193', descr => 'array constructor with value', + proname => 'array_fill', proisstrict => 'f', prorettype => 'anyarray', + proargtypes => 'anyelement _int4', prosrc => 'array_fill' }, +{ oid => '1286', descr => 'array constructor with value', + proname => 'array_fill', proisstrict => 'f', prorettype => 'anyarray', + proargtypes => 'anyelement _int4 _int4', + prosrc => 'array_fill_with_lower_bounds' }, +{ oid => '2331', descr => 'expand array to set of rows', + proname => 'unnest', prorows => '100', proretset => 't', + prorettype => 'anyelement', proargtypes => 'anyarray', + prosrc => 'array_unnest' }, +{ oid => '3167', + descr => 'remove any occurrences of an element from an array', + proname => 'array_remove', proisstrict => 'f', prorettype => 'anyarray', + proargtypes => 'anyarray anyelement', prosrc => 'array_remove' }, +{ oid => '3168', descr => 'replace any occurrences of an element in an array', + proname => 'array_replace', proisstrict => 'f', prorettype => 'anyarray', + proargtypes => 'anyarray anyelement anyelement', prosrc => 'array_replace' }, +{ oid => '2333', descr => 'aggregate transition function', + proname => 'array_agg_transfn', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal anynonarray', prosrc => 'array_agg_transfn' }, +{ oid => '2334', descr => 'aggregate final function', + proname => 'array_agg_finalfn', proisstrict => 'f', prorettype => 'anyarray', + proargtypes => 'internal anynonarray', prosrc => 'array_agg_finalfn' }, +{ oid => '2335', descr => 'concatenate aggregate input into an array', + proname => 'array_agg', prokind => 'a', proisstrict => 'f', + prorettype => 'anyarray', proargtypes => 'anynonarray', + prosrc => 'aggregate_dummy' }, +{ oid => '4051', descr => 'aggregate transition function', + proname => 'array_agg_array_transfn', proisstrict => 'f', + prorettype => 'internal', proargtypes => 'internal anyarray', + prosrc => 'array_agg_array_transfn' }, +{ oid => '4052', descr => 'aggregate final function', + proname => 'array_agg_array_finalfn', proisstrict => 'f', + prorettype => 'anyarray', proargtypes => 'internal anyarray', + prosrc => 'array_agg_array_finalfn' }, +{ oid => '4053', descr => 'concatenate aggregate input into an array', + proname => 'array_agg', prokind => 'a', proisstrict => 'f', + prorettype => 'anyarray', proargtypes => 'anyarray', + prosrc => 'aggregate_dummy' }, +{ oid => '3218', + descr => 'bucket number of operand given a sorted array of bucket lower bounds', + proname => 'width_bucket', prorettype => 'int4', + proargtypes => 'anyelement anyarray', prosrc => 'width_bucket_array' }, +{ oid => '3816', descr => 'array typanalyze', + proname => 'array_typanalyze', provolatile => 's', prorettype => 'bool', + proargtypes => 'internal', prosrc => 'array_typanalyze' }, +{ oid => '3817', + descr => 'restriction selectivity for array-containment operators', + proname => 'arraycontsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'arraycontsel' }, +{ oid => '3818', descr => 'join selectivity for array-containment operators', + proname => 'arraycontjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'arraycontjoinsel' }, + +{ oid => '760', descr => 'I/O', + proname => 'smgrin', provolatile => 's', prorettype => 'smgr', + proargtypes => 'cstring', prosrc => 'smgrin' }, +{ oid => '761', descr => 'I/O', + proname => 'smgrout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'smgr', prosrc => 'smgrout' }, +{ oid => '762', descr => 'storage manager', + proname => 'smgreq', prorettype => 'bool', proargtypes => 'smgr smgr', + prosrc => 'smgreq' }, +{ oid => '763', descr => 'storage manager', + proname => 'smgrne', prorettype => 'bool', proargtypes => 'smgr smgr', + prosrc => 'smgrne' }, + +{ oid => '764', descr => 'large object import', + proname => 'lo_import', provolatile => 'v', proparallel => 'u', + prorettype => 'oid', proargtypes => 'text', prosrc => 'be_lo_import' }, +{ oid => '767', descr => 'large object import', + proname => 'lo_import', provolatile => 'v', proparallel => 'u', + prorettype => 'oid', proargtypes => 'text oid', + prosrc => 'be_lo_import_with_oid' }, +{ oid => '765', descr => 'large object export', + proname => 'lo_export', provolatile => 'v', proparallel => 'u', + prorettype => 'int4', proargtypes => 'oid text', prosrc => 'be_lo_export' }, + +{ oid => '766', descr => 'increment', + proname => 'int4inc', prorettype => 'int4', proargtypes => 'int4', + prosrc => 'int4inc' }, +{ oid => '768', descr => 'larger of two', + proname => 'int4larger', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4larger' }, +{ oid => '769', descr => 'smaller of two', + proname => 'int4smaller', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4smaller' }, +{ oid => '770', descr => 'larger of two', + proname => 'int2larger', prorettype => 'int2', proargtypes => 'int2 int2', + prosrc => 'int2larger' }, +{ oid => '771', descr => 'smaller of two', + proname => 'int2smaller', prorettype => 'int2', proargtypes => 'int2 int2', + prosrc => 'int2smaller' }, + +{ oid => '784', + proname => 'tintervaleq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval tinterval', prosrc => 'tintervaleq' }, +{ oid => '785', + proname => 'tintervalne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval tinterval', prosrc => 'tintervalne' }, +{ oid => '786', + proname => 'tintervallt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval tinterval', prosrc => 'tintervallt' }, +{ oid => '787', + proname => 'tintervalgt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval tinterval', prosrc => 'tintervalgt' }, +{ oid => '788', + proname => 'tintervalle', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval tinterval', prosrc => 'tintervalle' }, +{ oid => '789', + proname => 'tintervalge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tinterval tinterval', prosrc => 'tintervalge' }, + +# OIDS 800 - 899 + +{ oid => '846', + proname => 'cash_mul_flt4', prorettype => 'money', + proargtypes => 'money float4', prosrc => 'cash_mul_flt4' }, +{ oid => '847', + proname => 'cash_div_flt4', prorettype => 'money', + proargtypes => 'money float4', prosrc => 'cash_div_flt4' }, +{ oid => '848', + proname => 'flt4_mul_cash', prorettype => 'money', + proargtypes => 'float4 money', prosrc => 'flt4_mul_cash' }, + +{ oid => '849', descr => 'position of substring', + proname => 'position', prorettype => 'int4', proargtypes => 'text text', + prosrc => 'textpos' }, +{ oid => '850', + proname => 'textlike', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'textlike' }, +{ oid => '851', + proname => 'textnlike', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'textnlike' }, + +{ oid => '852', + proname => 'int48eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int8', prosrc => 'int48eq' }, +{ oid => '853', + proname => 'int48ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int8', prosrc => 'int48ne' }, +{ oid => '854', + proname => 'int48lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int8', prosrc => 'int48lt' }, +{ oid => '855', + proname => 'int48gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int8', prosrc => 'int48gt' }, +{ oid => '856', + proname => 'int48le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int8', prosrc => 'int48le' }, +{ oid => '857', + proname => 'int48ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int4 int8', prosrc => 'int48ge' }, + +{ oid => '858', + proname => 'namelike', prorettype => 'bool', proargtypes => 'name text', + prosrc => 'namelike' }, +{ oid => '859', + proname => 'namenlike', prorettype => 'bool', proargtypes => 'name text', + prosrc => 'namenlike' }, + +{ oid => '860', descr => 'convert char to char(n)', + proname => 'bpchar', prorettype => 'bpchar', proargtypes => 'char', + prosrc => 'char_bpchar' }, + +{ oid => '861', descr => 'name of the current database', + proname => 'current_database', provolatile => 's', prorettype => 'name', + proargtypes => '', prosrc => 'current_database' }, +{ oid => '817', descr => 'get the currently executing query', + proname => 'current_query', proisstrict => 'f', provolatile => 'v', + proparallel => 'r', prorettype => 'text', proargtypes => '', + prosrc => 'current_query' }, + +{ oid => '3399', + proname => 'int8_mul_cash', prorettype => 'money', + proargtypes => 'int8 money', prosrc => 'int8_mul_cash' }, +{ oid => '862', + proname => 'int4_mul_cash', prorettype => 'money', + proargtypes => 'int4 money', prosrc => 'int4_mul_cash' }, +{ oid => '863', + proname => 'int2_mul_cash', prorettype => 'money', + proargtypes => 'int2 money', prosrc => 'int2_mul_cash' }, +{ oid => '3344', + proname => 'cash_mul_int8', prorettype => 'money', + proargtypes => 'money int8', prosrc => 'cash_mul_int8' }, +{ oid => '3345', + proname => 'cash_div_int8', prorettype => 'money', + proargtypes => 'money int8', prosrc => 'cash_div_int8' }, +{ oid => '864', + proname => 'cash_mul_int4', prorettype => 'money', + proargtypes => 'money int4', prosrc => 'cash_mul_int4' }, +{ oid => '865', + proname => 'cash_div_int4', prorettype => 'money', + proargtypes => 'money int4', prosrc => 'cash_div_int4' }, +{ oid => '866', + proname => 'cash_mul_int2', prorettype => 'money', + proargtypes => 'money int2', prosrc => 'cash_mul_int2' }, +{ oid => '867', + proname => 'cash_div_int2', prorettype => 'money', + proargtypes => 'money int2', prosrc => 'cash_div_int2' }, + +{ oid => '886', descr => 'I/O', + proname => 'cash_in', provolatile => 's', prorettype => 'money', + proargtypes => 'cstring', prosrc => 'cash_in' }, +{ oid => '887', descr => 'I/O', + proname => 'cash_out', provolatile => 's', prorettype => 'cstring', + proargtypes => 'money', prosrc => 'cash_out' }, +{ oid => '888', + proname => 'cash_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'money money', prosrc => 'cash_eq' }, +{ oid => '889', + proname => 'cash_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'money money', prosrc => 'cash_ne' }, +{ oid => '890', + proname => 'cash_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'money money', prosrc => 'cash_lt' }, +{ oid => '891', + proname => 'cash_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'money money', prosrc => 'cash_le' }, +{ oid => '892', + proname => 'cash_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'money money', prosrc => 'cash_gt' }, +{ oid => '893', + proname => 'cash_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'money money', prosrc => 'cash_ge' }, +{ oid => '894', + proname => 'cash_pl', prorettype => 'money', proargtypes => 'money money', + prosrc => 'cash_pl' }, +{ oid => '895', + proname => 'cash_mi', prorettype => 'money', proargtypes => 'money money', + prosrc => 'cash_mi' }, +{ oid => '896', + proname => 'cash_mul_flt8', prorettype => 'money', + proargtypes => 'money float8', prosrc => 'cash_mul_flt8' }, +{ oid => '897', + proname => 'cash_div_flt8', prorettype => 'money', + proargtypes => 'money float8', prosrc => 'cash_div_flt8' }, +{ oid => '898', descr => 'larger of two', + proname => 'cashlarger', prorettype => 'money', proargtypes => 'money money', + prosrc => 'cashlarger' }, +{ oid => '899', descr => 'smaller of two', + proname => 'cashsmaller', prorettype => 'money', proargtypes => 'money money', + prosrc => 'cashsmaller' }, +{ oid => '919', + proname => 'flt8_mul_cash', prorettype => 'money', + proargtypes => 'float8 money', prosrc => 'flt8_mul_cash' }, +{ oid => '935', descr => 'output money amount as words', + proname => 'cash_words', prorettype => 'text', proargtypes => 'money', + prosrc => 'cash_words' }, +{ oid => '3822', + proname => 'cash_div_cash', prorettype => 'float8', + proargtypes => 'money money', prosrc => 'cash_div_cash' }, +{ oid => '3823', descr => 'convert money to numeric', + proname => 'numeric', provolatile => 's', prorettype => 'numeric', + proargtypes => 'money', prosrc => 'cash_numeric' }, +{ oid => '3824', descr => 'convert numeric to money', + proname => 'money', provolatile => 's', prorettype => 'money', + proargtypes => 'numeric', prosrc => 'numeric_cash' }, +{ oid => '3811', descr => 'convert int4 to money', + proname => 'money', provolatile => 's', prorettype => 'money', + proargtypes => 'int4', prosrc => 'int4_cash' }, +{ oid => '3812', descr => 'convert int8 to money', + proname => 'money', provolatile => 's', prorettype => 'money', + proargtypes => 'int8', prosrc => 'int8_cash' }, + +# OIDS 900 - 999 + +{ oid => '940', descr => 'modulus', + proname => 'mod', prorettype => 'int2', proargtypes => 'int2 int2', + prosrc => 'int2mod' }, +{ oid => '941', descr => 'modulus', + proname => 'mod', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4mod' }, + +{ oid => '945', + proname => 'int8mod', prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'int8mod' }, +{ oid => '947', descr => 'modulus', + proname => 'mod', prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'int8mod' }, + +{ oid => '944', descr => 'convert text to char', + proname => 'char', prorettype => 'char', proargtypes => 'text', + prosrc => 'text_char' }, +{ oid => '946', descr => 'convert char to text', + proname => 'text', prorettype => 'text', proargtypes => 'char', + prosrc => 'char_text' }, + +{ oid => '952', descr => 'large object open', + proname => 'lo_open', provolatile => 'v', proparallel => 'u', + prorettype => 'int4', proargtypes => 'oid int4', prosrc => 'be_lo_open' }, +{ oid => '953', descr => 'large object close', + proname => 'lo_close', provolatile => 'v', proparallel => 'u', + prorettype => 'int4', proargtypes => 'int4', prosrc => 'be_lo_close' }, +{ oid => '954', descr => 'large object read', + proname => 'loread', provolatile => 'v', proparallel => 'u', + prorettype => 'bytea', proargtypes => 'int4 int4', prosrc => 'be_loread' }, +{ oid => '955', descr => 'large object write', + proname => 'lowrite', provolatile => 'v', proparallel => 'u', + prorettype => 'int4', proargtypes => 'int4 bytea', prosrc => 'be_lowrite' }, +{ oid => '956', descr => 'large object seek', + proname => 'lo_lseek', provolatile => 'v', proparallel => 'u', + prorettype => 'int4', proargtypes => 'int4 int4 int4', + prosrc => 'be_lo_lseek' }, +{ oid => '3170', descr => 'large object seek (64 bit)', + proname => 'lo_lseek64', provolatile => 'v', proparallel => 'u', + prorettype => 'int8', proargtypes => 'int4 int8 int4', + prosrc => 'be_lo_lseek64' }, +{ oid => '957', descr => 'large object create', + proname => 'lo_creat', provolatile => 'v', proparallel => 'u', + prorettype => 'oid', proargtypes => 'int4', prosrc => 'be_lo_creat' }, +{ oid => '715', descr => 'large object create', + proname => 'lo_create', provolatile => 'v', proparallel => 'u', + prorettype => 'oid', proargtypes => 'oid', prosrc => 'be_lo_create' }, +{ oid => '958', descr => 'large object position', + proname => 'lo_tell', provolatile => 'v', proparallel => 'u', + prorettype => 'int4', proargtypes => 'int4', prosrc => 'be_lo_tell' }, +{ oid => '3171', descr => 'large object position (64 bit)', + proname => 'lo_tell64', provolatile => 'v', proparallel => 'u', + prorettype => 'int8', proargtypes => 'int4', prosrc => 'be_lo_tell64' }, +{ oid => '1004', descr => 'truncate large object', + proname => 'lo_truncate', provolatile => 'v', proparallel => 'u', + prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'be_lo_truncate' }, +{ oid => '3172', descr => 'truncate large object (64 bit)', + proname => 'lo_truncate64', provolatile => 'v', proparallel => 'u', + prorettype => 'int4', proargtypes => 'int4 int8', + prosrc => 'be_lo_truncate64' }, + +{ oid => '3457', descr => 'create new large object with given content', + proname => 'lo_from_bytea', provolatile => 'v', proparallel => 'u', + prorettype => 'oid', proargtypes => 'oid bytea', + prosrc => 'be_lo_from_bytea' }, +{ oid => '3458', descr => 'read entire large object', + proname => 'lo_get', provolatile => 'v', proparallel => 'u', + prorettype => 'bytea', proargtypes => 'oid', prosrc => 'be_lo_get' }, +{ oid => '3459', descr => 'read large object from offset for length', + proname => 'lo_get', provolatile => 'v', proparallel => 'u', + prorettype => 'bytea', proargtypes => 'oid int8 int4', + prosrc => 'be_lo_get_fragment' }, +{ oid => '3460', descr => 'write data at offset', + proname => 'lo_put', provolatile => 'v', proparallel => 'u', + prorettype => 'void', proargtypes => 'oid int8 bytea', + prosrc => 'be_lo_put' }, + +{ oid => '959', + proname => 'on_pl', prorettype => 'bool', proargtypes => 'point line', + prosrc => 'on_pl' }, +{ oid => '960', + proname => 'on_sl', prorettype => 'bool', proargtypes => 'lseg line', + prosrc => 'on_sl' }, +{ oid => '961', + proname => 'close_pl', prorettype => 'point', proargtypes => 'point line', + prosrc => 'close_pl' }, +{ oid => '962', + proname => 'close_sl', prorettype => 'point', proargtypes => 'lseg line', + prosrc => 'close_sl' }, +{ oid => '963', + proname => 'close_lb', prorettype => 'point', proargtypes => 'line box', + prosrc => 'close_lb' }, + +{ oid => '964', descr => 'large object unlink (delete)', + proname => 'lo_unlink', provolatile => 'v', proparallel => 'u', + prorettype => 'int4', proargtypes => 'oid', prosrc => 'be_lo_unlink' }, + +{ oid => '973', + proname => 'path_inter', prorettype => 'bool', proargtypes => 'path path', + prosrc => 'path_inter' }, +{ oid => '975', descr => 'box area', + proname => 'area', prorettype => 'float8', proargtypes => 'box', + prosrc => 'box_area' }, +{ oid => '976', descr => 'box width', + proname => 'width', prorettype => 'float8', proargtypes => 'box', + prosrc => 'box_width' }, +{ oid => '977', descr => 'box height', + proname => 'height', prorettype => 'float8', proargtypes => 'box', + prosrc => 'box_height' }, +{ oid => '978', + proname => 'box_distance', prorettype => 'float8', proargtypes => 'box box', + prosrc => 'box_distance' }, +{ oid => '979', descr => 'area of a closed path', + proname => 'area', prorettype => 'float8', proargtypes => 'path', + prosrc => 'path_area' }, +{ oid => '980', + proname => 'box_intersect', prorettype => 'box', proargtypes => 'box box', + prosrc => 'box_intersect' }, +{ oid => '4067', descr => 'bounding box of two boxes', + proname => 'bound_box', prorettype => 'box', proargtypes => 'box box', + prosrc => 'boxes_bound_box' }, +{ oid => '981', descr => 'box diagonal', + proname => 'diagonal', prorettype => 'lseg', proargtypes => 'box', + prosrc => 'box_diagonal' }, +{ oid => '982', + proname => 'path_n_lt', prorettype => 'bool', proargtypes => 'path path', + prosrc => 'path_n_lt' }, +{ oid => '983', + proname => 'path_n_gt', prorettype => 'bool', proargtypes => 'path path', + prosrc => 'path_n_gt' }, +{ oid => '984', + proname => 'path_n_eq', prorettype => 'bool', proargtypes => 'path path', + prosrc => 'path_n_eq' }, +{ oid => '985', + proname => 'path_n_le', prorettype => 'bool', proargtypes => 'path path', + prosrc => 'path_n_le' }, +{ oid => '986', + proname => 'path_n_ge', prorettype => 'bool', proargtypes => 'path path', + prosrc => 'path_n_ge' }, +{ oid => '987', + proname => 'path_length', prorettype => 'float8', proargtypes => 'path', + prosrc => 'path_length' }, +{ oid => '988', + proname => 'point_ne', prorettype => 'bool', proargtypes => 'point point', + prosrc => 'point_ne' }, +{ oid => '989', + proname => 'point_vert', prorettype => 'bool', proargtypes => 'point point', + prosrc => 'point_vert' }, +{ oid => '990', + proname => 'point_horiz', prorettype => 'bool', proargtypes => 'point point', + prosrc => 'point_horiz' }, +{ oid => '991', + proname => 'point_distance', prorettype => 'float8', + proargtypes => 'point point', prosrc => 'point_distance' }, +{ oid => '992', descr => 'slope between points', + proname => 'slope', prorettype => 'float8', proargtypes => 'point point', + prosrc => 'point_slope' }, +{ oid => '993', descr => 'convert points to line segment', + proname => 'lseg', prorettype => 'lseg', proargtypes => 'point point', + prosrc => 'lseg_construct' }, +{ oid => '994', + proname => 'lseg_intersect', prorettype => 'bool', proargtypes => 'lseg lseg', + prosrc => 'lseg_intersect' }, +{ oid => '995', + proname => 'lseg_parallel', prorettype => 'bool', proargtypes => 'lseg lseg', + prosrc => 'lseg_parallel' }, +{ oid => '996', + proname => 'lseg_perp', prorettype => 'bool', proargtypes => 'lseg lseg', + prosrc => 'lseg_perp' }, +{ oid => '997', + proname => 'lseg_vertical', prorettype => 'bool', proargtypes => 'lseg', + prosrc => 'lseg_vertical' }, +{ oid => '998', + proname => 'lseg_horizontal', prorettype => 'bool', proargtypes => 'lseg', + prosrc => 'lseg_horizontal' }, +{ oid => '999', + proname => 'lseg_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'lseg lseg', prosrc => 'lseg_eq' }, + +# OIDS 1000 - 1999 + +{ oid => '3994', descr => 'transform a time zone adjustment', + proname => 'timestamp_izone_transform', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'timestamp_izone_transform' }, +{ oid => '1026', descr => 'adjust timestamp to new time zone', + proname => 'timezone', protransform => 'timestamp_izone_transform', + prorettype => 'timestamp', proargtypes => 'interval timestamptz', + prosrc => 'timestamptz_izone' }, + +{ oid => '1031', descr => 'I/O', + proname => 'aclitemin', provolatile => 's', prorettype => 'aclitem', + proargtypes => 'cstring', prosrc => 'aclitemin' }, +{ oid => '1032', descr => 'I/O', + proname => 'aclitemout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'aclitem', prosrc => 'aclitemout' }, +{ oid => '1035', descr => 'add/update ACL item', + proname => 'aclinsert', prorettype => '_aclitem', + proargtypes => '_aclitem aclitem', prosrc => 'aclinsert' }, +{ oid => '1036', descr => 'remove ACL item', + proname => 'aclremove', prorettype => '_aclitem', + proargtypes => '_aclitem aclitem', prosrc => 'aclremove' }, +{ oid => '1037', descr => 'contains', + proname => 'aclcontains', prorettype => 'bool', + proargtypes => '_aclitem aclitem', prosrc => 'aclcontains' }, +{ oid => '1062', + proname => 'aclitemeq', prorettype => 'bool', + proargtypes => 'aclitem aclitem', prosrc => 'aclitem_eq' }, +{ oid => '1365', descr => 'make ACL item', + proname => 'makeaclitem', prorettype => 'aclitem', + proargtypes => 'oid oid text bool', prosrc => 'makeaclitem' }, +{ oid => '3943', descr => 'TODO', + proname => 'acldefault', prorettype => '_aclitem', proargtypes => 'char oid', + prosrc => 'acldefault_sql' }, +{ oid => '1689', + descr => 'convert ACL item array to table, for use by information schema', + proname => 'aclexplode', prorows => '10', proretset => 't', + provolatile => 's', prorettype => 'record', proargtypes => '_aclitem', + proallargtypes => '{_aclitem,oid,oid,text,bool}', + proargmodes => '{i,o,o,o,o}', + proargnames => '{acl,grantor,grantee,privilege_type,is_grantable}', + prosrc => 'aclexplode' }, +{ oid => '1044', descr => 'I/O', + proname => 'bpcharin', prorettype => 'bpchar', + proargtypes => 'cstring oid int4', prosrc => 'bpcharin' }, +{ oid => '1045', descr => 'I/O', + proname => 'bpcharout', prorettype => 'cstring', proargtypes => 'bpchar', + prosrc => 'bpcharout' }, +{ oid => '2913', descr => 'I/O typmod', + proname => 'bpchartypmodin', prorettype => 'int4', proargtypes => '_cstring', + prosrc => 'bpchartypmodin' }, +{ oid => '2914', descr => 'I/O typmod', + proname => 'bpchartypmodout', prorettype => 'cstring', proargtypes => 'int4', + prosrc => 'bpchartypmodout' }, +{ oid => '1046', descr => 'I/O', + proname => 'varcharin', prorettype => 'varchar', + proargtypes => 'cstring oid int4', prosrc => 'varcharin' }, +{ oid => '1047', descr => 'I/O', + proname => 'varcharout', prorettype => 'cstring', proargtypes => 'varchar', + prosrc => 'varcharout' }, +{ oid => '2915', descr => 'I/O typmod', + proname => 'varchartypmodin', prorettype => 'int4', proargtypes => '_cstring', + prosrc => 'varchartypmodin' }, +{ oid => '2916', descr => 'I/O typmod', + proname => 'varchartypmodout', prorettype => 'cstring', proargtypes => 'int4', + prosrc => 'varchartypmodout' }, +{ oid => '1048', + proname => 'bpchareq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bpchar bpchar', prosrc => 'bpchareq' }, +{ oid => '1049', + proname => 'bpcharlt', prorettype => 'bool', proargtypes => 'bpchar bpchar', + prosrc => 'bpcharlt' }, +{ oid => '1050', + proname => 'bpcharle', prorettype => 'bool', proargtypes => 'bpchar bpchar', + prosrc => 'bpcharle' }, +{ oid => '1051', + proname => 'bpchargt', prorettype => 'bool', proargtypes => 'bpchar bpchar', + prosrc => 'bpchargt' }, +{ oid => '1052', + proname => 'bpcharge', prorettype => 'bool', proargtypes => 'bpchar bpchar', + prosrc => 'bpcharge' }, +{ oid => '1053', + proname => 'bpcharne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bpchar bpchar', prosrc => 'bpcharne' }, +{ oid => '1063', descr => 'larger of two', + proname => 'bpchar_larger', prorettype => 'bpchar', + proargtypes => 'bpchar bpchar', prosrc => 'bpchar_larger' }, +{ oid => '1064', descr => 'smaller of two', + proname => 'bpchar_smaller', prorettype => 'bpchar', + proargtypes => 'bpchar bpchar', prosrc => 'bpchar_smaller' }, +{ oid => '1078', descr => 'less-equal-greater', + proname => 'bpcharcmp', prorettype => 'int4', proargtypes => 'bpchar bpchar', + prosrc => 'bpcharcmp' }, +{ oid => '3328', descr => 'sort support', + proname => 'bpchar_sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'bpchar_sortsupport' }, +{ oid => '1080', descr => 'hash', + proname => 'hashbpchar', prorettype => 'int4', proargtypes => 'bpchar', + prosrc => 'hashbpchar' }, +{ oid => '972', descr => 'hash', + proname => 'hashbpcharextended', prorettype => 'int8', + proargtypes => 'bpchar int8', prosrc => 'hashbpcharextended' }, +{ oid => '1081', descr => 'format a type oid and atttypmod to canonical SQL', + proname => 'format_type', proisstrict => 'f', provolatile => 's', + prorettype => 'text', proargtypes => 'oid int4', prosrc => 'format_type' }, +{ oid => '1084', descr => 'I/O', + proname => 'date_in', provolatile => 's', prorettype => 'date', + proargtypes => 'cstring', prosrc => 'date_in' }, +{ oid => '1085', descr => 'I/O', + proname => 'date_out', provolatile => 's', prorettype => 'cstring', + proargtypes => 'date', prosrc => 'date_out' }, +{ oid => '1086', + proname => 'date_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'date date', prosrc => 'date_eq' }, +{ oid => '1087', + proname => 'date_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'date date', prosrc => 'date_lt' }, +{ oid => '1088', + proname => 'date_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'date date', prosrc => 'date_le' }, +{ oid => '1089', + proname => 'date_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'date date', prosrc => 'date_gt' }, +{ oid => '1090', + proname => 'date_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'date date', prosrc => 'date_ge' }, +{ oid => '1091', + proname => 'date_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'date date', prosrc => 'date_ne' }, +{ oid => '1092', descr => 'less-equal-greater', + proname => 'date_cmp', prorettype => 'int4', proargtypes => 'date date', + prosrc => 'date_cmp' }, +{ oid => '3136', descr => 'sort support', + proname => 'date_sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'date_sortsupport' }, +{ oid => '4133', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'date date interval bool bool', + prosrc => 'in_range_date_interval' }, + +# OIDS 1100 - 1199 + +{ oid => '1102', + proname => 'time_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'time time', prosrc => 'time_lt' }, +{ oid => '1103', + proname => 'time_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'time time', prosrc => 'time_le' }, +{ oid => '1104', + proname => 'time_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'time time', prosrc => 'time_gt' }, +{ oid => '1105', + proname => 'time_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'time time', prosrc => 'time_ge' }, +{ oid => '1106', + proname => 'time_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'time time', prosrc => 'time_ne' }, +{ oid => '1107', descr => 'less-equal-greater', + proname => 'time_cmp', prorettype => 'int4', proargtypes => 'time time', + prosrc => 'time_cmp' }, +{ oid => '1138', descr => 'larger of two', + proname => 'date_larger', prorettype => 'date', proargtypes => 'date date', + prosrc => 'date_larger' }, +{ oid => '1139', descr => 'smaller of two', + proname => 'date_smaller', prorettype => 'date', proargtypes => 'date date', + prosrc => 'date_smaller' }, +{ oid => '1140', + proname => 'date_mi', prorettype => 'int4', proargtypes => 'date date', + prosrc => 'date_mi' }, +{ oid => '1141', + proname => 'date_pli', prorettype => 'date', proargtypes => 'date int4', + prosrc => 'date_pli' }, +{ oid => '1142', + proname => 'date_mii', prorettype => 'date', proargtypes => 'date int4', + prosrc => 'date_mii' }, +{ oid => '1143', descr => 'I/O', + proname => 'time_in', provolatile => 's', prorettype => 'time', + proargtypes => 'cstring oid int4', prosrc => 'time_in' }, +{ oid => '1144', descr => 'I/O', + proname => 'time_out', prorettype => 'cstring', proargtypes => 'time', + prosrc => 'time_out' }, +{ oid => '2909', descr => 'I/O typmod', + proname => 'timetypmodin', prorettype => 'int4', proargtypes => '_cstring', + prosrc => 'timetypmodin' }, +{ oid => '2910', descr => 'I/O typmod', + proname => 'timetypmodout', prorettype => 'cstring', proargtypes => 'int4', + prosrc => 'timetypmodout' }, +{ oid => '1145', + proname => 'time_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'time time', prosrc => 'time_eq' }, + +{ oid => '1146', + proname => 'circle_add_pt', prorettype => 'circle', + proargtypes => 'circle point', prosrc => 'circle_add_pt' }, +{ oid => '1147', + proname => 'circle_sub_pt', prorettype => 'circle', + proargtypes => 'circle point', prosrc => 'circle_sub_pt' }, +{ oid => '1148', + proname => 'circle_mul_pt', prorettype => 'circle', + proargtypes => 'circle point', prosrc => 'circle_mul_pt' }, +{ oid => '1149', + proname => 'circle_div_pt', prorettype => 'circle', + proargtypes => 'circle point', prosrc => 'circle_div_pt' }, + +{ oid => '1150', descr => 'I/O', + proname => 'timestamptz_in', provolatile => 's', prorettype => 'timestamptz', + proargtypes => 'cstring oid int4', prosrc => 'timestamptz_in' }, +{ oid => '1151', descr => 'I/O', + proname => 'timestamptz_out', provolatile => 's', prorettype => 'cstring', + proargtypes => 'timestamptz', prosrc => 'timestamptz_out' }, +{ oid => '2907', descr => 'I/O typmod', + proname => 'timestamptztypmodin', prorettype => 'int4', + proargtypes => '_cstring', prosrc => 'timestamptztypmodin' }, +{ oid => '2908', descr => 'I/O typmod', + proname => 'timestamptztypmodout', prorettype => 'cstring', + proargtypes => 'int4', prosrc => 'timestamptztypmodout' }, +{ oid => '1152', + proname => 'timestamptz_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_eq' }, +{ oid => '1153', + proname => 'timestamptz_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_ne' }, +{ oid => '1154', + proname => 'timestamptz_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_lt' }, +{ oid => '1155', + proname => 'timestamptz_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_le' }, +{ oid => '1156', + proname => 'timestamptz_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_ge' }, +{ oid => '1157', + proname => 'timestamptz_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_gt' }, +{ oid => '1158', descr => 'convert UNIX epoch to timestamptz', + proname => 'to_timestamp', prorettype => 'timestamptz', + proargtypes => 'float8', prosrc => 'float8_timestamptz' }, +{ oid => '3995', descr => 'transform a time zone adjustment', + proname => 'timestamp_zone_transform', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'timestamp_zone_transform' }, +{ oid => '1159', descr => 'adjust timestamp to new time zone', + proname => 'timezone', protransform => 'timestamp_zone_transform', + prorettype => 'timestamp', proargtypes => 'text timestamptz', + prosrc => 'timestamptz_zone' }, + +{ oid => '1160', descr => 'I/O', + proname => 'interval_in', provolatile => 's', prorettype => 'interval', + proargtypes => 'cstring oid int4', prosrc => 'interval_in' }, +{ oid => '1161', descr => 'I/O', + proname => 'interval_out', prorettype => 'cstring', proargtypes => 'interval', + prosrc => 'interval_out' }, +{ oid => '2903', descr => 'I/O typmod', + proname => 'intervaltypmodin', prorettype => 'int4', + proargtypes => '_cstring', prosrc => 'intervaltypmodin' }, +{ oid => '2904', descr => 'I/O typmod', + proname => 'intervaltypmodout', prorettype => 'cstring', + proargtypes => 'int4', prosrc => 'intervaltypmodout' }, +{ oid => '1162', + proname => 'interval_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'interval interval', prosrc => 'interval_eq' }, +{ oid => '1163', + proname => 'interval_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'interval interval', prosrc => 'interval_ne' }, +{ oid => '1164', + proname => 'interval_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'interval interval', prosrc => 'interval_lt' }, +{ oid => '1165', + proname => 'interval_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'interval interval', prosrc => 'interval_le' }, +{ oid => '1166', + proname => 'interval_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'interval interval', prosrc => 'interval_ge' }, +{ oid => '1167', + proname => 'interval_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'interval interval', prosrc => 'interval_gt' }, +{ oid => '1168', + proname => 'interval_um', prorettype => 'interval', proargtypes => 'interval', + prosrc => 'interval_um' }, +{ oid => '1169', + proname => 'interval_pl', prorettype => 'interval', + proargtypes => 'interval interval', prosrc => 'interval_pl' }, +{ oid => '1170', + proname => 'interval_mi', prorettype => 'interval', + proargtypes => 'interval interval', prosrc => 'interval_mi' }, +{ oid => '1171', descr => 'extract field from timestamp with time zone', + proname => 'date_part', provolatile => 's', prorettype => 'float8', + proargtypes => 'text timestamptz', prosrc => 'timestamptz_part' }, +{ oid => '1172', descr => 'extract field from interval', + proname => 'date_part', prorettype => 'float8', + proargtypes => 'text interval', prosrc => 'interval_part' }, +{ oid => '1173', descr => 'convert abstime to timestamp with time zone', + proname => 'timestamptz', prorettype => 'timestamptz', + proargtypes => 'abstime', prosrc => 'abstime_timestamptz' }, +{ oid => '1174', descr => 'convert date to timestamp with time zone', + proname => 'timestamptz', provolatile => 's', prorettype => 'timestamptz', + proargtypes => 'date', prosrc => 'date_timestamptz' }, +{ oid => '2711', + descr => 'promote groups of 24 hours to numbers of days and promote groups of 30 days to numbers of months', + proname => 'justify_interval', prorettype => 'interval', + proargtypes => 'interval', prosrc => 'interval_justify_interval' }, +{ oid => '1175', descr => 'promote groups of 24 hours to numbers of days', + proname => 'justify_hours', prorettype => 'interval', + proargtypes => 'interval', prosrc => 'interval_justify_hours' }, +{ oid => '1295', descr => 'promote groups of 30 days to numbers of months', + proname => 'justify_days', prorettype => 'interval', + proargtypes => 'interval', prosrc => 'interval_justify_days' }, +{ oid => '1176', descr => 'convert date and time to timestamp with time zone', + proname => 'timestamptz', prolang => '14', provolatile => 's', + prorettype => 'timestamptz', proargtypes => 'date time', + prosrc => 'select cast(($1 + $2) as timestamp with time zone)' }, +{ oid => '1177', descr => 'convert reltime to interval', + proname => 'interval', prorettype => 'interval', proargtypes => 'reltime', + prosrc => 'reltime_interval' }, +{ oid => '1178', descr => 'convert timestamp with time zone to date', + proname => 'date', provolatile => 's', prorettype => 'date', + proargtypes => 'timestamptz', prosrc => 'timestamptz_date' }, +{ oid => '1179', descr => 'convert abstime to date', + proname => 'date', provolatile => 's', prorettype => 'date', + proargtypes => 'abstime', prosrc => 'abstime_date' }, +{ oid => '1180', descr => 'convert timestamp with time zone to abstime', + proname => 'abstime', prorettype => 'abstime', proargtypes => 'timestamptz', + prosrc => 'timestamptz_abstime' }, +{ oid => '1181', + descr => 'age of a transaction ID, in transactions before current transaction', + proname => 'age', provolatile => 's', proparallel => 'r', + prorettype => 'int4', proargtypes => 'xid', prosrc => 'xid_age' }, +{ oid => '3939', + descr => 'age of a multi-transaction ID, in multi-transactions before current multi-transaction', + proname => 'mxid_age', provolatile => 's', prorettype => 'int4', + proargtypes => 'xid', prosrc => 'mxid_age' }, + +{ oid => '1188', + proname => 'timestamptz_mi', prorettype => 'interval', + proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_mi' }, +{ oid => '1189', + proname => 'timestamptz_pl_interval', provolatile => 's', + prorettype => 'timestamptz', proargtypes => 'timestamptz interval', + prosrc => 'timestamptz_pl_interval' }, +{ oid => '1190', + proname => 'timestamptz_mi_interval', provolatile => 's', + prorettype => 'timestamptz', proargtypes => 'timestamptz interval', + prosrc => 'timestamptz_mi_interval' }, +{ oid => '1194', descr => 'convert interval to reltime', + proname => 'reltime', prorettype => 'reltime', proargtypes => 'interval', + prosrc => 'interval_reltime' }, +{ oid => '1195', descr => 'smaller of two', + proname => 'timestamptz_smaller', prorettype => 'timestamptz', + proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_smaller' }, +{ oid => '1196', descr => 'larger of two', + proname => 'timestamptz_larger', prorettype => 'timestamptz', + proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_larger' }, +{ oid => '1197', descr => 'smaller of two', + proname => 'interval_smaller', prorettype => 'interval', + proargtypes => 'interval interval', prosrc => 'interval_smaller' }, +{ oid => '1198', descr => 'larger of two', + proname => 'interval_larger', prorettype => 'interval', + proargtypes => 'interval interval', prosrc => 'interval_larger' }, +{ oid => '1199', descr => 'date difference preserving months and years', + proname => 'age', prorettype => 'interval', + proargtypes => 'timestamptz timestamptz', prosrc => 'timestamptz_age' }, + +# OIDS 1200 - 1299 + +{ oid => '3918', descr => 'transform an interval length coercion', + proname => 'interval_transform', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'interval_transform' }, +{ oid => '1200', descr => 'adjust interval precision', + proname => 'interval', protransform => 'interval_transform', + prorettype => 'interval', proargtypes => 'interval int4', + prosrc => 'interval_scale' }, + +{ oid => '1215', descr => 'get description for object id and catalog name', + proname => 'obj_description', prolang => '14', procost => '100', + provolatile => 's', prorettype => 'text', proargtypes => 'oid name', + prosrc => 'select description from pg_catalog.pg_description where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP) and objsubid = 0' }, +{ oid => '1216', descr => 'get description for table column', + proname => 'col_description', prolang => '14', procost => '100', + provolatile => 's', prorettype => 'text', proargtypes => 'oid int4', + prosrc => 'select description from pg_catalog.pg_description where objoid = $1 and classoid = \'\'pg_catalog.pg_class\'\'::pg_catalog.regclass and objsubid = $2' }, +{ oid => '1993', + descr => 'get description for object id and shared catalog name', + proname => 'shobj_description', prolang => '14', procost => '100', + provolatile => 's', prorettype => 'text', proargtypes => 'oid name', + prosrc => 'select description from pg_catalog.pg_shdescription where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP)' }, + +{ oid => '1217', + descr => 'truncate timestamp with time zone to specified units', + proname => 'date_trunc', provolatile => 's', prorettype => 'timestamptz', + proargtypes => 'text timestamptz', prosrc => 'timestamptz_trunc' }, +{ oid => '1218', descr => 'truncate interval to specified units', + proname => 'date_trunc', prorettype => 'interval', + proargtypes => 'text interval', prosrc => 'interval_trunc' }, + +{ oid => '1219', descr => 'increment', + proname => 'int8inc', prorettype => 'int8', proargtypes => 'int8', + prosrc => 'int8inc' }, +{ oid => '3546', descr => 'decrement', + proname => 'int8dec', prorettype => 'int8', proargtypes => 'int8', + prosrc => 'int8dec' }, +{ oid => '2804', descr => 'increment, ignores second argument', + proname => 'int8inc_any', prorettype => 'int8', proargtypes => 'int8 any', + prosrc => 'int8inc_any' }, +{ oid => '3547', descr => 'decrement, ignores second argument', + proname => 'int8dec_any', prorettype => 'int8', proargtypes => 'int8 any', + prosrc => 'int8dec_any' }, +{ oid => '1230', + proname => 'int8abs', prorettype => 'int8', proargtypes => 'int8', + prosrc => 'int8abs' }, + +{ oid => '1236', descr => 'larger of two', + proname => 'int8larger', prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'int8larger' }, +{ oid => '1237', descr => 'smaller of two', + proname => 'int8smaller', prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'int8smaller' }, + +{ oid => '1238', + proname => 'texticregexeq', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'texticregexeq' }, +{ oid => '1239', + proname => 'texticregexne', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'texticregexne' }, +{ oid => '1240', + proname => 'nameicregexeq', prorettype => 'bool', proargtypes => 'name text', + prosrc => 'nameicregexeq' }, +{ oid => '1241', + proname => 'nameicregexne', prorettype => 'bool', proargtypes => 'name text', + prosrc => 'nameicregexne' }, + +{ oid => '1251', + proname => 'int4abs', prorettype => 'int4', proargtypes => 'int4', + prosrc => 'int4abs' }, +{ oid => '1253', + proname => 'int2abs', prorettype => 'int2', proargtypes => 'int2', + prosrc => 'int2abs' }, + +{ oid => '1271', descr => 'intervals overlap?', + proname => 'overlaps', proisstrict => 'f', prorettype => 'bool', + proargtypes => 'timetz timetz timetz timetz', prosrc => 'overlaps_timetz' }, +{ oid => '1272', + proname => 'datetime_pl', prorettype => 'timestamp', + proargtypes => 'date time', prosrc => 'datetime_timestamp' }, +{ oid => '1273', descr => 'extract field from time with time zone', + proname => 'date_part', prorettype => 'float8', proargtypes => 'text timetz', + prosrc => 'timetz_part' }, +{ oid => '1274', + proname => 'int84pl', prorettype => 'int8', proargtypes => 'int8 int4', + prosrc => 'int84pl' }, +{ oid => '1275', + proname => 'int84mi', prorettype => 'int8', proargtypes => 'int8 int4', + prosrc => 'int84mi' }, +{ oid => '1276', + proname => 'int84mul', prorettype => 'int8', proargtypes => 'int8 int4', + prosrc => 'int84mul' }, +{ oid => '1277', + proname => 'int84div', prorettype => 'int8', proargtypes => 'int8 int4', + prosrc => 'int84div' }, +{ oid => '1278', + proname => 'int48pl', prorettype => 'int8', proargtypes => 'int4 int8', + prosrc => 'int48pl' }, +{ oid => '1279', + proname => 'int48mi', prorettype => 'int8', proargtypes => 'int4 int8', + prosrc => 'int48mi' }, +{ oid => '1280', + proname => 'int48mul', prorettype => 'int8', proargtypes => 'int4 int8', + prosrc => 'int48mul' }, +{ oid => '1281', + proname => 'int48div', prorettype => 'int8', proargtypes => 'int4 int8', + prosrc => 'int48div' }, + +{ oid => '837', + proname => 'int82pl', prorettype => 'int8', proargtypes => 'int8 int2', + prosrc => 'int82pl' }, +{ oid => '838', + proname => 'int82mi', prorettype => 'int8', proargtypes => 'int8 int2', + prosrc => 'int82mi' }, +{ oid => '839', + proname => 'int82mul', prorettype => 'int8', proargtypes => 'int8 int2', + prosrc => 'int82mul' }, +{ oid => '840', + proname => 'int82div', prorettype => 'int8', proargtypes => 'int8 int2', + prosrc => 'int82div' }, +{ oid => '841', + proname => 'int28pl', prorettype => 'int8', proargtypes => 'int2 int8', + prosrc => 'int28pl' }, +{ oid => '942', + proname => 'int28mi', prorettype => 'int8', proargtypes => 'int2 int8', + prosrc => 'int28mi' }, +{ oid => '943', + proname => 'int28mul', prorettype => 'int8', proargtypes => 'int2 int8', + prosrc => 'int28mul' }, +{ oid => '948', + proname => 'int28div', prorettype => 'int8', proargtypes => 'int2 int8', + prosrc => 'int28div' }, + +{ oid => '1287', descr => 'convert int8 to oid', + proname => 'oid', prorettype => 'oid', proargtypes => 'int8', + prosrc => 'i8tooid' }, +{ oid => '1288', descr => 'convert oid to int8', + proname => 'int8', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'oidtoi8' }, + +{ oid => '1291', + descr => 'trigger to suppress updates when new and old records match', + proname => 'suppress_redundant_updates_trigger', provolatile => 'v', + prorettype => 'trigger', proargtypes => '', + prosrc => 'suppress_redundant_updates_trigger' }, + +{ oid => '1292', + proname => 'tideq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tid tid', prosrc => 'tideq' }, +{ oid => '1293', descr => 'latest tid of a tuple', + proname => 'currtid', provolatile => 'v', proparallel => 'u', + prorettype => 'tid', proargtypes => 'oid tid', prosrc => 'currtid_byreloid' }, +{ oid => '1294', descr => 'latest tid of a tuple', + proname => 'currtid2', provolatile => 'v', proparallel => 'u', + prorettype => 'tid', proargtypes => 'text tid', + prosrc => 'currtid_byrelname' }, +{ oid => '1265', + proname => 'tidne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tid tid', prosrc => 'tidne' }, +{ oid => '2790', + proname => 'tidgt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tid tid', prosrc => 'tidgt' }, +{ oid => '2791', + proname => 'tidlt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tid tid', prosrc => 'tidlt' }, +{ oid => '2792', + proname => 'tidge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tid tid', prosrc => 'tidge' }, +{ oid => '2793', + proname => 'tidle', proleakproof => 't', prorettype => 'bool', + proargtypes => 'tid tid', prosrc => 'tidle' }, +{ oid => '2794', descr => 'less-equal-greater', + proname => 'bttidcmp', prorettype => 'int4', proargtypes => 'tid tid', + prosrc => 'bttidcmp' }, +{ oid => '2795', descr => 'larger of two', + proname => 'tidlarger', prorettype => 'tid', proargtypes => 'tid tid', + prosrc => 'tidlarger' }, +{ oid => '2796', descr => 'smaller of two', + proname => 'tidsmaller', prorettype => 'tid', proargtypes => 'tid tid', + prosrc => 'tidsmaller' }, + +{ oid => '1296', + proname => 'timedate_pl', prolang => '14', prorettype => 'timestamp', + proargtypes => 'time date', prosrc => 'select ($2 + $1)' }, +{ oid => '1297', + proname => 'datetimetz_pl', prorettype => 'timestamptz', + proargtypes => 'date timetz', prosrc => 'datetimetz_timestamptz' }, +{ oid => '1298', + proname => 'timetzdate_pl', prolang => '14', prorettype => 'timestamptz', + proargtypes => 'timetz date', prosrc => 'select ($2 + $1)' }, +{ oid => '1299', descr => 'current transaction time', + proname => 'now', provolatile => 's', proparallel => 'r', + prorettype => 'timestamptz', proargtypes => '', prosrc => 'now' }, +{ oid => '2647', descr => 'current transaction time', + proname => 'transaction_timestamp', provolatile => 's', + prorettype => 'timestamptz', proargtypes => '', prosrc => 'now' }, +{ oid => '2648', descr => 'current statement time', + proname => 'statement_timestamp', provolatile => 's', proparallel => 'r', + prorettype => 'timestamptz', proargtypes => '', + prosrc => 'statement_timestamp' }, +{ oid => '2649', descr => 'current clock time', + proname => 'clock_timestamp', provolatile => 'v', prorettype => 'timestamptz', + proargtypes => '', prosrc => 'clock_timestamp' }, + +# OIDS 1300 - 1399 + +{ oid => '1300', + descr => 'restriction selectivity for position-comparison operators', + proname => 'positionsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'positionsel' }, +{ oid => '1301', + descr => 'join selectivity for position-comparison operators', + proname => 'positionjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'positionjoinsel' }, +{ oid => '1302', + descr => 'restriction selectivity for containment comparison operators', + proname => 'contsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'contsel' }, +{ oid => '1303', + descr => 'join selectivity for containment comparison operators', + proname => 'contjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'contjoinsel' }, + +{ oid => '1304', descr => 'intervals overlap?', + proname => 'overlaps', proisstrict => 'f', prorettype => 'bool', + proargtypes => 'timestamptz timestamptz timestamptz timestamptz', + prosrc => 'overlaps_timestamp' }, +{ oid => '1305', descr => 'intervals overlap?', + proname => 'overlaps', prolang => '14', proisstrict => 'f', + provolatile => 's', prorettype => 'bool', + proargtypes => 'timestamptz interval timestamptz interval', + prosrc => 'select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))' }, +{ oid => '1306', descr => 'intervals overlap?', + proname => 'overlaps', prolang => '14', proisstrict => 'f', + provolatile => 's', prorettype => 'bool', + proargtypes => 'timestamptz timestamptz timestamptz interval', + prosrc => 'select ($1, $2) overlaps ($3, ($3 + $4))' }, +{ oid => '1307', descr => 'intervals overlap?', + proname => 'overlaps', prolang => '14', proisstrict => 'f', + provolatile => 's', prorettype => 'bool', + proargtypes => 'timestamptz interval timestamptz timestamptz', + prosrc => 'select ($1, ($1 + $2)) overlaps ($3, $4)' }, + +{ oid => '1308', descr => 'intervals overlap?', + proname => 'overlaps', proisstrict => 'f', prorettype => 'bool', + proargtypes => 'time time time time', prosrc => 'overlaps_time' }, +{ oid => '1309', descr => 'intervals overlap?', + proname => 'overlaps', prolang => '14', proisstrict => 'f', + prorettype => 'bool', proargtypes => 'time interval time interval', + prosrc => 'select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))' }, +{ oid => '1310', descr => 'intervals overlap?', + proname => 'overlaps', prolang => '14', proisstrict => 'f', + prorettype => 'bool', proargtypes => 'time time time interval', + prosrc => 'select ($1, $2) overlaps ($3, ($3 + $4))' }, +{ oid => '1311', descr => 'intervals overlap?', + proname => 'overlaps', prolang => '14', proisstrict => 'f', + prorettype => 'bool', proargtypes => 'time interval time time', + prosrc => 'select ($1, ($1 + $2)) overlaps ($3, $4)' }, + +{ oid => '1312', descr => 'I/O', + proname => 'timestamp_in', provolatile => 's', prorettype => 'timestamp', + proargtypes => 'cstring oid int4', prosrc => 'timestamp_in' }, +{ oid => '1313', descr => 'I/O', + proname => 'timestamp_out', provolatile => 's', prorettype => 'cstring', + proargtypes => 'timestamp', prosrc => 'timestamp_out' }, +{ oid => '2905', descr => 'I/O typmod', + proname => 'timestamptypmodin', prorettype => 'int4', + proargtypes => '_cstring', prosrc => 'timestamptypmodin' }, +{ oid => '2906', descr => 'I/O typmod', + proname => 'timestamptypmodout', prorettype => 'cstring', + proargtypes => 'int4', prosrc => 'timestamptypmodout' }, +{ oid => '1314', descr => 'less-equal-greater', + proname => 'timestamptz_cmp', prorettype => 'int4', + proargtypes => 'timestamptz timestamptz', prosrc => 'timestamp_cmp' }, +{ oid => '1315', descr => 'less-equal-greater', + proname => 'interval_cmp', prorettype => 'int4', + proargtypes => 'interval interval', prosrc => 'interval_cmp' }, +{ oid => '1316', descr => 'convert timestamp to time', + proname => 'time', prorettype => 'time', proargtypes => 'timestamp', + prosrc => 'timestamp_time' }, + +{ oid => '1317', descr => 'length', + proname => 'length', prorettype => 'int4', proargtypes => 'text', + prosrc => 'textlen' }, +{ oid => '1318', descr => 'character length', + proname => 'length', prorettype => 'int4', proargtypes => 'bpchar', + prosrc => 'bpcharlen' }, + +{ oid => '1319', + proname => 'xideqint4', proleakproof => 't', prorettype => 'bool', + proargtypes => 'xid int4', prosrc => 'xideq' }, +{ oid => '3309', + proname => 'xidneqint4', proleakproof => 't', prorettype => 'bool', + proargtypes => 'xid int4', prosrc => 'xidneq' }, + +{ oid => '1326', + proname => 'interval_div', prorettype => 'interval', + proargtypes => 'interval float8', prosrc => 'interval_div' }, + +{ oid => '1339', descr => 'base 10 logarithm', + proname => 'dlog10', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dlog10' }, +{ oid => '1340', descr => 'base 10 logarithm', + proname => 'log', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dlog10' }, +{ oid => '1341', descr => 'natural logarithm', + proname => 'ln', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dlog1' }, +{ oid => '1342', descr => 'round to nearest integer', + proname => 'round', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dround' }, +{ oid => '1343', descr => 'truncate to integer', + proname => 'trunc', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dtrunc' }, +{ oid => '1344', descr => 'square root', + proname => 'sqrt', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dsqrt' }, +{ oid => '1345', descr => 'cube root', + proname => 'cbrt', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dcbrt' }, +{ oid => '1346', descr => 'exponentiation', + proname => 'pow', prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'dpow' }, +{ oid => '1368', descr => 'exponentiation', + proname => 'power', prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'dpow' }, +{ oid => '1347', descr => 'natural exponential (e^x)', + proname => 'exp', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dexp' }, + +# This form of obj_description is now deprecated, since it will fail if +# OIDs are not unique across system catalogs. Use the other form instead. +{ oid => '1348', descr => 'deprecated, use two-argument form instead', + proname => 'obj_description', prolang => '14', procost => '100', + provolatile => 's', prorettype => 'text', proargtypes => 'oid', + prosrc => 'select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0' }, + +{ oid => '1349', descr => 'print type names of oidvector field', + proname => 'oidvectortypes', provolatile => 's', prorettype => 'text', + proargtypes => 'oidvector', prosrc => 'oidvectortypes' }, + +{ oid => '1350', descr => 'I/O', + proname => 'timetz_in', provolatile => 's', prorettype => 'timetz', + proargtypes => 'cstring oid int4', prosrc => 'timetz_in' }, +{ oid => '1351', descr => 'I/O', + proname => 'timetz_out', prorettype => 'cstring', proargtypes => 'timetz', + prosrc => 'timetz_out' }, +{ oid => '2911', descr => 'I/O typmod', + proname => 'timetztypmodin', prorettype => 'int4', proargtypes => '_cstring', + prosrc => 'timetztypmodin' }, +{ oid => '2912', descr => 'I/O typmod', + proname => 'timetztypmodout', prorettype => 'cstring', proargtypes => 'int4', + prosrc => 'timetztypmodout' }, +{ oid => '1352', + proname => 'timetz_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timetz timetz', prosrc => 'timetz_eq' }, +{ oid => '1353', + proname => 'timetz_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timetz timetz', prosrc => 'timetz_ne' }, +{ oid => '1354', + proname => 'timetz_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timetz timetz', prosrc => 'timetz_lt' }, +{ oid => '1355', + proname => 'timetz_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timetz timetz', prosrc => 'timetz_le' }, +{ oid => '1356', + proname => 'timetz_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timetz timetz', prosrc => 'timetz_ge' }, +{ oid => '1357', + proname => 'timetz_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timetz timetz', prosrc => 'timetz_gt' }, +{ oid => '1358', descr => 'less-equal-greater', + proname => 'timetz_cmp', prorettype => 'int4', proargtypes => 'timetz timetz', + prosrc => 'timetz_cmp' }, +{ oid => '1359', + descr => 'convert date and time with time zone to timestamp with time zone', + proname => 'timestamptz', prorettype => 'timestamptz', + proargtypes => 'date timetz', prosrc => 'datetimetz_timestamptz' }, + +{ oid => '1364', descr => 'convert abstime to time', + proname => 'time', prolang => '14', provolatile => 's', prorettype => 'time', + proargtypes => 'abstime', + prosrc => 'select cast(cast($1 as timestamp without time zone) as pg_catalog.time)' }, + +{ oid => '1367', descr => 'character length', + proname => 'character_length', prorettype => 'int4', proargtypes => 'bpchar', + prosrc => 'bpcharlen' }, +{ oid => '1369', descr => 'character length', + proname => 'character_length', prorettype => 'int4', proargtypes => 'text', + prosrc => 'textlen' }, + +{ oid => '1370', descr => 'convert time to interval', + proname => 'interval', prorettype => 'interval', proargtypes => 'time', + prosrc => 'time_interval' }, +{ oid => '1372', descr => 'character length', + proname => 'char_length', prorettype => 'int4', proargtypes => 'bpchar', + prosrc => 'bpcharlen' }, +{ oid => '1374', descr => 'octet length', + proname => 'octet_length', prorettype => 'int4', proargtypes => 'text', + prosrc => 'textoctetlen' }, +{ oid => '1375', descr => 'octet length', + proname => 'octet_length', prorettype => 'int4', proargtypes => 'bpchar', + prosrc => 'bpcharoctetlen' }, + +{ oid => '1377', descr => 'larger of two', + proname => 'time_larger', prorettype => 'time', proargtypes => 'time time', + prosrc => 'time_larger' }, +{ oid => '1378', descr => 'smaller of two', + proname => 'time_smaller', prorettype => 'time', proargtypes => 'time time', + prosrc => 'time_smaller' }, +{ oid => '1379', descr => 'larger of two', + proname => 'timetz_larger', prorettype => 'timetz', + proargtypes => 'timetz timetz', prosrc => 'timetz_larger' }, +{ oid => '1380', descr => 'smaller of two', + proname => 'timetz_smaller', prorettype => 'timetz', + proargtypes => 'timetz timetz', prosrc => 'timetz_smaller' }, + +{ oid => '1381', descr => 'character length', + proname => 'char_length', prorettype => 'int4', proargtypes => 'text', + prosrc => 'textlen' }, + +{ oid => '1382', descr => 'extract field from abstime', + proname => 'date_part', prolang => '14', provolatile => 's', + prorettype => 'float8', proargtypes => 'text abstime', + prosrc => 'select pg_catalog.date_part($1, cast($2 as timestamp with time zone))' }, +{ oid => '1383', descr => 'extract field from reltime', + proname => 'date_part', prolang => '14', provolatile => 's', + prorettype => 'float8', proargtypes => 'text reltime', + prosrc => 'select pg_catalog.date_part($1, cast($2 as pg_catalog.interval))' }, +{ oid => '1384', descr => 'extract field from date', + proname => 'date_part', prolang => '14', prorettype => 'float8', + proargtypes => 'text date', + prosrc => 'select pg_catalog.date_part($1, cast($2 as timestamp without time zone))' }, +{ oid => '1385', descr => 'extract field from time', + proname => 'date_part', prorettype => 'float8', proargtypes => 'text time', + prosrc => 'time_part' }, +{ oid => '1386', + descr => 'date difference from today preserving months and years', + proname => 'age', prolang => '14', provolatile => 's', + prorettype => 'interval', proargtypes => 'timestamptz', + prosrc => 'select pg_catalog.age(cast(current_date as timestamp with time zone), $1)' }, + +{ oid => '1388', + descr => 'convert timestamp with time zone to time with time zone', + proname => 'timetz', provolatile => 's', prorettype => 'timetz', + proargtypes => 'timestamptz', prosrc => 'timestamptz_timetz' }, + +{ oid => '1373', descr => 'finite date?', + proname => 'isfinite', prorettype => 'bool', proargtypes => 'date', + prosrc => 'date_finite' }, +{ oid => '1389', descr => 'finite timestamp?', + proname => 'isfinite', prorettype => 'bool', proargtypes => 'timestamptz', + prosrc => 'timestamp_finite' }, +{ oid => '1390', descr => 'finite interval?', + proname => 'isfinite', prorettype => 'bool', proargtypes => 'interval', + prosrc => 'interval_finite' }, + +{ oid => '1376', descr => 'factorial', + proname => 'factorial', prorettype => 'numeric', proargtypes => 'int8', + prosrc => 'numeric_fac' }, +{ oid => '1394', descr => 'absolute value', + proname => 'abs', prorettype => 'float4', proargtypes => 'float4', + prosrc => 'float4abs' }, +{ oid => '1395', descr => 'absolute value', + proname => 'abs', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'float8abs' }, +{ oid => '1396', descr => 'absolute value', + proname => 'abs', prorettype => 'int8', proargtypes => 'int8', + prosrc => 'int8abs' }, +{ oid => '1397', descr => 'absolute value', + proname => 'abs', prorettype => 'int4', proargtypes => 'int4', + prosrc => 'int4abs' }, +{ oid => '1398', descr => 'absolute value', + proname => 'abs', prorettype => 'int2', proargtypes => 'int2', + prosrc => 'int2abs' }, + +# OIDS 1400 - 1499 + +{ oid => '1400', descr => 'convert varchar to name', + proname => 'name', prorettype => 'name', proargtypes => 'varchar', + prosrc => 'text_name' }, +{ oid => '1401', descr => 'convert name to varchar', + proname => 'varchar', prorettype => 'varchar', proargtypes => 'name', + prosrc => 'name_text' }, + +{ oid => '1402', descr => 'current schema name', + proname => 'current_schema', provolatile => 's', prorettype => 'name', + proargtypes => '', prosrc => 'current_schema' }, +{ oid => '1403', descr => 'current schema search list', + proname => 'current_schemas', provolatile => 's', prorettype => '_name', + proargtypes => 'bool', prosrc => 'current_schemas' }, + +{ oid => '1404', descr => 'substitute portion of string', + proname => 'overlay', prorettype => 'text', + proargtypes => 'text text int4 int4', prosrc => 'textoverlay' }, +{ oid => '1405', descr => 'substitute portion of string', + proname => 'overlay', prorettype => 'text', proargtypes => 'text text int4', + prosrc => 'textoverlay_no_len' }, + +{ oid => '1406', descr => 'vertically aligned', + proname => 'isvertical', prorettype => 'bool', proargtypes => 'point point', + prosrc => 'point_vert' }, +{ oid => '1407', descr => 'horizontally aligned', + proname => 'ishorizontal', prorettype => 'bool', proargtypes => 'point point', + prosrc => 'point_horiz' }, +{ oid => '1408', descr => 'parallel', + proname => 'isparallel', prorettype => 'bool', proargtypes => 'lseg lseg', + prosrc => 'lseg_parallel' }, +{ oid => '1409', descr => 'perpendicular', + proname => 'isperp', prorettype => 'bool', proargtypes => 'lseg lseg', + prosrc => 'lseg_perp' }, +{ oid => '1410', descr => 'vertical', + proname => 'isvertical', prorettype => 'bool', proargtypes => 'lseg', + prosrc => 'lseg_vertical' }, +{ oid => '1411', descr => 'horizontal', + proname => 'ishorizontal', prorettype => 'bool', proargtypes => 'lseg', + prosrc => 'lseg_horizontal' }, +{ oid => '1412', descr => 'parallel', + proname => 'isparallel', prorettype => 'bool', proargtypes => 'line line', + prosrc => 'line_parallel' }, +{ oid => '1413', descr => 'perpendicular', + proname => 'isperp', prorettype => 'bool', proargtypes => 'line line', + prosrc => 'line_perp' }, +{ oid => '1414', descr => 'vertical', + proname => 'isvertical', prorettype => 'bool', proargtypes => 'line', + prosrc => 'line_vertical' }, +{ oid => '1415', descr => 'horizontal', + proname => 'ishorizontal', prorettype => 'bool', proargtypes => 'line', + prosrc => 'line_horizontal' }, +{ oid => '1416', descr => 'center of', + proname => 'point', prorettype => 'point', proargtypes => 'circle', + prosrc => 'circle_center' }, + +{ oid => '1419', descr => 'convert interval to time', + proname => 'time', prorettype => 'time', proargtypes => 'interval', + prosrc => 'interval_time' }, + +{ oid => '1421', descr => 'convert points to box', + proname => 'box', prorettype => 'box', proargtypes => 'point point', + prosrc => 'points_box' }, +{ oid => '1422', + proname => 'box_add', prorettype => 'box', proargtypes => 'box point', + prosrc => 'box_add' }, +{ oid => '1423', + proname => 'box_sub', prorettype => 'box', proargtypes => 'box point', + prosrc => 'box_sub' }, +{ oid => '1424', + proname => 'box_mul', prorettype => 'box', proargtypes => 'box point', + prosrc => 'box_mul' }, +{ oid => '1425', + proname => 'box_div', prorettype => 'box', proargtypes => 'box point', + prosrc => 'box_div' }, +{ oid => '1426', + proname => 'path_contain_pt', prolang => '14', prorettype => 'bool', + proargtypes => 'path point', prosrc => 'select pg_catalog.on_ppath($2, $1)' }, +{ oid => '1428', + proname => 'poly_contain_pt', prorettype => 'bool', + proargtypes => 'polygon point', prosrc => 'poly_contain_pt' }, +{ oid => '1429', + proname => 'pt_contained_poly', prorettype => 'bool', + proargtypes => 'point polygon', prosrc => 'pt_contained_poly' }, + +{ oid => '1430', descr => 'path closed?', + proname => 'isclosed', prorettype => 'bool', proargtypes => 'path', + prosrc => 'path_isclosed' }, +{ oid => '1431', descr => 'path open?', + proname => 'isopen', prorettype => 'bool', proargtypes => 'path', + prosrc => 'path_isopen' }, +{ oid => '1432', + proname => 'path_npoints', prorettype => 'int4', proargtypes => 'path', + prosrc => 'path_npoints' }, + +# pclose and popen might better be named close and open, but that crashes initdb. +# - thomas 97/04/20 +{ oid => '1433', descr => 'close path', + proname => 'pclose', prorettype => 'path', proargtypes => 'path', + prosrc => 'path_close' }, +{ oid => '1434', descr => 'open path', + proname => 'popen', prorettype => 'path', proargtypes => 'path', + prosrc => 'path_open' }, + +{ oid => '1435', + proname => 'path_add', prorettype => 'path', proargtypes => 'path path', + prosrc => 'path_add' }, +{ oid => '1436', + proname => 'path_add_pt', prorettype => 'path', proargtypes => 'path point', + prosrc => 'path_add_pt' }, +{ oid => '1437', + proname => 'path_sub_pt', prorettype => 'path', proargtypes => 'path point', + prosrc => 'path_sub_pt' }, +{ oid => '1438', + proname => 'path_mul_pt', prorettype => 'path', proargtypes => 'path point', + prosrc => 'path_mul_pt' }, +{ oid => '1439', + proname => 'path_div_pt', prorettype => 'path', proargtypes => 'path point', + prosrc => 'path_div_pt' }, + +{ oid => '1440', descr => 'convert x, y to point', + proname => 'point', prorettype => 'point', proargtypes => 'float8 float8', + prosrc => 'construct_point' }, +{ oid => '1441', + proname => 'point_add', prorettype => 'point', proargtypes => 'point point', + prosrc => 'point_add' }, +{ oid => '1442', + proname => 'point_sub', prorettype => 'point', proargtypes => 'point point', + prosrc => 'point_sub' }, +{ oid => '1443', + proname => 'point_mul', prorettype => 'point', proargtypes => 'point point', + prosrc => 'point_mul' }, +{ oid => '1444', + proname => 'point_div', prorettype => 'point', proargtypes => 'point point', + prosrc => 'point_div' }, + +{ oid => '1445', + proname => 'poly_npoints', prorettype => 'int4', proargtypes => 'polygon', + prosrc => 'poly_npoints' }, +{ oid => '1446', descr => 'convert polygon to bounding box', + proname => 'box', prorettype => 'box', proargtypes => 'polygon', + prosrc => 'poly_box' }, +{ oid => '1447', descr => 'convert polygon to path', + proname => 'path', prorettype => 'path', proargtypes => 'polygon', + prosrc => 'poly_path' }, +{ oid => '1448', descr => 'convert box to polygon', + proname => 'polygon', prorettype => 'polygon', proargtypes => 'box', + prosrc => 'box_poly' }, +{ oid => '1449', descr => 'convert path to polygon', + proname => 'polygon', prorettype => 'polygon', proargtypes => 'path', + prosrc => 'path_poly' }, + +{ oid => '1450', descr => 'I/O', + proname => 'circle_in', prorettype => 'circle', proargtypes => 'cstring', + prosrc => 'circle_in' }, +{ oid => '1451', descr => 'I/O', + proname => 'circle_out', prorettype => 'cstring', proargtypes => 'circle', + prosrc => 'circle_out' }, +{ oid => '1452', + proname => 'circle_same', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_same' }, +{ oid => '1453', + proname => 'circle_contain', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_contain' }, +{ oid => '1454', + proname => 'circle_left', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_left' }, +{ oid => '1455', + proname => 'circle_overleft', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_overleft' }, +{ oid => '1456', + proname => 'circle_overright', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_overright' }, +{ oid => '1457', + proname => 'circle_right', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_right' }, +{ oid => '1458', + proname => 'circle_contained', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_contained' }, +{ oid => '1459', + proname => 'circle_overlap', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_overlap' }, +{ oid => '1460', + proname => 'circle_below', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_below' }, +{ oid => '1461', + proname => 'circle_above', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_above' }, +{ oid => '1462', + proname => 'circle_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_eq' }, +{ oid => '1463', + proname => 'circle_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_ne' }, +{ oid => '1464', + proname => 'circle_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_lt' }, +{ oid => '1465', + proname => 'circle_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_gt' }, +{ oid => '1466', + proname => 'circle_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_le' }, +{ oid => '1467', + proname => 'circle_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_ge' }, +{ oid => '1468', descr => 'area of circle', + proname => 'area', prorettype => 'float8', proargtypes => 'circle', + prosrc => 'circle_area' }, +{ oid => '1469', descr => 'diameter of circle', + proname => 'diameter', prorettype => 'float8', proargtypes => 'circle', + prosrc => 'circle_diameter' }, +{ oid => '1470', descr => 'radius of circle', + proname => 'radius', prorettype => 'float8', proargtypes => 'circle', + prosrc => 'circle_radius' }, +{ oid => '1471', + proname => 'circle_distance', prorettype => 'float8', + proargtypes => 'circle circle', prosrc => 'circle_distance' }, +{ oid => '1472', + proname => 'circle_center', prorettype => 'point', proargtypes => 'circle', + prosrc => 'circle_center' }, +{ oid => '1473', descr => 'convert point and radius to circle', + proname => 'circle', prorettype => 'circle', proargtypes => 'point float8', + prosrc => 'cr_circle' }, +{ oid => '1474', descr => 'convert polygon to circle', + proname => 'circle', prorettype => 'circle', proargtypes => 'polygon', + prosrc => 'poly_circle' }, +{ oid => '1475', descr => 'convert vertex count and circle to polygon', + proname => 'polygon', prorettype => 'polygon', proargtypes => 'int4 circle', + prosrc => 'circle_poly' }, +{ oid => '1476', + proname => 'dist_pc', prorettype => 'float8', proargtypes => 'point circle', + prosrc => 'dist_pc' }, +{ oid => '1477', + proname => 'circle_contain_pt', prorettype => 'bool', + proargtypes => 'circle point', prosrc => 'circle_contain_pt' }, +{ oid => '1478', + proname => 'pt_contained_circle', prorettype => 'bool', + proargtypes => 'point circle', prosrc => 'pt_contained_circle' }, +{ oid => '4091', descr => 'convert point to empty box', + proname => 'box', prorettype => 'box', proargtypes => 'point', + prosrc => 'point_box' }, +{ oid => '1479', descr => 'convert box to circle', + proname => 'circle', prorettype => 'circle', proargtypes => 'box', + prosrc => 'box_circle' }, +{ oid => '1480', descr => 'convert circle to box', + proname => 'box', prorettype => 'box', proargtypes => 'circle', + prosrc => 'circle_box' }, +{ oid => '1481', descr => 'convert to tinterval', + proname => 'tinterval', prorettype => 'tinterval', + proargtypes => 'abstime abstime', prosrc => 'mktinterval' }, + +{ oid => '1482', + proname => 'lseg_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'lseg lseg', prosrc => 'lseg_ne' }, +{ oid => '1483', + proname => 'lseg_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'lseg lseg', prosrc => 'lseg_lt' }, +{ oid => '1484', + proname => 'lseg_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'lseg lseg', prosrc => 'lseg_le' }, +{ oid => '1485', + proname => 'lseg_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'lseg lseg', prosrc => 'lseg_gt' }, +{ oid => '1486', + proname => 'lseg_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'lseg lseg', prosrc => 'lseg_ge' }, +{ oid => '1487', + proname => 'lseg_length', prorettype => 'float8', proargtypes => 'lseg', + prosrc => 'lseg_length' }, +{ oid => '1488', + proname => 'close_ls', prorettype => 'point', proargtypes => 'line lseg', + prosrc => 'close_ls' }, +{ oid => '1489', + proname => 'close_lseg', prorettype => 'point', proargtypes => 'lseg lseg', + prosrc => 'close_lseg' }, + +{ oid => '1490', descr => 'I/O', + proname => 'line_in', prorettype => 'line', proargtypes => 'cstring', + prosrc => 'line_in' }, +{ oid => '1491', descr => 'I/O', + proname => 'line_out', prorettype => 'cstring', proargtypes => 'line', + prosrc => 'line_out' }, +{ oid => '1492', + proname => 'line_eq', prorettype => 'bool', proargtypes => 'line line', + prosrc => 'line_eq' }, +{ oid => '1493', descr => 'construct line from points', + proname => 'line', prorettype => 'line', proargtypes => 'point point', + prosrc => 'line_construct_pp' }, +{ oid => '1494', + proname => 'line_interpt', prorettype => 'point', proargtypes => 'line line', + prosrc => 'line_interpt' }, +{ oid => '1495', + proname => 'line_intersect', prorettype => 'bool', proargtypes => 'line line', + prosrc => 'line_intersect' }, +{ oid => '1496', + proname => 'line_parallel', prorettype => 'bool', proargtypes => 'line line', + prosrc => 'line_parallel' }, +{ oid => '1497', + proname => 'line_perp', prorettype => 'bool', proargtypes => 'line line', + prosrc => 'line_perp' }, +{ oid => '1498', + proname => 'line_vertical', prorettype => 'bool', proargtypes => 'line', + prosrc => 'line_vertical' }, +{ oid => '1499', + proname => 'line_horizontal', prorettype => 'bool', proargtypes => 'line', + prosrc => 'line_horizontal' }, + +# OIDS 1500 - 1599 + +{ oid => '1530', descr => 'distance between endpoints', + proname => 'length', prorettype => 'float8', proargtypes => 'lseg', + prosrc => 'lseg_length' }, +{ oid => '1531', descr => 'sum of path segments', + proname => 'length', prorettype => 'float8', proargtypes => 'path', + prosrc => 'path_length' }, + +{ oid => '1532', descr => 'center of', + proname => 'point', prorettype => 'point', proargtypes => 'lseg', + prosrc => 'lseg_center' }, +{ oid => '1533', descr => 'center of', + proname => 'point', prorettype => 'point', proargtypes => 'path', + prosrc => 'path_center' }, +{ oid => '1534', descr => 'center of', + proname => 'point', prorettype => 'point', proargtypes => 'box', + prosrc => 'box_center' }, +{ oid => '1540', descr => 'center of', + proname => 'point', prorettype => 'point', proargtypes => 'polygon', + prosrc => 'poly_center' }, +{ oid => '1541', descr => 'diagonal of', + proname => 'lseg', prorettype => 'lseg', proargtypes => 'box', + prosrc => 'box_diagonal' }, +{ oid => '1542', descr => 'center of', + proname => 'center', prorettype => 'point', proargtypes => 'box', + prosrc => 'box_center' }, +{ oid => '1543', descr => 'center of', + proname => 'center', prorettype => 'point', proargtypes => 'circle', + prosrc => 'circle_center' }, +{ oid => '1544', descr => 'convert circle to 12-vertex polygon', + proname => 'polygon', prolang => '14', prorettype => 'polygon', + proargtypes => 'circle', prosrc => 'select pg_catalog.polygon(12, $1)' }, +{ oid => '1545', descr => 'number of points', + proname => 'npoints', prorettype => 'int4', proargtypes => 'path', + prosrc => 'path_npoints' }, +{ oid => '1556', descr => 'number of points', + proname => 'npoints', prorettype => 'int4', proargtypes => 'polygon', + prosrc => 'poly_npoints' }, + +{ oid => '1564', descr => 'I/O', + proname => 'bit_in', prorettype => 'bit', proargtypes => 'cstring oid int4', + prosrc => 'bit_in' }, +{ oid => '1565', descr => 'I/O', + proname => 'bit_out', prorettype => 'cstring', proargtypes => 'bit', + prosrc => 'bit_out' }, +{ oid => '2919', descr => 'I/O typmod', + proname => 'bittypmodin', prorettype => 'int4', proargtypes => '_cstring', + prosrc => 'bittypmodin' }, +{ oid => '2920', descr => 'I/O typmod', + proname => 'bittypmodout', prorettype => 'cstring', proargtypes => 'int4', + prosrc => 'bittypmodout' }, + +{ oid => '1569', descr => 'matches LIKE expression', + proname => 'like', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'textlike' }, +{ oid => '1570', descr => 'does not match LIKE expression', + proname => 'notlike', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'textnlike' }, +{ oid => '1571', descr => 'matches LIKE expression', + proname => 'like', prorettype => 'bool', proargtypes => 'name text', + prosrc => 'namelike' }, +{ oid => '1572', descr => 'does not match LIKE expression', + proname => 'notlike', prorettype => 'bool', proargtypes => 'name text', + prosrc => 'namenlike' }, + +# SEQUENCE functions +{ oid => '1574', descr => 'sequence next value', + proname => 'nextval', provolatile => 'v', proparallel => 'u', + prorettype => 'int8', proargtypes => 'regclass', prosrc => 'nextval_oid' }, +{ oid => '1575', descr => 'sequence current value', + proname => 'currval', provolatile => 'v', proparallel => 'u', + prorettype => 'int8', proargtypes => 'regclass', prosrc => 'currval_oid' }, +{ oid => '1576', descr => 'set sequence value', + proname => 'setval', provolatile => 'v', proparallel => 'u', + prorettype => 'int8', proargtypes => 'regclass int8', + prosrc => 'setval_oid' }, +{ oid => '1765', descr => 'set sequence value and is_called status', + proname => 'setval', provolatile => 'v', proparallel => 'u', + prorettype => 'int8', proargtypes => 'regclass int8 bool', + prosrc => 'setval3_oid' }, +{ oid => '3078', + descr => 'sequence parameters, for use by information schema', + proname => 'pg_sequence_parameters', provolatile => 's', + prorettype => 'record', proargtypes => 'oid', + proallargtypes => '{oid,int8,int8,int8,int8,bool,int8,oid}', + proargmodes => '{i,o,o,o,o,o,o,o}', + proargnames => '{sequence_oid,start_value,minimum_value,maximum_value,increment,cycle_option,cache_size,data_type}', + prosrc => 'pg_sequence_parameters' }, +{ oid => '4032', descr => 'sequence last value', + proname => 'pg_sequence_last_value', provolatile => 'v', proparallel => 'u', + prorettype => 'int8', proargtypes => 'regclass', + prosrc => 'pg_sequence_last_value' }, + +{ oid => '1579', descr => 'I/O', + proname => 'varbit_in', prorettype => 'varbit', + proargtypes => 'cstring oid int4', prosrc => 'varbit_in' }, +{ oid => '1580', descr => 'I/O', + proname => 'varbit_out', prorettype => 'cstring', proargtypes => 'varbit', + prosrc => 'varbit_out' }, +{ oid => '2902', descr => 'I/O typmod', + proname => 'varbittypmodin', prorettype => 'int4', proargtypes => '_cstring', + prosrc => 'varbittypmodin' }, +{ oid => '2921', descr => 'I/O typmod', + proname => 'varbittypmodout', prorettype => 'cstring', proargtypes => 'int4', + prosrc => 'varbittypmodout' }, + +{ oid => '1581', + proname => 'biteq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bit bit', prosrc => 'biteq' }, +{ oid => '1582', + proname => 'bitne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bit bit', prosrc => 'bitne' }, +{ oid => '1592', + proname => 'bitge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bit bit', prosrc => 'bitge' }, +{ oid => '1593', + proname => 'bitgt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bit bit', prosrc => 'bitgt' }, +{ oid => '1594', + proname => 'bitle', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bit bit', prosrc => 'bitle' }, +{ oid => '1595', + proname => 'bitlt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bit bit', prosrc => 'bitlt' }, +{ oid => '1596', descr => 'less-equal-greater', + proname => 'bitcmp', prorettype => 'int4', proargtypes => 'bit bit', + prosrc => 'bitcmp' }, + +{ oid => '1598', descr => 'random value', + proname => 'random', provolatile => 'v', proparallel => 'r', + prorettype => 'float8', proargtypes => '', prosrc => 'drandom' }, +{ oid => '1599', descr => 'set random seed', + proname => 'setseed', provolatile => 'v', proparallel => 'r', + prorettype => 'void', proargtypes => 'float8', prosrc => 'setseed' }, + +# OIDS 1600 - 1699 + +{ oid => '1600', descr => 'arcsine', + proname => 'asin', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dasin' }, +{ oid => '1601', descr => 'arccosine', + proname => 'acos', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dacos' }, +{ oid => '1602', descr => 'arctangent', + proname => 'atan', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'datan' }, +{ oid => '1603', descr => 'arctangent, two arguments', + proname => 'atan2', prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'datan2' }, +{ oid => '1604', descr => 'sine', + proname => 'sin', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dsin' }, +{ oid => '1605', descr => 'cosine', + proname => 'cos', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dcos' }, +{ oid => '1606', descr => 'tangent', + proname => 'tan', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dtan' }, +{ oid => '1607', descr => 'cotangent', + proname => 'cot', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dcot' }, + +{ oid => '2731', descr => 'arcsine, degrees', + proname => 'asind', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dasind' }, +{ oid => '2732', descr => 'arccosine, degrees', + proname => 'acosd', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dacosd' }, +{ oid => '2733', descr => 'arctangent, degrees', + proname => 'atand', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'datand' }, +{ oid => '2734', descr => 'arctangent, two arguments, degrees', + proname => 'atan2d', prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'datan2d' }, +{ oid => '2735', descr => 'sine, degrees', + proname => 'sind', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dsind' }, +{ oid => '2736', descr => 'cosine, degrees', + proname => 'cosd', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dcosd' }, +{ oid => '2737', descr => 'tangent, degrees', + proname => 'tand', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dtand' }, +{ oid => '2738', descr => 'cotangent, degrees', + proname => 'cotd', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'dcotd' }, + +{ oid => '1608', descr => 'radians to degrees', + proname => 'degrees', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'degrees' }, +{ oid => '1609', descr => 'degrees to radians', + proname => 'radians', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'radians' }, +{ oid => '1610', descr => 'PI', + proname => 'pi', prorettype => 'float8', proargtypes => '', prosrc => 'dpi' }, + +{ oid => '1618', + proname => 'interval_mul', prorettype => 'interval', + proargtypes => 'interval float8', prosrc => 'interval_mul' }, + +{ oid => '1620', descr => 'convert first char to int4', + proname => 'ascii', prorettype => 'int4', proargtypes => 'text', + prosrc => 'ascii' }, +{ oid => '1621', descr => 'convert int4 to char', + proname => 'chr', prorettype => 'text', proargtypes => 'int4', + prosrc => 'chr' }, +{ oid => '1622', descr => 'replicate string n times', + proname => 'repeat', prorettype => 'text', proargtypes => 'text int4', + prosrc => 'repeat' }, + +{ oid => '1623', descr => 'convert SQL99 regexp pattern to POSIX style', + proname => 'similar_escape', proisstrict => 'f', prorettype => 'text', + proargtypes => 'text text', prosrc => 'similar_escape' }, + +{ oid => '1624', + proname => 'mul_d_interval', prorettype => 'interval', + proargtypes => 'float8 interval', prosrc => 'mul_d_interval' }, + +{ oid => '1631', + proname => 'bpcharlike', prorettype => 'bool', proargtypes => 'bpchar text', + prosrc => 'textlike' }, +{ oid => '1632', + proname => 'bpcharnlike', prorettype => 'bool', proargtypes => 'bpchar text', + prosrc => 'textnlike' }, + +{ oid => '1633', + proname => 'texticlike', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'texticlike' }, +{ oid => '1634', + proname => 'texticnlike', prorettype => 'bool', proargtypes => 'text text', + prosrc => 'texticnlike' }, +{ oid => '1635', + proname => 'nameiclike', prorettype => 'bool', proargtypes => 'name text', + prosrc => 'nameiclike' }, +{ oid => '1636', + proname => 'nameicnlike', prorettype => 'bool', proargtypes => 'name text', + prosrc => 'nameicnlike' }, +{ oid => '1637', descr => 'convert LIKE pattern to use backslash escapes', + proname => 'like_escape', prorettype => 'text', proargtypes => 'text text', + prosrc => 'like_escape' }, + +{ oid => '1656', + proname => 'bpcharicregexeq', prorettype => 'bool', + proargtypes => 'bpchar text', prosrc => 'texticregexeq' }, +{ oid => '1657', + proname => 'bpcharicregexne', prorettype => 'bool', + proargtypes => 'bpchar text', prosrc => 'texticregexne' }, +{ oid => '1658', + proname => 'bpcharregexeq', prorettype => 'bool', + proargtypes => 'bpchar text', prosrc => 'textregexeq' }, +{ oid => '1659', + proname => 'bpcharregexne', prorettype => 'bool', + proargtypes => 'bpchar text', prosrc => 'textregexne' }, +{ oid => '1660', + proname => 'bpchariclike', prorettype => 'bool', proargtypes => 'bpchar text', + prosrc => 'texticlike' }, +{ oid => '1661', + proname => 'bpcharicnlike', prorettype => 'bool', + proargtypes => 'bpchar text', prosrc => 'texticnlike' }, + +# Oracle Compatibility Related Functions - By Edmund Mergl +{ oid => '868', descr => 'position of substring', + proname => 'strpos', prorettype => 'int4', proargtypes => 'text text', + prosrc => 'textpos' }, +{ oid => '870', descr => 'lowercase', + proname => 'lower', prorettype => 'text', proargtypes => 'text', + prosrc => 'lower' }, +{ oid => '871', descr => 'uppercase', + proname => 'upper', prorettype => 'text', proargtypes => 'text', + prosrc => 'upper' }, +{ oid => '872', descr => 'capitalize each word', + proname => 'initcap', prorettype => 'text', proargtypes => 'text', + prosrc => 'initcap' }, +{ oid => '873', descr => 'left-pad string to length', + proname => 'lpad', prorettype => 'text', proargtypes => 'text int4 text', + prosrc => 'lpad' }, +{ oid => '874', descr => 'right-pad string to length', + proname => 'rpad', prorettype => 'text', proargtypes => 'text int4 text', + prosrc => 'rpad' }, +{ oid => '875', descr => 'trim selected characters from left end of string', + proname => 'ltrim', prorettype => 'text', proargtypes => 'text text', + prosrc => 'ltrim' }, +{ oid => '876', descr => 'trim selected characters from right end of string', + proname => 'rtrim', prorettype => 'text', proargtypes => 'text text', + prosrc => 'rtrim' }, +{ oid => '877', descr => 'extract portion of string', + proname => 'substr', prorettype => 'text', proargtypes => 'text int4 int4', + prosrc => 'text_substr' }, +{ oid => '878', descr => 'map a set of characters appearing in string', + proname => 'translate', prorettype => 'text', proargtypes => 'text text text', + prosrc => 'translate' }, +{ oid => '879', descr => 'left-pad string to length', + proname => 'lpad', prolang => '14', prorettype => 'text', + proargtypes => 'text int4', + prosrc => 'select pg_catalog.lpad($1, $2, \'\' \'\')' }, +{ oid => '880', descr => 'right-pad string to length', + proname => 'rpad', prolang => '14', prorettype => 'text', + proargtypes => 'text int4', + prosrc => 'select pg_catalog.rpad($1, $2, \'\' \'\')' }, +{ oid => '881', descr => 'trim spaces from left end of string', + proname => 'ltrim', prorettype => 'text', proargtypes => 'text', + prosrc => 'ltrim1' }, +{ oid => '882', descr => 'trim spaces from right end of string', + proname => 'rtrim', prorettype => 'text', proargtypes => 'text', + prosrc => 'rtrim1' }, +{ oid => '883', descr => 'extract portion of string', + proname => 'substr', prorettype => 'text', proargtypes => 'text int4', + prosrc => 'text_substr_no_len' }, +{ oid => '884', descr => 'trim selected characters from both ends of string', + proname => 'btrim', prorettype => 'text', proargtypes => 'text text', + prosrc => 'btrim' }, +{ oid => '885', descr => 'trim spaces from both ends of string', + proname => 'btrim', prorettype => 'text', proargtypes => 'text', + prosrc => 'btrim1' }, + +{ oid => '936', descr => 'extract portion of string', + proname => 'substring', prorettype => 'text', proargtypes => 'text int4 int4', + prosrc => 'text_substr' }, +{ oid => '937', descr => 'extract portion of string', + proname => 'substring', prorettype => 'text', proargtypes => 'text int4', + prosrc => 'text_substr_no_len' }, +{ oid => '2087', + descr => 'replace all occurrences in string of old_substr with new_substr', + proname => 'replace', prorettype => 'text', proargtypes => 'text text text', + prosrc => 'replace_text' }, +{ oid => '2284', descr => 'replace text using regexp', + proname => 'regexp_replace', prorettype => 'text', + proargtypes => 'text text text', prosrc => 'textregexreplace_noopt' }, +{ oid => '2285', descr => 'replace text using regexp', + proname => 'regexp_replace', prorettype => 'text', + proargtypes => 'text text text text', prosrc => 'textregexreplace' }, +{ oid => '3396', descr => 'find first match for regexp', + proname => 'regexp_match', prorettype => '_text', proargtypes => 'text text', + prosrc => 'regexp_match_no_flags' }, +{ oid => '3397', descr => 'find first match for regexp', + proname => 'regexp_match', prorettype => '_text', + proargtypes => 'text text text', prosrc => 'regexp_match' }, +{ oid => '2763', descr => 'find match(es) for regexp', + proname => 'regexp_matches', prorows => '1', proretset => 't', + prorettype => '_text', proargtypes => 'text text', + prosrc => 'regexp_matches_no_flags' }, +{ oid => '2764', descr => 'find match(es) for regexp', + proname => 'regexp_matches', prorows => '10', proretset => 't', + prorettype => '_text', proargtypes => 'text text text', + prosrc => 'regexp_matches' }, +{ oid => '2088', descr => 'split string by field_sep and return field_num', + proname => 'split_part', prorettype => 'text', + proargtypes => 'text text int4', prosrc => 'split_text' }, +{ oid => '2765', descr => 'split string by pattern', + proname => 'regexp_split_to_table', prorows => '1000', proretset => 't', + prorettype => 'text', proargtypes => 'text text', + prosrc => 'regexp_split_to_table_no_flags' }, +{ oid => '2766', descr => 'split string by pattern', + proname => 'regexp_split_to_table', prorows => '1000', proretset => 't', + prorettype => 'text', proargtypes => 'text text text', + prosrc => 'regexp_split_to_table' }, +{ oid => '2767', descr => 'split string by pattern', + proname => 'regexp_split_to_array', prorettype => '_text', + proargtypes => 'text text', prosrc => 'regexp_split_to_array_no_flags' }, +{ oid => '2768', descr => 'split string by pattern', + proname => 'regexp_split_to_array', prorettype => '_text', + proargtypes => 'text text text', prosrc => 'regexp_split_to_array' }, +{ oid => '2089', descr => 'convert int4 number to hex', + proname => 'to_hex', prorettype => 'text', proargtypes => 'int4', + prosrc => 'to_hex32' }, +{ oid => '2090', descr => 'convert int8 number to hex', + proname => 'to_hex', prorettype => 'text', proargtypes => 'int8', + prosrc => 'to_hex64' }, + +# for character set encoding support + +# return database encoding name +{ oid => '1039', descr => 'encoding name of current database', + proname => 'getdatabaseencoding', provolatile => 's', prorettype => 'name', + proargtypes => '', prosrc => 'getdatabaseencoding' }, + +# return client encoding name i.e. session encoding +{ oid => '810', descr => 'encoding name of current database', + proname => 'pg_client_encoding', provolatile => 's', prorettype => 'name', + proargtypes => '', prosrc => 'pg_client_encoding' }, + +{ oid => '1713', descr => 'length of string in specified encoding', + proname => 'length', provolatile => 's', prorettype => 'int4', + proargtypes => 'bytea name', prosrc => 'length_in_encoding' }, + +{ oid => '1714', + descr => 'convert string with specified source encoding name', + proname => 'convert_from', provolatile => 's', prorettype => 'text', + proargtypes => 'bytea name', prosrc => 'pg_convert_from' }, + +{ oid => '1717', + descr => 'convert string with specified destination encoding name', + proname => 'convert_to', provolatile => 's', prorettype => 'bytea', + proargtypes => 'text name', prosrc => 'pg_convert_to' }, + +{ oid => '1813', descr => 'convert string with specified encoding names', + proname => 'convert', provolatile => 's', prorettype => 'bytea', + proargtypes => 'bytea name name', prosrc => 'pg_convert' }, + +{ oid => '1264', descr => 'convert encoding name to encoding id', + proname => 'pg_char_to_encoding', provolatile => 's', prorettype => 'int4', + proargtypes => 'name', prosrc => 'PG_char_to_encoding' }, + +{ oid => '1597', descr => 'convert encoding id to encoding name', + proname => 'pg_encoding_to_char', provolatile => 's', prorettype => 'name', + proargtypes => 'int4', prosrc => 'PG_encoding_to_char' }, + +{ oid => '2319', + descr => 'maximum octet length of a character in given encoding', + proname => 'pg_encoding_max_length', prorettype => 'int4', + proargtypes => 'int4', prosrc => 'pg_encoding_max_length_sql' }, + +{ oid => '1638', + proname => 'oidgt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'oid oid', prosrc => 'oidgt' }, +{ oid => '1639', + proname => 'oidge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'oid oid', prosrc => 'oidge' }, + +# System-view support functions +{ oid => '1573', descr => 'source text of a rule', + proname => 'pg_get_ruledef', provolatile => 's', prorettype => 'text', + proargtypes => 'oid', prosrc => 'pg_get_ruledef' }, +{ oid => '1640', descr => 'select statement of a view', + proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r', + prorettype => 'text', proargtypes => 'text', + prosrc => 'pg_get_viewdef_name' }, +{ oid => '1641', descr => 'select statement of a view', + proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r', + prorettype => 'text', proargtypes => 'oid', prosrc => 'pg_get_viewdef' }, +{ oid => '1642', descr => 'role name by OID (with fallback)', + proname => 'pg_get_userbyid', provolatile => 's', prorettype => 'name', + proargtypes => 'oid', prosrc => 'pg_get_userbyid' }, +{ oid => '1643', descr => 'index description', + proname => 'pg_get_indexdef', provolatile => 's', prorettype => 'text', + proargtypes => 'oid', prosrc => 'pg_get_indexdef' }, +{ oid => '3415', descr => 'extended statistics object description', + proname => 'pg_get_statisticsobjdef', provolatile => 's', + prorettype => 'text', proargtypes => 'oid', + prosrc => 'pg_get_statisticsobjdef' }, +{ oid => '3352', descr => 'partition key description', + proname => 'pg_get_partkeydef', provolatile => 's', prorettype => 'text', + proargtypes => 'oid', prosrc => 'pg_get_partkeydef' }, +{ oid => '3408', descr => 'partition constraint description', + proname => 'pg_get_partition_constraintdef', provolatile => 's', + prorettype => 'text', proargtypes => 'oid', + prosrc => 'pg_get_partition_constraintdef' }, +{ oid => '1662', descr => 'trigger description', + proname => 'pg_get_triggerdef', provolatile => 's', prorettype => 'text', + proargtypes => 'oid', prosrc => 'pg_get_triggerdef' }, +{ oid => '1387', descr => 'constraint description', + proname => 'pg_get_constraintdef', provolatile => 's', prorettype => 'text', + proargtypes => 'oid', prosrc => 'pg_get_constraintdef' }, +{ oid => '1716', descr => 'deparse an encoded expression', + proname => 'pg_get_expr', provolatile => 's', prorettype => 'text', + proargtypes => 'pg_node_tree oid', prosrc => 'pg_get_expr' }, +{ oid => '1665', descr => 'name of sequence for a serial column', + proname => 'pg_get_serial_sequence', provolatile => 's', prorettype => 'text', + proargtypes => 'text text', prosrc => 'pg_get_serial_sequence' }, +{ oid => '2098', descr => 'definition of a function', + proname => 'pg_get_functiondef', provolatile => 's', prorettype => 'text', + proargtypes => 'oid', prosrc => 'pg_get_functiondef' }, +{ oid => '2162', descr => 'argument list of a function', + proname => 'pg_get_function_arguments', provolatile => 's', + prorettype => 'text', proargtypes => 'oid', + prosrc => 'pg_get_function_arguments' }, +{ oid => '2232', descr => 'identity argument list of a function', + proname => 'pg_get_function_identity_arguments', provolatile => 's', + prorettype => 'text', proargtypes => 'oid', + prosrc => 'pg_get_function_identity_arguments' }, +{ oid => '2165', descr => 'result type of a function', + proname => 'pg_get_function_result', provolatile => 's', prorettype => 'text', + proargtypes => 'oid', prosrc => 'pg_get_function_result' }, +{ oid => '3808', descr => 'function argument default', + proname => 'pg_get_function_arg_default', provolatile => 's', + prorettype => 'text', proargtypes => 'oid int4', + prosrc => 'pg_get_function_arg_default' }, + +{ oid => '1686', descr => 'list of SQL keywords', + proname => 'pg_get_keywords', procost => '10', prorows => '400', + proretset => 't', provolatile => 's', prorettype => 'record', + proargtypes => '', proallargtypes => '{text,char,text}', + proargmodes => '{o,o,o}', proargnames => '{word,catcode,catdesc}', + prosrc => 'pg_get_keywords' }, + +{ oid => '2289', descr => 'convert generic options array to name/value table', + proname => 'pg_options_to_table', prorows => '3', proretset => 't', + provolatile => 's', prorettype => 'record', proargtypes => '_text', + proallargtypes => '{_text,text,text}', proargmodes => '{i,o,o}', + proargnames => '{options_array,option_name,option_value}', + prosrc => 'pg_options_to_table' }, + +{ oid => '1619', descr => 'type of the argument', + proname => 'pg_typeof', proisstrict => 'f', provolatile => 's', + prorettype => 'regtype', proargtypes => 'any', prosrc => 'pg_typeof' }, +{ oid => '3162', + descr => 'collation of the argument; implementation of the COLLATION FOR expression', + proname => 'pg_collation_for', proisstrict => 'f', provolatile => 's', + prorettype => 'text', proargtypes => 'any', prosrc => 'pg_collation_for' }, + +{ oid => '3842', descr => 'is a relation insertable/updatable/deletable', + proname => 'pg_relation_is_updatable', procost => '10', provolatile => 's', + prorettype => 'int4', proargtypes => 'regclass bool', + prosrc => 'pg_relation_is_updatable' }, +{ oid => '3843', descr => 'is a column updatable', + proname => 'pg_column_is_updatable', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'regclass int2 bool', + prosrc => 'pg_column_is_updatable' }, + +{ oid => '6120', descr => 'oid of replica identity index if any', + proname => 'pg_get_replica_identity_index', procost => '10', + provolatile => 's', prorettype => 'regclass', proargtypes => 'regclass', + prosrc => 'pg_get_replica_identity_index' }, + +# Deferrable unique constraint trigger +{ oid => '1250', descr => 'deferred UNIQUE constraint check', + proname => 'unique_key_recheck', provolatile => 'v', prorettype => 'trigger', + proargtypes => '', prosrc => 'unique_key_recheck' }, + +# Generic referential integrity constraint triggers +{ oid => '1644', descr => 'referential integrity FOREIGN KEY ... REFERENCES', + proname => 'RI_FKey_check_ins', provolatile => 'v', prorettype => 'trigger', + proargtypes => '', prosrc => 'RI_FKey_check_ins' }, +{ oid => '1645', descr => 'referential integrity FOREIGN KEY ... REFERENCES', + proname => 'RI_FKey_check_upd', provolatile => 'v', prorettype => 'trigger', + proargtypes => '', prosrc => 'RI_FKey_check_upd' }, +{ oid => '1646', descr => 'referential integrity ON DELETE CASCADE', + proname => 'RI_FKey_cascade_del', provolatile => 'v', prorettype => 'trigger', + proargtypes => '', prosrc => 'RI_FKey_cascade_del' }, +{ oid => '1647', descr => 'referential integrity ON UPDATE CASCADE', + proname => 'RI_FKey_cascade_upd', provolatile => 'v', prorettype => 'trigger', + proargtypes => '', prosrc => 'RI_FKey_cascade_upd' }, +{ oid => '1648', descr => 'referential integrity ON DELETE RESTRICT', + proname => 'RI_FKey_restrict_del', provolatile => 'v', + prorettype => 'trigger', proargtypes => '', + prosrc => 'RI_FKey_restrict_del' }, +{ oid => '1649', descr => 'referential integrity ON UPDATE RESTRICT', + proname => 'RI_FKey_restrict_upd', provolatile => 'v', + prorettype => 'trigger', proargtypes => '', + prosrc => 'RI_FKey_restrict_upd' }, +{ oid => '1650', descr => 'referential integrity ON DELETE SET NULL', + proname => 'RI_FKey_setnull_del', provolatile => 'v', prorettype => 'trigger', + proargtypes => '', prosrc => 'RI_FKey_setnull_del' }, +{ oid => '1651', descr => 'referential integrity ON UPDATE SET NULL', + proname => 'RI_FKey_setnull_upd', provolatile => 'v', prorettype => 'trigger', + proargtypes => '', prosrc => 'RI_FKey_setnull_upd' }, +{ oid => '1652', descr => 'referential integrity ON DELETE SET DEFAULT', + proname => 'RI_FKey_setdefault_del', provolatile => 'v', + prorettype => 'trigger', proargtypes => '', + prosrc => 'RI_FKey_setdefault_del' }, +{ oid => '1653', descr => 'referential integrity ON UPDATE SET DEFAULT', + proname => 'RI_FKey_setdefault_upd', provolatile => 'v', + prorettype => 'trigger', proargtypes => '', + prosrc => 'RI_FKey_setdefault_upd' }, +{ oid => '1654', descr => 'referential integrity ON DELETE NO ACTION', + proname => 'RI_FKey_noaction_del', provolatile => 'v', + prorettype => 'trigger', proargtypes => '', + prosrc => 'RI_FKey_noaction_del' }, +{ oid => '1655', descr => 'referential integrity ON UPDATE NO ACTION', + proname => 'RI_FKey_noaction_upd', provolatile => 'v', + prorettype => 'trigger', proargtypes => '', + prosrc => 'RI_FKey_noaction_upd' }, + +{ oid => '1666', + proname => 'varbiteq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'varbit varbit', prosrc => 'biteq' }, +{ oid => '1667', + proname => 'varbitne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'varbit varbit', prosrc => 'bitne' }, +{ oid => '1668', + proname => 'varbitge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'varbit varbit', prosrc => 'bitge' }, +{ oid => '1669', + proname => 'varbitgt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'varbit varbit', prosrc => 'bitgt' }, +{ oid => '1670', + proname => 'varbitle', proleakproof => 't', prorettype => 'bool', + proargtypes => 'varbit varbit', prosrc => 'bitle' }, +{ oid => '1671', + proname => 'varbitlt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'varbit varbit', prosrc => 'bitlt' }, +{ oid => '1672', descr => 'less-equal-greater', + proname => 'varbitcmp', prorettype => 'int4', proargtypes => 'varbit varbit', + prosrc => 'bitcmp' }, + +# avoid the C names bitand and bitor, since they are C++ keywords +{ oid => '1673', + proname => 'bitand', prorettype => 'bit', proargtypes => 'bit bit', + prosrc => 'bit_and' }, +{ oid => '1674', + proname => 'bitor', prorettype => 'bit', proargtypes => 'bit bit', + prosrc => 'bit_or' }, +{ oid => '1675', + proname => 'bitxor', prorettype => 'bit', proargtypes => 'bit bit', + prosrc => 'bitxor' }, +{ oid => '1676', + proname => 'bitnot', prorettype => 'bit', proargtypes => 'bit', + prosrc => 'bitnot' }, +{ oid => '1677', + proname => 'bitshiftleft', prorettype => 'bit', proargtypes => 'bit int4', + prosrc => 'bitshiftleft' }, +{ oid => '1678', + proname => 'bitshiftright', prorettype => 'bit', proargtypes => 'bit int4', + prosrc => 'bitshiftright' }, +{ oid => '1679', + proname => 'bitcat', prorettype => 'varbit', proargtypes => 'varbit varbit', + prosrc => 'bitcat' }, +{ oid => '1680', descr => 'extract portion of bitstring', + proname => 'substring', prorettype => 'bit', proargtypes => 'bit int4 int4', + prosrc => 'bitsubstr' }, +{ oid => '1681', descr => 'bitstring length', + proname => 'length', prorettype => 'int4', proargtypes => 'bit', + prosrc => 'bitlength' }, +{ oid => '1682', descr => 'octet length', + proname => 'octet_length', prorettype => 'int4', proargtypes => 'bit', + prosrc => 'bitoctetlength' }, +{ oid => '1683', descr => 'convert int4 to bitstring', + proname => 'bit', prorettype => 'bit', proargtypes => 'int4 int4', + prosrc => 'bitfromint4' }, +{ oid => '1684', descr => 'convert bitstring to int4', + proname => 'int4', prorettype => 'int4', proargtypes => 'bit', + prosrc => 'bittoint4' }, + +{ oid => '1685', descr => 'adjust bit() to typmod length', + proname => 'bit', prorettype => 'bit', proargtypes => 'bit int4 bool', + prosrc => 'bit' }, +{ oid => '3158', descr => 'transform a varbit length coercion', + proname => 'varbit_transform', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'varbit_transform' }, +{ oid => '1687', descr => 'adjust varbit() to typmod length', + proname => 'varbit', protransform => 'varbit_transform', + prorettype => 'varbit', proargtypes => 'varbit int4 bool', + prosrc => 'varbit' }, + +{ oid => '1698', descr => 'position of sub-bitstring', + proname => 'position', prorettype => 'int4', proargtypes => 'bit bit', + prosrc => 'bitposition' }, +{ oid => '1699', descr => 'extract portion of bitstring', + proname => 'substring', prorettype => 'bit', proargtypes => 'bit int4', + prosrc => 'bitsubstr_no_len' }, + +{ oid => '3030', descr => 'substitute portion of bitstring', + proname => 'overlay', prorettype => 'bit', proargtypes => 'bit bit int4 int4', + prosrc => 'bitoverlay' }, +{ oid => '3031', descr => 'substitute portion of bitstring', + proname => 'overlay', prorettype => 'bit', proargtypes => 'bit bit int4', + prosrc => 'bitoverlay_no_len' }, +{ oid => '3032', descr => 'get bit', + proname => 'get_bit', prorettype => 'int4', proargtypes => 'bit int4', + prosrc => 'bitgetbit' }, +{ oid => '3033', descr => 'set bit', + proname => 'set_bit', prorettype => 'bit', proargtypes => 'bit int4 int4', + prosrc => 'bitsetbit' }, + +# for macaddr type support +{ oid => '436', descr => 'I/O', + proname => 'macaddr_in', prorettype => 'macaddr', proargtypes => 'cstring', + prosrc => 'macaddr_in' }, +{ oid => '437', descr => 'I/O', + proname => 'macaddr_out', prorettype => 'cstring', proargtypes => 'macaddr', + prosrc => 'macaddr_out' }, + +{ oid => '753', descr => 'MACADDR manufacturer fields', + proname => 'trunc', prorettype => 'macaddr', proargtypes => 'macaddr', + prosrc => 'macaddr_trunc' }, + +{ oid => '830', + proname => 'macaddr_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr macaddr', prosrc => 'macaddr_eq' }, +{ oid => '831', + proname => 'macaddr_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr macaddr', prosrc => 'macaddr_lt' }, +{ oid => '832', + proname => 'macaddr_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr macaddr', prosrc => 'macaddr_le' }, +{ oid => '833', + proname => 'macaddr_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr macaddr', prosrc => 'macaddr_gt' }, +{ oid => '834', + proname => 'macaddr_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr macaddr', prosrc => 'macaddr_ge' }, +{ oid => '835', + proname => 'macaddr_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr macaddr', prosrc => 'macaddr_ne' }, +{ oid => '836', descr => 'less-equal-greater', + proname => 'macaddr_cmp', prorettype => 'int4', + proargtypes => 'macaddr macaddr', prosrc => 'macaddr_cmp' }, +{ oid => '3144', + proname => 'macaddr_not', prorettype => 'macaddr', proargtypes => 'macaddr', + prosrc => 'macaddr_not' }, +{ oid => '3145', + proname => 'macaddr_and', prorettype => 'macaddr', + proargtypes => 'macaddr macaddr', prosrc => 'macaddr_and' }, +{ oid => '3146', + proname => 'macaddr_or', prorettype => 'macaddr', + proargtypes => 'macaddr macaddr', prosrc => 'macaddr_or' }, +{ oid => '3359', descr => 'sort support', + proname => 'macaddr_sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'macaddr_sortsupport' }, + +# for macaddr8 type support +{ oid => '4110', descr => 'I/O', + proname => 'macaddr8_in', prorettype => 'macaddr8', proargtypes => 'cstring', + prosrc => 'macaddr8_in' }, +{ oid => '4111', descr => 'I/O', + proname => 'macaddr8_out', prorettype => 'cstring', proargtypes => 'macaddr8', + prosrc => 'macaddr8_out' }, + +{ oid => '4112', descr => 'MACADDR8 manufacturer fields', + proname => 'trunc', prorettype => 'macaddr8', proargtypes => 'macaddr8', + prosrc => 'macaddr8_trunc' }, + +{ oid => '4113', + proname => 'macaddr8_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_eq' }, +{ oid => '4114', + proname => 'macaddr8_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_lt' }, +{ oid => '4115', + proname => 'macaddr8_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_le' }, +{ oid => '4116', + proname => 'macaddr8_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_gt' }, +{ oid => '4117', + proname => 'macaddr8_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_ge' }, +{ oid => '4118', + proname => 'macaddr8_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_ne' }, +{ oid => '4119', descr => 'less-equal-greater', + proname => 'macaddr8_cmp', prorettype => 'int4', + proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_cmp' }, +{ oid => '4120', + proname => 'macaddr8_not', prorettype => 'macaddr8', + proargtypes => 'macaddr8', prosrc => 'macaddr8_not' }, +{ oid => '4121', + proname => 'macaddr8_and', prorettype => 'macaddr8', + proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_and' }, +{ oid => '4122', + proname => 'macaddr8_or', prorettype => 'macaddr8', + proargtypes => 'macaddr8 macaddr8', prosrc => 'macaddr8_or' }, +{ oid => '4123', descr => 'convert macaddr to macaddr8', + proname => 'macaddr8', prorettype => 'macaddr8', proargtypes => 'macaddr', + prosrc => 'macaddrtomacaddr8' }, +{ oid => '4124', descr => 'convert macaddr8 to macaddr', + proname => 'macaddr', prorettype => 'macaddr', proargtypes => 'macaddr8', + prosrc => 'macaddr8tomacaddr' }, +{ oid => '4125', descr => 'set 7th bit in macaddr8', + proname => 'macaddr8_set7bit', prorettype => 'macaddr8', + proargtypes => 'macaddr8', prosrc => 'macaddr8_set7bit' }, + +# for inet type support +{ oid => '910', descr => 'I/O', + proname => 'inet_in', prorettype => 'inet', proargtypes => 'cstring', + prosrc => 'inet_in' }, +{ oid => '911', descr => 'I/O', + proname => 'inet_out', prorettype => 'cstring', proargtypes => 'inet', + prosrc => 'inet_out' }, + +# for cidr type support +{ oid => '1267', descr => 'I/O', + proname => 'cidr_in', prorettype => 'cidr', proargtypes => 'cstring', + prosrc => 'cidr_in' }, +{ oid => '1427', descr => 'I/O', + proname => 'cidr_out', prorettype => 'cstring', proargtypes => 'cidr', + prosrc => 'cidr_out' }, + +# these are used for both inet and cidr +{ oid => '920', + proname => 'network_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'inet inet', prosrc => 'network_eq' }, +{ oid => '921', + proname => 'network_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'inet inet', prosrc => 'network_lt' }, +{ oid => '922', + proname => 'network_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'inet inet', prosrc => 'network_le' }, +{ oid => '923', + proname => 'network_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'inet inet', prosrc => 'network_gt' }, +{ oid => '924', + proname => 'network_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'inet inet', prosrc => 'network_ge' }, +{ oid => '925', + proname => 'network_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'inet inet', prosrc => 'network_ne' }, +{ oid => '3562', descr => 'larger of two', + proname => 'network_larger', prorettype => 'inet', proargtypes => 'inet inet', + prosrc => 'network_larger' }, +{ oid => '3563', descr => 'smaller of two', + proname => 'network_smaller', prorettype => 'inet', + proargtypes => 'inet inet', prosrc => 'network_smaller' }, +{ oid => '926', descr => 'less-equal-greater', + proname => 'network_cmp', prorettype => 'int4', proargtypes => 'inet inet', + prosrc => 'network_cmp' }, +{ oid => '927', + proname => 'network_sub', prorettype => 'bool', proargtypes => 'inet inet', + prosrc => 'network_sub' }, +{ oid => '928', + proname => 'network_subeq', prorettype => 'bool', proargtypes => 'inet inet', + prosrc => 'network_subeq' }, +{ oid => '929', + proname => 'network_sup', prorettype => 'bool', proargtypes => 'inet inet', + prosrc => 'network_sup' }, +{ oid => '930', + proname => 'network_supeq', prorettype => 'bool', proargtypes => 'inet inet', + prosrc => 'network_supeq' }, +{ oid => '3551', + proname => 'network_overlap', prorettype => 'bool', + proargtypes => 'inet inet', prosrc => 'network_overlap' }, + +# inet/cidr functions +{ oid => '598', descr => 'abbreviated display of inet value', + proname => 'abbrev', prorettype => 'text', proargtypes => 'inet', + prosrc => 'inet_abbrev' }, +{ oid => '599', descr => 'abbreviated display of cidr value', + proname => 'abbrev', prorettype => 'text', proargtypes => 'cidr', + prosrc => 'cidr_abbrev' }, +{ oid => '605', descr => 'change netmask of inet', + proname => 'set_masklen', prorettype => 'inet', proargtypes => 'inet int4', + prosrc => 'inet_set_masklen' }, +{ oid => '635', descr => 'change netmask of cidr', + proname => 'set_masklen', prorettype => 'cidr', proargtypes => 'cidr int4', + prosrc => 'cidr_set_masklen' }, +{ oid => '711', descr => 'address family (4 for IPv4, 6 for IPv6)', + proname => 'family', prorettype => 'int4', proargtypes => 'inet', + prosrc => 'network_family' }, +{ oid => '683', descr => 'network part of address', + proname => 'network', prorettype => 'cidr', proargtypes => 'inet', + prosrc => 'network_network' }, +{ oid => '696', descr => 'netmask of address', + proname => 'netmask', prorettype => 'inet', proargtypes => 'inet', + prosrc => 'network_netmask' }, +{ oid => '697', descr => 'netmask length', + proname => 'masklen', prorettype => 'int4', proargtypes => 'inet', + prosrc => 'network_masklen' }, +{ oid => '698', descr => 'broadcast address of network', + proname => 'broadcast', prorettype => 'inet', proargtypes => 'inet', + prosrc => 'network_broadcast' }, +{ oid => '699', descr => 'show address octets only', + proname => 'host', prorettype => 'text', proargtypes => 'inet', + prosrc => 'network_host' }, +{ oid => '730', descr => 'show all parts of inet/cidr value', + proname => 'text', prorettype => 'text', proargtypes => 'inet', + prosrc => 'network_show' }, +{ oid => '1362', descr => 'hostmask of address', + proname => 'hostmask', prorettype => 'inet', proargtypes => 'inet', + prosrc => 'network_hostmask' }, +{ oid => '1715', descr => 'convert inet to cidr', + proname => 'cidr', prorettype => 'cidr', proargtypes => 'inet', + prosrc => 'inet_to_cidr' }, + +{ oid => '2196', descr => 'inet address of the client', + proname => 'inet_client_addr', proisstrict => 'f', provolatile => 's', + proparallel => 'r', prorettype => 'inet', proargtypes => '', + prosrc => 'inet_client_addr' }, +{ oid => '2197', descr => 'client\'s port number for this connection', + proname => 'inet_client_port', proisstrict => 'f', provolatile => 's', + proparallel => 'r', prorettype => 'int4', proargtypes => '', + prosrc => 'inet_client_port' }, +{ oid => '2198', descr => 'inet address of the server', + proname => 'inet_server_addr', proisstrict => 'f', provolatile => 's', + prorettype => 'inet', proargtypes => '', prosrc => 'inet_server_addr' }, +{ oid => '2199', descr => 'server\'s port number for this connection', + proname => 'inet_server_port', proisstrict => 'f', provolatile => 's', + prorettype => 'int4', proargtypes => '', prosrc => 'inet_server_port' }, + +{ oid => '2627', + proname => 'inetnot', prorettype => 'inet', proargtypes => 'inet', + prosrc => 'inetnot' }, +{ oid => '2628', + proname => 'inetand', prorettype => 'inet', proargtypes => 'inet inet', + prosrc => 'inetand' }, +{ oid => '2629', + proname => 'inetor', prorettype => 'inet', proargtypes => 'inet inet', + prosrc => 'inetor' }, +{ oid => '2630', + proname => 'inetpl', prorettype => 'inet', proargtypes => 'inet int8', + prosrc => 'inetpl' }, +{ oid => '2631', + proname => 'int8pl_inet', prolang => '14', prorettype => 'inet', + proargtypes => 'int8 inet', prosrc => 'select $2 + $1' }, +{ oid => '2632', + proname => 'inetmi_int8', prorettype => 'inet', proargtypes => 'inet int8', + prosrc => 'inetmi_int8' }, +{ oid => '2633', + proname => 'inetmi', prorettype => 'int8', proargtypes => 'inet inet', + prosrc => 'inetmi' }, +{ oid => '4071', descr => 'are the addresses from the same family?', + proname => 'inet_same_family', prorettype => 'bool', + proargtypes => 'inet inet', prosrc => 'inet_same_family' }, +{ oid => '4063', + descr => 'the smallest network which includes both of the given networks', + proname => 'inet_merge', prorettype => 'cidr', proargtypes => 'inet inet', + prosrc => 'inet_merge' }, + +# GiST support for inet and cidr +{ oid => '3553', descr => 'GiST support', + proname => 'inet_gist_consistent', prorettype => 'bool', + proargtypes => 'internal inet int2 oid internal', + prosrc => 'inet_gist_consistent' }, +{ oid => '3554', descr => 'GiST support', + proname => 'inet_gist_union', prorettype => 'inet', + proargtypes => 'internal internal', prosrc => 'inet_gist_union' }, +{ oid => '3555', descr => 'GiST support', + proname => 'inet_gist_compress', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'inet_gist_compress' }, +{ oid => '3573', descr => 'GiST support', + proname => 'inet_gist_fetch', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'inet_gist_fetch' }, +{ oid => '3557', descr => 'GiST support', + proname => 'inet_gist_penalty', prorettype => 'internal', + proargtypes => 'internal internal internal', prosrc => 'inet_gist_penalty' }, +{ oid => '3558', descr => 'GiST support', + proname => 'inet_gist_picksplit', prorettype => 'internal', + proargtypes => 'internal internal', prosrc => 'inet_gist_picksplit' }, +{ oid => '3559', descr => 'GiST support', + proname => 'inet_gist_same', prorettype => 'internal', + proargtypes => 'inet inet internal', prosrc => 'inet_gist_same' }, + +# SP-GiST support for inet and cidr +{ oid => '3795', descr => 'SP-GiST support', + proname => 'inet_spg_config', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'inet_spg_config' }, +{ oid => '3796', descr => 'SP-GiST support', + proname => 'inet_spg_choose', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'inet_spg_choose' }, +{ oid => '3797', descr => 'SP-GiST support', + proname => 'inet_spg_picksplit', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'inet_spg_picksplit' }, +{ oid => '3798', descr => 'SP-GiST support', + proname => 'inet_spg_inner_consistent', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'inet_spg_inner_consistent' }, +{ oid => '3799', descr => 'SP-GiST support', + proname => 'inet_spg_leaf_consistent', prorettype => 'bool', + proargtypes => 'internal internal', prosrc => 'inet_spg_leaf_consistent' }, + +# Selectivity estimation for inet and cidr +{ oid => '3560', descr => 'restriction selectivity for network operators', + proname => 'networksel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'networksel' }, +{ oid => '3561', descr => 'join selectivity for network operators', + proname => 'networkjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'networkjoinsel' }, + +{ oid => '1690', + proname => 'time_mi_time', prorettype => 'interval', + proargtypes => 'time time', prosrc => 'time_mi_time' }, + +{ oid => '1691', + proname => 'boolle', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bool bool', prosrc => 'boolle' }, +{ oid => '1692', + proname => 'boolge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bool bool', prosrc => 'boolge' }, +{ oid => '1693', descr => 'less-equal-greater', + proname => 'btboolcmp', prorettype => 'int4', proargtypes => 'bool bool', + prosrc => 'btboolcmp' }, + +{ oid => '1688', descr => 'hash', + proname => 'time_hash', prorettype => 'int4', proargtypes => 'time', + prosrc => 'time_hash' }, +{ oid => '3409', descr => 'hash', + proname => 'time_hash_extended', prorettype => 'int8', + proargtypes => 'time int8', prosrc => 'time_hash_extended' }, +{ oid => '1696', descr => 'hash', + proname => 'timetz_hash', prorettype => 'int4', proargtypes => 'timetz', + prosrc => 'timetz_hash' }, +{ oid => '3410', descr => 'hash', + proname => 'timetz_hash_extended', prorettype => 'int8', + proargtypes => 'timetz int8', prosrc => 'timetz_hash_extended' }, +{ oid => '1697', descr => 'hash', + proname => 'interval_hash', prorettype => 'int4', proargtypes => 'interval', + prosrc => 'interval_hash' }, +{ oid => '3418', descr => 'hash', + proname => 'interval_hash_extended', prorettype => 'int8', + proargtypes => 'interval int8', prosrc => 'interval_hash_extended' }, + +# OID's 1700 - 1799 NUMERIC data type + +{ oid => '1701', descr => 'I/O', + proname => 'numeric_in', prorettype => 'numeric', + proargtypes => 'cstring oid int4', prosrc => 'numeric_in' }, +{ oid => '1702', descr => 'I/O', + proname => 'numeric_out', prorettype => 'cstring', proargtypes => 'numeric', + prosrc => 'numeric_out' }, +{ oid => '2917', descr => 'I/O typmod', + proname => 'numerictypmodin', prorettype => 'int4', proargtypes => '_cstring', + prosrc => 'numerictypmodin' }, +{ oid => '2918', descr => 'I/O typmod', + proname => 'numerictypmodout', prorettype => 'cstring', proargtypes => 'int4', + prosrc => 'numerictypmodout' }, +{ oid => '3157', descr => 'transform a numeric length coercion', + proname => 'numeric_transform', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'numeric_transform' }, +{ oid => '1703', descr => 'adjust numeric to typmod precision/scale', + proname => 'numeric', protransform => 'numeric_transform', + prorettype => 'numeric', proargtypes => 'numeric int4', prosrc => 'numeric' }, +{ oid => '1704', + proname => 'numeric_abs', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_abs' }, +{ oid => '1705', descr => 'absolute value', + proname => 'abs', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_abs' }, +{ oid => '1706', descr => 'sign of value', + proname => 'sign', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_sign' }, +{ oid => '1707', descr => 'value rounded to \'scale\'', + proname => 'round', prorettype => 'numeric', proargtypes => 'numeric int4', + prosrc => 'numeric_round' }, +{ oid => '1708', descr => 'value rounded to \'scale\' of zero', + proname => 'round', prolang => '14', prorettype => 'numeric', + proargtypes => 'numeric', prosrc => 'select pg_catalog.round($1,0)' }, +{ oid => '1709', descr => 'value truncated to \'scale\'', + proname => 'trunc', prorettype => 'numeric', proargtypes => 'numeric int4', + prosrc => 'numeric_trunc' }, +{ oid => '1710', descr => 'value truncated to \'scale\' of zero', + proname => 'trunc', prolang => '14', prorettype => 'numeric', + proargtypes => 'numeric', prosrc => 'select pg_catalog.trunc($1,0)' }, +{ oid => '1711', descr => 'nearest integer >= value', + proname => 'ceil', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_ceil' }, +{ oid => '2167', descr => 'nearest integer >= value', + proname => 'ceiling', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_ceil' }, +{ oid => '1712', descr => 'nearest integer <= value', + proname => 'floor', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_floor' }, +{ oid => '1718', + proname => 'numeric_eq', prorettype => 'bool', + proargtypes => 'numeric numeric', prosrc => 'numeric_eq' }, +{ oid => '1719', + proname => 'numeric_ne', prorettype => 'bool', + proargtypes => 'numeric numeric', prosrc => 'numeric_ne' }, +{ oid => '1720', + proname => 'numeric_gt', prorettype => 'bool', + proargtypes => 'numeric numeric', prosrc => 'numeric_gt' }, +{ oid => '1721', + proname => 'numeric_ge', prorettype => 'bool', + proargtypes => 'numeric numeric', prosrc => 'numeric_ge' }, +{ oid => '1722', + proname => 'numeric_lt', prorettype => 'bool', + proargtypes => 'numeric numeric', prosrc => 'numeric_lt' }, +{ oid => '1723', + proname => 'numeric_le', prorettype => 'bool', + proargtypes => 'numeric numeric', prosrc => 'numeric_le' }, +{ oid => '1724', + proname => 'numeric_add', prorettype => 'numeric', + proargtypes => 'numeric numeric', prosrc => 'numeric_add' }, +{ oid => '1725', + proname => 'numeric_sub', prorettype => 'numeric', + proargtypes => 'numeric numeric', prosrc => 'numeric_sub' }, +{ oid => '1726', + proname => 'numeric_mul', prorettype => 'numeric', + proargtypes => 'numeric numeric', prosrc => 'numeric_mul' }, +{ oid => '1727', + proname => 'numeric_div', prorettype => 'numeric', + proargtypes => 'numeric numeric', prosrc => 'numeric_div' }, +{ oid => '1728', descr => 'modulus', + proname => 'mod', prorettype => 'numeric', proargtypes => 'numeric numeric', + prosrc => 'numeric_mod' }, +{ oid => '1729', + proname => 'numeric_mod', prorettype => 'numeric', + proargtypes => 'numeric numeric', prosrc => 'numeric_mod' }, +{ oid => '1730', descr => 'square root', + proname => 'sqrt', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_sqrt' }, +{ oid => '1731', descr => 'square root', + proname => 'numeric_sqrt', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_sqrt' }, +{ oid => '1732', descr => 'natural exponential (e^x)', + proname => 'exp', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_exp' }, +{ oid => '1733', descr => 'natural exponential (e^x)', + proname => 'numeric_exp', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_exp' }, +{ oid => '1734', descr => 'natural logarithm', + proname => 'ln', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_ln' }, +{ oid => '1735', descr => 'natural logarithm', + proname => 'numeric_ln', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_ln' }, +{ oid => '1736', descr => 'logarithm base m of n', + proname => 'log', prorettype => 'numeric', proargtypes => 'numeric numeric', + prosrc => 'numeric_log' }, +{ oid => '1737', descr => 'logarithm base m of n', + proname => 'numeric_log', prorettype => 'numeric', + proargtypes => 'numeric numeric', prosrc => 'numeric_log' }, +{ oid => '1738', descr => 'exponentiation', + proname => 'pow', prorettype => 'numeric', proargtypes => 'numeric numeric', + prosrc => 'numeric_power' }, +{ oid => '2169', descr => 'exponentiation', + proname => 'power', prorettype => 'numeric', proargtypes => 'numeric numeric', + prosrc => 'numeric_power' }, +{ oid => '1739', + proname => 'numeric_power', prorettype => 'numeric', + proargtypes => 'numeric numeric', prosrc => 'numeric_power' }, +{ oid => '3281', descr => 'number of decimal digits in the fractional part', + proname => 'scale', prorettype => 'int4', proargtypes => 'numeric', + prosrc => 'numeric_scale' }, +{ oid => '1740', descr => 'convert int4 to numeric', + proname => 'numeric', prorettype => 'numeric', proargtypes => 'int4', + prosrc => 'int4_numeric' }, +{ oid => '1741', descr => 'base 10 logarithm', + proname => 'log', prolang => '14', prorettype => 'numeric', + proargtypes => 'numeric', prosrc => 'select pg_catalog.log(10, $1)' }, +{ oid => '1742', descr => 'convert float4 to numeric', + proname => 'numeric', prorettype => 'numeric', proargtypes => 'float4', + prosrc => 'float4_numeric' }, +{ oid => '1743', descr => 'convert float8 to numeric', + proname => 'numeric', prorettype => 'numeric', proargtypes => 'float8', + prosrc => 'float8_numeric' }, +{ oid => '1744', descr => 'convert numeric to int4', + proname => 'int4', prorettype => 'int4', proargtypes => 'numeric', + prosrc => 'numeric_int4' }, +{ oid => '1745', descr => 'convert numeric to float4', + proname => 'float4', prorettype => 'float4', proargtypes => 'numeric', + prosrc => 'numeric_float4' }, +{ oid => '1746', descr => 'convert numeric to float8', + proname => 'float8', prorettype => 'float8', proargtypes => 'numeric', + prosrc => 'numeric_float8' }, +{ oid => '1973', descr => 'trunc(x/y)', + proname => 'div', prorettype => 'numeric', proargtypes => 'numeric numeric', + prosrc => 'numeric_div_trunc' }, +{ oid => '1980', descr => 'trunc(x/y)', + proname => 'numeric_div_trunc', prorettype => 'numeric', + proargtypes => 'numeric numeric', prosrc => 'numeric_div_trunc' }, +{ oid => '2170', descr => 'bucket number of operand in equal-width histogram', + proname => 'width_bucket', prorettype => 'int4', + proargtypes => 'numeric numeric numeric int4', + prosrc => 'width_bucket_numeric' }, + +{ oid => '1747', + proname => 'time_pl_interval', prorettype => 'time', + proargtypes => 'time interval', prosrc => 'time_pl_interval' }, +{ oid => '1748', + proname => 'time_mi_interval', prorettype => 'time', + proargtypes => 'time interval', prosrc => 'time_mi_interval' }, +{ oid => '1749', + proname => 'timetz_pl_interval', prorettype => 'timetz', + proargtypes => 'timetz interval', prosrc => 'timetz_pl_interval' }, +{ oid => '1750', + proname => 'timetz_mi_interval', prorettype => 'timetz', + proargtypes => 'timetz interval', prosrc => 'timetz_mi_interval' }, + +{ oid => '1764', descr => 'increment by one', + proname => 'numeric_inc', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_inc' }, +{ oid => '1766', descr => 'smaller of two', + proname => 'numeric_smaller', prorettype => 'numeric', + proargtypes => 'numeric numeric', prosrc => 'numeric_smaller' }, +{ oid => '1767', descr => 'larger of two', + proname => 'numeric_larger', prorettype => 'numeric', + proargtypes => 'numeric numeric', prosrc => 'numeric_larger' }, +{ oid => '1769', descr => 'less-equal-greater', + proname => 'numeric_cmp', prorettype => 'int4', + proargtypes => 'numeric numeric', prosrc => 'numeric_cmp' }, +{ oid => '3283', descr => 'sort support', + proname => 'numeric_sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'numeric_sortsupport' }, +{ oid => '1771', + proname => 'numeric_uminus', prorettype => 'numeric', + proargtypes => 'numeric', prosrc => 'numeric_uminus' }, +{ oid => '1779', descr => 'convert numeric to int8', + proname => 'int8', prorettype => 'int8', proargtypes => 'numeric', + prosrc => 'numeric_int8' }, +{ oid => '1781', descr => 'convert int8 to numeric', + proname => 'numeric', prorettype => 'numeric', proargtypes => 'int8', + prosrc => 'int8_numeric' }, +{ oid => '1782', descr => 'convert int2 to numeric', + proname => 'numeric', prorettype => 'numeric', proargtypes => 'int2', + prosrc => 'int2_numeric' }, +{ oid => '1783', descr => 'convert numeric to int2', + proname => 'int2', prorettype => 'int2', proargtypes => 'numeric', + prosrc => 'numeric_int2' }, + +{ oid => '3556', descr => 'convert jsonb to boolean', + proname => 'bool', prorettype => 'bool', proargtypes => 'jsonb', + prosrc => 'jsonb_bool' }, +{ oid => '3449', descr => 'convert jsonb to numeric', + proname => 'numeric', prorettype => 'numeric', proargtypes => 'jsonb', + prosrc => 'jsonb_numeric' }, +{ oid => '3450', descr => 'convert jsonb to int2', + proname => 'int2', prorettype => 'int2', proargtypes => 'jsonb', + prosrc => 'jsonb_int2' }, +{ oid => '3451', descr => 'convert jsonb to int4', + proname => 'int4', prorettype => 'int4', proargtypes => 'jsonb', + prosrc => 'jsonb_int4' }, +{ oid => '3452', descr => 'convert jsonb to int8', + proname => 'int8', prorettype => 'int8', proargtypes => 'jsonb', + prosrc => 'jsonb_int8' }, +{ oid => '3453', descr => 'convert jsonb to float4', + proname => 'float4', prorettype => 'float4', proargtypes => 'jsonb', + prosrc => 'jsonb_float4' }, +{ oid => '2580', descr => 'convert jsonb to float8', + proname => 'float8', prorettype => 'float8', proargtypes => 'jsonb', + prosrc => 'jsonb_float8' }, + +# formatting +{ oid => '1770', descr => 'format timestamp with time zone to text', + proname => 'to_char', provolatile => 's', prorettype => 'text', + proargtypes => 'timestamptz text', prosrc => 'timestamptz_to_char' }, +{ oid => '1772', descr => 'format numeric to text', + proname => 'to_char', provolatile => 's', prorettype => 'text', + proargtypes => 'numeric text', prosrc => 'numeric_to_char' }, +{ oid => '1773', descr => 'format int4 to text', + proname => 'to_char', provolatile => 's', prorettype => 'text', + proargtypes => 'int4 text', prosrc => 'int4_to_char' }, +{ oid => '1774', descr => 'format int8 to text', + proname => 'to_char', provolatile => 's', prorettype => 'text', + proargtypes => 'int8 text', prosrc => 'int8_to_char' }, +{ oid => '1775', descr => 'format float4 to text', + proname => 'to_char', provolatile => 's', prorettype => 'text', + proargtypes => 'float4 text', prosrc => 'float4_to_char' }, +{ oid => '1776', descr => 'format float8 to text', + proname => 'to_char', provolatile => 's', prorettype => 'text', + proargtypes => 'float8 text', prosrc => 'float8_to_char' }, +{ oid => '1777', descr => 'convert text to numeric', + proname => 'to_number', provolatile => 's', prorettype => 'numeric', + proargtypes => 'text text', prosrc => 'numeric_to_number' }, +{ oid => '1778', descr => 'convert text to timestamp with time zone', + proname => 'to_timestamp', provolatile => 's', prorettype => 'timestamptz', + proargtypes => 'text text', prosrc => 'to_timestamp' }, +{ oid => '1780', descr => 'convert text to date', + proname => 'to_date', provolatile => 's', prorettype => 'date', + proargtypes => 'text text', prosrc => 'to_date' }, +{ oid => '1768', descr => 'format interval to text', + proname => 'to_char', provolatile => 's', prorettype => 'text', + proargtypes => 'interval text', prosrc => 'interval_to_char' }, + +{ oid => '1282', descr => 'quote an identifier for usage in a querystring', + proname => 'quote_ident', prorettype => 'text', proargtypes => 'text', + prosrc => 'quote_ident' }, +{ oid => '1283', descr => 'quote a literal for usage in a querystring', + proname => 'quote_literal', prorettype => 'text', proargtypes => 'text', + prosrc => 'quote_literal' }, +{ oid => '1285', descr => 'quote a data value for usage in a querystring', + proname => 'quote_literal', prolang => '14', provolatile => 's', + prorettype => 'text', proargtypes => 'anyelement', + prosrc => 'select pg_catalog.quote_literal($1::pg_catalog.text)' }, +{ oid => '1289', + descr => 'quote a possibly-null literal for usage in a querystring', + proname => 'quote_nullable', proisstrict => 'f', prorettype => 'text', + proargtypes => 'text', prosrc => 'quote_nullable' }, +{ oid => '1290', + descr => 'quote a possibly-null data value for usage in a querystring', + proname => 'quote_nullable', prolang => '14', proisstrict => 'f', + provolatile => 's', prorettype => 'text', proargtypes => 'anyelement', + prosrc => 'select pg_catalog.quote_nullable($1::pg_catalog.text)' }, + +{ oid => '1798', descr => 'I/O', + proname => 'oidin', prorettype => 'oid', proargtypes => 'cstring', + prosrc => 'oidin' }, +{ oid => '1799', descr => 'I/O', + proname => 'oidout', prorettype => 'cstring', proargtypes => 'oid', + prosrc => 'oidout' }, + +{ oid => '3058', descr => 'concatenate values', + proname => 'concat', provariadic => 'any', proisstrict => 'f', + provolatile => 's', prorettype => 'text', proargtypes => 'any', + proallargtypes => '{any}', proargmodes => '{v}', prosrc => 'text_concat' }, +{ oid => '3059', descr => 'concatenate values with separators', + proname => 'concat_ws', provariadic => 'any', proisstrict => 'f', + provolatile => 's', prorettype => 'text', proargtypes => 'text any', + proallargtypes => '{text,any}', proargmodes => '{i,v}', + prosrc => 'text_concat_ws' }, +{ oid => '3060', descr => 'extract the first n characters', + proname => 'left', prorettype => 'text', proargtypes => 'text int4', + prosrc => 'text_left' }, +{ oid => '3061', descr => 'extract the last n characters', + proname => 'right', prorettype => 'text', proargtypes => 'text int4', + prosrc => 'text_right' }, +{ oid => '3062', descr => 'reverse text', + proname => 'reverse', prorettype => 'text', proargtypes => 'text', + prosrc => 'text_reverse' }, +{ oid => '3539', descr => 'format text message', + proname => 'format', provariadic => 'any', proisstrict => 'f', + provolatile => 's', prorettype => 'text', proargtypes => 'text any', + proallargtypes => '{text,any}', proargmodes => '{i,v}', + prosrc => 'text_format' }, +{ oid => '3540', descr => 'format text message', + proname => 'format', proisstrict => 'f', provolatile => 's', + prorettype => 'text', proargtypes => 'text', prosrc => 'text_format_nv' }, + +{ oid => '1810', descr => 'length in bits', + proname => 'bit_length', prolang => '14', prorettype => 'int4', + proargtypes => 'bytea', prosrc => 'select pg_catalog.octet_length($1) * 8' }, +{ oid => '1811', descr => 'length in bits', + proname => 'bit_length', prolang => '14', prorettype => 'int4', + proargtypes => 'text', prosrc => 'select pg_catalog.octet_length($1) * 8' }, +{ oid => '1812', descr => 'length in bits', + proname => 'bit_length', prolang => '14', prorettype => 'int4', + proargtypes => 'bit', prosrc => 'select pg_catalog.length($1)' }, + +# Selectivity estimators for LIKE and related operators +{ oid => '1814', descr => 'restriction selectivity of ILIKE', + proname => 'iclikesel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'iclikesel' }, +{ oid => '1815', descr => 'restriction selectivity of NOT ILIKE', + proname => 'icnlikesel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'icnlikesel' }, +{ oid => '1816', descr => 'join selectivity of ILIKE', + proname => 'iclikejoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'iclikejoinsel' }, +{ oid => '1817', descr => 'join selectivity of NOT ILIKE', + proname => 'icnlikejoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'icnlikejoinsel' }, +{ oid => '1818', descr => 'restriction selectivity of regex match', + proname => 'regexeqsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'regexeqsel' }, +{ oid => '1819', descr => 'restriction selectivity of LIKE', + proname => 'likesel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'likesel' }, +{ oid => '1820', + descr => 'restriction selectivity of case-insensitive regex match', + proname => 'icregexeqsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'icregexeqsel' }, +{ oid => '1821', descr => 'restriction selectivity of regex non-match', + proname => 'regexnesel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'regexnesel' }, +{ oid => '1822', descr => 'restriction selectivity of NOT LIKE', + proname => 'nlikesel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'nlikesel' }, +{ oid => '1823', + descr => 'restriction selectivity of case-insensitive regex non-match', + proname => 'icregexnesel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'icregexnesel' }, +{ oid => '1824', descr => 'join selectivity of regex match', + proname => 'regexeqjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'regexeqjoinsel' }, +{ oid => '1825', descr => 'join selectivity of LIKE', + proname => 'likejoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'likejoinsel' }, +{ oid => '1826', descr => 'join selectivity of case-insensitive regex match', + proname => 'icregexeqjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'icregexeqjoinsel' }, +{ oid => '1827', descr => 'join selectivity of regex non-match', + proname => 'regexnejoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'regexnejoinsel' }, +{ oid => '1828', descr => 'join selectivity of NOT LIKE', + proname => 'nlikejoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'nlikejoinsel' }, +{ oid => '1829', + descr => 'join selectivity of case-insensitive regex non-match', + proname => 'icregexnejoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'icregexnejoinsel' }, +{ oid => '3437', descr => 'restriction selectivity of exact prefix', + proname => 'prefixsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'prefixsel' }, +{ oid => '3438', descr => 'join selectivity of exact prefix', + proname => 'prefixjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'prefixjoinsel' }, + +# Aggregate-related functions +{ oid => '1830', descr => 'aggregate final function', + proname => 'float8_avg', prorettype => 'float8', proargtypes => '_float8', + prosrc => 'float8_avg' }, +{ oid => '2512', descr => 'aggregate final function', + proname => 'float8_var_pop', prorettype => 'float8', proargtypes => '_float8', + prosrc => 'float8_var_pop' }, +{ oid => '1831', descr => 'aggregate final function', + proname => 'float8_var_samp', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_var_samp' }, +{ oid => '2513', descr => 'aggregate final function', + proname => 'float8_stddev_pop', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_stddev_pop' }, +{ oid => '1832', descr => 'aggregate final function', + proname => 'float8_stddev_samp', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_stddev_samp' }, +{ oid => '1833', descr => 'aggregate transition function', + proname => 'numeric_accum', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal numeric', prosrc => 'numeric_accum' }, +{ oid => '3341', descr => 'aggregate combine function', + proname => 'numeric_combine', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal internal', prosrc => 'numeric_combine' }, +{ oid => '2858', descr => 'aggregate transition function', + proname => 'numeric_avg_accum', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal numeric', prosrc => 'numeric_avg_accum' }, +{ oid => '3337', descr => 'aggregate combine function', + proname => 'numeric_avg_combine', proisstrict => 'f', + prorettype => 'internal', proargtypes => 'internal internal', + prosrc => 'numeric_avg_combine' }, +{ oid => '2740', descr => 'aggregate serial function', + proname => 'numeric_avg_serialize', prorettype => 'bytea', + proargtypes => 'internal', prosrc => 'numeric_avg_serialize' }, +{ oid => '2741', descr => 'aggregate deserial function', + proname => 'numeric_avg_deserialize', prorettype => 'internal', + proargtypes => 'bytea internal', prosrc => 'numeric_avg_deserialize' }, +{ oid => '3335', descr => 'aggregate serial function', + proname => 'numeric_serialize', prorettype => 'bytea', + proargtypes => 'internal', prosrc => 'numeric_serialize' }, +{ oid => '3336', descr => 'aggregate deserial function', + proname => 'numeric_deserialize', prorettype => 'internal', + proargtypes => 'bytea internal', prosrc => 'numeric_deserialize' }, +{ oid => '3548', descr => 'aggregate transition function', + proname => 'numeric_accum_inv', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal numeric', prosrc => 'numeric_accum_inv' }, +{ oid => '1834', descr => 'aggregate transition function', + proname => 'int2_accum', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal int2', prosrc => 'int2_accum' }, +{ oid => '1835', descr => 'aggregate transition function', + proname => 'int4_accum', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal int4', prosrc => 'int4_accum' }, +{ oid => '1836', descr => 'aggregate transition function', + proname => 'int8_accum', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal int8', prosrc => 'int8_accum' }, +{ oid => '3338', descr => 'aggregate combine function', + proname => 'numeric_poly_combine', proisstrict => 'f', + prorettype => 'internal', proargtypes => 'internal internal', + prosrc => 'numeric_poly_combine' }, +{ oid => '3339', descr => 'aggregate serial function', + proname => 'numeric_poly_serialize', prorettype => 'bytea', + proargtypes => 'internal', prosrc => 'numeric_poly_serialize' }, +{ oid => '3340', descr => 'aggregate deserial function', + proname => 'numeric_poly_deserialize', prorettype => 'internal', + proargtypes => 'bytea internal', prosrc => 'numeric_poly_deserialize' }, +{ oid => '2746', descr => 'aggregate transition function', + proname => 'int8_avg_accum', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal int8', prosrc => 'int8_avg_accum' }, +{ oid => '3567', descr => 'aggregate transition function', + proname => 'int2_accum_inv', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal int2', prosrc => 'int2_accum_inv' }, +{ oid => '3568', descr => 'aggregate transition function', + proname => 'int4_accum_inv', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal int4', prosrc => 'int4_accum_inv' }, +{ oid => '3569', descr => 'aggregate transition function', + proname => 'int8_accum_inv', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal int8', prosrc => 'int8_accum_inv' }, +{ oid => '3387', descr => 'aggregate transition function', + proname => 'int8_avg_accum_inv', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal int8', prosrc => 'int8_avg_accum_inv' }, +{ oid => '2785', descr => 'aggregate combine function', + proname => 'int8_avg_combine', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal internal', prosrc => 'int8_avg_combine' }, +{ oid => '2786', descr => 'aggregate serial function', + proname => 'int8_avg_serialize', prorettype => 'bytea', + proargtypes => 'internal', prosrc => 'int8_avg_serialize' }, +{ oid => '2787', descr => 'aggregate deserial function', + proname => 'int8_avg_deserialize', prorettype => 'internal', + proargtypes => 'bytea internal', prosrc => 'int8_avg_deserialize' }, +{ oid => '3324', descr => 'aggregate combine function', + proname => 'int4_avg_combine', prorettype => '_int8', + proargtypes => '_int8 _int8', prosrc => 'int4_avg_combine' }, +{ oid => '3178', descr => 'aggregate final function', + proname => 'numeric_sum', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'internal', prosrc => 'numeric_sum' }, +{ oid => '1837', descr => 'aggregate final function', + proname => 'numeric_avg', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'internal', prosrc => 'numeric_avg' }, +{ oid => '2514', descr => 'aggregate final function', + proname => 'numeric_var_pop', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'internal', prosrc => 'numeric_var_pop' }, +{ oid => '1838', descr => 'aggregate final function', + proname => 'numeric_var_samp', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'internal', prosrc => 'numeric_var_samp' }, +{ oid => '2596', descr => 'aggregate final function', + proname => 'numeric_stddev_pop', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'internal', prosrc => 'numeric_stddev_pop' }, +{ oid => '1839', descr => 'aggregate final function', + proname => 'numeric_stddev_samp', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'internal', prosrc => 'numeric_stddev_samp' }, +{ oid => '1840', descr => 'aggregate transition function', + proname => 'int2_sum', proisstrict => 'f', prorettype => 'int8', + proargtypes => 'int8 int2', prosrc => 'int2_sum' }, +{ oid => '1841', descr => 'aggregate transition function', + proname => 'int4_sum', proisstrict => 'f', prorettype => 'int8', + proargtypes => 'int8 int4', prosrc => 'int4_sum' }, +{ oid => '1842', descr => 'aggregate transition function', + proname => 'int8_sum', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'numeric int8', prosrc => 'int8_sum' }, +{ oid => '3388', descr => 'aggregate final function', + proname => 'numeric_poly_sum', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'internal', prosrc => 'numeric_poly_sum' }, +{ oid => '3389', descr => 'aggregate final function', + proname => 'numeric_poly_avg', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'internal', prosrc => 'numeric_poly_avg' }, +{ oid => '3390', descr => 'aggregate final function', + proname => 'numeric_poly_var_pop', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'internal', + prosrc => 'numeric_poly_var_pop' }, +{ oid => '3391', descr => 'aggregate final function', + proname => 'numeric_poly_var_samp', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'internal', + prosrc => 'numeric_poly_var_samp' }, +{ oid => '3392', descr => 'aggregate final function', + proname => 'numeric_poly_stddev_pop', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'internal', + prosrc => 'numeric_poly_stddev_pop' }, +{ oid => '3393', descr => 'aggregate final function', + proname => 'numeric_poly_stddev_samp', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'internal', + prosrc => 'numeric_poly_stddev_samp' }, + +{ oid => '1843', descr => 'aggregate transition function', + proname => 'interval_accum', prorettype => '_interval', + proargtypes => '_interval interval', prosrc => 'interval_accum' }, +{ oid => '3325', descr => 'aggregate combine function', + proname => 'interval_combine', prorettype => '_interval', + proargtypes => '_interval _interval', prosrc => 'interval_combine' }, +{ oid => '3549', descr => 'aggregate transition function', + proname => 'interval_accum_inv', prorettype => '_interval', + proargtypes => '_interval interval', prosrc => 'interval_accum_inv' }, +{ oid => '1844', descr => 'aggregate final function', + proname => 'interval_avg', prorettype => 'interval', + proargtypes => '_interval', prosrc => 'interval_avg' }, +{ oid => '1962', descr => 'aggregate transition function', + proname => 'int2_avg_accum', prorettype => '_int8', + proargtypes => '_int8 int2', prosrc => 'int2_avg_accum' }, +{ oid => '1963', descr => 'aggregate transition function', + proname => 'int4_avg_accum', prorettype => '_int8', + proargtypes => '_int8 int4', prosrc => 'int4_avg_accum' }, +{ oid => '3570', descr => 'aggregate transition function', + proname => 'int2_avg_accum_inv', prorettype => '_int8', + proargtypes => '_int8 int2', prosrc => 'int2_avg_accum_inv' }, +{ oid => '3571', descr => 'aggregate transition function', + proname => 'int4_avg_accum_inv', prorettype => '_int8', + proargtypes => '_int8 int4', prosrc => 'int4_avg_accum_inv' }, +{ oid => '1964', descr => 'aggregate final function', + proname => 'int8_avg', prorettype => 'numeric', proargtypes => '_int8', + prosrc => 'int8_avg' }, +{ oid => '3572', descr => 'aggregate final function', + proname => 'int2int4_sum', prorettype => 'int8', proargtypes => '_int8', + prosrc => 'int2int4_sum' }, +{ oid => '2805', descr => 'aggregate transition function', + proname => 'int8inc_float8_float8', prorettype => 'int8', + proargtypes => 'int8 float8 float8', prosrc => 'int8inc_float8_float8' }, +{ oid => '2806', descr => 'aggregate transition function', + proname => 'float8_regr_accum', prorettype => '_float8', + proargtypes => '_float8 float8 float8', prosrc => 'float8_regr_accum' }, +{ oid => '3342', descr => 'aggregate combine function', + proname => 'float8_regr_combine', prorettype => '_float8', + proargtypes => '_float8 _float8', prosrc => 'float8_regr_combine' }, +{ oid => '2807', descr => 'aggregate final function', + proname => 'float8_regr_sxx', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_regr_sxx' }, +{ oid => '2808', descr => 'aggregate final function', + proname => 'float8_regr_syy', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_regr_syy' }, +{ oid => '2809', descr => 'aggregate final function', + proname => 'float8_regr_sxy', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_regr_sxy' }, +{ oid => '2810', descr => 'aggregate final function', + proname => 'float8_regr_avgx', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_regr_avgx' }, +{ oid => '2811', descr => 'aggregate final function', + proname => 'float8_regr_avgy', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_regr_avgy' }, +{ oid => '2812', descr => 'aggregate final function', + proname => 'float8_regr_r2', prorettype => 'float8', proargtypes => '_float8', + prosrc => 'float8_regr_r2' }, +{ oid => '2813', descr => 'aggregate final function', + proname => 'float8_regr_slope', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_regr_slope' }, +{ oid => '2814', descr => 'aggregate final function', + proname => 'float8_regr_intercept', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_regr_intercept' }, +{ oid => '2815', descr => 'aggregate final function', + proname => 'float8_covar_pop', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_covar_pop' }, +{ oid => '2816', descr => 'aggregate final function', + proname => 'float8_covar_samp', prorettype => 'float8', + proargtypes => '_float8', prosrc => 'float8_covar_samp' }, +{ oid => '2817', descr => 'aggregate final function', + proname => 'float8_corr', prorettype => 'float8', proargtypes => '_float8', + prosrc => 'float8_corr' }, + +{ oid => '3535', descr => 'aggregate transition function', + proname => 'string_agg_transfn', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal text text', prosrc => 'string_agg_transfn' }, +{ oid => '3536', descr => 'aggregate final function', + proname => 'string_agg_finalfn', proisstrict => 'f', prorettype => 'text', + proargtypes => 'internal', prosrc => 'string_agg_finalfn' }, +{ oid => '3538', descr => 'concatenate aggregate input into a string', + proname => 'string_agg', prokind => 'a', proisstrict => 'f', + prorettype => 'text', proargtypes => 'text text', + prosrc => 'aggregate_dummy' }, +{ oid => '3543', descr => 'aggregate transition function', + proname => 'bytea_string_agg_transfn', proisstrict => 'f', + prorettype => 'internal', proargtypes => 'internal bytea bytea', + prosrc => 'bytea_string_agg_transfn' }, +{ oid => '3544', descr => 'aggregate final function', + proname => 'bytea_string_agg_finalfn', proisstrict => 'f', + prorettype => 'bytea', proargtypes => 'internal', + prosrc => 'bytea_string_agg_finalfn' }, +{ oid => '3545', descr => 'concatenate aggregate input into a bytea', + proname => 'string_agg', prokind => 'a', proisstrict => 'f', + prorettype => 'bytea', proargtypes => 'bytea bytea', + prosrc => 'aggregate_dummy' }, + +# To ASCII conversion +{ oid => '1845', descr => 'encode text from DB encoding to ASCII text', + proname => 'to_ascii', prorettype => 'text', proargtypes => 'text', + prosrc => 'to_ascii_default' }, +{ oid => '1846', descr => 'encode text from encoding to ASCII text', + proname => 'to_ascii', prorettype => 'text', proargtypes => 'text int4', + prosrc => 'to_ascii_enc' }, +{ oid => '1847', descr => 'encode text from encoding to ASCII text', + proname => 'to_ascii', prorettype => 'text', proargtypes => 'text name', + prosrc => 'to_ascii_encname' }, + +{ oid => '1848', + proname => 'interval_pl_time', prolang => '14', prorettype => 'time', + proargtypes => 'interval time', prosrc => 'select $2 + $1' }, + +{ oid => '1850', + proname => 'int28eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int8', prosrc => 'int28eq' }, +{ oid => '1851', + proname => 'int28ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int8', prosrc => 'int28ne' }, +{ oid => '1852', + proname => 'int28lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int8', prosrc => 'int28lt' }, +{ oid => '1853', + proname => 'int28gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int8', prosrc => 'int28gt' }, +{ oid => '1854', + proname => 'int28le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int8', prosrc => 'int28le' }, +{ oid => '1855', + proname => 'int28ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int2 int8', prosrc => 'int28ge' }, + +{ oid => '1856', + proname => 'int82eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int2', prosrc => 'int82eq' }, +{ oid => '1857', + proname => 'int82ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int2', prosrc => 'int82ne' }, +{ oid => '1858', + proname => 'int82lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int2', prosrc => 'int82lt' }, +{ oid => '1859', + proname => 'int82gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int2', prosrc => 'int82gt' }, +{ oid => '1860', + proname => 'int82le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int2', prosrc => 'int82le' }, +{ oid => '1861', + proname => 'int82ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'int8 int2', prosrc => 'int82ge' }, + +{ oid => '1892', + proname => 'int2and', prorettype => 'int2', proargtypes => 'int2 int2', + prosrc => 'int2and' }, +{ oid => '1893', + proname => 'int2or', prorettype => 'int2', proargtypes => 'int2 int2', + prosrc => 'int2or' }, +{ oid => '1894', + proname => 'int2xor', prorettype => 'int2', proargtypes => 'int2 int2', + prosrc => 'int2xor' }, +{ oid => '1895', + proname => 'int2not', prorettype => 'int2', proargtypes => 'int2', + prosrc => 'int2not' }, +{ oid => '1896', + proname => 'int2shl', prorettype => 'int2', proargtypes => 'int2 int4', + prosrc => 'int2shl' }, +{ oid => '1897', + proname => 'int2shr', prorettype => 'int2', proargtypes => 'int2 int4', + prosrc => 'int2shr' }, + +{ oid => '1898', + proname => 'int4and', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4and' }, +{ oid => '1899', + proname => 'int4or', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4or' }, +{ oid => '1900', + proname => 'int4xor', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4xor' }, +{ oid => '1901', + proname => 'int4not', prorettype => 'int4', proargtypes => 'int4', + prosrc => 'int4not' }, +{ oid => '1902', + proname => 'int4shl', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4shl' }, +{ oid => '1903', + proname => 'int4shr', prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'int4shr' }, + +{ oid => '1904', + proname => 'int8and', prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'int8and' }, +{ oid => '1905', + proname => 'int8or', prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'int8or' }, +{ oid => '1906', + proname => 'int8xor', prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'int8xor' }, +{ oid => '1907', + proname => 'int8not', prorettype => 'int8', proargtypes => 'int8', + prosrc => 'int8not' }, +{ oid => '1908', + proname => 'int8shl', prorettype => 'int8', proargtypes => 'int8 int4', + prosrc => 'int8shl' }, +{ oid => '1909', + proname => 'int8shr', prorettype => 'int8', proargtypes => 'int8 int4', + prosrc => 'int8shr' }, + +{ oid => '1910', + proname => 'int8up', prorettype => 'int8', proargtypes => 'int8', + prosrc => 'int8up' }, +{ oid => '1911', + proname => 'int2up', prorettype => 'int2', proargtypes => 'int2', + prosrc => 'int2up' }, +{ oid => '1912', + proname => 'int4up', prorettype => 'int4', proargtypes => 'int4', + prosrc => 'int4up' }, +{ oid => '1913', + proname => 'float4up', prorettype => 'float4', proargtypes => 'float4', + prosrc => 'float4up' }, +{ oid => '1914', + proname => 'float8up', prorettype => 'float8', proargtypes => 'float8', + prosrc => 'float8up' }, +{ oid => '1915', + proname => 'numeric_uplus', prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'numeric_uplus' }, + +{ oid => '1922', descr => 'user privilege on relation by username, rel name', + proname => 'has_table_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name text text', prosrc => 'has_table_privilege_name_name' }, +{ oid => '1923', descr => 'user privilege on relation by username, rel oid', + proname => 'has_table_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name oid text', prosrc => 'has_table_privilege_name_id' }, +{ oid => '1924', descr => 'user privilege on relation by user oid, rel name', + proname => 'has_table_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text text', prosrc => 'has_table_privilege_id_name' }, +{ oid => '1925', descr => 'user privilege on relation by user oid, rel oid', + proname => 'has_table_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid oid text', prosrc => 'has_table_privilege_id_id' }, +{ oid => '1926', descr => 'current user privilege on relation by rel name', + proname => 'has_table_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'has_table_privilege_name' }, +{ oid => '1927', descr => 'current user privilege on relation by rel oid', + proname => 'has_table_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text', prosrc => 'has_table_privilege_id' }, + +{ oid => '2181', descr => 'user privilege on sequence by username, seq name', + proname => 'has_sequence_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name text text', + prosrc => 'has_sequence_privilege_name_name' }, +{ oid => '2182', descr => 'user privilege on sequence by username, seq oid', + proname => 'has_sequence_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name oid text', prosrc => 'has_sequence_privilege_name_id' }, +{ oid => '2183', descr => 'user privilege on sequence by user oid, seq name', + proname => 'has_sequence_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text text', prosrc => 'has_sequence_privilege_id_name' }, +{ oid => '2184', descr => 'user privilege on sequence by user oid, seq oid', + proname => 'has_sequence_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid oid text', prosrc => 'has_sequence_privilege_id_id' }, +{ oid => '2185', descr => 'current user privilege on sequence by seq name', + proname => 'has_sequence_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'has_sequence_privilege_name' }, +{ oid => '2186', descr => 'current user privilege on sequence by seq oid', + proname => 'has_sequence_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text', prosrc => 'has_sequence_privilege_id' }, + +{ oid => '3012', + descr => 'user privilege on column by username, rel name, col name', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name text text text', + prosrc => 'has_column_privilege_name_name_name' }, +{ oid => '3013', + descr => 'user privilege on column by username, rel name, col attnum', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name text int2 text', + prosrc => 'has_column_privilege_name_name_attnum' }, +{ oid => '3014', + descr => 'user privilege on column by username, rel oid, col name', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name oid text text', + prosrc => 'has_column_privilege_name_id_name' }, +{ oid => '3015', + descr => 'user privilege on column by username, rel oid, col attnum', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name oid int2 text', + prosrc => 'has_column_privilege_name_id_attnum' }, +{ oid => '3016', + descr => 'user privilege on column by user oid, rel name, col name', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text text text', + prosrc => 'has_column_privilege_id_name_name' }, +{ oid => '3017', + descr => 'user privilege on column by user oid, rel name, col attnum', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text int2 text', + prosrc => 'has_column_privilege_id_name_attnum' }, +{ oid => '3018', + descr => 'user privilege on column by user oid, rel oid, col name', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid oid text text', + prosrc => 'has_column_privilege_id_id_name' }, +{ oid => '3019', + descr => 'user privilege on column by user oid, rel oid, col attnum', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid oid int2 text', + prosrc => 'has_column_privilege_id_id_attnum' }, +{ oid => '3020', + descr => 'current user privilege on column by rel name, col name', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'text text text', prosrc => 'has_column_privilege_name_name' }, +{ oid => '3021', + descr => 'current user privilege on column by rel name, col attnum', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'text int2 text', + prosrc => 'has_column_privilege_name_attnum' }, +{ oid => '3022', + descr => 'current user privilege on column by rel oid, col name', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text text', prosrc => 'has_column_privilege_id_name' }, +{ oid => '3023', + descr => 'current user privilege on column by rel oid, col attnum', + proname => 'has_column_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid int2 text', prosrc => 'has_column_privilege_id_attnum' }, + +{ oid => '3024', + descr => 'user privilege on any column by username, rel name', + proname => 'has_any_column_privilege', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'name text text', + prosrc => 'has_any_column_privilege_name_name' }, +{ oid => '3025', descr => 'user privilege on any column by username, rel oid', + proname => 'has_any_column_privilege', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'name oid text', + prosrc => 'has_any_column_privilege_name_id' }, +{ oid => '3026', + descr => 'user privilege on any column by user oid, rel name', + proname => 'has_any_column_privilege', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid text text', + prosrc => 'has_any_column_privilege_id_name' }, +{ oid => '3027', descr => 'user privilege on any column by user oid, rel oid', + proname => 'has_any_column_privilege', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid oid text', + prosrc => 'has_any_column_privilege_id_id' }, +{ oid => '3028', descr => 'current user privilege on any column by rel name', + proname => 'has_any_column_privilege', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'text text', + prosrc => 'has_any_column_privilege_name' }, +{ oid => '3029', descr => 'current user privilege on any column by rel oid', + proname => 'has_any_column_privilege', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid text', + prosrc => 'has_any_column_privilege_id' }, + +{ oid => '3355', descr => 'I/O', + proname => 'pg_ndistinct_in', prorettype => 'pg_ndistinct', + proargtypes => 'cstring', prosrc => 'pg_ndistinct_in' }, +{ oid => '3356', descr => 'I/O', + proname => 'pg_ndistinct_out', prorettype => 'cstring', + proargtypes => 'pg_ndistinct', prosrc => 'pg_ndistinct_out' }, +{ oid => '3357', descr => 'I/O', + proname => 'pg_ndistinct_recv', provolatile => 's', + prorettype => 'pg_ndistinct', proargtypes => 'internal', + prosrc => 'pg_ndistinct_recv' }, +{ oid => '3358', descr => 'I/O', + proname => 'pg_ndistinct_send', provolatile => 's', prorettype => 'bytea', + proargtypes => 'pg_ndistinct', prosrc => 'pg_ndistinct_send' }, + +{ oid => '3404', descr => 'I/O', + proname => 'pg_dependencies_in', prorettype => 'pg_dependencies', + proargtypes => 'cstring', prosrc => 'pg_dependencies_in' }, +{ oid => '3405', descr => 'I/O', + proname => 'pg_dependencies_out', prorettype => 'cstring', + proargtypes => 'pg_dependencies', prosrc => 'pg_dependencies_out' }, +{ oid => '3406', descr => 'I/O', + proname => 'pg_dependencies_recv', provolatile => 's', + prorettype => 'pg_dependencies', proargtypes => 'internal', + prosrc => 'pg_dependencies_recv' }, +{ oid => '3407', descr => 'I/O', + proname => 'pg_dependencies_send', provolatile => 's', prorettype => 'bytea', + proargtypes => 'pg_dependencies', prosrc => 'pg_dependencies_send' }, + +{ oid => '1928', descr => 'statistics: number of scans done for table/index', + proname => 'pg_stat_get_numscans', provolatile => 's', proparallel => 'r', + prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_numscans' }, +{ oid => '1929', descr => 'statistics: number of tuples read by seqscan', + proname => 'pg_stat_get_tuples_returned', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_tuples_returned' }, +{ oid => '1930', descr => 'statistics: number of tuples fetched by idxscan', + proname => 'pg_stat_get_tuples_fetched', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_tuples_fetched' }, +{ oid => '1931', descr => 'statistics: number of tuples inserted', + proname => 'pg_stat_get_tuples_inserted', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_tuples_inserted' }, +{ oid => '1932', descr => 'statistics: number of tuples updated', + proname => 'pg_stat_get_tuples_updated', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_tuples_updated' }, +{ oid => '1933', descr => 'statistics: number of tuples deleted', + proname => 'pg_stat_get_tuples_deleted', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_tuples_deleted' }, +{ oid => '1972', descr => 'statistics: number of tuples hot updated', + proname => 'pg_stat_get_tuples_hot_updated', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_tuples_hot_updated' }, +{ oid => '2878', descr => 'statistics: number of live tuples', + proname => 'pg_stat_get_live_tuples', provolatile => 's', proparallel => 'r', + prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_live_tuples' }, +{ oid => '2879', descr => 'statistics: number of dead tuples', + proname => 'pg_stat_get_dead_tuples', provolatile => 's', proparallel => 'r', + prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_dead_tuples' }, +{ oid => '3177', + descr => 'statistics: number of tuples changed since last analyze', + proname => 'pg_stat_get_mod_since_analyze', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_mod_since_analyze' }, +{ oid => '1934', descr => 'statistics: number of blocks fetched', + proname => 'pg_stat_get_blocks_fetched', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_blocks_fetched' }, +{ oid => '1935', descr => 'statistics: number of blocks found in cache', + proname => 'pg_stat_get_blocks_hit', provolatile => 's', proparallel => 'r', + prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_blocks_hit' }, +{ oid => '2781', descr => 'statistics: last manual vacuum time for a table', + proname => 'pg_stat_get_last_vacuum_time', provolatile => 's', + proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid', + prosrc => 'pg_stat_get_last_vacuum_time' }, +{ oid => '2782', descr => 'statistics: last auto vacuum time for a table', + proname => 'pg_stat_get_last_autovacuum_time', provolatile => 's', + proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid', + prosrc => 'pg_stat_get_last_autovacuum_time' }, +{ oid => '2783', descr => 'statistics: last manual analyze time for a table', + proname => 'pg_stat_get_last_analyze_time', provolatile => 's', + proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid', + prosrc => 'pg_stat_get_last_analyze_time' }, +{ oid => '2784', descr => 'statistics: last auto analyze time for a table', + proname => 'pg_stat_get_last_autoanalyze_time', provolatile => 's', + proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid', + prosrc => 'pg_stat_get_last_autoanalyze_time' }, +{ oid => '3054', descr => 'statistics: number of manual vacuums for a table', + proname => 'pg_stat_get_vacuum_count', provolatile => 's', proparallel => 'r', + prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_vacuum_count' }, +{ oid => '3055', descr => 'statistics: number of auto vacuums for a table', + proname => 'pg_stat_get_autovacuum_count', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_autovacuum_count' }, +{ oid => '3056', descr => 'statistics: number of manual analyzes for a table', + proname => 'pg_stat_get_analyze_count', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_analyze_count' }, +{ oid => '3057', descr => 'statistics: number of auto analyzes for a table', + proname => 'pg_stat_get_autoanalyze_count', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_autoanalyze_count' }, +{ oid => '1936', descr => 'statistics: currently active backend IDs', + proname => 'pg_stat_get_backend_idset', prorows => '100', proretset => 't', + provolatile => 's', proparallel => 'r', prorettype => 'int4', + proargtypes => '', prosrc => 'pg_stat_get_backend_idset' }, +{ oid => '2022', + descr => 'statistics: information about currently active backends', + proname => 'pg_stat_get_activity', prorows => '100', proisstrict => 'f', + proretset => 't', provolatile => 's', proparallel => 'r', + prorettype => 'record', proargtypes => 'int4', + proallargtypes => '{int4,oid,int4,oid,text,text,text,text,text,timestamptz,timestamptz,timestamptz,timestamptz,inet,text,int4,xid,xid,text,bool,text,text,int4,bool,text}', + proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', + proargnames => '{pid,datid,pid,usesysid,application_name,state,query,wait_event_type,wait_event,xact_start,query_start,backend_start,state_change,client_addr,client_hostname,client_port,backend_xid,backend_xmin,backend_type,ssl,sslversion,sslcipher,sslbits,sslcompression,sslclientdn}', + prosrc => 'pg_stat_get_activity' }, +{ oid => '3318', + descr => 'statistics: information about progress of backends running maintenance command', + proname => 'pg_stat_get_progress_info', prorows => '100', proretset => 't', + provolatile => 's', proparallel => 'r', prorettype => 'record', + proargtypes => 'text', + proallargtypes => '{text,int4,oid,oid,int8,int8,int8,int8,int8,int8,int8,int8,int8,int8}', + proargmodes => '{i,o,o,o,o,o,o,o,o,o,o,o,o,o}', + proargnames => '{cmdtype,pid,datid,relid,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10}', + prosrc => 'pg_stat_get_progress_info' }, +{ oid => '3099', + descr => 'statistics: information about currently active replication', + proname => 'pg_stat_get_wal_senders', prorows => '10', proisstrict => 'f', + proretset => 't', provolatile => 's', proparallel => 'r', + prorettype => 'record', proargtypes => '', + proallargtypes => '{int4,text,pg_lsn,pg_lsn,pg_lsn,pg_lsn,interval,interval,interval,int4,text}', + proargmodes => '{o,o,o,o,o,o,o,o,o,o,o}', + proargnames => '{pid,state,sent_lsn,write_lsn,flush_lsn,replay_lsn,write_lag,flush_lag,replay_lag,sync_priority,sync_state}', + prosrc => 'pg_stat_get_wal_senders' }, +{ oid => '3317', descr => 'statistics: information about WAL receiver', + proname => 'pg_stat_get_wal_receiver', proisstrict => 'f', provolatile => 's', + proparallel => 'r', prorettype => 'record', proargtypes => '', + proallargtypes => '{int4,text,pg_lsn,int4,pg_lsn,int4,timestamptz,timestamptz,pg_lsn,timestamptz,text,text,int4,text}', + proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o}', + proargnames => '{pid,status,receive_start_lsn,receive_start_tli,received_lsn,received_tli,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time,slot_name,sender_host,sender_port,conninfo}', + prosrc => 'pg_stat_get_wal_receiver' }, +{ oid => '6118', descr => 'statistics: information about subscription', + proname => 'pg_stat_get_subscription', proisstrict => 'f', provolatile => 's', + proparallel => 'r', prorettype => 'record', proargtypes => 'oid', + proallargtypes => '{oid,oid,oid,int4,pg_lsn,timestamptz,timestamptz,pg_lsn,timestamptz}', + proargmodes => '{i,o,o,o,o,o,o,o,o}', + proargnames => '{subid,subid,relid,pid,received_lsn,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time}', + prosrc => 'pg_stat_get_subscription' }, +{ oid => '2026', descr => 'statistics: current backend PID', + proname => 'pg_backend_pid', provolatile => 's', proparallel => 'r', + prorettype => 'int4', proargtypes => '', prosrc => 'pg_backend_pid' }, +{ oid => '1937', descr => 'statistics: PID of backend', + proname => 'pg_stat_get_backend_pid', provolatile => 's', proparallel => 'r', + prorettype => 'int4', proargtypes => 'int4', + prosrc => 'pg_stat_get_backend_pid' }, +{ oid => '1938', descr => 'statistics: database ID of backend', + proname => 'pg_stat_get_backend_dbid', provolatile => 's', proparallel => 'r', + prorettype => 'oid', proargtypes => 'int4', + prosrc => 'pg_stat_get_backend_dbid' }, +{ oid => '1939', descr => 'statistics: user ID of backend', + proname => 'pg_stat_get_backend_userid', provolatile => 's', + proparallel => 'r', prorettype => 'oid', proargtypes => 'int4', + prosrc => 'pg_stat_get_backend_userid' }, +{ oid => '1940', descr => 'statistics: current query of backend', + proname => 'pg_stat_get_backend_activity', provolatile => 's', + proparallel => 'r', prorettype => 'text', proargtypes => 'int4', + prosrc => 'pg_stat_get_backend_activity' }, +{ oid => '2788', + descr => 'statistics: wait event type on which backend is currently waiting', + proname => 'pg_stat_get_backend_wait_event_type', provolatile => 's', + proparallel => 'r', prorettype => 'text', proargtypes => 'int4', + prosrc => 'pg_stat_get_backend_wait_event_type' }, +{ oid => '2853', + descr => 'statistics: wait event on which backend is currently waiting', + proname => 'pg_stat_get_backend_wait_event', provolatile => 's', + proparallel => 'r', prorettype => 'text', proargtypes => 'int4', + prosrc => 'pg_stat_get_backend_wait_event' }, +{ oid => '2094', + descr => 'statistics: start time for current query of backend', + proname => 'pg_stat_get_backend_activity_start', provolatile => 's', + proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'int4', + prosrc => 'pg_stat_get_backend_activity_start' }, +{ oid => '2857', + descr => 'statistics: start time for backend\'s current transaction', + proname => 'pg_stat_get_backend_xact_start', provolatile => 's', + proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'int4', + prosrc => 'pg_stat_get_backend_xact_start' }, +{ oid => '1391', + descr => 'statistics: start time for current backend session', + proname => 'pg_stat_get_backend_start', provolatile => 's', + proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'int4', + prosrc => 'pg_stat_get_backend_start' }, +{ oid => '1392', + descr => 'statistics: address of client connected to backend', + proname => 'pg_stat_get_backend_client_addr', provolatile => 's', + proparallel => 'r', prorettype => 'inet', proargtypes => 'int4', + prosrc => 'pg_stat_get_backend_client_addr' }, +{ oid => '1393', + descr => 'statistics: port number of client connected to backend', + proname => 'pg_stat_get_backend_client_port', provolatile => 's', + proparallel => 'r', prorettype => 'int4', proargtypes => 'int4', + prosrc => 'pg_stat_get_backend_client_port' }, +{ oid => '1941', descr => 'statistics: number of backends in database', + proname => 'pg_stat_get_db_numbackends', provolatile => 's', + proparallel => 'r', prorettype => 'int4', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_numbackends' }, +{ oid => '1942', descr => 'statistics: transactions committed', + proname => 'pg_stat_get_db_xact_commit', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_xact_commit' }, +{ oid => '1943', descr => 'statistics: transactions rolled back', + proname => 'pg_stat_get_db_xact_rollback', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_xact_rollback' }, +{ oid => '1944', descr => 'statistics: blocks fetched for database', + proname => 'pg_stat_get_db_blocks_fetched', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_blocks_fetched' }, +{ oid => '1945', descr => 'statistics: blocks found in cache for database', + proname => 'pg_stat_get_db_blocks_hit', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_blocks_hit' }, +{ oid => '2758', descr => 'statistics: tuples returned for database', + proname => 'pg_stat_get_db_tuples_returned', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_tuples_returned' }, +{ oid => '2759', descr => 'statistics: tuples fetched for database', + proname => 'pg_stat_get_db_tuples_fetched', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_tuples_fetched' }, +{ oid => '2760', descr => 'statistics: tuples inserted in database', + proname => 'pg_stat_get_db_tuples_inserted', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_tuples_inserted' }, +{ oid => '2761', descr => 'statistics: tuples updated in database', + proname => 'pg_stat_get_db_tuples_updated', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_tuples_updated' }, +{ oid => '2762', descr => 'statistics: tuples deleted in database', + proname => 'pg_stat_get_db_tuples_deleted', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_tuples_deleted' }, +{ oid => '3065', + descr => 'statistics: recovery conflicts in database caused by drop tablespace', + proname => 'pg_stat_get_db_conflict_tablespace', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_conflict_tablespace' }, +{ oid => '3066', + descr => 'statistics: recovery conflicts in database caused by relation lock', + proname => 'pg_stat_get_db_conflict_lock', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_conflict_lock' }, +{ oid => '3067', + descr => 'statistics: recovery conflicts in database caused by snapshot expiry', + proname => 'pg_stat_get_db_conflict_snapshot', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_conflict_snapshot' }, +{ oid => '3068', + descr => 'statistics: recovery conflicts in database caused by shared buffer pin', + proname => 'pg_stat_get_db_conflict_bufferpin', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_conflict_bufferpin' }, +{ oid => '3069', + descr => 'statistics: recovery conflicts in database caused by buffer deadlock', + proname => 'pg_stat_get_db_conflict_startup_deadlock', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_conflict_startup_deadlock' }, +{ oid => '3070', descr => 'statistics: recovery conflicts in database', + proname => 'pg_stat_get_db_conflict_all', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_conflict_all' }, +{ oid => '3152', descr => 'statistics: deadlocks detected in database', + proname => 'pg_stat_get_db_deadlocks', provolatile => 's', proparallel => 'r', + prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_deadlocks' }, +{ oid => '3074', descr => 'statistics: last reset for a database', + proname => 'pg_stat_get_db_stat_reset_time', provolatile => 's', + proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_stat_reset_time' }, +{ oid => '3150', descr => 'statistics: number of temporary files written', + proname => 'pg_stat_get_db_temp_files', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_temp_files' }, +{ oid => '3151', + descr => 'statistics: number of bytes in temporary files written', + proname => 'pg_stat_get_db_temp_bytes', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_temp_bytes' }, +{ oid => '2844', descr => 'statistics: block read time, in milliseconds', + proname => 'pg_stat_get_db_blk_read_time', provolatile => 's', + proparallel => 'r', prorettype => 'float8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_blk_read_time' }, +{ oid => '2845', descr => 'statistics: block write time, in milliseconds', + proname => 'pg_stat_get_db_blk_write_time', provolatile => 's', + proparallel => 'r', prorettype => 'float8', proargtypes => 'oid', + prosrc => 'pg_stat_get_db_blk_write_time' }, +{ oid => '3195', descr => 'statistics: information about WAL archiver', + proname => 'pg_stat_get_archiver', proisstrict => 'f', provolatile => 's', + proparallel => 'r', prorettype => 'record', proargtypes => '', + proallargtypes => '{int8,text,timestamptz,int8,text,timestamptz,timestamptz}', + proargmodes => '{o,o,o,o,o,o,o}', + proargnames => '{archived_count,last_archived_wal,last_archived_time,failed_count,last_failed_wal,last_failed_time,stats_reset}', + prosrc => 'pg_stat_get_archiver' }, +{ oid => '2769', + descr => 'statistics: number of timed checkpoints started by the bgwriter', + proname => 'pg_stat_get_bgwriter_timed_checkpoints', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => '', + prosrc => 'pg_stat_get_bgwriter_timed_checkpoints' }, +{ oid => '2770', + descr => 'statistics: number of backend requested checkpoints started by the bgwriter', + proname => 'pg_stat_get_bgwriter_requested_checkpoints', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => '', + prosrc => 'pg_stat_get_bgwriter_requested_checkpoints' }, +{ oid => '2771', + descr => 'statistics: number of buffers written by the bgwriter during checkpoints', + proname => 'pg_stat_get_bgwriter_buf_written_checkpoints', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => '', + prosrc => 'pg_stat_get_bgwriter_buf_written_checkpoints' }, +{ oid => '2772', + descr => 'statistics: number of buffers written by the bgwriter for cleaning dirty buffers', + proname => 'pg_stat_get_bgwriter_buf_written_clean', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => '', + prosrc => 'pg_stat_get_bgwriter_buf_written_clean' }, +{ oid => '2773', + descr => 'statistics: number of times the bgwriter stopped processing when it had written too many buffers while cleaning', + proname => 'pg_stat_get_bgwriter_maxwritten_clean', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => '', + prosrc => 'pg_stat_get_bgwriter_maxwritten_clean' }, +{ oid => '3075', descr => 'statistics: last reset for the bgwriter', + proname => 'pg_stat_get_bgwriter_stat_reset_time', provolatile => 's', + proparallel => 'r', prorettype => 'timestamptz', proargtypes => '', + prosrc => 'pg_stat_get_bgwriter_stat_reset_time' }, +{ oid => '3160', + descr => 'statistics: checkpoint time spent writing buffers to disk, in milliseconds', + proname => 'pg_stat_get_checkpoint_write_time', provolatile => 's', + proparallel => 'r', prorettype => 'float8', proargtypes => '', + prosrc => 'pg_stat_get_checkpoint_write_time' }, +{ oid => '3161', + descr => 'statistics: checkpoint time spent synchronizing buffers to disk, in milliseconds', + proname => 'pg_stat_get_checkpoint_sync_time', provolatile => 's', + proparallel => 'r', prorettype => 'float8', proargtypes => '', + prosrc => 'pg_stat_get_checkpoint_sync_time' }, +{ oid => '2775', descr => 'statistics: number of buffers written by backends', + proname => 'pg_stat_get_buf_written_backend', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => '', + prosrc => 'pg_stat_get_buf_written_backend' }, +{ oid => '3063', + descr => 'statistics: number of backend buffer writes that did their own fsync', + proname => 'pg_stat_get_buf_fsync_backend', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => '', + prosrc => 'pg_stat_get_buf_fsync_backend' }, +{ oid => '2859', descr => 'statistics: number of buffer allocations', + proname => 'pg_stat_get_buf_alloc', provolatile => 's', proparallel => 'r', + prorettype => 'int8', proargtypes => '', prosrc => 'pg_stat_get_buf_alloc' }, + +{ oid => '2978', descr => 'statistics: number of function calls', + proname => 'pg_stat_get_function_calls', provolatile => 's', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_function_calls' }, +{ oid => '2979', + descr => 'statistics: total execution time of function, in milliseconds', + proname => 'pg_stat_get_function_total_time', provolatile => 's', + proparallel => 'r', prorettype => 'float8', proargtypes => 'oid', + prosrc => 'pg_stat_get_function_total_time' }, +{ oid => '2980', + descr => 'statistics: self execution time of function, in milliseconds', + proname => 'pg_stat_get_function_self_time', provolatile => 's', + proparallel => 'r', prorettype => 'float8', proargtypes => 'oid', + prosrc => 'pg_stat_get_function_self_time' }, + +{ oid => '3037', + descr => 'statistics: number of scans done for table/index in current transaction', + proname => 'pg_stat_get_xact_numscans', provolatile => 'v', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_numscans' }, +{ oid => '3038', + descr => 'statistics: number of tuples read by seqscan in current transaction', + proname => 'pg_stat_get_xact_tuples_returned', provolatile => 'v', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_tuples_returned' }, +{ oid => '3039', + descr => 'statistics: number of tuples fetched by idxscan in current transaction', + proname => 'pg_stat_get_xact_tuples_fetched', provolatile => 'v', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_tuples_fetched' }, +{ oid => '3040', + descr => 'statistics: number of tuples inserted in current transaction', + proname => 'pg_stat_get_xact_tuples_inserted', provolatile => 'v', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_tuples_inserted' }, +{ oid => '3041', + descr => 'statistics: number of tuples updated in current transaction', + proname => 'pg_stat_get_xact_tuples_updated', provolatile => 'v', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_tuples_updated' }, +{ oid => '3042', + descr => 'statistics: number of tuples deleted in current transaction', + proname => 'pg_stat_get_xact_tuples_deleted', provolatile => 'v', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_tuples_deleted' }, +{ oid => '3043', + descr => 'statistics: number of tuples hot updated in current transaction', + proname => 'pg_stat_get_xact_tuples_hot_updated', provolatile => 'v', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_tuples_hot_updated' }, +{ oid => '3044', + descr => 'statistics: number of blocks fetched in current transaction', + proname => 'pg_stat_get_xact_blocks_fetched', provolatile => 'v', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_blocks_fetched' }, +{ oid => '3045', + descr => 'statistics: number of blocks found in cache in current transaction', + proname => 'pg_stat_get_xact_blocks_hit', provolatile => 'v', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_blocks_hit' }, +{ oid => '3046', + descr => 'statistics: number of function calls in current transaction', + proname => 'pg_stat_get_xact_function_calls', provolatile => 'v', + proparallel => 'r', prorettype => 'int8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_function_calls' }, +{ oid => '3047', + descr => 'statistics: total execution time of function in current transaction, in milliseconds', + proname => 'pg_stat_get_xact_function_total_time', provolatile => 'v', + proparallel => 'r', prorettype => 'float8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_function_total_time' }, +{ oid => '3048', + descr => 'statistics: self execution time of function in current transaction, in milliseconds', + proname => 'pg_stat_get_xact_function_self_time', provolatile => 'v', + proparallel => 'r', prorettype => 'float8', proargtypes => 'oid', + prosrc => 'pg_stat_get_xact_function_self_time' }, + +{ oid => '3788', + descr => 'statistics: timestamp of the current statistics snapshot', + proname => 'pg_stat_get_snapshot_timestamp', provolatile => 's', + proparallel => 'r', prorettype => 'timestamptz', proargtypes => '', + prosrc => 'pg_stat_get_snapshot_timestamp' }, +{ oid => '2230', + descr => 'statistics: discard current transaction\'s statistics snapshot', + proname => 'pg_stat_clear_snapshot', proisstrict => 'f', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => '', + prosrc => 'pg_stat_clear_snapshot' }, +{ oid => '2274', + descr => 'statistics: reset collected statistics for current database', + proname => 'pg_stat_reset', proisstrict => 'f', provolatile => 'v', + prorettype => 'void', proargtypes => '', prosrc => 'pg_stat_reset' }, +{ oid => '3775', + descr => 'statistics: reset collected statistics shared across the cluster', + proname => 'pg_stat_reset_shared', provolatile => 'v', prorettype => 'void', + proargtypes => 'text', prosrc => 'pg_stat_reset_shared' }, +{ oid => '3776', + descr => 'statistics: reset collected statistics for a single table or index in the current database', + proname => 'pg_stat_reset_single_table_counters', provolatile => 'v', + prorettype => 'void', proargtypes => 'oid', + prosrc => 'pg_stat_reset_single_table_counters' }, +{ oid => '3777', + descr => 'statistics: reset collected statistics for a single function in the current database', + proname => 'pg_stat_reset_single_function_counters', provolatile => 'v', + prorettype => 'void', proargtypes => 'oid', + prosrc => 'pg_stat_reset_single_function_counters' }, + +{ oid => '3163', descr => 'current trigger depth', + proname => 'pg_trigger_depth', provolatile => 's', proparallel => 'r', + prorettype => 'int4', proargtypes => '', prosrc => 'pg_trigger_depth' }, + +{ oid => '3778', descr => 'tablespace location', + proname => 'pg_tablespace_location', provolatile => 's', prorettype => 'text', + proargtypes => 'oid', prosrc => 'pg_tablespace_location' }, + +{ oid => '1946', + descr => 'convert bytea value into some ascii-only text string', + proname => 'encode', prorettype => 'text', proargtypes => 'bytea text', + prosrc => 'binary_encode' }, +{ oid => '1947', + descr => 'convert ascii-encoded text string into bytea value', + proname => 'decode', prorettype => 'bytea', proargtypes => 'text text', + prosrc => 'binary_decode' }, + +{ oid => '1948', + proname => 'byteaeq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bytea bytea', prosrc => 'byteaeq' }, +{ oid => '1949', + proname => 'bytealt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bytea bytea', prosrc => 'bytealt' }, +{ oid => '1950', + proname => 'byteale', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bytea bytea', prosrc => 'byteale' }, +{ oid => '1951', + proname => 'byteagt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bytea bytea', prosrc => 'byteagt' }, +{ oid => '1952', + proname => 'byteage', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bytea bytea', prosrc => 'byteage' }, +{ oid => '1953', + proname => 'byteane', proleakproof => 't', prorettype => 'bool', + proargtypes => 'bytea bytea', prosrc => 'byteane' }, +{ oid => '1954', descr => 'less-equal-greater', + proname => 'byteacmp', prorettype => 'int4', proargtypes => 'bytea bytea', + prosrc => 'byteacmp' }, +{ oid => '3331', descr => 'sort support', + proname => 'bytea_sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'bytea_sortsupport' }, + +{ oid => '3917', descr => 'transform a timestamp length coercion', + proname => 'timestamp_transform', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'timestamp_transform' }, +{ oid => '3944', descr => 'transform a time length coercion', + proname => 'time_transform', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'time_transform' }, + +{ oid => '1961', descr => 'adjust timestamp precision', + proname => 'timestamp', protransform => 'timestamp_transform', + prorettype => 'timestamp', proargtypes => 'timestamp int4', + prosrc => 'timestamp_scale' }, + +{ oid => '1965', descr => 'larger of two', + proname => 'oidlarger', prorettype => 'oid', proargtypes => 'oid oid', + prosrc => 'oidlarger' }, +{ oid => '1966', descr => 'smaller of two', + proname => 'oidsmaller', prorettype => 'oid', proargtypes => 'oid oid', + prosrc => 'oidsmaller' }, + +{ oid => '1967', descr => 'adjust timestamptz precision', + proname => 'timestamptz', protransform => 'timestamp_transform', + prorettype => 'timestamptz', proargtypes => 'timestamptz int4', + prosrc => 'timestamptz_scale' }, +{ oid => '1968', descr => 'adjust time precision', + proname => 'time', protransform => 'time_transform', prorettype => 'time', + proargtypes => 'time int4', prosrc => 'time_scale' }, +{ oid => '1969', descr => 'adjust time with time zone precision', + proname => 'timetz', protransform => 'time_transform', prorettype => 'timetz', + proargtypes => 'timetz int4', prosrc => 'timetz_scale' }, + +{ oid => '2003', + proname => 'textanycat', prolang => '14', provolatile => 's', + prorettype => 'text', proargtypes => 'text anynonarray', + prosrc => 'select $1 || $2::pg_catalog.text' }, +{ oid => '2004', + proname => 'anytextcat', prolang => '14', provolatile => 's', + prorettype => 'text', proargtypes => 'anynonarray text', + prosrc => 'select $1::pg_catalog.text || $2' }, + +{ oid => '2005', + proname => 'bytealike', prorettype => 'bool', proargtypes => 'bytea bytea', + prosrc => 'bytealike' }, +{ oid => '2006', + proname => 'byteanlike', prorettype => 'bool', proargtypes => 'bytea bytea', + prosrc => 'byteanlike' }, +{ oid => '2007', descr => 'matches LIKE expression', + proname => 'like', prorettype => 'bool', proargtypes => 'bytea bytea', + prosrc => 'bytealike' }, +{ oid => '2008', descr => 'does not match LIKE expression', + proname => 'notlike', prorettype => 'bool', proargtypes => 'bytea bytea', + prosrc => 'byteanlike' }, +{ oid => '2009', descr => 'convert LIKE pattern to use backslash escapes', + proname => 'like_escape', prorettype => 'bytea', proargtypes => 'bytea bytea', + prosrc => 'like_escape_bytea' }, +{ oid => '2010', descr => 'octet length', + proname => 'length', prorettype => 'int4', proargtypes => 'bytea', + prosrc => 'byteaoctetlen' }, +{ oid => '2011', + proname => 'byteacat', prorettype => 'bytea', proargtypes => 'bytea bytea', + prosrc => 'byteacat' }, +{ oid => '2012', descr => 'extract portion of string', + proname => 'substring', prorettype => 'bytea', + proargtypes => 'bytea int4 int4', prosrc => 'bytea_substr' }, +{ oid => '2013', descr => 'extract portion of string', + proname => 'substring', prorettype => 'bytea', proargtypes => 'bytea int4', + prosrc => 'bytea_substr_no_len' }, +{ oid => '2085', descr => 'extract portion of string', + proname => 'substr', prorettype => 'bytea', proargtypes => 'bytea int4 int4', + prosrc => 'bytea_substr' }, +{ oid => '2086', descr => 'extract portion of string', + proname => 'substr', prorettype => 'bytea', proargtypes => 'bytea int4', + prosrc => 'bytea_substr_no_len' }, +{ oid => '2014', descr => 'position of substring', + proname => 'position', prorettype => 'int4', proargtypes => 'bytea bytea', + prosrc => 'byteapos' }, +{ oid => '2015', descr => 'trim both ends of string', + proname => 'btrim', prorettype => 'bytea', proargtypes => 'bytea bytea', + prosrc => 'byteatrim' }, + +{ oid => '2019', descr => 'convert timestamp with time zone to time', + proname => 'time', provolatile => 's', prorettype => 'time', + proargtypes => 'timestamptz', prosrc => 'timestamptz_time' }, +{ oid => '2020', descr => 'truncate timestamp to specified units', + proname => 'date_trunc', prorettype => 'timestamp', + proargtypes => 'text timestamp', prosrc => 'timestamp_trunc' }, +{ oid => '2021', descr => 'extract field from timestamp', + proname => 'date_part', prorettype => 'float8', + proargtypes => 'text timestamp', prosrc => 'timestamp_part' }, +{ oid => '2023', descr => 'convert abstime to timestamp', + proname => 'timestamp', provolatile => 's', prorettype => 'timestamp', + proargtypes => 'abstime', prosrc => 'abstime_timestamp' }, +{ oid => '2024', descr => 'convert date to timestamp', + proname => 'timestamp', prorettype => 'timestamp', proargtypes => 'date', + prosrc => 'date_timestamp' }, +{ oid => '2025', descr => 'convert date and time to timestamp', + proname => 'timestamp', prorettype => 'timestamp', proargtypes => 'date time', + prosrc => 'datetime_timestamp' }, +{ oid => '2027', descr => 'convert timestamp with time zone to timestamp', + proname => 'timestamp', provolatile => 's', prorettype => 'timestamp', + proargtypes => 'timestamptz', prosrc => 'timestamptz_timestamp' }, +{ oid => '2028', descr => 'convert timestamp to timestamp with time zone', + proname => 'timestamptz', provolatile => 's', prorettype => 'timestamptz', + proargtypes => 'timestamp', prosrc => 'timestamp_timestamptz' }, +{ oid => '2029', descr => 'convert timestamp to date', + proname => 'date', prorettype => 'date', proargtypes => 'timestamp', + prosrc => 'timestamp_date' }, +{ oid => '2030', descr => 'convert timestamp to abstime', + proname => 'abstime', provolatile => 's', prorettype => 'abstime', + proargtypes => 'timestamp', prosrc => 'timestamp_abstime' }, +{ oid => '2031', + proname => 'timestamp_mi', prorettype => 'interval', + proargtypes => 'timestamp timestamp', prosrc => 'timestamp_mi' }, +{ oid => '2032', + proname => 'timestamp_pl_interval', prorettype => 'timestamp', + proargtypes => 'timestamp interval', prosrc => 'timestamp_pl_interval' }, +{ oid => '2033', + proname => 'timestamp_mi_interval', prorettype => 'timestamp', + proargtypes => 'timestamp interval', prosrc => 'timestamp_mi_interval' }, +{ oid => '2035', descr => 'smaller of two', + proname => 'timestamp_smaller', prorettype => 'timestamp', + proargtypes => 'timestamp timestamp', prosrc => 'timestamp_smaller' }, +{ oid => '2036', descr => 'larger of two', + proname => 'timestamp_larger', prorettype => 'timestamp', + proargtypes => 'timestamp timestamp', prosrc => 'timestamp_larger' }, +{ oid => '2037', descr => 'adjust time with time zone to new zone', + proname => 'timezone', provolatile => 'v', prorettype => 'timetz', + proargtypes => 'text timetz', prosrc => 'timetz_zone' }, +{ oid => '2038', descr => 'adjust time with time zone to new zone', + proname => 'timezone', prorettype => 'timetz', + proargtypes => 'interval timetz', prosrc => 'timetz_izone' }, +{ oid => '2039', descr => 'hash', + proname => 'timestamp_hash', prorettype => 'int4', proargtypes => 'timestamp', + prosrc => 'timestamp_hash' }, +{ oid => '3411', descr => 'hash', + proname => 'timestamp_hash_extended', prorettype => 'int8', + proargtypes => 'timestamp int8', prosrc => 'timestamp_hash_extended' }, +{ oid => '2041', descr => 'intervals overlap?', + proname => 'overlaps', proisstrict => 'f', prorettype => 'bool', + proargtypes => 'timestamp timestamp timestamp timestamp', + prosrc => 'overlaps_timestamp' }, +{ oid => '2042', descr => 'intervals overlap?', + proname => 'overlaps', prolang => '14', proisstrict => 'f', + prorettype => 'bool', proargtypes => 'timestamp interval timestamp interval', + prosrc => 'select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))' }, +{ oid => '2043', descr => 'intervals overlap?', + proname => 'overlaps', prolang => '14', proisstrict => 'f', + prorettype => 'bool', proargtypes => 'timestamp timestamp timestamp interval', + prosrc => 'select ($1, $2) overlaps ($3, ($3 + $4))' }, +{ oid => '2044', descr => 'intervals overlap?', + proname => 'overlaps', prolang => '14', proisstrict => 'f', + prorettype => 'bool', proargtypes => 'timestamp interval timestamp timestamp', + prosrc => 'select ($1, ($1 + $2)) overlaps ($3, $4)' }, +{ oid => '2045', descr => 'less-equal-greater', + proname => 'timestamp_cmp', prorettype => 'int4', + proargtypes => 'timestamp timestamp', prosrc => 'timestamp_cmp' }, +{ oid => '3137', descr => 'sort support', + proname => 'timestamp_sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'timestamp_sortsupport' }, + +{ oid => '4134', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'timestamp timestamp interval bool bool', + prosrc => 'in_range_timestamp_interval' }, +{ oid => '4135', descr => 'window RANGE support', + proname => 'in_range', provolatile => 's', prorettype => 'bool', + proargtypes => 'timestamptz timestamptz interval bool bool', + prosrc => 'in_range_timestamptz_interval' }, +{ oid => '4136', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'interval interval interval bool bool', + prosrc => 'in_range_interval_interval' }, +{ oid => '4137', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'time time interval bool bool', + prosrc => 'in_range_time_interval' }, +{ oid => '4138', descr => 'window RANGE support', + proname => 'in_range', prorettype => 'bool', + proargtypes => 'timetz timetz interval bool bool', + prosrc => 'in_range_timetz_interval' }, + +{ oid => '2046', descr => 'convert time with time zone to time', + proname => 'time', prorettype => 'time', proargtypes => 'timetz', + prosrc => 'timetz_time' }, +{ oid => '2047', descr => 'convert time to time with time zone', + proname => 'timetz', provolatile => 's', prorettype => 'timetz', + proargtypes => 'time', prosrc => 'time_timetz' }, +{ oid => '2048', descr => 'finite timestamp?', + proname => 'isfinite', prorettype => 'bool', proargtypes => 'timestamp', + prosrc => 'timestamp_finite' }, +{ oid => '2049', descr => 'format timestamp to text', + proname => 'to_char', provolatile => 's', prorettype => 'text', + proargtypes => 'timestamp text', prosrc => 'timestamp_to_char' }, +{ oid => '2052', + proname => 'timestamp_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamp timestamp', prosrc => 'timestamp_eq' }, +{ oid => '2053', + proname => 'timestamp_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamp timestamp', prosrc => 'timestamp_ne' }, +{ oid => '2054', + proname => 'timestamp_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamp timestamp', prosrc => 'timestamp_lt' }, +{ oid => '2055', + proname => 'timestamp_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamp timestamp', prosrc => 'timestamp_le' }, +{ oid => '2056', + proname => 'timestamp_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamp timestamp', prosrc => 'timestamp_ge' }, +{ oid => '2057', + proname => 'timestamp_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'timestamp timestamp', prosrc => 'timestamp_gt' }, +{ oid => '2058', descr => 'date difference preserving months and years', + proname => 'age', prorettype => 'interval', + proargtypes => 'timestamp timestamp', prosrc => 'timestamp_age' }, +{ oid => '2059', + descr => 'date difference from today preserving months and years', + proname => 'age', prolang => '14', provolatile => 's', + prorettype => 'interval', proargtypes => 'timestamp', + prosrc => 'select pg_catalog.age(cast(current_date as timestamp without time zone), $1)' }, + +{ oid => '2069', descr => 'adjust timestamp to new time zone', + proname => 'timezone', protransform => 'timestamp_zone_transform', + prorettype => 'timestamptz', proargtypes => 'text timestamp', + prosrc => 'timestamp_zone' }, +{ oid => '2070', descr => 'adjust timestamp to new time zone', + proname => 'timezone', protransform => 'timestamp_izone_transform', + prorettype => 'timestamptz', proargtypes => 'interval timestamp', + prosrc => 'timestamp_izone' }, +{ oid => '2071', + proname => 'date_pl_interval', prorettype => 'timestamp', + proargtypes => 'date interval', prosrc => 'date_pl_interval' }, +{ oid => '2072', + proname => 'date_mi_interval', prorettype => 'timestamp', + proargtypes => 'date interval', prosrc => 'date_mi_interval' }, + +{ oid => '2073', descr => 'extract text matching regular expression', + proname => 'substring', prorettype => 'text', proargtypes => 'text text', + prosrc => 'textregexsubstr' }, +{ oid => '2074', descr => 'extract text matching SQL99 regular expression', + proname => 'substring', prolang => '14', prorettype => 'text', + proargtypes => 'text text text', + prosrc => 'select pg_catalog.substring($1, pg_catalog.similar_escape($2, $3))' }, + +{ oid => '2075', descr => 'convert int8 to bitstring', + proname => 'bit', prorettype => 'bit', proargtypes => 'int8 int4', + prosrc => 'bitfromint8' }, +{ oid => '2076', descr => 'convert bitstring to int8', + proname => 'int8', prorettype => 'int8', proargtypes => 'bit', + prosrc => 'bittoint8' }, + +{ oid => '2077', descr => 'SHOW X as a function', + proname => 'current_setting', provolatile => 's', prorettype => 'text', + proargtypes => 'text', prosrc => 'show_config_by_name' }, +{ oid => '3294', + descr => 'SHOW X as a function, optionally no error for missing variable', + proname => 'current_setting', provolatile => 's', prorettype => 'text', + proargtypes => 'text bool', prosrc => 'show_config_by_name_missing_ok' }, +{ oid => '2078', descr => 'SET X as a function', + proname => 'set_config', proisstrict => 'f', provolatile => 'v', + proparallel => 'u', prorettype => 'text', proargtypes => 'text text bool', + prosrc => 'set_config_by_name' }, +{ oid => '2084', descr => 'SHOW ALL as a function', + proname => 'pg_show_all_settings', prorows => '1000', proretset => 't', + provolatile => 's', prorettype => 'record', proargtypes => '', + proallargtypes => '{text,text,text,text,text,text,text,text,text,text,text,_text,text,text,text,int4,bool}', + proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', + proargnames => '{name,setting,unit,category,short_desc,extra_desc,context,vartype,source,min_val,max_val,enumvals,boot_val,reset_val,sourcefile,sourceline,pending_restart}', + prosrc => 'show_all_settings' }, +{ oid => '3329', descr => 'show config file settings', + proname => 'pg_show_all_file_settings', prorows => '1000', proretset => 't', + provolatile => 'v', prorettype => 'record', proargtypes => '', + proallargtypes => '{text,int4,int4,text,text,bool,text}', + proargmodes => '{o,o,o,o,o,o,o}', + proargnames => '{sourcefile,sourceline,seqno,name,setting,applied,error}', + prosrc => 'show_all_file_settings' }, +{ oid => '3401', descr => 'show pg_hba.conf rules', + proname => 'pg_hba_file_rules', prorows => '1000', proretset => 't', + provolatile => 'v', prorettype => 'record', proargtypes => '', + proallargtypes => '{int4,text,_text,_text,text,text,text,_text,text}', + proargmodes => '{o,o,o,o,o,o,o,o,o}', + proargnames => '{line_number,type,database,user_name,address,netmask,auth_method,options,error}', + prosrc => 'pg_hba_file_rules' }, +{ oid => '1371', descr => 'view system lock information', + proname => 'pg_lock_status', prorows => '1000', proretset => 't', + provolatile => 'v', prorettype => 'record', proargtypes => '', + proallargtypes => '{text,oid,oid,int4,int2,text,xid,oid,oid,int2,text,int4,text,bool,bool}', + proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', + proargnames => '{locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid,virtualtransaction,pid,mode,granted,fastpath}', + prosrc => 'pg_lock_status' }, +{ oid => '2561', + descr => 'get array of PIDs of sessions blocking specified backend PID from acquiring a heavyweight lock', + proname => 'pg_blocking_pids', provolatile => 'v', prorettype => '_int4', + proargtypes => 'int4', prosrc => 'pg_blocking_pids' }, +{ oid => '3376', + descr => 'get array of PIDs of sessions blocking specified backend PID from acquiring a safe snapshot', + proname => 'pg_safe_snapshot_blocking_pids', provolatile => 'v', + prorettype => '_int4', proargtypes => 'int4', + prosrc => 'pg_safe_snapshot_blocking_pids' }, +{ oid => '3378', descr => 'isolationtester support function', + proname => 'pg_isolation_test_session_is_blocked', provolatile => 'v', + prorettype => 'bool', proargtypes => 'int4 _int4', + prosrc => 'pg_isolation_test_session_is_blocked' }, +{ oid => '1065', descr => 'view two-phase transactions', + proname => 'pg_prepared_xact', prorows => '1000', proretset => 't', + provolatile => 'v', prorettype => 'record', proargtypes => '', + proallargtypes => '{xid,text,timestamptz,oid,oid}', + proargmodes => '{o,o,o,o,o}', + proargnames => '{transaction,gid,prepared,ownerid,dbid}', + prosrc => 'pg_prepared_xact' }, +{ oid => '3819', descr => 'view members of a multixactid', + proname => 'pg_get_multixact_members', prorows => '1000', proretset => 't', + provolatile => 'v', prorettype => 'record', proargtypes => 'xid', + proallargtypes => '{xid,xid,text}', proargmodes => '{i,o,o}', + proargnames => '{multixid,xid,mode}', prosrc => 'pg_get_multixact_members' }, + +{ oid => '3581', descr => 'get commit timestamp of a transaction', + proname => 'pg_xact_commit_timestamp', provolatile => 'v', + prorettype => 'timestamptz', proargtypes => 'xid', + prosrc => 'pg_xact_commit_timestamp' }, + +{ oid => '3583', + descr => 'get transaction Id and commit timestamp of latest transaction commit', + proname => 'pg_last_committed_xact', provolatile => 'v', + prorettype => 'record', proargtypes => '', + proallargtypes => '{xid,timestamptz}', proargmodes => '{o,o}', + proargnames => '{xid,timestamp}', prosrc => 'pg_last_committed_xact' }, + +{ oid => '3537', descr => 'get identification of SQL object', + proname => 'pg_describe_object', provolatile => 's', prorettype => 'text', + proargtypes => 'oid oid int4', prosrc => 'pg_describe_object' }, + +{ oid => '3839', + descr => 'get machine-parseable identification of SQL object', + proname => 'pg_identify_object', provolatile => 's', prorettype => 'record', + proargtypes => 'oid oid int4', + proallargtypes => '{oid,oid,int4,text,text,text,text}', + proargmodes => '{i,i,i,o,o,o,o}', + proargnames => '{classid,objid,objsubid,type,schema,name,identity}', + prosrc => 'pg_identify_object' }, + +{ oid => '3382', + descr => 'get identification of SQL object for pg_get_object_address()', + proname => 'pg_identify_object_as_address', provolatile => 's', + prorettype => 'record', proargtypes => 'oid oid int4', + proallargtypes => '{oid,oid,int4,text,_text,_text}', + proargmodes => '{i,i,i,o,o,o}', + proargnames => '{classid,objid,objsubid,type,object_names,object_args}', + prosrc => 'pg_identify_object_as_address' }, + +{ oid => '3954', + descr => 'get OID-based object address from name/args arrays', + proname => 'pg_get_object_address', provolatile => 's', + prorettype => 'record', proargtypes => 'text _text _text', + proallargtypes => '{text,_text,_text,oid,oid,int4}', + proargmodes => '{i,i,i,o,o,o}', + proargnames => '{type,name,args,classid,objid,objsubid}', + prosrc => 'pg_get_object_address' }, + +{ oid => '2079', descr => 'is table visible in search path?', + proname => 'pg_table_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', prosrc => 'pg_table_is_visible' }, +{ oid => '2080', descr => 'is type visible in search path?', + proname => 'pg_type_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', prosrc => 'pg_type_is_visible' }, +{ oid => '2081', descr => 'is function visible in search path?', + proname => 'pg_function_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_function_is_visible' }, +{ oid => '2082', descr => 'is operator visible in search path?', + proname => 'pg_operator_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_operator_is_visible' }, +{ oid => '2083', descr => 'is opclass visible in search path?', + proname => 'pg_opclass_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_opclass_is_visible' }, +{ oid => '3829', descr => 'is opfamily visible in search path?', + proname => 'pg_opfamily_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_opfamily_is_visible' }, +{ oid => '2093', descr => 'is conversion visible in search path?', + proname => 'pg_conversion_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_conversion_is_visible' }, +{ oid => '3403', descr => 'is statistics object visible in search path?', + proname => 'pg_statistics_obj_is_visible', procost => '10', + provolatile => 's', prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_statistics_obj_is_visible' }, +{ oid => '3756', descr => 'is text search parser visible in search path?', + proname => 'pg_ts_parser_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_ts_parser_is_visible' }, +{ oid => '3757', descr => 'is text search dictionary visible in search path?', + proname => 'pg_ts_dict_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_ts_dict_is_visible' }, +{ oid => '3768', descr => 'is text search template visible in search path?', + proname => 'pg_ts_template_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_ts_template_is_visible' }, +{ oid => '3758', + descr => 'is text search configuration visible in search path?', + proname => 'pg_ts_config_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_ts_config_is_visible' }, +{ oid => '3815', descr => 'is collation visible in search path?', + proname => 'pg_collation_is_visible', procost => '10', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_collation_is_visible' }, + +{ oid => '2854', descr => 'get OID of current session\'s temp schema, if any', + proname => 'pg_my_temp_schema', provolatile => 's', proparallel => 'r', + prorettype => 'oid', proargtypes => '', prosrc => 'pg_my_temp_schema' }, +{ oid => '2855', descr => 'is schema another session\'s temp schema?', + proname => 'pg_is_other_temp_schema', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid', + prosrc => 'pg_is_other_temp_schema' }, + +{ oid => '2171', descr => 'cancel a server process\' current query', + proname => 'pg_cancel_backend', provolatile => 'v', prorettype => 'bool', + proargtypes => 'int4', prosrc => 'pg_cancel_backend' }, +{ oid => '2096', descr => 'terminate a server process', + proname => 'pg_terminate_backend', provolatile => 'v', prorettype => 'bool', + proargtypes => 'int4', prosrc => 'pg_terminate_backend' }, +{ oid => '2172', descr => 'prepare for taking an online backup', + proname => 'pg_start_backup', provolatile => 'v', proparallel => 'r', + prorettype => 'pg_lsn', proargtypes => 'text bool bool', + prosrc => 'pg_start_backup' }, +{ oid => '2173', descr => 'finish taking an online backup', + proname => 'pg_stop_backup', provolatile => 'v', proparallel => 'r', + prorettype => 'pg_lsn', proargtypes => '', prosrc => 'pg_stop_backup' }, +{ oid => '2739', descr => 'finish taking an online backup', + proname => 'pg_stop_backup', prorows => '1', proretset => 't', + provolatile => 'v', proparallel => 'r', prorettype => 'record', + proargtypes => 'bool bool', proallargtypes => '{bool,bool,pg_lsn,text,text}', + proargmodes => '{i,i,o,o,o}', + proargnames => '{exclusive,wait_for_archive,lsn,labelfile,spcmapfile}', + prosrc => 'pg_stop_backup_v2' }, +{ oid => '3813', descr => 'true if server is in online backup', + proname => 'pg_is_in_backup', provolatile => 'v', prorettype => 'bool', + proargtypes => '', prosrc => 'pg_is_in_backup' }, +{ oid => '3814', descr => 'start time of an online backup', + proname => 'pg_backup_start_time', provolatile => 's', + prorettype => 'timestamptz', proargtypes => '', + prosrc => 'pg_backup_start_time' }, +{ oid => '2848', descr => 'switch to new wal file', + proname => 'pg_switch_wal', provolatile => 'v', prorettype => 'pg_lsn', + proargtypes => '', prosrc => 'pg_switch_wal' }, +{ oid => '3098', descr => 'create a named restore point', + proname => 'pg_create_restore_point', provolatile => 'v', + prorettype => 'pg_lsn', proargtypes => 'text', + prosrc => 'pg_create_restore_point' }, +{ oid => '2849', descr => 'current wal write location', + proname => 'pg_current_wal_lsn', provolatile => 'v', prorettype => 'pg_lsn', + proargtypes => '', prosrc => 'pg_current_wal_lsn' }, +{ oid => '2852', descr => 'current wal insert location', + proname => 'pg_current_wal_insert_lsn', provolatile => 'v', + prorettype => 'pg_lsn', proargtypes => '', + prosrc => 'pg_current_wal_insert_lsn' }, +{ oid => '3330', descr => 'current wal flush location', + proname => 'pg_current_wal_flush_lsn', provolatile => 'v', + prorettype => 'pg_lsn', proargtypes => '', + prosrc => 'pg_current_wal_flush_lsn' }, +{ oid => '2850', + descr => 'wal filename and byte offset, given a wal location', + proname => 'pg_walfile_name_offset', prorettype => 'record', + proargtypes => 'pg_lsn', proallargtypes => '{pg_lsn,text,int4}', + proargmodes => '{i,o,o}', proargnames => '{lsn,file_name,file_offset}', + prosrc => 'pg_walfile_name_offset' }, +{ oid => '2851', descr => 'wal filename, given a wal location', + proname => 'pg_walfile_name', prorettype => 'text', proargtypes => 'pg_lsn', + prosrc => 'pg_walfile_name' }, + +{ oid => '3165', descr => 'difference in bytes, given two wal locations', + proname => 'pg_wal_lsn_diff', prorettype => 'numeric', + proargtypes => 'pg_lsn pg_lsn', prosrc => 'pg_wal_lsn_diff' }, + +{ oid => '3809', descr => 'export a snapshot', + proname => 'pg_export_snapshot', provolatile => 'v', proparallel => 'u', + prorettype => 'text', proargtypes => '', prosrc => 'pg_export_snapshot' }, + +{ oid => '3810', descr => 'true if server is in recovery', + proname => 'pg_is_in_recovery', provolatile => 'v', prorettype => 'bool', + proargtypes => '', prosrc => 'pg_is_in_recovery' }, + +{ oid => '3820', descr => 'current wal flush location', + proname => 'pg_last_wal_receive_lsn', provolatile => 'v', + prorettype => 'pg_lsn', proargtypes => '', + prosrc => 'pg_last_wal_receive_lsn' }, +{ oid => '3821', descr => 'last wal replay location', + proname => 'pg_last_wal_replay_lsn', provolatile => 'v', + prorettype => 'pg_lsn', proargtypes => '', + prosrc => 'pg_last_wal_replay_lsn' }, +{ oid => '3830', descr => 'timestamp of last replay xact', + proname => 'pg_last_xact_replay_timestamp', provolatile => 'v', + prorettype => 'timestamptz', proargtypes => '', + prosrc => 'pg_last_xact_replay_timestamp' }, + +{ oid => '3071', descr => 'pause wal replay', + proname => 'pg_wal_replay_pause', provolatile => 'v', prorettype => 'void', + proargtypes => '', prosrc => 'pg_wal_replay_pause' }, +{ oid => '3072', descr => 'resume wal replay, if it was paused', + proname => 'pg_wal_replay_resume', provolatile => 'v', prorettype => 'void', + proargtypes => '', prosrc => 'pg_wal_replay_resume' }, +{ oid => '3073', descr => 'true if wal replay is paused', + proname => 'pg_is_wal_replay_paused', provolatile => 'v', + prorettype => 'bool', proargtypes => '', + prosrc => 'pg_is_wal_replay_paused' }, + +{ oid => '2621', descr => 'reload configuration files', + proname => 'pg_reload_conf', provolatile => 'v', prorettype => 'bool', + proargtypes => '', prosrc => 'pg_reload_conf' }, +{ oid => '2622', descr => 'rotate log file', + proname => 'pg_rotate_logfile', provolatile => 'v', prorettype => 'bool', + proargtypes => '', prosrc => 'pg_rotate_logfile_v2' }, +{ oid => '4099', descr => 'rotate log file - old version for adminpack 1.0', + proname => 'pg_rotate_logfile_old', provolatile => 'v', prorettype => 'bool', + proargtypes => '', prosrc => 'pg_rotate_logfile' }, +{ oid => '3800', descr => 'current logging collector file location', + proname => 'pg_current_logfile', proisstrict => 'f', provolatile => 'v', + prorettype => 'text', proargtypes => '', prosrc => 'pg_current_logfile' }, +{ oid => '3801', descr => 'current logging collector file location', + proname => 'pg_current_logfile', proisstrict => 'f', provolatile => 'v', + prorettype => 'text', proargtypes => 'text', + prosrc => 'pg_current_logfile_1arg' }, + +{ oid => '2623', descr => 'get information about file', + proname => 'pg_stat_file', provolatile => 'v', prorettype => 'record', + proargtypes => 'text', + proallargtypes => '{text,int8,timestamptz,timestamptz,timestamptz,timestamptz,bool}', + proargmodes => '{i,o,o,o,o,o,o}', + proargnames => '{filename,size,access,modification,change,creation,isdir}', + prosrc => 'pg_stat_file_1arg' }, +{ oid => '3307', descr => 'get information about file', + proname => 'pg_stat_file', provolatile => 'v', prorettype => 'record', + proargtypes => 'text bool', + proallargtypes => '{text,bool,int8,timestamptz,timestamptz,timestamptz,timestamptz,bool}', + proargmodes => '{i,i,o,o,o,o,o,o}', + proargnames => '{filename,missing_ok,size,access,modification,change,creation,isdir}', + prosrc => 'pg_stat_file' }, +{ oid => '2624', descr => 'read text from a file', + proname => 'pg_read_file', provolatile => 'v', prorettype => 'text', + proargtypes => 'text int8 int8', prosrc => 'pg_read_file_off_len' }, +{ oid => '3293', descr => 'read text from a file', + proname => 'pg_read_file', provolatile => 'v', prorettype => 'text', + proargtypes => 'text int8 int8 bool', prosrc => 'pg_read_file_v2' }, +{ oid => '4100', + descr => 'read text from a file - old version for adminpack 1.0', + proname => 'pg_read_file_old', provolatile => 'v', prorettype => 'text', + proargtypes => 'text int8 int8', prosrc => 'pg_read_file' }, +{ oid => '3826', descr => 'read text from a file', + proname => 'pg_read_file', provolatile => 'v', prorettype => 'text', + proargtypes => 'text', prosrc => 'pg_read_file_all' }, +{ oid => '3827', descr => 'read bytea from a file', + proname => 'pg_read_binary_file', provolatile => 'v', prorettype => 'bytea', + proargtypes => 'text int8 int8', prosrc => 'pg_read_binary_file_off_len' }, +{ oid => '3295', descr => 'read bytea from a file', + proname => 'pg_read_binary_file', provolatile => 'v', prorettype => 'bytea', + proargtypes => 'text int8 int8 bool', prosrc => 'pg_read_binary_file' }, +{ oid => '3828', descr => 'read bytea from a file', + proname => 'pg_read_binary_file', provolatile => 'v', prorettype => 'bytea', + proargtypes => 'text', prosrc => 'pg_read_binary_file_all' }, +{ oid => '2625', descr => 'list all files in a directory', + proname => 'pg_ls_dir', prorows => '1000', proretset => 't', + provolatile => 'v', prorettype => 'text', proargtypes => 'text', + prosrc => 'pg_ls_dir_1arg' }, +{ oid => '3297', descr => 'list all files in a directory', + proname => 'pg_ls_dir', prorows => '1000', proretset => 't', + provolatile => 'v', prorettype => 'text', proargtypes => 'text bool bool', + prosrc => 'pg_ls_dir' }, +{ oid => '2626', descr => 'sleep for the specified time in seconds', + proname => 'pg_sleep', provolatile => 'v', prorettype => 'void', + proargtypes => 'float8', prosrc => 'pg_sleep' }, +{ oid => '3935', descr => 'sleep for the specified interval', + proname => 'pg_sleep_for', prolang => '14', provolatile => 'v', + prorettype => 'void', proargtypes => 'interval', + prosrc => 'select pg_catalog.pg_sleep(extract(epoch from pg_catalog.clock_timestamp() operator(pg_catalog.+) $1) operator(pg_catalog.-) extract(epoch from pg_catalog.clock_timestamp()))' }, +{ oid => '3936', descr => 'sleep until the specified time', + proname => 'pg_sleep_until', prolang => '14', provolatile => 'v', + prorettype => 'void', proargtypes => 'timestamptz', + prosrc => 'select pg_catalog.pg_sleep(extract(epoch from $1) operator(pg_catalog.-) extract(epoch from pg_catalog.clock_timestamp()))' }, +{ oid => '315', descr => 'Is JIT compilation available in this session?', + proname => 'pg_jit_available', provolatile => 'v', prorettype => 'bool', + proargtypes => '', prosrc => 'pg_jit_available' }, + +{ oid => '2971', descr => 'convert boolean to text', + proname => 'text', prorettype => 'text', proargtypes => 'bool', + prosrc => 'booltext' }, + +# Aggregates (moved here from pg_aggregate for 7.3) + +{ oid => '2100', + descr => 'the average (arithmetic mean) as numeric of all bigint values', + proname => 'avg', prokind => 'a', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2101', + descr => 'the average (arithmetic mean) as numeric of all integer values', + proname => 'avg', prokind => 'a', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2102', + descr => 'the average (arithmetic mean) as numeric of all smallint values', + proname => 'avg', prokind => 'a', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2103', + descr => 'the average (arithmetic mean) as numeric of all numeric values', + proname => 'avg', prokind => 'a', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'numeric', prosrc => 'aggregate_dummy' }, +{ oid => '2104', + descr => 'the average (arithmetic mean) as float8 of all float4 values', + proname => 'avg', prokind => 'a', proisstrict => 'f', prorettype => 'float8', + proargtypes => 'float4', prosrc => 'aggregate_dummy' }, +{ oid => '2105', + descr => 'the average (arithmetic mean) as float8 of all float8 values', + proname => 'avg', prokind => 'a', proisstrict => 'f', prorettype => 'float8', + proargtypes => 'float8', prosrc => 'aggregate_dummy' }, +{ oid => '2106', + descr => 'the average (arithmetic mean) as interval of all interval values', + proname => 'avg', prokind => 'a', proisstrict => 'f', + prorettype => 'interval', proargtypes => 'interval', + prosrc => 'aggregate_dummy' }, + +{ oid => '2107', descr => 'sum as numeric across all bigint input values', + proname => 'sum', prokind => 'a', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2108', descr => 'sum as bigint across all integer input values', + proname => 'sum', prokind => 'a', proisstrict => 'f', prorettype => 'int8', + proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2109', descr => 'sum as bigint across all smallint input values', + proname => 'sum', prokind => 'a', proisstrict => 'f', prorettype => 'int8', + proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2110', descr => 'sum as float4 across all float4 input values', + proname => 'sum', prokind => 'a', proisstrict => 'f', prorettype => 'float4', + proargtypes => 'float4', prosrc => 'aggregate_dummy' }, +{ oid => '2111', descr => 'sum as float8 across all float8 input values', + proname => 'sum', prokind => 'a', proisstrict => 'f', prorettype => 'float8', + proargtypes => 'float8', prosrc => 'aggregate_dummy' }, +{ oid => '2112', descr => 'sum as money across all money input values', + proname => 'sum', prokind => 'a', proisstrict => 'f', prorettype => 'money', + proargtypes => 'money', prosrc => 'aggregate_dummy' }, +{ oid => '2113', descr => 'sum as interval across all interval input values', + proname => 'sum', prokind => 'a', proisstrict => 'f', + prorettype => 'interval', proargtypes => 'interval', + prosrc => 'aggregate_dummy' }, +{ oid => '2114', descr => 'sum as numeric across all numeric input values', + proname => 'sum', prokind => 'a', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'numeric', prosrc => 'aggregate_dummy' }, + +{ oid => '2115', descr => 'maximum value of all bigint input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'int8', + proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2116', descr => 'maximum value of all integer input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'int4', + proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2117', descr => 'maximum value of all smallint input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'int2', + proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2118', descr => 'maximum value of all oid input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'oid', + proargtypes => 'oid', prosrc => 'aggregate_dummy' }, +{ oid => '2119', descr => 'maximum value of all float4 input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'float4', + proargtypes => 'float4', prosrc => 'aggregate_dummy' }, +{ oid => '2120', descr => 'maximum value of all float8 input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'float8', + proargtypes => 'float8', prosrc => 'aggregate_dummy' }, +{ oid => '2121', descr => 'maximum value of all abstime input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'abstime', + proargtypes => 'abstime', prosrc => 'aggregate_dummy' }, +{ oid => '2122', descr => 'maximum value of all date input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'date', + proargtypes => 'date', prosrc => 'aggregate_dummy' }, +{ oid => '2123', descr => 'maximum value of all time input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'time', + proargtypes => 'time', prosrc => 'aggregate_dummy' }, +{ oid => '2124', + descr => 'maximum value of all time with time zone input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'timetz', + proargtypes => 'timetz', prosrc => 'aggregate_dummy' }, +{ oid => '2125', descr => 'maximum value of all money input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'money', + proargtypes => 'money', prosrc => 'aggregate_dummy' }, +{ oid => '2126', descr => 'maximum value of all timestamp input values', + proname => 'max', prokind => 'a', proisstrict => 'f', + prorettype => 'timestamp', proargtypes => 'timestamp', + prosrc => 'aggregate_dummy' }, +{ oid => '2127', + descr => 'maximum value of all timestamp with time zone input values', + proname => 'max', prokind => 'a', proisstrict => 'f', + prorettype => 'timestamptz', proargtypes => 'timestamptz', + prosrc => 'aggregate_dummy' }, +{ oid => '2128', descr => 'maximum value of all interval input values', + proname => 'max', prokind => 'a', proisstrict => 'f', + prorettype => 'interval', proargtypes => 'interval', + prosrc => 'aggregate_dummy' }, +{ oid => '2129', descr => 'maximum value of all text input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'text', + proargtypes => 'text', prosrc => 'aggregate_dummy' }, +{ oid => '2130', descr => 'maximum value of all numeric input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'numeric', prosrc => 'aggregate_dummy' }, +{ oid => '2050', descr => 'maximum value of all anyarray input values', + proname => 'max', prokind => 'a', proisstrict => 'f', + prorettype => 'anyarray', proargtypes => 'anyarray', + prosrc => 'aggregate_dummy' }, +{ oid => '2244', descr => 'maximum value of all bpchar input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'bpchar', + proargtypes => 'bpchar', prosrc => 'aggregate_dummy' }, +{ oid => '2797', descr => 'maximum value of all tid input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'tid', + proargtypes => 'tid', prosrc => 'aggregate_dummy' }, +{ oid => '3564', descr => 'maximum value of all inet input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'inet', + proargtypes => 'inet', prosrc => 'aggregate_dummy' }, + +{ oid => '2131', descr => 'minimum value of all bigint input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'int8', + proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2132', descr => 'minimum value of all integer input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'int4', + proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2133', descr => 'minimum value of all smallint input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'int2', + proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2134', descr => 'minimum value of all oid input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'oid', + proargtypes => 'oid', prosrc => 'aggregate_dummy' }, +{ oid => '2135', descr => 'minimum value of all float4 input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'float4', + proargtypes => 'float4', prosrc => 'aggregate_dummy' }, +{ oid => '2136', descr => 'minimum value of all float8 input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'float8', + proargtypes => 'float8', prosrc => 'aggregate_dummy' }, +{ oid => '2137', descr => 'minimum value of all abstime input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'abstime', + proargtypes => 'abstime', prosrc => 'aggregate_dummy' }, +{ oid => '2138', descr => 'minimum value of all date input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'date', + proargtypes => 'date', prosrc => 'aggregate_dummy' }, +{ oid => '2139', descr => 'minimum value of all time input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'time', + proargtypes => 'time', prosrc => 'aggregate_dummy' }, +{ oid => '2140', + descr => 'minimum value of all time with time zone input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'timetz', + proargtypes => 'timetz', prosrc => 'aggregate_dummy' }, +{ oid => '2141', descr => 'minimum value of all money input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'money', + proargtypes => 'money', prosrc => 'aggregate_dummy' }, +{ oid => '2142', descr => 'minimum value of all timestamp input values', + proname => 'min', prokind => 'a', proisstrict => 'f', + prorettype => 'timestamp', proargtypes => 'timestamp', + prosrc => 'aggregate_dummy' }, +{ oid => '2143', + descr => 'minimum value of all timestamp with time zone input values', + proname => 'min', prokind => 'a', proisstrict => 'f', + prorettype => 'timestamptz', proargtypes => 'timestamptz', + prosrc => 'aggregate_dummy' }, +{ oid => '2144', descr => 'minimum value of all interval input values', + proname => 'min', prokind => 'a', proisstrict => 'f', + prorettype => 'interval', proargtypes => 'interval', + prosrc => 'aggregate_dummy' }, +{ oid => '2145', descr => 'minimum value of all text values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'text', + proargtypes => 'text', prosrc => 'aggregate_dummy' }, +{ oid => '2146', descr => 'minimum value of all numeric input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'numeric', + proargtypes => 'numeric', prosrc => 'aggregate_dummy' }, +{ oid => '2051', descr => 'minimum value of all anyarray input values', + proname => 'min', prokind => 'a', proisstrict => 'f', + prorettype => 'anyarray', proargtypes => 'anyarray', + prosrc => 'aggregate_dummy' }, +{ oid => '2245', descr => 'minimum value of all bpchar input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'bpchar', + proargtypes => 'bpchar', prosrc => 'aggregate_dummy' }, +{ oid => '2798', descr => 'minimum value of all tid input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'tid', + proargtypes => 'tid', prosrc => 'aggregate_dummy' }, +{ oid => '3565', descr => 'minimum value of all inet input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'inet', + proargtypes => 'inet', prosrc => 'aggregate_dummy' }, + +# count has two forms: count(any) and count(*) +{ oid => '2147', + descr => 'number of input rows for which the input expression is not null', + proname => 'count', prokind => 'a', proisstrict => 'f', prorettype => 'int8', + proargtypes => 'any', prosrc => 'aggregate_dummy' }, +{ oid => '2803', descr => 'number of input rows', + proname => 'count', prokind => 'a', proisstrict => 'f', prorettype => 'int8', + proargtypes => '', prosrc => 'aggregate_dummy' }, + +{ oid => '2718', + descr => 'population variance of bigint input values (square of the population standard deviation)', + proname => 'var_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2719', + descr => 'population variance of integer input values (square of the population standard deviation)', + proname => 'var_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2720', + descr => 'population variance of smallint input values (square of the population standard deviation)', + proname => 'var_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2721', + descr => 'population variance of float4 input values (square of the population standard deviation)', + proname => 'var_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float4', + prosrc => 'aggregate_dummy' }, +{ oid => '2722', + descr => 'population variance of float8 input values (square of the population standard deviation)', + proname => 'var_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2723', + descr => 'population variance of numeric input values (square of the population standard deviation)', + proname => 'var_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'aggregate_dummy' }, + +{ oid => '2641', + descr => 'sample variance of bigint input values (square of the sample standard deviation)', + proname => 'var_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2642', + descr => 'sample variance of integer input values (square of the sample standard deviation)', + proname => 'var_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2643', + descr => 'sample variance of smallint input values (square of the sample standard deviation)', + proname => 'var_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2644', + descr => 'sample variance of float4 input values (square of the sample standard deviation)', + proname => 'var_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float4', + prosrc => 'aggregate_dummy' }, + +{ oid => '2645', + descr => 'sample variance of float8 input values (square of the sample standard deviation)', + proname => 'var_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2646', + descr => 'sample variance of numeric input values (square of the sample standard deviation)', + proname => 'var_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'aggregate_dummy' }, + +{ oid => '2148', descr => 'historical alias for var_samp', + proname => 'variance', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2149', descr => 'historical alias for var_samp', + proname => 'variance', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2150', descr => 'historical alias for var_samp', + proname => 'variance', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2151', descr => 'historical alias for var_samp', + proname => 'variance', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float4', + prosrc => 'aggregate_dummy' }, +{ oid => '2152', descr => 'historical alias for var_samp', + proname => 'variance', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2153', descr => 'historical alias for var_samp', + proname => 'variance', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'aggregate_dummy' }, + +{ oid => '2724', + descr => 'population standard deviation of bigint input values', + proname => 'stddev_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2725', + descr => 'population standard deviation of integer input values', + proname => 'stddev_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2726', + descr => 'population standard deviation of smallint input values', + proname => 'stddev_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2727', + descr => 'population standard deviation of float4 input values', + proname => 'stddev_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float4', + prosrc => 'aggregate_dummy' }, +{ oid => '2728', + descr => 'population standard deviation of float8 input values', + proname => 'stddev_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2729', + descr => 'population standard deviation of numeric input values', + proname => 'stddev_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'aggregate_dummy' }, + +{ oid => '2712', descr => 'sample standard deviation of bigint input values', + proname => 'stddev_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2713', descr => 'sample standard deviation of integer input values', + proname => 'stddev_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2714', + descr => 'sample standard deviation of smallint input values', + proname => 'stddev_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2715', descr => 'sample standard deviation of float4 input values', + proname => 'stddev_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float4', + prosrc => 'aggregate_dummy' }, +{ oid => '2716', descr => 'sample standard deviation of float8 input values', + proname => 'stddev_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2717', descr => 'sample standard deviation of numeric input values', + proname => 'stddev_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'aggregate_dummy' }, + +{ oid => '2154', descr => 'historical alias for stddev_samp', + proname => 'stddev', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2155', descr => 'historical alias for stddev_samp', + proname => 'stddev', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2156', descr => 'historical alias for stddev_samp', + proname => 'stddev', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2157', descr => 'historical alias for stddev_samp', + proname => 'stddev', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float4', + prosrc => 'aggregate_dummy' }, +{ oid => '2158', descr => 'historical alias for stddev_samp', + proname => 'stddev', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2159', descr => 'historical alias for stddev_samp', + proname => 'stddev', prokind => 'a', proisstrict => 'f', + prorettype => 'numeric', proargtypes => 'numeric', + prosrc => 'aggregate_dummy' }, + +{ oid => '2818', + descr => 'number of input rows in which both expressions are not null', + proname => 'regr_count', prokind => 'a', proisstrict => 'f', + prorettype => 'int8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2819', + descr => 'sum of squares of the independent variable (sum(X^2) - sum(X)^2/N)', + proname => 'regr_sxx', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2820', + descr => 'sum of squares of the dependent variable (sum(Y^2) - sum(Y)^2/N)', + proname => 'regr_syy', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2821', + descr => 'sum of products of independent times dependent variable (sum(X*Y) - sum(X) * sum(Y)/N)', + proname => 'regr_sxy', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2822', descr => 'average of the independent variable (sum(X)/N)', + proname => 'regr_avgx', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2823', descr => 'average of the dependent variable (sum(Y)/N)', + proname => 'regr_avgy', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2824', descr => 'square of the correlation coefficient', + proname => 'regr_r2', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2825', + descr => 'slope of the least-squares-fit linear equation determined by the (X, Y) pairs', + proname => 'regr_slope', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2826', + descr => 'y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs', + proname => 'regr_intercept', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, + +{ oid => '2827', descr => 'population covariance', + proname => 'covar_pop', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2828', descr => 'sample covariance', + proname => 'covar_samp', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '2829', descr => 'correlation coefficient', + proname => 'corr', prokind => 'a', proisstrict => 'f', prorettype => 'float8', + proargtypes => 'float8 float8', prosrc => 'aggregate_dummy' }, + +{ oid => '2160', + proname => 'text_pattern_lt', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'text_pattern_lt' }, +{ oid => '2161', + proname => 'text_pattern_le', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'text_pattern_le' }, +{ oid => '2163', + proname => 'text_pattern_ge', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'text_pattern_ge' }, +{ oid => '2164', + proname => 'text_pattern_gt', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'text_pattern_gt' }, +{ oid => '2166', descr => 'less-equal-greater', + proname => 'bttext_pattern_cmp', prorettype => 'int4', + proargtypes => 'text text', prosrc => 'bttext_pattern_cmp' }, +{ oid => '3332', descr => 'sort support', + proname => 'bttext_pattern_sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'bttext_pattern_sortsupport' }, + +{ oid => '2174', + proname => 'bpchar_pattern_lt', prorettype => 'bool', + proargtypes => 'bpchar bpchar', prosrc => 'bpchar_pattern_lt' }, +{ oid => '2175', + proname => 'bpchar_pattern_le', prorettype => 'bool', + proargtypes => 'bpchar bpchar', prosrc => 'bpchar_pattern_le' }, +{ oid => '2177', + proname => 'bpchar_pattern_ge', prorettype => 'bool', + proargtypes => 'bpchar bpchar', prosrc => 'bpchar_pattern_ge' }, +{ oid => '2178', + proname => 'bpchar_pattern_gt', prorettype => 'bool', + proargtypes => 'bpchar bpchar', prosrc => 'bpchar_pattern_gt' }, +{ oid => '2180', descr => 'less-equal-greater', + proname => 'btbpchar_pattern_cmp', prorettype => 'int4', + proargtypes => 'bpchar bpchar', prosrc => 'btbpchar_pattern_cmp' }, +{ oid => '3333', descr => 'sort support', + proname => 'btbpchar_pattern_sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'btbpchar_pattern_sortsupport' }, + +{ oid => '2188', descr => 'less-equal-greater', + proname => 'btint48cmp', prorettype => 'int4', proargtypes => 'int4 int8', + prosrc => 'btint48cmp' }, +{ oid => '2189', descr => 'less-equal-greater', + proname => 'btint84cmp', prorettype => 'int4', proargtypes => 'int8 int4', + prosrc => 'btint84cmp' }, +{ oid => '2190', descr => 'less-equal-greater', + proname => 'btint24cmp', prorettype => 'int4', proargtypes => 'int2 int4', + prosrc => 'btint24cmp' }, +{ oid => '2191', descr => 'less-equal-greater', + proname => 'btint42cmp', prorettype => 'int4', proargtypes => 'int4 int2', + prosrc => 'btint42cmp' }, +{ oid => '2192', descr => 'less-equal-greater', + proname => 'btint28cmp', prorettype => 'int4', proargtypes => 'int2 int8', + prosrc => 'btint28cmp' }, +{ oid => '2193', descr => 'less-equal-greater', + proname => 'btint82cmp', prorettype => 'int4', proargtypes => 'int8 int2', + prosrc => 'btint82cmp' }, +{ oid => '2194', descr => 'less-equal-greater', + proname => 'btfloat48cmp', prorettype => 'int4', + proargtypes => 'float4 float8', prosrc => 'btfloat48cmp' }, +{ oid => '2195', descr => 'less-equal-greater', + proname => 'btfloat84cmp', prorettype => 'int4', + proargtypes => 'float8 float4', prosrc => 'btfloat84cmp' }, + +{ oid => '2212', descr => 'I/O', + proname => 'regprocedurein', provolatile => 's', prorettype => 'regprocedure', + proargtypes => 'cstring', prosrc => 'regprocedurein' }, +{ oid => '2213', descr => 'I/O', + proname => 'regprocedureout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'regprocedure', prosrc => 'regprocedureout' }, +{ oid => '2214', descr => 'I/O', + proname => 'regoperin', provolatile => 's', prorettype => 'regoper', + proargtypes => 'cstring', prosrc => 'regoperin' }, +{ oid => '2215', descr => 'I/O', + proname => 'regoperout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'regoper', prosrc => 'regoperout' }, +{ oid => '3492', descr => 'convert operator name to regoper', + proname => 'to_regoper', provolatile => 's', prorettype => 'regoper', + proargtypes => 'text', prosrc => 'to_regoper' }, +{ oid => '3476', descr => 'convert operator name to regoperator', + proname => 'to_regoperator', provolatile => 's', prorettype => 'regoperator', + proargtypes => 'text', prosrc => 'to_regoperator' }, +{ oid => '2216', descr => 'I/O', + proname => 'regoperatorin', provolatile => 's', prorettype => 'regoperator', + proargtypes => 'cstring', prosrc => 'regoperatorin' }, +{ oid => '2217', descr => 'I/O', + proname => 'regoperatorout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'regoperator', prosrc => 'regoperatorout' }, +{ oid => '2218', descr => 'I/O', + proname => 'regclassin', provolatile => 's', prorettype => 'regclass', + proargtypes => 'cstring', prosrc => 'regclassin' }, +{ oid => '2219', descr => 'I/O', + proname => 'regclassout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'regclass', prosrc => 'regclassout' }, +{ oid => '3495', descr => 'convert classname to regclass', + proname => 'to_regclass', provolatile => 's', prorettype => 'regclass', + proargtypes => 'text', prosrc => 'to_regclass' }, +{ oid => '2220', descr => 'I/O', + proname => 'regtypein', provolatile => 's', prorettype => 'regtype', + proargtypes => 'cstring', prosrc => 'regtypein' }, +{ oid => '2221', descr => 'I/O', + proname => 'regtypeout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'regtype', prosrc => 'regtypeout' }, +{ oid => '3493', descr => 'convert type name to regtype', + proname => 'to_regtype', provolatile => 's', prorettype => 'regtype', + proargtypes => 'text', prosrc => 'to_regtype' }, +{ oid => '1079', descr => 'convert text to regclass', + proname => 'regclass', provolatile => 's', prorettype => 'regclass', + proargtypes => 'text', prosrc => 'text_regclass' }, + +{ oid => '4098', descr => 'I/O', + proname => 'regrolein', provolatile => 's', prorettype => 'regrole', + proargtypes => 'cstring', prosrc => 'regrolein' }, +{ oid => '4092', descr => 'I/O', + proname => 'regroleout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'regrole', prosrc => 'regroleout' }, +{ oid => '4093', descr => 'convert role name to regrole', + proname => 'to_regrole', provolatile => 's', prorettype => 'regrole', + proargtypes => 'text', prosrc => 'to_regrole' }, + +{ oid => '4084', descr => 'I/O', + proname => 'regnamespacein', provolatile => 's', prorettype => 'regnamespace', + proargtypes => 'cstring', prosrc => 'regnamespacein' }, +{ oid => '4085', descr => 'I/O', + proname => 'regnamespaceout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'regnamespace', prosrc => 'regnamespaceout' }, +{ oid => '4086', descr => 'convert namespace name to regnamespace', + proname => 'to_regnamespace', provolatile => 's', + prorettype => 'regnamespace', proargtypes => 'text', + prosrc => 'to_regnamespace' }, + +{ oid => '1268', + descr => 'parse qualified identifier to array of identifiers', + proname => 'parse_ident', prorettype => '_text', proargtypes => 'text bool', + proargnames => '{str,strict}', prosrc => 'parse_ident' }, + +{ oid => '2246', descr => '(internal)', + proname => 'fmgr_internal_validator', provolatile => 's', + prorettype => 'void', proargtypes => 'oid', + prosrc => 'fmgr_internal_validator' }, +{ oid => '2247', descr => '(internal)', + proname => 'fmgr_c_validator', provolatile => 's', prorettype => 'void', + proargtypes => 'oid', prosrc => 'fmgr_c_validator' }, +{ oid => '2248', descr => '(internal)', + proname => 'fmgr_sql_validator', provolatile => 's', prorettype => 'void', + proargtypes => 'oid', prosrc => 'fmgr_sql_validator' }, + +{ oid => '2250', + descr => 'user privilege on database by username, database name', + proname => 'has_database_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name text text', + prosrc => 'has_database_privilege_name_name' }, +{ oid => '2251', + descr => 'user privilege on database by username, database oid', + proname => 'has_database_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name oid text', prosrc => 'has_database_privilege_name_id' }, +{ oid => '2252', + descr => 'user privilege on database by user oid, database name', + proname => 'has_database_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text text', prosrc => 'has_database_privilege_id_name' }, +{ oid => '2253', + descr => 'user privilege on database by user oid, database oid', + proname => 'has_database_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid oid text', prosrc => 'has_database_privilege_id_id' }, +{ oid => '2254', + descr => 'current user privilege on database by database name', + proname => 'has_database_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'has_database_privilege_name' }, +{ oid => '2255', + descr => 'current user privilege on database by database oid', + proname => 'has_database_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text', prosrc => 'has_database_privilege_id' }, + +{ oid => '2256', + descr => 'user privilege on function by username, function name', + proname => 'has_function_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name text text', + prosrc => 'has_function_privilege_name_name' }, +{ oid => '2257', + descr => 'user privilege on function by username, function oid', + proname => 'has_function_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name oid text', prosrc => 'has_function_privilege_name_id' }, +{ oid => '2258', + descr => 'user privilege on function by user oid, function name', + proname => 'has_function_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text text', prosrc => 'has_function_privilege_id_name' }, +{ oid => '2259', + descr => 'user privilege on function by user oid, function oid', + proname => 'has_function_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid oid text', prosrc => 'has_function_privilege_id_id' }, +{ oid => '2260', + descr => 'current user privilege on function by function name', + proname => 'has_function_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'has_function_privilege_name' }, +{ oid => '2261', + descr => 'current user privilege on function by function oid', + proname => 'has_function_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text', prosrc => 'has_function_privilege_id' }, + +{ oid => '2262', + descr => 'user privilege on language by username, language name', + proname => 'has_language_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name text text', + prosrc => 'has_language_privilege_name_name' }, +{ oid => '2263', + descr => 'user privilege on language by username, language oid', + proname => 'has_language_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name oid text', prosrc => 'has_language_privilege_name_id' }, +{ oid => '2264', + descr => 'user privilege on language by user oid, language name', + proname => 'has_language_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text text', prosrc => 'has_language_privilege_id_name' }, +{ oid => '2265', + descr => 'user privilege on language by user oid, language oid', + proname => 'has_language_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid oid text', prosrc => 'has_language_privilege_id_id' }, +{ oid => '2266', + descr => 'current user privilege on language by language name', + proname => 'has_language_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'has_language_privilege_name' }, +{ oid => '2267', + descr => 'current user privilege on language by language oid', + proname => 'has_language_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text', prosrc => 'has_language_privilege_id' }, + +{ oid => '2268', descr => 'user privilege on schema by username, schema name', + proname => 'has_schema_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name text text', prosrc => 'has_schema_privilege_name_name' }, +{ oid => '2269', descr => 'user privilege on schema by username, schema oid', + proname => 'has_schema_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name oid text', prosrc => 'has_schema_privilege_name_id' }, +{ oid => '2270', descr => 'user privilege on schema by user oid, schema name', + proname => 'has_schema_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text text', prosrc => 'has_schema_privilege_id_name' }, +{ oid => '2271', descr => 'user privilege on schema by user oid, schema oid', + proname => 'has_schema_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid oid text', prosrc => 'has_schema_privilege_id_id' }, +{ oid => '2272', descr => 'current user privilege on schema by schema name', + proname => 'has_schema_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'has_schema_privilege_name' }, +{ oid => '2273', descr => 'current user privilege on schema by schema oid', + proname => 'has_schema_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text', prosrc => 'has_schema_privilege_id' }, + +{ oid => '2390', + descr => 'user privilege on tablespace by username, tablespace name', + proname => 'has_tablespace_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'name text text', + prosrc => 'has_tablespace_privilege_name_name' }, +{ oid => '2391', + descr => 'user privilege on tablespace by username, tablespace oid', + proname => 'has_tablespace_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'name oid text', + prosrc => 'has_tablespace_privilege_name_id' }, +{ oid => '2392', + descr => 'user privilege on tablespace by user oid, tablespace name', + proname => 'has_tablespace_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid text text', + prosrc => 'has_tablespace_privilege_id_name' }, +{ oid => '2393', + descr => 'user privilege on tablespace by user oid, tablespace oid', + proname => 'has_tablespace_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid oid text', + prosrc => 'has_tablespace_privilege_id_id' }, +{ oid => '2394', + descr => 'current user privilege on tablespace by tablespace name', + proname => 'has_tablespace_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'text text', + prosrc => 'has_tablespace_privilege_name' }, +{ oid => '2395', + descr => 'current user privilege on tablespace by tablespace oid', + proname => 'has_tablespace_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid text', + prosrc => 'has_tablespace_privilege_id' }, + +{ oid => '3000', + descr => 'user privilege on foreign data wrapper by username, foreign data wrapper name', + proname => 'has_foreign_data_wrapper_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'name text text', + prosrc => 'has_foreign_data_wrapper_privilege_name_name' }, +{ oid => '3001', + descr => 'user privilege on foreign data wrapper by username, foreign data wrapper oid', + proname => 'has_foreign_data_wrapper_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'name oid text', + prosrc => 'has_foreign_data_wrapper_privilege_name_id' }, +{ oid => '3002', + descr => 'user privilege on foreign data wrapper by user oid, foreign data wrapper name', + proname => 'has_foreign_data_wrapper_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid text text', + prosrc => 'has_foreign_data_wrapper_privilege_id_name' }, +{ oid => '3003', + descr => 'user privilege on foreign data wrapper by user oid, foreign data wrapper oid', + proname => 'has_foreign_data_wrapper_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid oid text', + prosrc => 'has_foreign_data_wrapper_privilege_id_id' }, +{ oid => '3004', + descr => 'current user privilege on foreign data wrapper by foreign data wrapper name', + proname => 'has_foreign_data_wrapper_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'text text', + prosrc => 'has_foreign_data_wrapper_privilege_name' }, +{ oid => '3005', + descr => 'current user privilege on foreign data wrapper by foreign data wrapper oid', + proname => 'has_foreign_data_wrapper_privilege', provolatile => 's', + prorettype => 'bool', proargtypes => 'oid text', + prosrc => 'has_foreign_data_wrapper_privilege_id' }, + +{ oid => '3006', descr => 'user privilege on server by username, server name', + proname => 'has_server_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name text text', prosrc => 'has_server_privilege_name_name' }, +{ oid => '3007', descr => 'user privilege on server by username, server oid', + proname => 'has_server_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name oid text', prosrc => 'has_server_privilege_name_id' }, +{ oid => '3008', descr => 'user privilege on server by user oid, server name', + proname => 'has_server_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text text', prosrc => 'has_server_privilege_id_name' }, +{ oid => '3009', descr => 'user privilege on server by user oid, server oid', + proname => 'has_server_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid oid text', prosrc => 'has_server_privilege_id_id' }, +{ oid => '3010', descr => 'current user privilege on server by server name', + proname => 'has_server_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'has_server_privilege_name' }, +{ oid => '3011', descr => 'current user privilege on server by server oid', + proname => 'has_server_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text', prosrc => 'has_server_privilege_id' }, + +{ oid => '3138', descr => 'user privilege on type by username, type name', + proname => 'has_type_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name text text', prosrc => 'has_type_privilege_name_name' }, +{ oid => '3139', descr => 'user privilege on type by username, type oid', + proname => 'has_type_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'name oid text', prosrc => 'has_type_privilege_name_id' }, +{ oid => '3140', descr => 'user privilege on type by user oid, type name', + proname => 'has_type_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text text', prosrc => 'has_type_privilege_id_name' }, +{ oid => '3141', descr => 'user privilege on type by user oid, type oid', + proname => 'has_type_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid oid text', prosrc => 'has_type_privilege_id_id' }, +{ oid => '3142', descr => 'current user privilege on type by type name', + proname => 'has_type_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'text text', prosrc => 'has_type_privilege_name' }, +{ oid => '3143', descr => 'current user privilege on type by type oid', + proname => 'has_type_privilege', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text', prosrc => 'has_type_privilege_id' }, + +{ oid => '2705', descr => 'user privilege on role by username, role name', + proname => 'pg_has_role', provolatile => 's', prorettype => 'bool', + proargtypes => 'name name text', prosrc => 'pg_has_role_name_name' }, +{ oid => '2706', descr => 'user privilege on role by username, role oid', + proname => 'pg_has_role', provolatile => 's', prorettype => 'bool', + proargtypes => 'name oid text', prosrc => 'pg_has_role_name_id' }, +{ oid => '2707', descr => 'user privilege on role by user oid, role name', + proname => 'pg_has_role', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid name text', prosrc => 'pg_has_role_id_name' }, +{ oid => '2708', descr => 'user privilege on role by user oid, role oid', + proname => 'pg_has_role', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid oid text', prosrc => 'pg_has_role_id_id' }, +{ oid => '2709', descr => 'current user privilege on role by role name', + proname => 'pg_has_role', provolatile => 's', prorettype => 'bool', + proargtypes => 'name text', prosrc => 'pg_has_role_name' }, +{ oid => '2710', descr => 'current user privilege on role by role oid', + proname => 'pg_has_role', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid text', prosrc => 'pg_has_role_id' }, + +{ oid => '1269', + descr => 'bytes required to store the value, perhaps with compression', + proname => 'pg_column_size', provolatile => 's', prorettype => 'int4', + proargtypes => 'any', prosrc => 'pg_column_size' }, +{ oid => '2322', + descr => 'total disk space usage for the specified tablespace', + proname => 'pg_tablespace_size', provolatile => 'v', prorettype => 'int8', + proargtypes => 'oid', prosrc => 'pg_tablespace_size_oid' }, +{ oid => '2323', + descr => 'total disk space usage for the specified tablespace', + proname => 'pg_tablespace_size', provolatile => 'v', prorettype => 'int8', + proargtypes => 'name', prosrc => 'pg_tablespace_size_name' }, +{ oid => '2324', descr => 'total disk space usage for the specified database', + proname => 'pg_database_size', provolatile => 'v', prorettype => 'int8', + proargtypes => 'oid', prosrc => 'pg_database_size_oid' }, +{ oid => '2168', descr => 'total disk space usage for the specified database', + proname => 'pg_database_size', provolatile => 'v', prorettype => 'int8', + proargtypes => 'name', prosrc => 'pg_database_size_name' }, +{ oid => '2325', + descr => 'disk space usage for the main fork of the specified table or index', + proname => 'pg_relation_size', prolang => '14', provolatile => 'v', + prorettype => 'int8', proargtypes => 'regclass', + prosrc => 'select pg_catalog.pg_relation_size($1, \'\'main\'\')' }, +{ oid => '2332', + descr => 'disk space usage for the specified fork of a table or index', + proname => 'pg_relation_size', provolatile => 'v', prorettype => 'int8', + proargtypes => 'regclass text', prosrc => 'pg_relation_size' }, +{ oid => '2286', + descr => 'total disk space usage for the specified table and associated indexes', + proname => 'pg_total_relation_size', provolatile => 'v', prorettype => 'int8', + proargtypes => 'regclass', prosrc => 'pg_total_relation_size' }, +{ oid => '2288', + descr => 'convert a long int to a human readable text using size units', + proname => 'pg_size_pretty', prorettype => 'text', proargtypes => 'int8', + prosrc => 'pg_size_pretty' }, +{ oid => '3166', + descr => 'convert a numeric to a human readable text using size units', + proname => 'pg_size_pretty', prorettype => 'text', proargtypes => 'numeric', + prosrc => 'pg_size_pretty_numeric' }, +{ oid => '3334', + descr => 'convert a size in human-readable format with size units into bytes', + proname => 'pg_size_bytes', prorettype => 'int8', proargtypes => 'text', + prosrc => 'pg_size_bytes' }, +{ oid => '2997', + descr => 'disk space usage for the specified table, including TOAST, free space and visibility map', + proname => 'pg_table_size', provolatile => 'v', prorettype => 'int8', + proargtypes => 'regclass', prosrc => 'pg_table_size' }, +{ oid => '2998', + descr => 'disk space usage for all indexes attached to the specified table', + proname => 'pg_indexes_size', provolatile => 'v', prorettype => 'int8', + proargtypes => 'regclass', prosrc => 'pg_indexes_size' }, +{ oid => '2999', descr => 'filenode identifier of relation', + proname => 'pg_relation_filenode', provolatile => 's', prorettype => 'oid', + proargtypes => 'regclass', prosrc => 'pg_relation_filenode' }, +{ oid => '3454', descr => 'relation OID for filenode and tablespace', + proname => 'pg_filenode_relation', provolatile => 's', + prorettype => 'regclass', proargtypes => 'oid oid', + prosrc => 'pg_filenode_relation' }, +{ oid => '3034', descr => 'file path of relation', + proname => 'pg_relation_filepath', provolatile => 's', prorettype => 'text', + proargtypes => 'regclass', prosrc => 'pg_relation_filepath' }, + +{ oid => '2316', descr => '(internal)', + proname => 'postgresql_fdw_validator', prorettype => 'bool', + proargtypes => '_text oid', prosrc => 'postgresql_fdw_validator' }, + +{ oid => '2290', descr => 'I/O', + proname => 'record_in', provolatile => 's', prorettype => 'record', + proargtypes => 'cstring oid int4', prosrc => 'record_in' }, +{ oid => '2291', descr => 'I/O', + proname => 'record_out', provolatile => 's', prorettype => 'cstring', + proargtypes => 'record', prosrc => 'record_out' }, +{ oid => '2292', descr => 'I/O', + proname => 'cstring_in', prorettype => 'cstring', proargtypes => 'cstring', + prosrc => 'cstring_in' }, +{ oid => '2293', descr => 'I/O', + proname => 'cstring_out', prorettype => 'cstring', proargtypes => 'cstring', + prosrc => 'cstring_out' }, +{ oid => '2294', descr => 'I/O', + proname => 'any_in', prorettype => 'any', proargtypes => 'cstring', + prosrc => 'any_in' }, +{ oid => '2295', descr => 'I/O', + proname => 'any_out', prorettype => 'cstring', proargtypes => 'any', + prosrc => 'any_out' }, +{ oid => '2296', descr => 'I/O', + proname => 'anyarray_in', prorettype => 'anyarray', proargtypes => 'cstring', + prosrc => 'anyarray_in' }, +{ oid => '2297', descr => 'I/O', + proname => 'anyarray_out', provolatile => 's', prorettype => 'cstring', + proargtypes => 'anyarray', prosrc => 'anyarray_out' }, +{ oid => '2298', descr => 'I/O', + proname => 'void_in', prorettype => 'void', proargtypes => 'cstring', + prosrc => 'void_in' }, +{ oid => '2299', descr => 'I/O', + proname => 'void_out', prorettype => 'cstring', proargtypes => 'void', + prosrc => 'void_out' }, +{ oid => '2300', descr => 'I/O', + proname => 'trigger_in', proisstrict => 'f', prorettype => 'trigger', + proargtypes => 'cstring', prosrc => 'trigger_in' }, +{ oid => '2301', descr => 'I/O', + proname => 'trigger_out', prorettype => 'cstring', proargtypes => 'trigger', + prosrc => 'trigger_out' }, +{ oid => '3594', descr => 'I/O', + proname => 'event_trigger_in', proisstrict => 'f', + prorettype => 'event_trigger', proargtypes => 'cstring', + prosrc => 'event_trigger_in' }, +{ oid => '3595', descr => 'I/O', + proname => 'event_trigger_out', prorettype => 'cstring', + proargtypes => 'event_trigger', prosrc => 'event_trigger_out' }, +{ oid => '2302', descr => 'I/O', + proname => 'language_handler_in', proisstrict => 'f', + prorettype => 'language_handler', proargtypes => 'cstring', + prosrc => 'language_handler_in' }, +{ oid => '2303', descr => 'I/O', + proname => 'language_handler_out', prorettype => 'cstring', + proargtypes => 'language_handler', prosrc => 'language_handler_out' }, +{ oid => '2304', descr => 'I/O', + proname => 'internal_in', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'cstring', prosrc => 'internal_in' }, +{ oid => '2305', descr => 'I/O', + proname => 'internal_out', prorettype => 'cstring', proargtypes => 'internal', + prosrc => 'internal_out' }, +{ oid => '2306', descr => 'I/O', + proname => 'opaque_in', proisstrict => 'f', prorettype => 'opaque', + proargtypes => 'cstring', prosrc => 'opaque_in' }, +{ oid => '2307', descr => 'I/O', + proname => 'opaque_out', prorettype => 'cstring', proargtypes => 'opaque', + prosrc => 'opaque_out' }, +{ oid => '2312', descr => 'I/O', + proname => 'anyelement_in', prorettype => 'anyelement', + proargtypes => 'cstring', prosrc => 'anyelement_in' }, +{ oid => '2313', descr => 'I/O', + proname => 'anyelement_out', prorettype => 'cstring', + proargtypes => 'anyelement', prosrc => 'anyelement_out' }, +{ oid => '2398', descr => 'I/O', + proname => 'shell_in', proisstrict => 'f', prorettype => 'opaque', + proargtypes => 'cstring', prosrc => 'shell_in' }, +{ oid => '2399', descr => 'I/O', + proname => 'shell_out', prorettype => 'cstring', proargtypes => 'opaque', + prosrc => 'shell_out' }, +{ oid => '2597', descr => 'I/O', + proname => 'domain_in', proisstrict => 'f', provolatile => 's', + prorettype => 'any', proargtypes => 'cstring oid int4', + prosrc => 'domain_in' }, +{ oid => '2598', descr => 'I/O', + proname => 'domain_recv', proisstrict => 'f', provolatile => 's', + prorettype => 'any', proargtypes => 'internal oid int4', + prosrc => 'domain_recv' }, +{ oid => '2777', descr => 'I/O', + proname => 'anynonarray_in', prorettype => 'anynonarray', + proargtypes => 'cstring', prosrc => 'anynonarray_in' }, +{ oid => '2778', descr => 'I/O', + proname => 'anynonarray_out', prorettype => 'cstring', + proargtypes => 'anynonarray', prosrc => 'anynonarray_out' }, +{ oid => '3116', descr => 'I/O', + proname => 'fdw_handler_in', proisstrict => 'f', prorettype => 'fdw_handler', + proargtypes => 'cstring', prosrc => 'fdw_handler_in' }, +{ oid => '3117', descr => 'I/O', + proname => 'fdw_handler_out', prorettype => 'cstring', + proargtypes => 'fdw_handler', prosrc => 'fdw_handler_out' }, +{ oid => '326', descr => 'I/O', + proname => 'index_am_handler_in', proisstrict => 'f', + prorettype => 'index_am_handler', proargtypes => 'cstring', + prosrc => 'index_am_handler_in' }, +{ oid => '327', descr => 'I/O', + proname => 'index_am_handler_out', prorettype => 'cstring', + proargtypes => 'index_am_handler', prosrc => 'index_am_handler_out' }, +{ oid => '3311', descr => 'I/O', + proname => 'tsm_handler_in', proisstrict => 'f', prorettype => 'tsm_handler', + proargtypes => 'cstring', prosrc => 'tsm_handler_in' }, +{ oid => '3312', descr => 'I/O', + proname => 'tsm_handler_out', prorettype => 'cstring', + proargtypes => 'tsm_handler', prosrc => 'tsm_handler_out' }, + +# tablesample method handlers +{ oid => '3313', descr => 'BERNOULLI tablesample method handler', + proname => 'bernoulli', provolatile => 'v', prorettype => 'tsm_handler', + proargtypes => 'internal', prosrc => 'tsm_bernoulli_handler' }, +{ oid => '3314', descr => 'SYSTEM tablesample method handler', + proname => 'system', provolatile => 'v', prorettype => 'tsm_handler', + proargtypes => 'internal', prosrc => 'tsm_system_handler' }, + +# cryptographic +{ oid => '2311', descr => 'MD5 hash', + proname => 'md5', proleakproof => 't', prorettype => 'text', + proargtypes => 'text', prosrc => 'md5_text' }, +{ oid => '2321', descr => 'MD5 hash', + proname => 'md5', proleakproof => 't', prorettype => 'text', + proargtypes => 'bytea', prosrc => 'md5_bytea' }, +{ oid => '3419', descr => 'SHA-224 hash', + proname => 'sha224', proleakproof => 't', prorettype => 'bytea', + proargtypes => 'bytea', prosrc => 'sha224_bytea' }, +{ oid => '3420', descr => 'SHA-256 hash', + proname => 'sha256', proleakproof => 't', prorettype => 'bytea', + proargtypes => 'bytea', prosrc => 'sha256_bytea' }, +{ oid => '3421', descr => 'SHA-384 hash', + proname => 'sha384', proleakproof => 't', prorettype => 'bytea', + proargtypes => 'bytea', prosrc => 'sha384_bytea' }, +{ oid => '3422', descr => 'SHA-512 hash', + proname => 'sha512', proleakproof => 't', prorettype => 'bytea', + proargtypes => 'bytea', prosrc => 'sha512_bytea' }, + +# crosstype operations for date vs. timestamp and timestamptz +{ oid => '2338', + proname => 'date_lt_timestamp', prorettype => 'bool', + proargtypes => 'date timestamp', prosrc => 'date_lt_timestamp' }, +{ oid => '2339', + proname => 'date_le_timestamp', prorettype => 'bool', + proargtypes => 'date timestamp', prosrc => 'date_le_timestamp' }, +{ oid => '2340', + proname => 'date_eq_timestamp', prorettype => 'bool', + proargtypes => 'date timestamp', prosrc => 'date_eq_timestamp' }, +{ oid => '2341', + proname => 'date_gt_timestamp', prorettype => 'bool', + proargtypes => 'date timestamp', prosrc => 'date_gt_timestamp' }, +{ oid => '2342', + proname => 'date_ge_timestamp', prorettype => 'bool', + proargtypes => 'date timestamp', prosrc => 'date_ge_timestamp' }, +{ oid => '2343', + proname => 'date_ne_timestamp', prorettype => 'bool', + proargtypes => 'date timestamp', prosrc => 'date_ne_timestamp' }, +{ oid => '2344', descr => 'less-equal-greater', + proname => 'date_cmp_timestamp', prorettype => 'int4', + proargtypes => 'date timestamp', prosrc => 'date_cmp_timestamp' }, + +{ oid => '2351', + proname => 'date_lt_timestamptz', provolatile => 's', prorettype => 'bool', + proargtypes => 'date timestamptz', prosrc => 'date_lt_timestamptz' }, +{ oid => '2352', + proname => 'date_le_timestamptz', provolatile => 's', prorettype => 'bool', + proargtypes => 'date timestamptz', prosrc => 'date_le_timestamptz' }, +{ oid => '2353', + proname => 'date_eq_timestamptz', provolatile => 's', prorettype => 'bool', + proargtypes => 'date timestamptz', prosrc => 'date_eq_timestamptz' }, +{ oid => '2354', + proname => 'date_gt_timestamptz', provolatile => 's', prorettype => 'bool', + proargtypes => 'date timestamptz', prosrc => 'date_gt_timestamptz' }, +{ oid => '2355', + proname => 'date_ge_timestamptz', provolatile => 's', prorettype => 'bool', + proargtypes => 'date timestamptz', prosrc => 'date_ge_timestamptz' }, +{ oid => '2356', + proname => 'date_ne_timestamptz', provolatile => 's', prorettype => 'bool', + proargtypes => 'date timestamptz', prosrc => 'date_ne_timestamptz' }, +{ oid => '2357', descr => 'less-equal-greater', + proname => 'date_cmp_timestamptz', provolatile => 's', prorettype => 'int4', + proargtypes => 'date timestamptz', prosrc => 'date_cmp_timestamptz' }, + +{ oid => '2364', + proname => 'timestamp_lt_date', prorettype => 'bool', + proargtypes => 'timestamp date', prosrc => 'timestamp_lt_date' }, +{ oid => '2365', + proname => 'timestamp_le_date', prorettype => 'bool', + proargtypes => 'timestamp date', prosrc => 'timestamp_le_date' }, +{ oid => '2366', + proname => 'timestamp_eq_date', prorettype => 'bool', + proargtypes => 'timestamp date', prosrc => 'timestamp_eq_date' }, +{ oid => '2367', + proname => 'timestamp_gt_date', prorettype => 'bool', + proargtypes => 'timestamp date', prosrc => 'timestamp_gt_date' }, +{ oid => '2368', + proname => 'timestamp_ge_date', prorettype => 'bool', + proargtypes => 'timestamp date', prosrc => 'timestamp_ge_date' }, +{ oid => '2369', + proname => 'timestamp_ne_date', prorettype => 'bool', + proargtypes => 'timestamp date', prosrc => 'timestamp_ne_date' }, +{ oid => '2370', descr => 'less-equal-greater', + proname => 'timestamp_cmp_date', prorettype => 'int4', + proargtypes => 'timestamp date', prosrc => 'timestamp_cmp_date' }, + +{ oid => '2377', + proname => 'timestamptz_lt_date', provolatile => 's', prorettype => 'bool', + proargtypes => 'timestamptz date', prosrc => 'timestamptz_lt_date' }, +{ oid => '2378', + proname => 'timestamptz_le_date', provolatile => 's', prorettype => 'bool', + proargtypes => 'timestamptz date', prosrc => 'timestamptz_le_date' }, +{ oid => '2379', + proname => 'timestamptz_eq_date', provolatile => 's', prorettype => 'bool', + proargtypes => 'timestamptz date', prosrc => 'timestamptz_eq_date' }, +{ oid => '2380', + proname => 'timestamptz_gt_date', provolatile => 's', prorettype => 'bool', + proargtypes => 'timestamptz date', prosrc => 'timestamptz_gt_date' }, +{ oid => '2381', + proname => 'timestamptz_ge_date', provolatile => 's', prorettype => 'bool', + proargtypes => 'timestamptz date', prosrc => 'timestamptz_ge_date' }, +{ oid => '2382', + proname => 'timestamptz_ne_date', provolatile => 's', prorettype => 'bool', + proargtypes => 'timestamptz date', prosrc => 'timestamptz_ne_date' }, +{ oid => '2383', descr => 'less-equal-greater', + proname => 'timestamptz_cmp_date', provolatile => 's', prorettype => 'int4', + proargtypes => 'timestamptz date', prosrc => 'timestamptz_cmp_date' }, + +# crosstype operations for timestamp vs. timestamptz +{ oid => '2520', + proname => 'timestamp_lt_timestamptz', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamp timestamptz', + prosrc => 'timestamp_lt_timestamptz' }, +{ oid => '2521', + proname => 'timestamp_le_timestamptz', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamp timestamptz', + prosrc => 'timestamp_le_timestamptz' }, +{ oid => '2522', + proname => 'timestamp_eq_timestamptz', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamp timestamptz', + prosrc => 'timestamp_eq_timestamptz' }, +{ oid => '2523', + proname => 'timestamp_gt_timestamptz', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamp timestamptz', + prosrc => 'timestamp_gt_timestamptz' }, +{ oid => '2524', + proname => 'timestamp_ge_timestamptz', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamp timestamptz', + prosrc => 'timestamp_ge_timestamptz' }, +{ oid => '2525', + proname => 'timestamp_ne_timestamptz', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamp timestamptz', + prosrc => 'timestamp_ne_timestamptz' }, +{ oid => '2526', descr => 'less-equal-greater', + proname => 'timestamp_cmp_timestamptz', provolatile => 's', + prorettype => 'int4', proargtypes => 'timestamp timestamptz', + prosrc => 'timestamp_cmp_timestamptz' }, + +{ oid => '2527', + proname => 'timestamptz_lt_timestamp', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamptz timestamp', + prosrc => 'timestamptz_lt_timestamp' }, +{ oid => '2528', + proname => 'timestamptz_le_timestamp', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamptz timestamp', + prosrc => 'timestamptz_le_timestamp' }, +{ oid => '2529', + proname => 'timestamptz_eq_timestamp', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamptz timestamp', + prosrc => 'timestamptz_eq_timestamp' }, +{ oid => '2530', + proname => 'timestamptz_gt_timestamp', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamptz timestamp', + prosrc => 'timestamptz_gt_timestamp' }, +{ oid => '2531', + proname => 'timestamptz_ge_timestamp', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamptz timestamp', + prosrc => 'timestamptz_ge_timestamp' }, +{ oid => '2532', + proname => 'timestamptz_ne_timestamp', provolatile => 's', + prorettype => 'bool', proargtypes => 'timestamptz timestamp', + prosrc => 'timestamptz_ne_timestamp' }, +{ oid => '2533', descr => 'less-equal-greater', + proname => 'timestamptz_cmp_timestamp', provolatile => 's', + prorettype => 'int4', proargtypes => 'timestamptz timestamp', + prosrc => 'timestamptz_cmp_timestamp' }, + +# send/receive functions +{ oid => '2400', descr => 'I/O', + proname => 'array_recv', provolatile => 's', prorettype => 'anyarray', + proargtypes => 'internal oid int4', prosrc => 'array_recv' }, +{ oid => '2401', descr => 'I/O', + proname => 'array_send', provolatile => 's', prorettype => 'bytea', + proargtypes => 'anyarray', prosrc => 'array_send' }, +{ oid => '2402', descr => 'I/O', + proname => 'record_recv', provolatile => 's', prorettype => 'record', + proargtypes => 'internal oid int4', prosrc => 'record_recv' }, +{ oid => '2403', descr => 'I/O', + proname => 'record_send', provolatile => 's', prorettype => 'bytea', + proargtypes => 'record', prosrc => 'record_send' }, +{ oid => '2404', descr => 'I/O', + proname => 'int2recv', prorettype => 'int2', proargtypes => 'internal', + prosrc => 'int2recv' }, +{ oid => '2405', descr => 'I/O', + proname => 'int2send', prorettype => 'bytea', proargtypes => 'int2', + prosrc => 'int2send' }, +{ oid => '2406', descr => 'I/O', + proname => 'int4recv', prorettype => 'int4', proargtypes => 'internal', + prosrc => 'int4recv' }, +{ oid => '2407', descr => 'I/O', + proname => 'int4send', prorettype => 'bytea', proargtypes => 'int4', + prosrc => 'int4send' }, +{ oid => '2408', descr => 'I/O', + proname => 'int8recv', prorettype => 'int8', proargtypes => 'internal', + prosrc => 'int8recv' }, +{ oid => '2409', descr => 'I/O', + proname => 'int8send', prorettype => 'bytea', proargtypes => 'int8', + prosrc => 'int8send' }, +{ oid => '2410', descr => 'I/O', + proname => 'int2vectorrecv', prorettype => 'int2vector', + proargtypes => 'internal', prosrc => 'int2vectorrecv' }, +{ oid => '2411', descr => 'I/O', + proname => 'int2vectorsend', prorettype => 'bytea', + proargtypes => 'int2vector', prosrc => 'int2vectorsend' }, +{ oid => '2412', descr => 'I/O', + proname => 'bytearecv', prorettype => 'bytea', proargtypes => 'internal', + prosrc => 'bytearecv' }, +{ oid => '2413', descr => 'I/O', + proname => 'byteasend', prorettype => 'bytea', proargtypes => 'bytea', + prosrc => 'byteasend' }, +{ oid => '2414', descr => 'I/O', + proname => 'textrecv', provolatile => 's', prorettype => 'text', + proargtypes => 'internal', prosrc => 'textrecv' }, +{ oid => '2415', descr => 'I/O', + proname => 'textsend', provolatile => 's', prorettype => 'bytea', + proargtypes => 'text', prosrc => 'textsend' }, +{ oid => '2416', descr => 'I/O', + proname => 'unknownrecv', prorettype => 'unknown', proargtypes => 'internal', + prosrc => 'unknownrecv' }, +{ oid => '2417', descr => 'I/O', + proname => 'unknownsend', prorettype => 'bytea', proargtypes => 'unknown', + prosrc => 'unknownsend' }, +{ oid => '2418', descr => 'I/O', + proname => 'oidrecv', prorettype => 'oid', proargtypes => 'internal', + prosrc => 'oidrecv' }, +{ oid => '2419', descr => 'I/O', + proname => 'oidsend', prorettype => 'bytea', proargtypes => 'oid', + prosrc => 'oidsend' }, +{ oid => '2420', descr => 'I/O', + proname => 'oidvectorrecv', prorettype => 'oidvector', + proargtypes => 'internal', prosrc => 'oidvectorrecv' }, +{ oid => '2421', descr => 'I/O', + proname => 'oidvectorsend', prorettype => 'bytea', proargtypes => 'oidvector', + prosrc => 'oidvectorsend' }, +{ oid => '2422', descr => 'I/O', + proname => 'namerecv', provolatile => 's', prorettype => 'name', + proargtypes => 'internal', prosrc => 'namerecv' }, +{ oid => '2423', descr => 'I/O', + proname => 'namesend', provolatile => 's', prorettype => 'bytea', + proargtypes => 'name', prosrc => 'namesend' }, +{ oid => '2424', descr => 'I/O', + proname => 'float4recv', prorettype => 'float4', proargtypes => 'internal', + prosrc => 'float4recv' }, +{ oid => '2425', descr => 'I/O', + proname => 'float4send', prorettype => 'bytea', proargtypes => 'float4', + prosrc => 'float4send' }, +{ oid => '2426', descr => 'I/O', + proname => 'float8recv', prorettype => 'float8', proargtypes => 'internal', + prosrc => 'float8recv' }, +{ oid => '2427', descr => 'I/O', + proname => 'float8send', prorettype => 'bytea', proargtypes => 'float8', + prosrc => 'float8send' }, +{ oid => '2428', descr => 'I/O', + proname => 'point_recv', prorettype => 'point', proargtypes => 'internal', + prosrc => 'point_recv' }, +{ oid => '2429', descr => 'I/O', + proname => 'point_send', prorettype => 'bytea', proargtypes => 'point', + prosrc => 'point_send' }, +{ oid => '2430', descr => 'I/O', + proname => 'bpcharrecv', provolatile => 's', prorettype => 'bpchar', + proargtypes => 'internal oid int4', prosrc => 'bpcharrecv' }, +{ oid => '2431', descr => 'I/O', + proname => 'bpcharsend', provolatile => 's', prorettype => 'bytea', + proargtypes => 'bpchar', prosrc => 'bpcharsend' }, +{ oid => '2432', descr => 'I/O', + proname => 'varcharrecv', provolatile => 's', prorettype => 'varchar', + proargtypes => 'internal oid int4', prosrc => 'varcharrecv' }, +{ oid => '2433', descr => 'I/O', + proname => 'varcharsend', provolatile => 's', prorettype => 'bytea', + proargtypes => 'varchar', prosrc => 'varcharsend' }, +{ oid => '2434', descr => 'I/O', + proname => 'charrecv', prorettype => 'char', proargtypes => 'internal', + prosrc => 'charrecv' }, +{ oid => '2435', descr => 'I/O', + proname => 'charsend', prorettype => 'bytea', proargtypes => 'char', + prosrc => 'charsend' }, +{ oid => '2436', descr => 'I/O', + proname => 'boolrecv', prorettype => 'bool', proargtypes => 'internal', + prosrc => 'boolrecv' }, +{ oid => '2437', descr => 'I/O', + proname => 'boolsend', prorettype => 'bytea', proargtypes => 'bool', + prosrc => 'boolsend' }, +{ oid => '2438', descr => 'I/O', + proname => 'tidrecv', prorettype => 'tid', proargtypes => 'internal', + prosrc => 'tidrecv' }, +{ oid => '2439', descr => 'I/O', + proname => 'tidsend', prorettype => 'bytea', proargtypes => 'tid', + prosrc => 'tidsend' }, +{ oid => '2440', descr => 'I/O', + proname => 'xidrecv', prorettype => 'xid', proargtypes => 'internal', + prosrc => 'xidrecv' }, +{ oid => '2441', descr => 'I/O', + proname => 'xidsend', prorettype => 'bytea', proargtypes => 'xid', + prosrc => 'xidsend' }, +{ oid => '2442', descr => 'I/O', + proname => 'cidrecv', prorettype => 'cid', proargtypes => 'internal', + prosrc => 'cidrecv' }, +{ oid => '2443', descr => 'I/O', + proname => 'cidsend', prorettype => 'bytea', proargtypes => 'cid', + prosrc => 'cidsend' }, +{ oid => '2444', descr => 'I/O', + proname => 'regprocrecv', prorettype => 'regproc', proargtypes => 'internal', + prosrc => 'regprocrecv' }, +{ oid => '2445', descr => 'I/O', + proname => 'regprocsend', prorettype => 'bytea', proargtypes => 'regproc', + prosrc => 'regprocsend' }, +{ oid => '2446', descr => 'I/O', + proname => 'regprocedurerecv', prorettype => 'regprocedure', + proargtypes => 'internal', prosrc => 'regprocedurerecv' }, +{ oid => '2447', descr => 'I/O', + proname => 'regproceduresend', prorettype => 'bytea', + proargtypes => 'regprocedure', prosrc => 'regproceduresend' }, +{ oid => '2448', descr => 'I/O', + proname => 'regoperrecv', prorettype => 'regoper', proargtypes => 'internal', + prosrc => 'regoperrecv' }, +{ oid => '2449', descr => 'I/O', + proname => 'regopersend', prorettype => 'bytea', proargtypes => 'regoper', + prosrc => 'regopersend' }, +{ oid => '2450', descr => 'I/O', + proname => 'regoperatorrecv', prorettype => 'regoperator', + proargtypes => 'internal', prosrc => 'regoperatorrecv' }, +{ oid => '2451', descr => 'I/O', + proname => 'regoperatorsend', prorettype => 'bytea', + proargtypes => 'regoperator', prosrc => 'regoperatorsend' }, +{ oid => '2452', descr => 'I/O', + proname => 'regclassrecv', prorettype => 'regclass', + proargtypes => 'internal', prosrc => 'regclassrecv' }, +{ oid => '2453', descr => 'I/O', + proname => 'regclasssend', prorettype => 'bytea', proargtypes => 'regclass', + prosrc => 'regclasssend' }, +{ oid => '2454', descr => 'I/O', + proname => 'regtyperecv', prorettype => 'regtype', proargtypes => 'internal', + prosrc => 'regtyperecv' }, +{ oid => '2455', descr => 'I/O', + proname => 'regtypesend', prorettype => 'bytea', proargtypes => 'regtype', + prosrc => 'regtypesend' }, + +{ oid => '4094', descr => 'I/O', + proname => 'regrolerecv', prorettype => 'regrole', proargtypes => 'internal', + prosrc => 'regrolerecv' }, +{ oid => '4095', descr => 'I/O', + proname => 'regrolesend', prorettype => 'bytea', proargtypes => 'regrole', + prosrc => 'regrolesend' }, +{ oid => '4087', descr => 'I/O', + proname => 'regnamespacerecv', prorettype => 'regnamespace', + proargtypes => 'internal', prosrc => 'regnamespacerecv' }, +{ oid => '4088', descr => 'I/O', + proname => 'regnamespacesend', prorettype => 'bytea', + proargtypes => 'regnamespace', prosrc => 'regnamespacesend' }, +{ oid => '2456', descr => 'I/O', + proname => 'bit_recv', prorettype => 'bit', + proargtypes => 'internal oid int4', prosrc => 'bit_recv' }, +{ oid => '2457', descr => 'I/O', + proname => 'bit_send', prorettype => 'bytea', proargtypes => 'bit', + prosrc => 'bit_send' }, +{ oid => '2458', descr => 'I/O', + proname => 'varbit_recv', prorettype => 'varbit', + proargtypes => 'internal oid int4', prosrc => 'varbit_recv' }, +{ oid => '2459', descr => 'I/O', + proname => 'varbit_send', prorettype => 'bytea', proargtypes => 'varbit', + prosrc => 'varbit_send' }, +{ oid => '2460', descr => 'I/O', + proname => 'numeric_recv', prorettype => 'numeric', + proargtypes => 'internal oid int4', prosrc => 'numeric_recv' }, +{ oid => '2461', descr => 'I/O', + proname => 'numeric_send', prorettype => 'bytea', proargtypes => 'numeric', + prosrc => 'numeric_send' }, +{ oid => '2462', descr => 'I/O', + proname => 'abstimerecv', prorettype => 'abstime', proargtypes => 'internal', + prosrc => 'abstimerecv' }, +{ oid => '2463', descr => 'I/O', + proname => 'abstimesend', prorettype => 'bytea', proargtypes => 'abstime', + prosrc => 'abstimesend' }, +{ oid => '2464', descr => 'I/O', + proname => 'reltimerecv', prorettype => 'reltime', proargtypes => 'internal', + prosrc => 'reltimerecv' }, +{ oid => '2465', descr => 'I/O', + proname => 'reltimesend', prorettype => 'bytea', proargtypes => 'reltime', + prosrc => 'reltimesend' }, +{ oid => '2466', descr => 'I/O', + proname => 'tintervalrecv', prorettype => 'tinterval', + proargtypes => 'internal', prosrc => 'tintervalrecv' }, +{ oid => '2467', descr => 'I/O', + proname => 'tintervalsend', prorettype => 'bytea', proargtypes => 'tinterval', + prosrc => 'tintervalsend' }, +{ oid => '2468', descr => 'I/O', + proname => 'date_recv', prorettype => 'date', proargtypes => 'internal', + prosrc => 'date_recv' }, +{ oid => '2469', descr => 'I/O', + proname => 'date_send', prorettype => 'bytea', proargtypes => 'date', + prosrc => 'date_send' }, +{ oid => '2470', descr => 'I/O', + proname => 'time_recv', prorettype => 'time', + proargtypes => 'internal oid int4', prosrc => 'time_recv' }, +{ oid => '2471', descr => 'I/O', + proname => 'time_send', prorettype => 'bytea', proargtypes => 'time', + prosrc => 'time_send' }, +{ oid => '2472', descr => 'I/O', + proname => 'timetz_recv', prorettype => 'timetz', + proargtypes => 'internal oid int4', prosrc => 'timetz_recv' }, +{ oid => '2473', descr => 'I/O', + proname => 'timetz_send', prorettype => 'bytea', proargtypes => 'timetz', + prosrc => 'timetz_send' }, +{ oid => '2474', descr => 'I/O', + proname => 'timestamp_recv', prorettype => 'timestamp', + proargtypes => 'internal oid int4', prosrc => 'timestamp_recv' }, +{ oid => '2475', descr => 'I/O', + proname => 'timestamp_send', prorettype => 'bytea', + proargtypes => 'timestamp', prosrc => 'timestamp_send' }, +{ oid => '2476', descr => 'I/O', + proname => 'timestamptz_recv', prorettype => 'timestamptz', + proargtypes => 'internal oid int4', prosrc => 'timestamptz_recv' }, +{ oid => '2477', descr => 'I/O', + proname => 'timestamptz_send', prorettype => 'bytea', + proargtypes => 'timestamptz', prosrc => 'timestamptz_send' }, +{ oid => '2478', descr => 'I/O', + proname => 'interval_recv', prorettype => 'interval', + proargtypes => 'internal oid int4', prosrc => 'interval_recv' }, +{ oid => '2479', descr => 'I/O', + proname => 'interval_send', prorettype => 'bytea', proargtypes => 'interval', + prosrc => 'interval_send' }, +{ oid => '2480', descr => 'I/O', + proname => 'lseg_recv', prorettype => 'lseg', proargtypes => 'internal', + prosrc => 'lseg_recv' }, +{ oid => '2481', descr => 'I/O', + proname => 'lseg_send', prorettype => 'bytea', proargtypes => 'lseg', + prosrc => 'lseg_send' }, +{ oid => '2482', descr => 'I/O', + proname => 'path_recv', prorettype => 'path', proargtypes => 'internal', + prosrc => 'path_recv' }, +{ oid => '2483', descr => 'I/O', + proname => 'path_send', prorettype => 'bytea', proargtypes => 'path', + prosrc => 'path_send' }, +{ oid => '2484', descr => 'I/O', + proname => 'box_recv', prorettype => 'box', proargtypes => 'internal', + prosrc => 'box_recv' }, +{ oid => '2485', descr => 'I/O', + proname => 'box_send', prorettype => 'bytea', proargtypes => 'box', + prosrc => 'box_send' }, +{ oid => '2486', descr => 'I/O', + proname => 'poly_recv', prorettype => 'polygon', proargtypes => 'internal', + prosrc => 'poly_recv' }, +{ oid => '2487', descr => 'I/O', + proname => 'poly_send', prorettype => 'bytea', proargtypes => 'polygon', + prosrc => 'poly_send' }, +{ oid => '2488', descr => 'I/O', + proname => 'line_recv', prorettype => 'line', proargtypes => 'internal', + prosrc => 'line_recv' }, +{ oid => '2489', descr => 'I/O', + proname => 'line_send', prorettype => 'bytea', proargtypes => 'line', + prosrc => 'line_send' }, +{ oid => '2490', descr => 'I/O', + proname => 'circle_recv', prorettype => 'circle', proargtypes => 'internal', + prosrc => 'circle_recv' }, +{ oid => '2491', descr => 'I/O', + proname => 'circle_send', prorettype => 'bytea', proargtypes => 'circle', + prosrc => 'circle_send' }, +{ oid => '2492', descr => 'I/O', + proname => 'cash_recv', prorettype => 'money', proargtypes => 'internal', + prosrc => 'cash_recv' }, +{ oid => '2493', descr => 'I/O', + proname => 'cash_send', prorettype => 'bytea', proargtypes => 'money', + prosrc => 'cash_send' }, +{ oid => '2494', descr => 'I/O', + proname => 'macaddr_recv', prorettype => 'macaddr', proargtypes => 'internal', + prosrc => 'macaddr_recv' }, +{ oid => '2495', descr => 'I/O', + proname => 'macaddr_send', prorettype => 'bytea', proargtypes => 'macaddr', + prosrc => 'macaddr_send' }, +{ oid => '2496', descr => 'I/O', + proname => 'inet_recv', prorettype => 'inet', proargtypes => 'internal', + prosrc => 'inet_recv' }, +{ oid => '2497', descr => 'I/O', + proname => 'inet_send', prorettype => 'bytea', proargtypes => 'inet', + prosrc => 'inet_send' }, +{ oid => '2498', descr => 'I/O', + proname => 'cidr_recv', prorettype => 'cidr', proargtypes => 'internal', + prosrc => 'cidr_recv' }, +{ oid => '2499', descr => 'I/O', + proname => 'cidr_send', prorettype => 'bytea', proargtypes => 'cidr', + prosrc => 'cidr_send' }, +{ oid => '2500', descr => 'I/O', + proname => 'cstring_recv', provolatile => 's', prorettype => 'cstring', + proargtypes => 'internal', prosrc => 'cstring_recv' }, +{ oid => '2501', descr => 'I/O', + proname => 'cstring_send', provolatile => 's', prorettype => 'bytea', + proargtypes => 'cstring', prosrc => 'cstring_send' }, +{ oid => '2502', descr => 'I/O', + proname => 'anyarray_recv', provolatile => 's', prorettype => 'anyarray', + proargtypes => 'internal', prosrc => 'anyarray_recv' }, +{ oid => '2503', descr => 'I/O', + proname => 'anyarray_send', provolatile => 's', prorettype => 'bytea', + proargtypes => 'anyarray', prosrc => 'anyarray_send' }, +{ oid => '3120', descr => 'I/O', + proname => 'void_recv', prorettype => 'void', proargtypes => 'internal', + prosrc => 'void_recv' }, +{ oid => '3121', descr => 'I/O', + proname => 'void_send', prorettype => 'bytea', proargtypes => 'void', + prosrc => 'void_send' }, +{ oid => '3446', descr => 'I/O', + proname => 'macaddr8_recv', prorettype => 'macaddr8', + proargtypes => 'internal', prosrc => 'macaddr8_recv' }, +{ oid => '3447', descr => 'I/O', + proname => 'macaddr8_send', prorettype => 'bytea', proargtypes => 'macaddr8', + prosrc => 'macaddr8_send' }, + +# System-view support functions with pretty-print option +{ oid => '2504', descr => 'source text of a rule with pretty-print option', + proname => 'pg_get_ruledef', provolatile => 's', prorettype => 'text', + proargtypes => 'oid bool', prosrc => 'pg_get_ruledef_ext' }, +{ oid => '2505', + descr => 'select statement of a view with pretty-print option', + proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r', + prorettype => 'text', proargtypes => 'text bool', + prosrc => 'pg_get_viewdef_name_ext' }, +{ oid => '2506', + descr => 'select statement of a view with pretty-print option', + proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r', + prorettype => 'text', proargtypes => 'oid bool', + prosrc => 'pg_get_viewdef_ext' }, +{ oid => '3159', + descr => 'select statement of a view with pretty-printing and specified line wrapping', + proname => 'pg_get_viewdef', provolatile => 's', proparallel => 'r', + prorettype => 'text', proargtypes => 'oid int4', + prosrc => 'pg_get_viewdef_wrap' }, +{ oid => '2507', + descr => 'index description (full create statement or single expression) with pretty-print option', + proname => 'pg_get_indexdef', provolatile => 's', prorettype => 'text', + proargtypes => 'oid int4 bool', prosrc => 'pg_get_indexdef_ext' }, +{ oid => '2508', descr => 'constraint description with pretty-print option', + proname => 'pg_get_constraintdef', provolatile => 's', prorettype => 'text', + proargtypes => 'oid bool', prosrc => 'pg_get_constraintdef_ext' }, +{ oid => '2509', + descr => 'deparse an encoded expression with pretty-print option', + proname => 'pg_get_expr', provolatile => 's', prorettype => 'text', + proargtypes => 'pg_node_tree oid bool', prosrc => 'pg_get_expr_ext' }, +{ oid => '2510', descr => 'get the prepared statements for this session', + proname => 'pg_prepared_statement', prorows => '1000', proretset => 't', + provolatile => 's', proparallel => 'r', prorettype => 'record', + proargtypes => '', proallargtypes => '{text,text,timestamptz,_regtype,bool}', + proargmodes => '{o,o,o,o,o}', + proargnames => '{name,statement,prepare_time,parameter_types,from_sql}', + prosrc => 'pg_prepared_statement' }, +{ oid => '2511', descr => 'get the open cursors for this session', + proname => 'pg_cursor', prorows => '1000', proretset => 't', + provolatile => 's', proparallel => 'r', prorettype => 'record', + proargtypes => '', proallargtypes => '{text,text,bool,bool,bool,timestamptz}', + proargmodes => '{o,o,o,o,o,o}', + proargnames => '{name,statement,is_holdable,is_binary,is_scrollable,creation_time}', + prosrc => 'pg_cursor' }, +{ oid => '2599', descr => 'get the available time zone abbreviations', + proname => 'pg_timezone_abbrevs', prorows => '1000', proretset => 't', + provolatile => 's', prorettype => 'record', proargtypes => '', + proallargtypes => '{text,interval,bool}', proargmodes => '{o,o,o}', + proargnames => '{abbrev,utc_offset,is_dst}', + prosrc => 'pg_timezone_abbrevs' }, +{ oid => '2856', descr => 'get the available time zone names', + proname => 'pg_timezone_names', prorows => '1000', proretset => 't', + provolatile => 's', prorettype => 'record', proargtypes => '', + proallargtypes => '{text,text,interval,bool}', proargmodes => '{o,o,o,o}', + proargnames => '{name,abbrev,utc_offset,is_dst}', + prosrc => 'pg_timezone_names' }, +{ oid => '2730', descr => 'trigger description with pretty-print option', + proname => 'pg_get_triggerdef', provolatile => 's', prorettype => 'text', + proargtypes => 'oid bool', prosrc => 'pg_get_triggerdef_ext' }, + +# asynchronous notifications +{ oid => '3035', + descr => 'get the channels that the current backend listens to', + proname => 'pg_listening_channels', prorows => '10', proretset => 't', + provolatile => 's', proparallel => 'r', prorettype => 'text', + proargtypes => '', prosrc => 'pg_listening_channels' }, +{ oid => '3036', descr => 'send a notification event', + proname => 'pg_notify', proisstrict => 'f', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => 'text text', + prosrc => 'pg_notify' }, +{ oid => '3296', + descr => 'get the fraction of the asynchronous notification queue currently in use', + proname => 'pg_notification_queue_usage', provolatile => 'v', + prorettype => 'float8', proargtypes => '', + prosrc => 'pg_notification_queue_usage' }, + +# non-persistent series generator +{ oid => '1066', descr => 'non-persistent series generator', + proname => 'generate_series', prorows => '1000', proretset => 't', + prorettype => 'int4', proargtypes => 'int4 int4 int4', + prosrc => 'generate_series_step_int4' }, +{ oid => '1067', descr => 'non-persistent series generator', + proname => 'generate_series', prorows => '1000', proretset => 't', + prorettype => 'int4', proargtypes => 'int4 int4', + prosrc => 'generate_series_int4' }, +{ oid => '1068', descr => 'non-persistent series generator', + proname => 'generate_series', prorows => '1000', proretset => 't', + prorettype => 'int8', proargtypes => 'int8 int8 int8', + prosrc => 'generate_series_step_int8' }, +{ oid => '1069', descr => 'non-persistent series generator', + proname => 'generate_series', prorows => '1000', proretset => 't', + prorettype => 'int8', proargtypes => 'int8 int8', + prosrc => 'generate_series_int8' }, +{ oid => '3259', descr => 'non-persistent series generator', + proname => 'generate_series', prorows => '1000', proretset => 't', + prorettype => 'numeric', proargtypes => 'numeric numeric numeric', + prosrc => 'generate_series_step_numeric' }, +{ oid => '3260', descr => 'non-persistent series generator', + proname => 'generate_series', prorows => '1000', proretset => 't', + prorettype => 'numeric', proargtypes => 'numeric numeric', + prosrc => 'generate_series_numeric' }, +{ oid => '938', descr => 'non-persistent series generator', + proname => 'generate_series', prorows => '1000', proretset => 't', + prorettype => 'timestamp', proargtypes => 'timestamp timestamp interval', + prosrc => 'generate_series_timestamp' }, +{ oid => '939', descr => 'non-persistent series generator', + proname => 'generate_series', prorows => '1000', proretset => 't', + provolatile => 's', prorettype => 'timestamptz', + proargtypes => 'timestamptz timestamptz interval', + prosrc => 'generate_series_timestamptz' }, + +# boolean aggregates +{ oid => '2515', descr => 'aggregate transition function', + proname => 'booland_statefunc', prorettype => 'bool', + proargtypes => 'bool bool', prosrc => 'booland_statefunc' }, +{ oid => '2516', descr => 'aggregate transition function', + proname => 'boolor_statefunc', prorettype => 'bool', + proargtypes => 'bool bool', prosrc => 'boolor_statefunc' }, +{ oid => '3496', descr => 'aggregate transition function', + proname => 'bool_accum', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal bool', prosrc => 'bool_accum' }, +{ oid => '3497', descr => 'aggregate transition function', + proname => 'bool_accum_inv', proisstrict => 'f', prorettype => 'internal', + proargtypes => 'internal bool', prosrc => 'bool_accum_inv' }, +{ oid => '3498', descr => 'aggregate final function', + proname => 'bool_alltrue', prorettype => 'bool', proargtypes => 'internal', + prosrc => 'bool_alltrue' }, +{ oid => '3499', descr => 'aggregate final function', + proname => 'bool_anytrue', prorettype => 'bool', proargtypes => 'internal', + prosrc => 'bool_anytrue' }, +{ oid => '2517', descr => 'boolean-and aggregate', + proname => 'bool_and', prokind => 'a', proisstrict => 'f', + prorettype => 'bool', proargtypes => 'bool', prosrc => 'aggregate_dummy' }, + +# ANY, SOME? These names conflict with subquery operators. See doc. +{ oid => '2518', descr => 'boolean-or aggregate', + proname => 'bool_or', prokind => 'a', proisstrict => 'f', + prorettype => 'bool', proargtypes => 'bool', prosrc => 'aggregate_dummy' }, +{ oid => '2519', descr => 'boolean-and aggregate', + proname => 'every', prokind => 'a', proisstrict => 'f', prorettype => 'bool', + proargtypes => 'bool', prosrc => 'aggregate_dummy' }, + +# bitwise integer aggregates +{ oid => '2236', descr => 'bitwise-and smallint aggregate', + proname => 'bit_and', prokind => 'a', proisstrict => 'f', + prorettype => 'int2', proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2237', descr => 'bitwise-or smallint aggregate', + proname => 'bit_or', prokind => 'a', proisstrict => 'f', prorettype => 'int2', + proargtypes => 'int2', prosrc => 'aggregate_dummy' }, +{ oid => '2238', descr => 'bitwise-and integer aggregate', + proname => 'bit_and', prokind => 'a', proisstrict => 'f', + prorettype => 'int4', proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2239', descr => 'bitwise-or integer aggregate', + proname => 'bit_or', prokind => 'a', proisstrict => 'f', prorettype => 'int4', + proargtypes => 'int4', prosrc => 'aggregate_dummy' }, +{ oid => '2240', descr => 'bitwise-and bigint aggregate', + proname => 'bit_and', prokind => 'a', proisstrict => 'f', + prorettype => 'int8', proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2241', descr => 'bitwise-or bigint aggregate', + proname => 'bit_or', prokind => 'a', proisstrict => 'f', prorettype => 'int8', + proargtypes => 'int8', prosrc => 'aggregate_dummy' }, +{ oid => '2242', descr => 'bitwise-and bit aggregate', + proname => 'bit_and', prokind => 'a', proisstrict => 'f', prorettype => 'bit', + proargtypes => 'bit', prosrc => 'aggregate_dummy' }, +{ oid => '2243', descr => 'bitwise-or bit aggregate', + proname => 'bit_or', prokind => 'a', proisstrict => 'f', prorettype => 'bit', + proargtypes => 'bit', prosrc => 'aggregate_dummy' }, + +# formerly-missing interval + datetime operators +{ oid => '2546', + proname => 'interval_pl_date', prolang => '14', prorettype => 'timestamp', + proargtypes => 'interval date', prosrc => 'select $2 + $1' }, +{ oid => '2547', + proname => 'interval_pl_timetz', prolang => '14', prorettype => 'timetz', + proargtypes => 'interval timetz', prosrc => 'select $2 + $1' }, +{ oid => '2548', + proname => 'interval_pl_timestamp', prolang => '14', + prorettype => 'timestamp', proargtypes => 'interval timestamp', + prosrc => 'select $2 + $1' }, +{ oid => '2549', + proname => 'interval_pl_timestamptz', prolang => '14', provolatile => 's', + prorettype => 'timestamptz', proargtypes => 'interval timestamptz', + prosrc => 'select $2 + $1' }, +{ oid => '2550', + proname => 'integer_pl_date', prolang => '14', prorettype => 'date', + proargtypes => 'int4 date', prosrc => 'select $2 + $1' }, + +{ oid => '2556', descr => 'get OIDs of databases in a tablespace', + proname => 'pg_tablespace_databases', prorows => '1000', proretset => 't', + provolatile => 's', prorettype => 'oid', proargtypes => 'oid', + prosrc => 'pg_tablespace_databases' }, + +{ oid => '2557', descr => 'convert int4 to boolean', + proname => 'bool', prorettype => 'bool', proargtypes => 'int4', + prosrc => 'int4_bool' }, +{ oid => '2558', descr => 'convert boolean to int4', + proname => 'int4', prorettype => 'int4', proargtypes => 'bool', + prosrc => 'bool_int4' }, +{ oid => '2559', descr => 'current value from last used sequence', + proname => 'lastval', provolatile => 'v', proparallel => 'u', + prorettype => 'int8', proargtypes => '', prosrc => 'lastval' }, + +# start time function +{ oid => '2560', descr => 'postmaster start time', + proname => 'pg_postmaster_start_time', provolatile => 's', + prorettype => 'timestamptz', proargtypes => '', + prosrc => 'pg_postmaster_start_time' }, + +# config reload time function +{ oid => '2034', descr => 'configuration load time', + proname => 'pg_conf_load_time', provolatile => 's', proparallel => 'r', + prorettype => 'timestamptz', proargtypes => '', + prosrc => 'pg_conf_load_time' }, + +# new functions for Y-direction rtree opclasses +{ oid => '2562', + proname => 'box_below', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_below' }, +{ oid => '2563', + proname => 'box_overbelow', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_overbelow' }, +{ oid => '2564', + proname => 'box_overabove', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_overabove' }, +{ oid => '2565', + proname => 'box_above', prorettype => 'bool', proargtypes => 'box box', + prosrc => 'box_above' }, +{ oid => '2566', + proname => 'poly_below', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_below' }, +{ oid => '2567', + proname => 'poly_overbelow', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_overbelow' }, +{ oid => '2568', + proname => 'poly_overabove', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_overabove' }, +{ oid => '2569', + proname => 'poly_above', prorettype => 'bool', + proargtypes => 'polygon polygon', prosrc => 'poly_above' }, +{ oid => '2587', + proname => 'circle_overbelow', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_overbelow' }, +{ oid => '2588', + proname => 'circle_overabove', prorettype => 'bool', + proargtypes => 'circle circle', prosrc => 'circle_overabove' }, + +# support functions for GiST r-tree emulation +{ oid => '2578', descr => 'GiST support', + proname => 'gist_box_consistent', prorettype => 'bool', + proargtypes => 'internal box int2 oid internal', + prosrc => 'gist_box_consistent' }, +{ oid => '2581', descr => 'GiST support', + proname => 'gist_box_penalty', prorettype => 'internal', + proargtypes => 'internal internal internal', prosrc => 'gist_box_penalty' }, +{ oid => '2582', descr => 'GiST support', + proname => 'gist_box_picksplit', prorettype => 'internal', + proargtypes => 'internal internal', prosrc => 'gist_box_picksplit' }, +{ oid => '2583', descr => 'GiST support', + proname => 'gist_box_union', prorettype => 'box', + proargtypes => 'internal internal', prosrc => 'gist_box_union' }, +{ oid => '2584', descr => 'GiST support', + proname => 'gist_box_same', prorettype => 'internal', + proargtypes => 'box box internal', prosrc => 'gist_box_same' }, +{ oid => '2585', descr => 'GiST support', + proname => 'gist_poly_consistent', prorettype => 'bool', + proargtypes => 'internal polygon int2 oid internal', + prosrc => 'gist_poly_consistent' }, +{ oid => '2586', descr => 'GiST support', + proname => 'gist_poly_compress', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'gist_poly_compress' }, +{ oid => '2591', descr => 'GiST support', + proname => 'gist_circle_consistent', prorettype => 'bool', + proargtypes => 'internal circle int2 oid internal', + prosrc => 'gist_circle_consistent' }, +{ oid => '2592', descr => 'GiST support', + proname => 'gist_circle_compress', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'gist_circle_compress' }, +{ oid => '1030', descr => 'GiST support', + proname => 'gist_point_compress', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'gist_point_compress' }, +{ oid => '3282', descr => 'GiST support', + proname => 'gist_point_fetch', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'gist_point_fetch' }, +{ oid => '2179', descr => 'GiST support', + proname => 'gist_point_consistent', prorettype => 'bool', + proargtypes => 'internal point int2 oid internal', + prosrc => 'gist_point_consistent' }, +{ oid => '3064', descr => 'GiST support', + proname => 'gist_point_distance', prorettype => 'float8', + proargtypes => 'internal point int2 oid internal', + prosrc => 'gist_point_distance' }, +{ oid => '3280', descr => 'GiST support', + proname => 'gist_circle_distance', prorettype => 'float8', + proargtypes => 'internal circle int2 oid internal', + prosrc => 'gist_circle_distance' }, +{ oid => '3288', descr => 'GiST support', + proname => 'gist_poly_distance', prorettype => 'float8', + proargtypes => 'internal polygon int2 oid internal', + prosrc => 'gist_poly_distance' }, + +# GIN array support +{ oid => '2743', descr => 'GIN array support', + proname => 'ginarrayextract', prorettype => 'internal', + proargtypes => 'anyarray internal internal', prosrc => 'ginarrayextract' }, +{ oid => '2774', descr => 'GIN array support', + proname => 'ginqueryarrayextract', prorettype => 'internal', + proargtypes => 'anyarray internal int2 internal internal internal internal', + prosrc => 'ginqueryarrayextract' }, +{ oid => '2744', descr => 'GIN array support', + proname => 'ginarrayconsistent', prorettype => 'bool', + proargtypes => 'internal int2 anyarray int4 internal internal internal internal', + prosrc => 'ginarrayconsistent' }, +{ oid => '3920', descr => 'GIN array support', + proname => 'ginarraytriconsistent', prorettype => 'char', + proargtypes => 'internal int2 anyarray int4 internal internal internal', + prosrc => 'ginarraytriconsistent' }, +{ oid => '3076', descr => 'GIN array support (obsolete)', + proname => 'ginarrayextract', prorettype => 'internal', + proargtypes => 'anyarray internal', prosrc => 'ginarrayextract_2args' }, + +# overlap/contains/contained +{ oid => '2747', + proname => 'arrayoverlap', prorettype => 'bool', + proargtypes => 'anyarray anyarray', prosrc => 'arrayoverlap' }, +{ oid => '2748', + proname => 'arraycontains', prorettype => 'bool', + proargtypes => 'anyarray anyarray', prosrc => 'arraycontains' }, +{ oid => '2749', + proname => 'arraycontained', prorettype => 'bool', + proargtypes => 'anyarray anyarray', prosrc => 'arraycontained' }, + +# BRIN minmax +{ oid => '3383', descr => 'BRIN minmax support', + proname => 'brin_minmax_opcinfo', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'brin_minmax_opcinfo' }, +{ oid => '3384', descr => 'BRIN minmax support', + proname => 'brin_minmax_add_value', prorettype => 'bool', + proargtypes => 'internal internal internal internal', + prosrc => 'brin_minmax_add_value' }, +{ oid => '3385', descr => 'BRIN minmax support', + proname => 'brin_minmax_consistent', prorettype => 'bool', + proargtypes => 'internal internal internal', + prosrc => 'brin_minmax_consistent' }, +{ oid => '3386', descr => 'BRIN minmax support', + proname => 'brin_minmax_union', prorettype => 'bool', + proargtypes => 'internal internal internal', prosrc => 'brin_minmax_union' }, + +# BRIN inclusion +{ oid => '4105', descr => 'BRIN inclusion support', + proname => 'brin_inclusion_opcinfo', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'brin_inclusion_opcinfo' }, +{ oid => '4106', descr => 'BRIN inclusion support', + proname => 'brin_inclusion_add_value', prorettype => 'bool', + proargtypes => 'internal internal internal internal', + prosrc => 'brin_inclusion_add_value' }, +{ oid => '4107', descr => 'BRIN inclusion support', + proname => 'brin_inclusion_consistent', prorettype => 'bool', + proargtypes => 'internal internal internal', + prosrc => 'brin_inclusion_consistent' }, +{ oid => '4108', descr => 'BRIN inclusion support', + proname => 'brin_inclusion_union', prorettype => 'bool', + proargtypes => 'internal internal internal', + prosrc => 'brin_inclusion_union' }, + +# userlock replacements +{ oid => '2880', descr => 'obtain exclusive advisory lock', + proname => 'pg_advisory_lock', provolatile => 'v', proparallel => 'u', + prorettype => 'void', proargtypes => 'int8', + prosrc => 'pg_advisory_lock_int8' }, +{ oid => '3089', descr => 'obtain exclusive advisory lock', + proname => 'pg_advisory_xact_lock', provolatile => 'v', proparallel => 'u', + prorettype => 'void', proargtypes => 'int8', + prosrc => 'pg_advisory_xact_lock_int8' }, +{ oid => '2881', descr => 'obtain shared advisory lock', + proname => 'pg_advisory_lock_shared', provolatile => 'v', proparallel => 'u', + prorettype => 'void', proargtypes => 'int8', + prosrc => 'pg_advisory_lock_shared_int8' }, +{ oid => '3090', descr => 'obtain shared advisory lock', + proname => 'pg_advisory_xact_lock_shared', provolatile => 'v', + proparallel => 'u', prorettype => 'void', proargtypes => 'int8', + prosrc => 'pg_advisory_xact_lock_shared_int8' }, +{ oid => '2882', descr => 'obtain exclusive advisory lock if available', + proname => 'pg_try_advisory_lock', provolatile => 'v', proparallel => 'u', + prorettype => 'bool', proargtypes => 'int8', + prosrc => 'pg_try_advisory_lock_int8' }, +{ oid => '3091', descr => 'obtain exclusive advisory lock if available', + proname => 'pg_try_advisory_xact_lock', provolatile => 'v', + proparallel => 'u', prorettype => 'bool', proargtypes => 'int8', + prosrc => 'pg_try_advisory_xact_lock_int8' }, +{ oid => '2883', descr => 'obtain shared advisory lock if available', + proname => 'pg_try_advisory_lock_shared', provolatile => 'v', + proparallel => 'u', prorettype => 'bool', proargtypes => 'int8', + prosrc => 'pg_try_advisory_lock_shared_int8' }, +{ oid => '3092', descr => 'obtain shared advisory lock if available', + proname => 'pg_try_advisory_xact_lock_shared', provolatile => 'v', + proparallel => 'u', prorettype => 'bool', proargtypes => 'int8', + prosrc => 'pg_try_advisory_xact_lock_shared_int8' }, +{ oid => '2884', descr => 'release exclusive advisory lock', + proname => 'pg_advisory_unlock', provolatile => 'v', proparallel => 'u', + prorettype => 'bool', proargtypes => 'int8', + prosrc => 'pg_advisory_unlock_int8' }, +{ oid => '2885', descr => 'release shared advisory lock', + proname => 'pg_advisory_unlock_shared', provolatile => 'v', + proparallel => 'u', prorettype => 'bool', proargtypes => 'int8', + prosrc => 'pg_advisory_unlock_shared_int8' }, +{ oid => '2886', descr => 'obtain exclusive advisory lock', + proname => 'pg_advisory_lock', provolatile => 'v', proparallel => 'u', + prorettype => 'void', proargtypes => 'int4 int4', + prosrc => 'pg_advisory_lock_int4' }, +{ oid => '3093', descr => 'obtain exclusive advisory lock', + proname => 'pg_advisory_xact_lock', provolatile => 'v', proparallel => 'u', + prorettype => 'void', proargtypes => 'int4 int4', + prosrc => 'pg_advisory_xact_lock_int4' }, +{ oid => '2887', descr => 'obtain shared advisory lock', + proname => 'pg_advisory_lock_shared', provolatile => 'v', proparallel => 'u', + prorettype => 'void', proargtypes => 'int4 int4', + prosrc => 'pg_advisory_lock_shared_int4' }, +{ oid => '3094', descr => 'obtain shared advisory lock', + proname => 'pg_advisory_xact_lock_shared', provolatile => 'v', + proparallel => 'u', prorettype => 'void', proargtypes => 'int4 int4', + prosrc => 'pg_advisory_xact_lock_shared_int4' }, +{ oid => '2888', descr => 'obtain exclusive advisory lock if available', + proname => 'pg_try_advisory_lock', provolatile => 'v', proparallel => 'u', + prorettype => 'bool', proargtypes => 'int4 int4', + prosrc => 'pg_try_advisory_lock_int4' }, +{ oid => '3095', descr => 'obtain exclusive advisory lock if available', + proname => 'pg_try_advisory_xact_lock', provolatile => 'v', + proparallel => 'u', prorettype => 'bool', proargtypes => 'int4 int4', + prosrc => 'pg_try_advisory_xact_lock_int4' }, +{ oid => '2889', descr => 'obtain shared advisory lock if available', + proname => 'pg_try_advisory_lock_shared', provolatile => 'v', + proparallel => 'u', prorettype => 'bool', proargtypes => 'int4 int4', + prosrc => 'pg_try_advisory_lock_shared_int4' }, +{ oid => '3096', descr => 'obtain shared advisory lock if available', + proname => 'pg_try_advisory_xact_lock_shared', provolatile => 'v', + proparallel => 'u', prorettype => 'bool', proargtypes => 'int4 int4', + prosrc => 'pg_try_advisory_xact_lock_shared_int4' }, +{ oid => '2890', descr => 'release exclusive advisory lock', + proname => 'pg_advisory_unlock', provolatile => 'v', proparallel => 'u', + prorettype => 'bool', proargtypes => 'int4 int4', + prosrc => 'pg_advisory_unlock_int4' }, +{ oid => '2891', descr => 'release shared advisory lock', + proname => 'pg_advisory_unlock_shared', provolatile => 'v', + proparallel => 'u', prorettype => 'bool', proargtypes => 'int4 int4', + prosrc => 'pg_advisory_unlock_shared_int4' }, +{ oid => '2892', descr => 'release all advisory locks', + proname => 'pg_advisory_unlock_all', provolatile => 'v', proparallel => 'u', + prorettype => 'void', proargtypes => '', prosrc => 'pg_advisory_unlock_all' }, + +# XML support +{ oid => '2893', descr => 'I/O', + proname => 'xml_in', provolatile => 's', prorettype => 'xml', + proargtypes => 'cstring', prosrc => 'xml_in' }, +{ oid => '2894', descr => 'I/O', + proname => 'xml_out', prorettype => 'cstring', proargtypes => 'xml', + prosrc => 'xml_out' }, +{ oid => '2895', descr => 'generate XML comment', + proname => 'xmlcomment', prorettype => 'xml', proargtypes => 'text', + prosrc => 'xmlcomment' }, +{ oid => '2896', + descr => 'perform a non-validating parse of a character string to produce an XML value', + proname => 'xml', provolatile => 's', prorettype => 'xml', + proargtypes => 'text', prosrc => 'texttoxml' }, +{ oid => '2897', descr => 'validate an XML value', + proname => 'xmlvalidate', prorettype => 'bool', proargtypes => 'xml text', + prosrc => 'xmlvalidate' }, +{ oid => '2898', descr => 'I/O', + proname => 'xml_recv', provolatile => 's', prorettype => 'xml', + proargtypes => 'internal', prosrc => 'xml_recv' }, +{ oid => '2899', descr => 'I/O', + proname => 'xml_send', provolatile => 's', prorettype => 'bytea', + proargtypes => 'xml', prosrc => 'xml_send' }, +{ oid => '2900', descr => 'aggregate transition function', + proname => 'xmlconcat2', proisstrict => 'f', prorettype => 'xml', + proargtypes => 'xml xml', prosrc => 'xmlconcat2' }, +{ oid => '2901', descr => 'concatenate XML values', + proname => 'xmlagg', prokind => 'a', proisstrict => 'f', prorettype => 'xml', + proargtypes => 'xml', prosrc => 'aggregate_dummy' }, +{ oid => '2922', descr => 'serialize an XML value to a character string', + proname => 'text', prorettype => 'text', proargtypes => 'xml', + prosrc => 'xmltotext' }, + +{ oid => '2923', descr => 'map table contents to XML', + proname => 'table_to_xml', procost => '100', provolatile => 's', + proparallel => 'r', prorettype => 'xml', + proargtypes => 'regclass bool bool text', + proargnames => '{tbl,nulls,tableforest,targetns}', prosrc => 'table_to_xml' }, +{ oid => '2924', descr => 'map query result to XML', + proname => 'query_to_xml', procost => '100', provolatile => 'v', + proparallel => 'u', prorettype => 'xml', proargtypes => 'text bool bool text', + proargnames => '{query,nulls,tableforest,targetns}', + prosrc => 'query_to_xml' }, +{ oid => '2925', descr => 'map rows from cursor to XML', + proname => 'cursor_to_xml', procost => '100', provolatile => 'v', + proparallel => 'u', prorettype => 'xml', + proargtypes => 'refcursor int4 bool bool text', + proargnames => '{cursor,count,nulls,tableforest,targetns}', + prosrc => 'cursor_to_xml' }, +{ oid => '2926', descr => 'map table structure to XML Schema', + proname => 'table_to_xmlschema', procost => '100', provolatile => 's', + proparallel => 'r', prorettype => 'xml', + proargtypes => 'regclass bool bool text', + proargnames => '{tbl,nulls,tableforest,targetns}', + prosrc => 'table_to_xmlschema' }, +{ oid => '2927', descr => 'map query result structure to XML Schema', + proname => 'query_to_xmlschema', procost => '100', provolatile => 'v', + proparallel => 'u', prorettype => 'xml', proargtypes => 'text bool bool text', + proargnames => '{query,nulls,tableforest,targetns}', + prosrc => 'query_to_xmlschema' }, +{ oid => '2928', descr => 'map cursor structure to XML Schema', + proname => 'cursor_to_xmlschema', procost => '100', provolatile => 'v', + proparallel => 'u', prorettype => 'xml', + proargtypes => 'refcursor bool bool text', + proargnames => '{cursor,nulls,tableforest,targetns}', + prosrc => 'cursor_to_xmlschema' }, +{ oid => '2929', + descr => 'map table contents and structure to XML and XML Schema', + proname => 'table_to_xml_and_xmlschema', procost => '100', provolatile => 's', + proparallel => 'r', prorettype => 'xml', + proargtypes => 'regclass bool bool text', + proargnames => '{tbl,nulls,tableforest,targetns}', + prosrc => 'table_to_xml_and_xmlschema' }, +{ oid => '2930', + descr => 'map query result and structure to XML and XML Schema', + proname => 'query_to_xml_and_xmlschema', procost => '100', provolatile => 'v', + proparallel => 'u', prorettype => 'xml', proargtypes => 'text bool bool text', + proargnames => '{query,nulls,tableforest,targetns}', + prosrc => 'query_to_xml_and_xmlschema' }, + +{ oid => '2933', descr => 'map schema contents to XML', + proname => 'schema_to_xml', procost => '100', provolatile => 's', + proparallel => 'r', prorettype => 'xml', proargtypes => 'name bool bool text', + proargnames => '{schema,nulls,tableforest,targetns}', + prosrc => 'schema_to_xml' }, +{ oid => '2934', descr => 'map schema structure to XML Schema', + proname => 'schema_to_xmlschema', procost => '100', provolatile => 's', + proparallel => 'r', prorettype => 'xml', proargtypes => 'name bool bool text', + proargnames => '{schema,nulls,tableforest,targetns}', + prosrc => 'schema_to_xmlschema' }, +{ oid => '2935', + descr => 'map schema contents and structure to XML and XML Schema', + proname => 'schema_to_xml_and_xmlschema', procost => '100', + provolatile => 's', proparallel => 'r', prorettype => 'xml', + proargtypes => 'name bool bool text', + proargnames => '{schema,nulls,tableforest,targetns}', + prosrc => 'schema_to_xml_and_xmlschema' }, + +{ oid => '2936', descr => 'map database contents to XML', + proname => 'database_to_xml', procost => '100', provolatile => 's', + proparallel => 'r', prorettype => 'xml', proargtypes => 'bool bool text', + proargnames => '{nulls,tableforest,targetns}', prosrc => 'database_to_xml' }, +{ oid => '2937', descr => 'map database structure to XML Schema', + proname => 'database_to_xmlschema', procost => '100', provolatile => 's', + proparallel => 'r', prorettype => 'xml', proargtypes => 'bool bool text', + proargnames => '{nulls,tableforest,targetns}', + prosrc => 'database_to_xmlschema' }, +{ oid => '2938', + descr => 'map database contents and structure to XML and XML Schema', + proname => 'database_to_xml_and_xmlschema', procost => '100', + provolatile => 's', proparallel => 'r', prorettype => 'xml', + proargtypes => 'bool bool text', + proargnames => '{nulls,tableforest,targetns}', + prosrc => 'database_to_xml_and_xmlschema' }, + +{ oid => '2931', + descr => 'evaluate XPath expression, with namespaces support', + proname => 'xpath', prorettype => '_xml', proargtypes => 'text xml _text', + prosrc => 'xpath' }, +{ oid => '2932', descr => 'evaluate XPath expression', + proname => 'xpath', prolang => '14', prorettype => '_xml', + proargtypes => 'text xml', + prosrc => 'select pg_catalog.xpath($1, $2, \'\'{}\'\'::pg_catalog.text[])' }, + +{ oid => '2614', descr => 'test XML value against XPath expression', + proname => 'xmlexists', prorettype => 'bool', proargtypes => 'text xml', + prosrc => 'xmlexists' }, + +{ oid => '3049', + descr => 'test XML value against XPath expression, with namespace support', + proname => 'xpath_exists', prorettype => 'bool', + proargtypes => 'text xml _text', prosrc => 'xpath_exists' }, +{ oid => '3050', descr => 'test XML value against XPath expression', + proname => 'xpath_exists', prolang => '14', prorettype => 'bool', + proargtypes => 'text xml', + prosrc => 'select pg_catalog.xpath_exists($1, $2, \'\'{}\'\'::pg_catalog.text[])' }, +{ oid => '3051', descr => 'determine if a string is well formed XML', + proname => 'xml_is_well_formed', provolatile => 's', prorettype => 'bool', + proargtypes => 'text', prosrc => 'xml_is_well_formed' }, +{ oid => '3052', descr => 'determine if a string is well formed XML document', + proname => 'xml_is_well_formed_document', prorettype => 'bool', + proargtypes => 'text', prosrc => 'xml_is_well_formed_document' }, +{ oid => '3053', descr => 'determine if a string is well formed XML content', + proname => 'xml_is_well_formed_content', prorettype => 'bool', + proargtypes => 'text', prosrc => 'xml_is_well_formed_content' }, + +# json +{ oid => '321', descr => 'I/O', + proname => 'json_in', prorettype => 'json', proargtypes => 'cstring', + prosrc => 'json_in' }, +{ oid => '322', descr => 'I/O', + proname => 'json_out', prorettype => 'cstring', proargtypes => 'json', + prosrc => 'json_out' }, +{ oid => '323', descr => 'I/O', + proname => 'json_recv', prorettype => 'json', proargtypes => 'internal', + prosrc => 'json_recv' }, +{ oid => '324', descr => 'I/O', + proname => 'json_send', prorettype => 'bytea', proargtypes => 'json', + prosrc => 'json_send' }, +{ oid => '3153', descr => 'map array to json', + proname => 'array_to_json', provolatile => 's', prorettype => 'json', + proargtypes => 'anyarray', prosrc => 'array_to_json' }, +{ oid => '3154', descr => 'map array to json with optional pretty printing', + proname => 'array_to_json', provolatile => 's', prorettype => 'json', + proargtypes => 'anyarray bool', prosrc => 'array_to_json_pretty' }, +{ oid => '3155', descr => 'map row to json', + proname => 'row_to_json', provolatile => 's', prorettype => 'json', + proargtypes => 'record', prosrc => 'row_to_json' }, +{ oid => '3156', descr => 'map row to json with optional pretty printing', + proname => 'row_to_json', provolatile => 's', prorettype => 'json', + proargtypes => 'record bool', prosrc => 'row_to_json_pretty' }, +{ oid => '3173', descr => 'json aggregate transition function', + proname => 'json_agg_transfn', proisstrict => 'f', provolatile => 's', + prorettype => 'internal', proargtypes => 'internal anyelement', + prosrc => 'json_agg_transfn' }, +{ oid => '3174', descr => 'json aggregate final function', + proname => 'json_agg_finalfn', proisstrict => 'f', prorettype => 'json', + proargtypes => 'internal', prosrc => 'json_agg_finalfn' }, +{ oid => '3175', descr => 'aggregate input into json', + proname => 'json_agg', prokind => 'a', proisstrict => 'f', provolatile => 's', + prorettype => 'json', proargtypes => 'anyelement', + prosrc => 'aggregate_dummy' }, +{ oid => '3180', descr => 'json object aggregate transition function', + proname => 'json_object_agg_transfn', proisstrict => 'f', provolatile => 's', + prorettype => 'internal', proargtypes => 'internal any any', + prosrc => 'json_object_agg_transfn' }, +{ oid => '3196', descr => 'json object aggregate final function', + proname => 'json_object_agg_finalfn', proisstrict => 'f', + prorettype => 'json', proargtypes => 'internal', + prosrc => 'json_object_agg_finalfn' }, +{ oid => '3197', descr => 'aggregate input into a json object', + proname => 'json_object_agg', prokind => 'a', proisstrict => 'f', + provolatile => 's', prorettype => 'json', proargtypes => 'any any', + prosrc => 'aggregate_dummy' }, +{ oid => '3198', descr => 'build a json array from any inputs', + proname => 'json_build_array', provariadic => 'any', proisstrict => 'f', + provolatile => 's', prorettype => 'json', proargtypes => 'any', + proallargtypes => '{any}', proargmodes => '{v}', + prosrc => 'json_build_array' }, +{ oid => '3199', descr => 'build an empty json array', + proname => 'json_build_array', proisstrict => 'f', provolatile => 's', + prorettype => 'json', proargtypes => '', + prosrc => 'json_build_array_noargs' }, +{ oid => '3200', + descr => 'build a json object from pairwise key/value inputs', + proname => 'json_build_object', provariadic => 'any', proisstrict => 'f', + provolatile => 's', prorettype => 'json', proargtypes => 'any', + proallargtypes => '{any}', proargmodes => '{v}', + prosrc => 'json_build_object' }, +{ oid => '3201', descr => 'build an empty json object', + proname => 'json_build_object', proisstrict => 'f', provolatile => 's', + prorettype => 'json', proargtypes => '', + prosrc => 'json_build_object_noargs' }, +{ oid => '3202', descr => 'map text array of key value pairs to json object', + proname => 'json_object', prorettype => 'json', proargtypes => '_text', + prosrc => 'json_object' }, +{ oid => '3203', descr => 'map text arrays of keys and values to json object', + proname => 'json_object', prorettype => 'json', proargtypes => '_text _text', + prosrc => 'json_object_two_arg' }, +{ oid => '3176', descr => 'map input to json', + proname => 'to_json', provolatile => 's', prorettype => 'json', + proargtypes => 'anyelement', prosrc => 'to_json' }, +{ oid => '3261', descr => 'remove object fields with null values from json', + proname => 'json_strip_nulls', prorettype => 'json', proargtypes => 'json', + prosrc => 'json_strip_nulls' }, + +{ oid => '3947', + proname => 'json_object_field', prorettype => 'json', + proargtypes => 'json text', proargnames => '{from_json, field_name}', + prosrc => 'json_object_field' }, +{ oid => '3948', + proname => 'json_object_field_text', prorettype => 'text', + proargtypes => 'json text', proargnames => '{from_json, field_name}', + prosrc => 'json_object_field_text' }, +{ oid => '3949', + proname => 'json_array_element', prorettype => 'json', + proargtypes => 'json int4', proargnames => '{from_json, element_index}', + prosrc => 'json_array_element' }, +{ oid => '3950', + proname => 'json_array_element_text', prorettype => 'text', + proargtypes => 'json int4', proargnames => '{from_json, element_index}', + prosrc => 'json_array_element_text' }, +{ oid => '3951', descr => 'get value from json with path elements', + proname => 'json_extract_path', provariadic => 'text', prorettype => 'json', + proargtypes => 'json _text', proallargtypes => '{json,_text}', + proargmodes => '{i,v}', proargnames => '{from_json,path_elems}', + prosrc => 'json_extract_path' }, +{ oid => '3953', descr => 'get value from json as text with path elements', + proname => 'json_extract_path_text', provariadic => 'text', + prorettype => 'text', proargtypes => 'json _text', + proallargtypes => '{json,_text}', proargmodes => '{i,v}', + proargnames => '{from_json,path_elems}', prosrc => 'json_extract_path_text' }, +{ oid => '3955', descr => 'key value pairs of a json object', + proname => 'json_array_elements', prorows => '100', proretset => 't', + prorettype => 'json', proargtypes => 'json', proallargtypes => '{json,json}', + proargmodes => '{i,o}', proargnames => '{from_json,value}', + prosrc => 'json_array_elements' }, +{ oid => '3969', descr => 'elements of json array', + proname => 'json_array_elements_text', prorows => '100', proretset => 't', + prorettype => 'text', proargtypes => 'json', proallargtypes => '{json,text}', + proargmodes => '{i,o}', proargnames => '{from_json,value}', + prosrc => 'json_array_elements_text' }, +{ oid => '3956', descr => 'length of json array', + proname => 'json_array_length', prorettype => 'int4', proargtypes => 'json', + prosrc => 'json_array_length' }, +{ oid => '3957', descr => 'get json object keys', + proname => 'json_object_keys', prorows => '100', proretset => 't', + prorettype => 'text', proargtypes => 'json', prosrc => 'json_object_keys' }, +{ oid => '3958', descr => 'key value pairs of a json object', + proname => 'json_each', prorows => '100', proretset => 't', + prorettype => 'record', proargtypes => 'json', + proallargtypes => '{json,text,json}', proargmodes => '{i,o,o}', + proargnames => '{from_json,key,value}', prosrc => 'json_each' }, +{ oid => '3959', descr => 'key value pairs of a json object', + proname => 'json_each_text', prorows => '100', proretset => 't', + prorettype => 'record', proargtypes => 'json', + proallargtypes => '{json,text,text}', proargmodes => '{i,o,o}', + proargnames => '{from_json,key,value}', prosrc => 'json_each_text' }, +{ oid => '3960', descr => 'get record fields from a json object', + proname => 'json_populate_record', proisstrict => 'f', provolatile => 's', + prorettype => 'anyelement', proargtypes => 'anyelement json bool', + prosrc => 'json_populate_record' }, +{ oid => '3961', + descr => 'get set of records with fields from a json array of objects', + proname => 'json_populate_recordset', prorows => '100', proisstrict => 'f', + proretset => 't', provolatile => 's', prorettype => 'anyelement', + proargtypes => 'anyelement json bool', prosrc => 'json_populate_recordset' }, +{ oid => '3204', descr => 'get record fields from a json object', + proname => 'json_to_record', provolatile => 's', prorettype => 'record', + proargtypes => 'json', prosrc => 'json_to_record' }, +{ oid => '3205', + descr => 'get set of records with fields from a json array of objects', + proname => 'json_to_recordset', prorows => '100', proisstrict => 'f', + proretset => 't', provolatile => 's', prorettype => 'record', + proargtypes => 'json', prosrc => 'json_to_recordset' }, +{ oid => '3968', descr => 'get the type of a json value', + proname => 'json_typeof', prorettype => 'text', proargtypes => 'json', + prosrc => 'json_typeof' }, + +# uuid +{ oid => '2952', descr => 'I/O', + proname => 'uuid_in', prorettype => 'uuid', proargtypes => 'cstring', + prosrc => 'uuid_in' }, +{ oid => '2953', descr => 'I/O', + proname => 'uuid_out', prorettype => 'cstring', proargtypes => 'uuid', + prosrc => 'uuid_out' }, +{ oid => '2954', + proname => 'uuid_lt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'uuid uuid', prosrc => 'uuid_lt' }, +{ oid => '2955', + proname => 'uuid_le', proleakproof => 't', prorettype => 'bool', + proargtypes => 'uuid uuid', prosrc => 'uuid_le' }, +{ oid => '2956', + proname => 'uuid_eq', proleakproof => 't', prorettype => 'bool', + proargtypes => 'uuid uuid', prosrc => 'uuid_eq' }, +{ oid => '2957', + proname => 'uuid_ge', proleakproof => 't', prorettype => 'bool', + proargtypes => 'uuid uuid', prosrc => 'uuid_ge' }, +{ oid => '2958', + proname => 'uuid_gt', proleakproof => 't', prorettype => 'bool', + proargtypes => 'uuid uuid', prosrc => 'uuid_gt' }, +{ oid => '2959', + proname => 'uuid_ne', proleakproof => 't', prorettype => 'bool', + proargtypes => 'uuid uuid', prosrc => 'uuid_ne' }, +{ oid => '2960', descr => 'less-equal-greater', + proname => 'uuid_cmp', prorettype => 'int4', proargtypes => 'uuid uuid', + prosrc => 'uuid_cmp' }, +{ oid => '3300', descr => 'sort support', + proname => 'uuid_sortsupport', prorettype => 'void', + proargtypes => 'internal', prosrc => 'uuid_sortsupport' }, +{ oid => '2961', descr => 'I/O', + proname => 'uuid_recv', prorettype => 'uuid', proargtypes => 'internal', + prosrc => 'uuid_recv' }, +{ oid => '2962', descr => 'I/O', + proname => 'uuid_send', prorettype => 'bytea', proargtypes => 'uuid', + prosrc => 'uuid_send' }, +{ oid => '2963', descr => 'hash', + proname => 'uuid_hash', prorettype => 'int4', proargtypes => 'uuid', + prosrc => 'uuid_hash' }, +{ oid => '3412', descr => 'hash', + proname => 'uuid_hash_extended', prorettype => 'int8', + proargtypes => 'uuid int8', prosrc => 'uuid_hash_extended' }, + +# pg_lsn +{ oid => '3229', descr => 'I/O', + proname => 'pg_lsn_in', prorettype => 'pg_lsn', proargtypes => 'cstring', + prosrc => 'pg_lsn_in' }, +{ oid => '3230', descr => 'I/O', + proname => 'pg_lsn_out', prorettype => 'cstring', proargtypes => 'pg_lsn', + prosrc => 'pg_lsn_out' }, +{ oid => '3231', + proname => 'pg_lsn_lt', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn', + prosrc => 'pg_lsn_lt' }, +{ oid => '3232', + proname => 'pg_lsn_le', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn', + prosrc => 'pg_lsn_le' }, +{ oid => '3233', + proname => 'pg_lsn_eq', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn', + prosrc => 'pg_lsn_eq' }, +{ oid => '3234', + proname => 'pg_lsn_ge', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn', + prosrc => 'pg_lsn_ge' }, +{ oid => '3235', + proname => 'pg_lsn_gt', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn', + prosrc => 'pg_lsn_gt' }, +{ oid => '3236', + proname => 'pg_lsn_ne', prorettype => 'bool', proargtypes => 'pg_lsn pg_lsn', + prosrc => 'pg_lsn_ne' }, +{ oid => '3237', + proname => 'pg_lsn_mi', prorettype => 'numeric', + proargtypes => 'pg_lsn pg_lsn', prosrc => 'pg_lsn_mi' }, +{ oid => '3238', descr => 'I/O', + proname => 'pg_lsn_recv', prorettype => 'pg_lsn', proargtypes => 'internal', + prosrc => 'pg_lsn_recv' }, +{ oid => '3239', descr => 'I/O', + proname => 'pg_lsn_send', prorettype => 'bytea', proargtypes => 'pg_lsn', + prosrc => 'pg_lsn_send' }, +{ oid => '3251', descr => 'less-equal-greater', + proname => 'pg_lsn_cmp', prorettype => 'int4', proargtypes => 'pg_lsn pg_lsn', + prosrc => 'pg_lsn_cmp' }, +{ oid => '3252', descr => 'hash', + proname => 'pg_lsn_hash', prorettype => 'int4', proargtypes => 'pg_lsn', + prosrc => 'pg_lsn_hash' }, +{ oid => '3413', descr => 'hash', + proname => 'pg_lsn_hash_extended', prorettype => 'int8', + proargtypes => 'pg_lsn int8', prosrc => 'pg_lsn_hash_extended' }, + +# enum related procs +{ oid => '3504', descr => 'I/O', + proname => 'anyenum_in', prorettype => 'anyenum', proargtypes => 'cstring', + prosrc => 'anyenum_in' }, +{ oid => '3505', descr => 'I/O', + proname => 'anyenum_out', provolatile => 's', prorettype => 'cstring', + proargtypes => 'anyenum', prosrc => 'anyenum_out' }, +{ oid => '3506', descr => 'I/O', + proname => 'enum_in', provolatile => 's', prorettype => 'anyenum', + proargtypes => 'cstring oid', prosrc => 'enum_in' }, +{ oid => '3507', descr => 'I/O', + proname => 'enum_out', provolatile => 's', prorettype => 'cstring', + proargtypes => 'anyenum', prosrc => 'enum_out' }, +{ oid => '3508', + proname => 'enum_eq', prorettype => 'bool', proargtypes => 'anyenum anyenum', + prosrc => 'enum_eq' }, +{ oid => '3509', + proname => 'enum_ne', prorettype => 'bool', proargtypes => 'anyenum anyenum', + prosrc => 'enum_ne' }, +{ oid => '3510', + proname => 'enum_lt', prorettype => 'bool', proargtypes => 'anyenum anyenum', + prosrc => 'enum_lt' }, +{ oid => '3511', + proname => 'enum_gt', prorettype => 'bool', proargtypes => 'anyenum anyenum', + prosrc => 'enum_gt' }, +{ oid => '3512', + proname => 'enum_le', prorettype => 'bool', proargtypes => 'anyenum anyenum', + prosrc => 'enum_le' }, +{ oid => '3513', + proname => 'enum_ge', prorettype => 'bool', proargtypes => 'anyenum anyenum', + prosrc => 'enum_ge' }, +{ oid => '3514', descr => 'less-equal-greater', + proname => 'enum_cmp', prorettype => 'int4', proargtypes => 'anyenum anyenum', + prosrc => 'enum_cmp' }, +{ oid => '3515', descr => 'hash', + proname => 'hashenum', prorettype => 'int4', proargtypes => 'anyenum', + prosrc => 'hashenum' }, +{ oid => '3414', descr => 'hash', + proname => 'hashenumextended', prorettype => 'int8', + proargtypes => 'anyenum int8', prosrc => 'hashenumextended' }, +{ oid => '3524', descr => 'smaller of two', + proname => 'enum_smaller', prorettype => 'anyenum', + proargtypes => 'anyenum anyenum', prosrc => 'enum_smaller' }, +{ oid => '3525', descr => 'larger of two', + proname => 'enum_larger', prorettype => 'anyenum', + proargtypes => 'anyenum anyenum', prosrc => 'enum_larger' }, +{ oid => '3526', descr => 'maximum value of all enum input values', + proname => 'max', prokind => 'a', proisstrict => 'f', prorettype => 'anyenum', + proargtypes => 'anyenum', prosrc => 'aggregate_dummy' }, +{ oid => '3527', descr => 'minimum value of all enum input values', + proname => 'min', prokind => 'a', proisstrict => 'f', prorettype => 'anyenum', + proargtypes => 'anyenum', prosrc => 'aggregate_dummy' }, +{ oid => '3528', descr => 'first value of the input enum type', + proname => 'enum_first', proisstrict => 'f', provolatile => 's', + prorettype => 'anyenum', proargtypes => 'anyenum', prosrc => 'enum_first' }, +{ oid => '3529', descr => 'last value of the input enum type', + proname => 'enum_last', proisstrict => 'f', provolatile => 's', + prorettype => 'anyenum', proargtypes => 'anyenum', prosrc => 'enum_last' }, +{ oid => '3530', + descr => 'range between the two given enum values, as an ordered array', + proname => 'enum_range', proisstrict => 'f', provolatile => 's', + prorettype => 'anyarray', proargtypes => 'anyenum anyenum', + prosrc => 'enum_range_bounds' }, +{ oid => '3531', descr => 'range of the given enum type, as an ordered array', + proname => 'enum_range', proisstrict => 'f', provolatile => 's', + prorettype => 'anyarray', proargtypes => 'anyenum', + prosrc => 'enum_range_all' }, +{ oid => '3532', descr => 'I/O', + proname => 'enum_recv', provolatile => 's', prorettype => 'anyenum', + proargtypes => 'internal oid', prosrc => 'enum_recv' }, +{ oid => '3533', descr => 'I/O', + proname => 'enum_send', provolatile => 's', prorettype => 'bytea', + proargtypes => 'anyenum', prosrc => 'enum_send' }, + +# text search stuff +{ oid => '3610', descr => 'I/O', + proname => 'tsvectorin', prorettype => 'tsvector', proargtypes => 'cstring', + prosrc => 'tsvectorin' }, +{ oid => '3639', descr => 'I/O', + proname => 'tsvectorrecv', prorettype => 'tsvector', + proargtypes => 'internal', prosrc => 'tsvectorrecv' }, +{ oid => '3611', descr => 'I/O', + proname => 'tsvectorout', prorettype => 'cstring', proargtypes => 'tsvector', + prosrc => 'tsvectorout' }, +{ oid => '3638', descr => 'I/O', + proname => 'tsvectorsend', prorettype => 'bytea', proargtypes => 'tsvector', + prosrc => 'tsvectorsend' }, +{ oid => '3612', descr => 'I/O', + proname => 'tsqueryin', prorettype => 'tsquery', proargtypes => 'cstring', + prosrc => 'tsqueryin' }, +{ oid => '3641', descr => 'I/O', + proname => 'tsqueryrecv', prorettype => 'tsquery', proargtypes => 'internal', + prosrc => 'tsqueryrecv' }, +{ oid => '3613', descr => 'I/O', + proname => 'tsqueryout', prorettype => 'cstring', proargtypes => 'tsquery', + prosrc => 'tsqueryout' }, +{ oid => '3640', descr => 'I/O', + proname => 'tsquerysend', prorettype => 'bytea', proargtypes => 'tsquery', + prosrc => 'tsquerysend' }, +{ oid => '3646', descr => 'I/O', + proname => 'gtsvectorin', prorettype => 'gtsvector', proargtypes => 'cstring', + prosrc => 'gtsvectorin' }, +{ oid => '3647', descr => 'I/O', + proname => 'gtsvectorout', prorettype => 'cstring', + proargtypes => 'gtsvector', prosrc => 'gtsvectorout' }, + +{ oid => '3616', + proname => 'tsvector_lt', prorettype => 'bool', + proargtypes => 'tsvector tsvector', prosrc => 'tsvector_lt' }, +{ oid => '3617', + proname => 'tsvector_le', prorettype => 'bool', + proargtypes => 'tsvector tsvector', prosrc => 'tsvector_le' }, +{ oid => '3618', + proname => 'tsvector_eq', prorettype => 'bool', + proargtypes => 'tsvector tsvector', prosrc => 'tsvector_eq' }, +{ oid => '3619', + proname => 'tsvector_ne', prorettype => 'bool', + proargtypes => 'tsvector tsvector', prosrc => 'tsvector_ne' }, +{ oid => '3620', + proname => 'tsvector_ge', prorettype => 'bool', + proargtypes => 'tsvector tsvector', prosrc => 'tsvector_ge' }, +{ oid => '3621', + proname => 'tsvector_gt', prorettype => 'bool', + proargtypes => 'tsvector tsvector', prosrc => 'tsvector_gt' }, +{ oid => '3622', descr => 'less-equal-greater', + proname => 'tsvector_cmp', prorettype => 'int4', + proargtypes => 'tsvector tsvector', prosrc => 'tsvector_cmp' }, + +{ oid => '3711', descr => 'number of lexemes', + proname => 'length', prorettype => 'int4', proargtypes => 'tsvector', + prosrc => 'tsvector_length' }, +{ oid => '3623', descr => 'strip position information', + proname => 'strip', prorettype => 'tsvector', proargtypes => 'tsvector', + prosrc => 'tsvector_strip' }, +{ oid => '3624', descr => 'set given weight for whole tsvector', + proname => 'setweight', prorettype => 'tsvector', + proargtypes => 'tsvector char', prosrc => 'tsvector_setweight' }, +{ oid => '3320', descr => 'set given weight for given lexemes', + proname => 'setweight', prorettype => 'tsvector', + proargtypes => 'tsvector char _text', + prosrc => 'tsvector_setweight_by_filter' }, +{ oid => '3625', + proname => 'tsvector_concat', prorettype => 'tsvector', + proargtypes => 'tsvector tsvector', prosrc => 'tsvector_concat' }, +{ oid => '3321', descr => 'delete lexeme', + proname => 'ts_delete', prorettype => 'tsvector', + proargtypes => 'tsvector text', prosrc => 'tsvector_delete_str' }, +{ oid => '3323', descr => 'delete given lexemes', + proname => 'ts_delete', prorettype => 'tsvector', + proargtypes => 'tsvector _text', prosrc => 'tsvector_delete_arr' }, +{ oid => '3322', descr => 'expand tsvector to set of rows', + proname => 'unnest', prorows => '10', proretset => 't', + prorettype => 'record', proargtypes => 'tsvector', + proallargtypes => '{tsvector,text,_int2,_text}', proargmodes => '{i,o,o,o}', + proargnames => '{tsvector,lexeme,positions,weights}', + prosrc => 'tsvector_unnest' }, +{ oid => '3326', descr => 'convert tsvector to array of lexemes', + proname => 'tsvector_to_array', prorettype => '_text', + proargtypes => 'tsvector', prosrc => 'tsvector_to_array' }, +{ oid => '3327', descr => 'build tsvector from array of lexemes', + proname => 'array_to_tsvector', prorettype => 'tsvector', + proargtypes => '_text', prosrc => 'array_to_tsvector' }, +{ oid => '3319', + descr => 'delete lexemes that do not have one of the given weights', + proname => 'ts_filter', prorettype => 'tsvector', + proargtypes => 'tsvector _char', prosrc => 'tsvector_filter' }, + +{ oid => '3634', + proname => 'ts_match_vq', prorettype => 'bool', + proargtypes => 'tsvector tsquery', prosrc => 'ts_match_vq' }, +{ oid => '3635', + proname => 'ts_match_qv', prorettype => 'bool', + proargtypes => 'tsquery tsvector', prosrc => 'ts_match_qv' }, +{ oid => '3760', + proname => 'ts_match_tt', procost => '100', provolatile => 's', + prorettype => 'bool', proargtypes => 'text text', prosrc => 'ts_match_tt' }, +{ oid => '3761', + proname => 'ts_match_tq', procost => '100', provolatile => 's', + prorettype => 'bool', proargtypes => 'text tsquery', + prosrc => 'ts_match_tq' }, + +{ oid => '3648', descr => 'GiST tsvector support', + proname => 'gtsvector_compress', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'gtsvector_compress' }, +{ oid => '3649', descr => 'GiST tsvector support', + proname => 'gtsvector_decompress', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'gtsvector_decompress' }, +{ oid => '3650', descr => 'GiST tsvector support', + proname => 'gtsvector_picksplit', prorettype => 'internal', + proargtypes => 'internal internal', prosrc => 'gtsvector_picksplit' }, +{ oid => '3651', descr => 'GiST tsvector support', + proname => 'gtsvector_union', prorettype => 'gtsvector', + proargtypes => 'internal internal', prosrc => 'gtsvector_union' }, +{ oid => '3652', descr => 'GiST tsvector support', + proname => 'gtsvector_same', prorettype => 'internal', + proargtypes => 'gtsvector gtsvector internal', prosrc => 'gtsvector_same' }, +{ oid => '3653', descr => 'GiST tsvector support', + proname => 'gtsvector_penalty', prorettype => 'internal', + proargtypes => 'internal internal internal', prosrc => 'gtsvector_penalty' }, +{ oid => '3654', descr => 'GiST tsvector support', + proname => 'gtsvector_consistent', prorettype => 'bool', + proargtypes => 'internal tsvector int2 oid internal', + prosrc => 'gtsvector_consistent' }, +{ oid => '3790', descr => 'GiST tsvector support (obsolete)', + proname => 'gtsvector_consistent', prorettype => 'bool', + proargtypes => 'internal gtsvector int4 oid internal', + prosrc => 'gtsvector_consistent_oldsig' }, + +{ oid => '3656', descr => 'GIN tsvector support', + proname => 'gin_extract_tsvector', prorettype => 'internal', + proargtypes => 'tsvector internal internal', + prosrc => 'gin_extract_tsvector' }, +{ oid => '3657', descr => 'GIN tsvector support', + proname => 'gin_extract_tsquery', prorettype => 'internal', + proargtypes => 'tsvector internal int2 internal internal internal internal', + prosrc => 'gin_extract_tsquery' }, +{ oid => '3658', descr => 'GIN tsvector support', + proname => 'gin_tsquery_consistent', prorettype => 'bool', + proargtypes => 'internal int2 tsvector int4 internal internal internal internal', + prosrc => 'gin_tsquery_consistent' }, +{ oid => '3921', descr => 'GIN tsvector support', + proname => 'gin_tsquery_triconsistent', prorettype => 'char', + proargtypes => 'internal int2 tsvector int4 internal internal internal', + prosrc => 'gin_tsquery_triconsistent' }, +{ oid => '3724', descr => 'GIN tsvector support', + proname => 'gin_cmp_tslexeme', prorettype => 'int4', + proargtypes => 'text text', prosrc => 'gin_cmp_tslexeme' }, +{ oid => '2700', descr => 'GIN tsvector support', + proname => 'gin_cmp_prefix', prorettype => 'int4', + proargtypes => 'text text int2 internal', prosrc => 'gin_cmp_prefix' }, +{ oid => '3077', descr => 'GIN tsvector support (obsolete)', + proname => 'gin_extract_tsvector', prorettype => 'internal', + proargtypes => 'tsvector internal', prosrc => 'gin_extract_tsvector_2args' }, +{ oid => '3087', descr => 'GIN tsvector support (obsolete)', + proname => 'gin_extract_tsquery', prorettype => 'internal', + proargtypes => 'tsquery internal int2 internal internal', + prosrc => 'gin_extract_tsquery_5args' }, +{ oid => '3088', descr => 'GIN tsvector support (obsolete)', + proname => 'gin_tsquery_consistent', prorettype => 'bool', + proargtypes => 'internal int2 tsquery int4 internal internal', + prosrc => 'gin_tsquery_consistent_6args' }, +{ oid => '3791', descr => 'GIN tsvector support (obsolete)', + proname => 'gin_extract_tsquery', prorettype => 'internal', + proargtypes => 'tsquery internal int2 internal internal internal internal', + prosrc => 'gin_extract_tsquery_oldsig' }, +{ oid => '3792', descr => 'GIN tsvector support (obsolete)', + proname => 'gin_tsquery_consistent', prorettype => 'bool', + proargtypes => 'internal int2 tsquery int4 internal internal internal internal', + prosrc => 'gin_tsquery_consistent_oldsig' }, + +{ oid => '3789', descr => 'clean up GIN pending list', + proname => 'gin_clean_pending_list', provolatile => 'v', proparallel => 'u', + prorettype => 'int8', proargtypes => 'regclass', + prosrc => 'gin_clean_pending_list' }, + +{ oid => '3662', + proname => 'tsquery_lt', prorettype => 'bool', + proargtypes => 'tsquery tsquery', prosrc => 'tsquery_lt' }, +{ oid => '3663', + proname => 'tsquery_le', prorettype => 'bool', + proargtypes => 'tsquery tsquery', prosrc => 'tsquery_le' }, +{ oid => '3664', + proname => 'tsquery_eq', prorettype => 'bool', + proargtypes => 'tsquery tsquery', prosrc => 'tsquery_eq' }, +{ oid => '3665', + proname => 'tsquery_ne', prorettype => 'bool', + proargtypes => 'tsquery tsquery', prosrc => 'tsquery_ne' }, +{ oid => '3666', + proname => 'tsquery_ge', prorettype => 'bool', + proargtypes => 'tsquery tsquery', prosrc => 'tsquery_ge' }, +{ oid => '3667', + proname => 'tsquery_gt', prorettype => 'bool', + proargtypes => 'tsquery tsquery', prosrc => 'tsquery_gt' }, +{ oid => '3668', descr => 'less-equal-greater', + proname => 'tsquery_cmp', prorettype => 'int4', + proargtypes => 'tsquery tsquery', prosrc => 'tsquery_cmp' }, + +{ oid => '3669', + proname => 'tsquery_and', prorettype => 'tsquery', + proargtypes => 'tsquery tsquery', prosrc => 'tsquery_and' }, +{ oid => '3670', + proname => 'tsquery_or', prorettype => 'tsquery', + proargtypes => 'tsquery tsquery', prosrc => 'tsquery_or' }, +{ oid => '5003', + proname => 'tsquery_phrase', prorettype => 'tsquery', + proargtypes => 'tsquery tsquery', prosrc => 'tsquery_phrase' }, +{ oid => '5004', descr => 'phrase-concatenate with distance', + proname => 'tsquery_phrase', prorettype => 'tsquery', + proargtypes => 'tsquery tsquery int4', prosrc => 'tsquery_phrase_distance' }, +{ oid => '3671', + proname => 'tsquery_not', prorettype => 'tsquery', proargtypes => 'tsquery', + prosrc => 'tsquery_not' }, + +{ oid => '3691', + proname => 'tsq_mcontains', prorettype => 'bool', + proargtypes => 'tsquery tsquery', prosrc => 'tsq_mcontains' }, +{ oid => '3692', + proname => 'tsq_mcontained', prorettype => 'bool', + proargtypes => 'tsquery tsquery', prosrc => 'tsq_mcontained' }, + +{ oid => '3672', descr => 'number of nodes', + proname => 'numnode', prorettype => 'int4', proargtypes => 'tsquery', + prosrc => 'tsquery_numnode' }, +{ oid => '3673', descr => 'show real useful query for GiST index', + proname => 'querytree', prorettype => 'text', proargtypes => 'tsquery', + prosrc => 'tsquerytree' }, + +{ oid => '3684', descr => 'rewrite tsquery', + proname => 'ts_rewrite', prorettype => 'tsquery', + proargtypes => 'tsquery tsquery tsquery', prosrc => 'tsquery_rewrite' }, +{ oid => '3685', descr => 'rewrite tsquery', + proname => 'ts_rewrite', procost => '100', provolatile => 'v', + proparallel => 'u', prorettype => 'tsquery', proargtypes => 'tsquery text', + prosrc => 'tsquery_rewrite_query' }, + +{ oid => '3695', descr => 'GiST tsquery support', + proname => 'gtsquery_compress', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'gtsquery_compress' }, +{ oid => '3697', descr => 'GiST tsquery support', + proname => 'gtsquery_picksplit', prorettype => 'internal', + proargtypes => 'internal internal', prosrc => 'gtsquery_picksplit' }, +{ oid => '3698', descr => 'GiST tsquery support', + proname => 'gtsquery_union', prorettype => 'int8', + proargtypes => 'internal internal', prosrc => 'gtsquery_union' }, +{ oid => '3699', descr => 'GiST tsquery support', + proname => 'gtsquery_same', prorettype => 'internal', + proargtypes => 'int8 int8 internal', prosrc => 'gtsquery_same' }, +{ oid => '3700', descr => 'GiST tsquery support', + proname => 'gtsquery_penalty', prorettype => 'internal', + proargtypes => 'internal internal internal', prosrc => 'gtsquery_penalty' }, +{ oid => '3701', descr => 'GiST tsquery support', + proname => 'gtsquery_consistent', prorettype => 'bool', + proargtypes => 'internal tsquery int2 oid internal', + prosrc => 'gtsquery_consistent' }, +{ oid => '3793', descr => 'GiST tsquery support (obsolete)', + proname => 'gtsquery_consistent', prorettype => 'bool', + proargtypes => 'internal internal int4 oid internal', + prosrc => 'gtsquery_consistent_oldsig' }, + +{ oid => '3686', descr => 'restriction selectivity of tsvector @@ tsquery', + proname => 'tsmatchsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'tsmatchsel' }, +{ oid => '3687', descr => 'join selectivity of tsvector @@ tsquery', + proname => 'tsmatchjoinsel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int2 internal', + prosrc => 'tsmatchjoinsel' }, +{ oid => '3688', descr => 'tsvector typanalyze', + proname => 'ts_typanalyze', provolatile => 's', prorettype => 'bool', + proargtypes => 'internal', prosrc => 'ts_typanalyze' }, + +{ oid => '3689', descr => 'statistics of tsvector column', + proname => 'ts_stat', procost => '10', prorows => '10000', proretset => 't', + provolatile => 'v', proparallel => 'u', prorettype => 'record', + proargtypes => 'text', proallargtypes => '{text,text,int4,int4}', + proargmodes => '{i,o,o,o}', proargnames => '{query,word,ndoc,nentry}', + prosrc => 'ts_stat1' }, +{ oid => '3690', descr => 'statistics of tsvector column', + proname => 'ts_stat', procost => '10', prorows => '10000', proretset => 't', + provolatile => 'v', proparallel => 'u', prorettype => 'record', + proargtypes => 'text text', proallargtypes => '{text,text,text,int4,int4}', + proargmodes => '{i,i,o,o,o}', + proargnames => '{query,weights,word,ndoc,nentry}', prosrc => 'ts_stat2' }, + +{ oid => '3703', descr => 'relevance', + proname => 'ts_rank', prorettype => 'float4', + proargtypes => '_float4 tsvector tsquery int4', prosrc => 'ts_rank_wttf' }, +{ oid => '3704', descr => 'relevance', + proname => 'ts_rank', prorettype => 'float4', + proargtypes => '_float4 tsvector tsquery', prosrc => 'ts_rank_wtt' }, +{ oid => '3705', descr => 'relevance', + proname => 'ts_rank', prorettype => 'float4', + proargtypes => 'tsvector tsquery int4', prosrc => 'ts_rank_ttf' }, +{ oid => '3706', descr => 'relevance', + proname => 'ts_rank', prorettype => 'float4', + proargtypes => 'tsvector tsquery', prosrc => 'ts_rank_tt' }, +{ oid => '3707', descr => 'relevance', + proname => 'ts_rank_cd', prorettype => 'float4', + proargtypes => '_float4 tsvector tsquery int4', prosrc => 'ts_rankcd_wttf' }, +{ oid => '3708', descr => 'relevance', + proname => 'ts_rank_cd', prorettype => 'float4', + proargtypes => '_float4 tsvector tsquery', prosrc => 'ts_rankcd_wtt' }, +{ oid => '3709', descr => 'relevance', + proname => 'ts_rank_cd', prorettype => 'float4', + proargtypes => 'tsvector tsquery int4', prosrc => 'ts_rankcd_ttf' }, +{ oid => '3710', descr => 'relevance', + proname => 'ts_rank_cd', prorettype => 'float4', + proargtypes => 'tsvector tsquery', prosrc => 'ts_rankcd_tt' }, + +{ oid => '3713', descr => 'get parser\'s token types', + proname => 'ts_token_type', prorows => '16', proretset => 't', + prorettype => 'record', proargtypes => 'oid', + proallargtypes => '{oid,int4,text,text}', proargmodes => '{i,o,o,o}', + proargnames => '{parser_oid,tokid,alias,description}', + prosrc => 'ts_token_type_byid' }, +{ oid => '3714', descr => 'get parser\'s token types', + proname => 'ts_token_type', prorows => '16', proretset => 't', + provolatile => 's', prorettype => 'record', proargtypes => 'text', + proallargtypes => '{text,int4,text,text}', proargmodes => '{i,o,o,o}', + proargnames => '{parser_name,tokid,alias,description}', + prosrc => 'ts_token_type_byname' }, +{ oid => '3715', descr => 'parse text to tokens', + proname => 'ts_parse', prorows => '1000', proretset => 't', + prorettype => 'record', proargtypes => 'oid text', + proallargtypes => '{oid,text,int4,text}', proargmodes => '{i,i,o,o}', + proargnames => '{parser_oid,txt,tokid,token}', prosrc => 'ts_parse_byid' }, +{ oid => '3716', descr => 'parse text to tokens', + proname => 'ts_parse', prorows => '1000', proretset => 't', + provolatile => 's', prorettype => 'record', proargtypes => 'text text', + proallargtypes => '{text,text,int4,text}', proargmodes => '{i,i,o,o}', + proargnames => '{parser_name,txt,tokid,token}', prosrc => 'ts_parse_byname' }, + +{ oid => '3717', descr => '(internal)', + proname => 'prsd_start', prorettype => 'internal', + proargtypes => 'internal int4', prosrc => 'prsd_start' }, +{ oid => '3718', descr => '(internal)', + proname => 'prsd_nexttoken', prorettype => 'internal', + proargtypes => 'internal internal internal', prosrc => 'prsd_nexttoken' }, +{ oid => '3719', descr => '(internal)', + proname => 'prsd_end', prorettype => 'void', proargtypes => 'internal', + prosrc => 'prsd_end' }, +{ oid => '3720', descr => '(internal)', + proname => 'prsd_headline', prorettype => 'internal', + proargtypes => 'internal internal tsquery', prosrc => 'prsd_headline' }, +{ oid => '3721', descr => '(internal)', + proname => 'prsd_lextype', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'prsd_lextype' }, + +{ oid => '3723', descr => 'normalize one word by dictionary', + proname => 'ts_lexize', prorettype => '_text', + proargtypes => 'regdictionary text', prosrc => 'ts_lexize' }, + +{ oid => '3725', descr => '(internal)', + proname => 'dsimple_init', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'dsimple_init' }, +{ oid => '3726', descr => '(internal)', + proname => 'dsimple_lexize', prorettype => 'internal', + proargtypes => 'internal internal internal internal', + prosrc => 'dsimple_lexize' }, + +{ oid => '3728', descr => '(internal)', + proname => 'dsynonym_init', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'dsynonym_init' }, +{ oid => '3729', descr => '(internal)', + proname => 'dsynonym_lexize', prorettype => 'internal', + proargtypes => 'internal internal internal internal', + prosrc => 'dsynonym_lexize' }, + +{ oid => '3731', descr => '(internal)', + proname => 'dispell_init', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'dispell_init' }, +{ oid => '3732', descr => '(internal)', + proname => 'dispell_lexize', prorettype => 'internal', + proargtypes => 'internal internal internal internal', + prosrc => 'dispell_lexize' }, + +{ oid => '3740', descr => '(internal)', + proname => 'thesaurus_init', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'thesaurus_init' }, +{ oid => '3741', descr => '(internal)', + proname => 'thesaurus_lexize', prorettype => 'internal', + proargtypes => 'internal internal internal internal', + prosrc => 'thesaurus_lexize' }, + +{ oid => '3743', descr => 'generate headline', + proname => 'ts_headline', procost => '100', prorettype => 'text', + proargtypes => 'regconfig text tsquery text', + prosrc => 'ts_headline_byid_opt' }, +{ oid => '3744', descr => 'generate headline', + proname => 'ts_headline', procost => '100', prorettype => 'text', + proargtypes => 'regconfig text tsquery', prosrc => 'ts_headline_byid' }, +{ oid => '3754', descr => 'generate headline', + proname => 'ts_headline', procost => '100', provolatile => 's', + prorettype => 'text', proargtypes => 'text tsquery text', + prosrc => 'ts_headline_opt' }, +{ oid => '3755', descr => 'generate headline', + proname => 'ts_headline', procost => '100', provolatile => 's', + prorettype => 'text', proargtypes => 'text tsquery', + prosrc => 'ts_headline' }, + +{ oid => '4201', descr => 'generate headline from jsonb', + proname => 'ts_headline', procost => '100', prorettype => 'jsonb', + proargtypes => 'regconfig jsonb tsquery text', + prosrc => 'ts_headline_jsonb_byid_opt' }, +{ oid => '4202', descr => 'generate headline from jsonb', + proname => 'ts_headline', procost => '100', prorettype => 'jsonb', + proargtypes => 'regconfig jsonb tsquery', + prosrc => 'ts_headline_jsonb_byid' }, +{ oid => '4203', descr => 'generate headline from jsonb', + proname => 'ts_headline', procost => '100', provolatile => 's', + prorettype => 'jsonb', proargtypes => 'jsonb tsquery text', + prosrc => 'ts_headline_jsonb_opt' }, +{ oid => '4204', descr => 'generate headline from jsonb', + proname => 'ts_headline', procost => '100', provolatile => 's', + prorettype => 'jsonb', proargtypes => 'jsonb tsquery', + prosrc => 'ts_headline_jsonb' }, + +{ oid => '4205', descr => 'generate headline from json', + proname => 'ts_headline', procost => '100', prorettype => 'json', + proargtypes => 'regconfig json tsquery text', + prosrc => 'ts_headline_json_byid_opt' }, +{ oid => '4206', descr => 'generate headline from json', + proname => 'ts_headline', procost => '100', prorettype => 'json', + proargtypes => 'regconfig json tsquery', prosrc => 'ts_headline_json_byid' }, +{ oid => '4207', descr => 'generate headline from json', + proname => 'ts_headline', procost => '100', provolatile => 's', + prorettype => 'json', proargtypes => 'json tsquery text', + prosrc => 'ts_headline_json_opt' }, +{ oid => '4208', descr => 'generate headline from json', + proname => 'ts_headline', procost => '100', provolatile => 's', + prorettype => 'json', proargtypes => 'json tsquery', + prosrc => 'ts_headline_json' }, + +{ oid => '3745', descr => 'transform to tsvector', + proname => 'to_tsvector', procost => '100', prorettype => 'tsvector', + proargtypes => 'regconfig text', prosrc => 'to_tsvector_byid' }, +{ oid => '3746', descr => 'make tsquery', + proname => 'to_tsquery', procost => '100', prorettype => 'tsquery', + proargtypes => 'regconfig text', prosrc => 'to_tsquery_byid' }, +{ oid => '3747', descr => 'transform to tsquery', + proname => 'plainto_tsquery', procost => '100', prorettype => 'tsquery', + proargtypes => 'regconfig text', prosrc => 'plainto_tsquery_byid' }, +{ oid => '5006', descr => 'transform to tsquery', + proname => 'phraseto_tsquery', procost => '100', prorettype => 'tsquery', + proargtypes => 'regconfig text', prosrc => 'phraseto_tsquery_byid' }, +{ oid => '8889', descr => 'transform to tsquery', + proname => 'websearch_to_tsquery', procost => '100', prorettype => 'tsquery', + proargtypes => 'regconfig text', prosrc => 'websearch_to_tsquery_byid' }, +{ oid => '3749', descr => 'transform to tsvector', + proname => 'to_tsvector', procost => '100', provolatile => 's', + prorettype => 'tsvector', proargtypes => 'text', prosrc => 'to_tsvector' }, +{ oid => '3750', descr => 'make tsquery', + proname => 'to_tsquery', procost => '100', provolatile => 's', + prorettype => 'tsquery', proargtypes => 'text', prosrc => 'to_tsquery' }, +{ oid => '3751', descr => 'transform to tsquery', + proname => 'plainto_tsquery', procost => '100', provolatile => 's', + prorettype => 'tsquery', proargtypes => 'text', prosrc => 'plainto_tsquery' }, +{ oid => '5001', descr => 'transform to tsquery', + proname => 'phraseto_tsquery', procost => '100', provolatile => 's', + prorettype => 'tsquery', proargtypes => 'text', + prosrc => 'phraseto_tsquery' }, +{ oid => '8890', descr => 'transform to tsquery', + proname => 'websearch_to_tsquery', procost => '100', provolatile => 's', + prorettype => 'tsquery', proargtypes => 'text', + prosrc => 'websearch_to_tsquery' }, +{ oid => '4209', descr => 'transform string values from jsonb to tsvector', + proname => 'to_tsvector', procost => '100', provolatile => 's', + prorettype => 'tsvector', proargtypes => 'jsonb', + prosrc => 'jsonb_string_to_tsvector' }, +{ oid => '4213', descr => 'transform specified values from jsonb to tsvector', + proname => 'jsonb_to_tsvector', procost => '100', provolatile => 's', + prorettype => 'tsvector', proargtypes => 'jsonb jsonb', + prosrc => 'jsonb_to_tsvector' }, +{ oid => '4210', descr => 'transform string values from json to tsvector', + proname => 'to_tsvector', procost => '100', provolatile => 's', + prorettype => 'tsvector', proargtypes => 'json', + prosrc => 'json_string_to_tsvector' }, +{ oid => '4215', descr => 'transform specified values from json to tsvector', + proname => 'json_to_tsvector', procost => '100', provolatile => 's', + prorettype => 'tsvector', proargtypes => 'json jsonb', + prosrc => 'json_to_tsvector' }, +{ oid => '4211', descr => 'transform string values from jsonb to tsvector', + proname => 'to_tsvector', procost => '100', prorettype => 'tsvector', + proargtypes => 'regconfig jsonb', prosrc => 'jsonb_string_to_tsvector_byid' }, +{ oid => '4214', descr => 'transform specified values from jsonb to tsvector', + proname => 'jsonb_to_tsvector', procost => '100', prorettype => 'tsvector', + proargtypes => 'regconfig jsonb jsonb', prosrc => 'jsonb_to_tsvector_byid' }, +{ oid => '4212', descr => 'transform string values from json to tsvector', + proname => 'to_tsvector', procost => '100', prorettype => 'tsvector', + proargtypes => 'regconfig json', prosrc => 'json_string_to_tsvector_byid' }, +{ oid => '4216', descr => 'transform specified values from json to tsvector', + proname => 'json_to_tsvector', procost => '100', prorettype => 'tsvector', + proargtypes => 'regconfig json jsonb', prosrc => 'json_to_tsvector_byid' }, + +{ oid => '3752', descr => 'trigger for automatic update of tsvector column', + proname => 'tsvector_update_trigger', proisstrict => 'f', provolatile => 'v', + prorettype => 'trigger', proargtypes => '', + prosrc => 'tsvector_update_trigger_byid' }, +{ oid => '3753', descr => 'trigger for automatic update of tsvector column', + proname => 'tsvector_update_trigger_column', proisstrict => 'f', + provolatile => 'v', prorettype => 'trigger', proargtypes => '', + prosrc => 'tsvector_update_trigger_bycolumn' }, + +{ oid => '3759', descr => 'get current tsearch configuration', + proname => 'get_current_ts_config', provolatile => 's', + prorettype => 'regconfig', proargtypes => '', + prosrc => 'get_current_ts_config' }, + +{ oid => '3736', descr => 'I/O', + proname => 'regconfigin', provolatile => 's', prorettype => 'regconfig', + proargtypes => 'cstring', prosrc => 'regconfigin' }, +{ oid => '3737', descr => 'I/O', + proname => 'regconfigout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'regconfig', prosrc => 'regconfigout' }, +{ oid => '3738', descr => 'I/O', + proname => 'regconfigrecv', prorettype => 'regconfig', + proargtypes => 'internal', prosrc => 'regconfigrecv' }, +{ oid => '3739', descr => 'I/O', + proname => 'regconfigsend', prorettype => 'bytea', proargtypes => 'regconfig', + prosrc => 'regconfigsend' }, + +{ oid => '3771', descr => 'I/O', + proname => 'regdictionaryin', provolatile => 's', + prorettype => 'regdictionary', proargtypes => 'cstring', + prosrc => 'regdictionaryin' }, +{ oid => '3772', descr => 'I/O', + proname => 'regdictionaryout', provolatile => 's', prorettype => 'cstring', + proargtypes => 'regdictionary', prosrc => 'regdictionaryout' }, +{ oid => '3773', descr => 'I/O', + proname => 'regdictionaryrecv', prorettype => 'regdictionary', + proargtypes => 'internal', prosrc => 'regdictionaryrecv' }, +{ oid => '3774', descr => 'I/O', + proname => 'regdictionarysend', prorettype => 'bytea', + proargtypes => 'regdictionary', prosrc => 'regdictionarysend' }, + +# jsonb +{ oid => '3806', descr => 'I/O', + proname => 'jsonb_in', prorettype => 'jsonb', proargtypes => 'cstring', + prosrc => 'jsonb_in' }, +{ oid => '3805', descr => 'I/O', + proname => 'jsonb_recv', prorettype => 'jsonb', proargtypes => 'internal', + prosrc => 'jsonb_recv' }, +{ oid => '3804', descr => 'I/O', + proname => 'jsonb_out', prorettype => 'cstring', proargtypes => 'jsonb', + prosrc => 'jsonb_out' }, +{ oid => '3803', descr => 'I/O', + proname => 'jsonb_send', prorettype => 'bytea', proargtypes => 'jsonb', + prosrc => 'jsonb_send' }, + +{ oid => '3263', descr => 'map text array of key value pairs to jsonb object', + proname => 'jsonb_object', prorettype => 'jsonb', proargtypes => '_text', + prosrc => 'jsonb_object' }, +{ oid => '3264', descr => 'map text array of key value pairs to jsonb object', + proname => 'jsonb_object', prorettype => 'jsonb', + proargtypes => '_text _text', prosrc => 'jsonb_object_two_arg' }, +{ oid => '3787', descr => 'map input to jsonb', + proname => 'to_jsonb', provolatile => 's', prorettype => 'jsonb', + proargtypes => 'anyelement', prosrc => 'to_jsonb' }, +{ oid => '3265', descr => 'jsonb aggregate transition function', + proname => 'jsonb_agg_transfn', proisstrict => 'f', provolatile => 's', + prorettype => 'internal', proargtypes => 'internal anyelement', + prosrc => 'jsonb_agg_transfn' }, +{ oid => '3266', descr => 'jsonb aggregate final function', + proname => 'jsonb_agg_finalfn', proisstrict => 'f', provolatile => 's', + prorettype => 'jsonb', proargtypes => 'internal', + prosrc => 'jsonb_agg_finalfn' }, +{ oid => '3267', descr => 'aggregate input into jsonb', + proname => 'jsonb_agg', prokind => 'a', proisstrict => 'f', + provolatile => 's', prorettype => 'jsonb', proargtypes => 'anyelement', + prosrc => 'aggregate_dummy' }, +{ oid => '3268', descr => 'jsonb object aggregate transition function', + proname => 'jsonb_object_agg_transfn', proisstrict => 'f', provolatile => 's', + prorettype => 'internal', proargtypes => 'internal any any', + prosrc => 'jsonb_object_agg_transfn' }, +{ oid => '3269', descr => 'jsonb object aggregate final function', + proname => 'jsonb_object_agg_finalfn', proisstrict => 'f', provolatile => 's', + prorettype => 'jsonb', proargtypes => 'internal', + prosrc => 'jsonb_object_agg_finalfn' }, +{ oid => '3270', descr => 'aggregate inputs into jsonb object', + proname => 'jsonb_object_agg', prokind => 'a', proisstrict => 'f', + prorettype => 'jsonb', proargtypes => 'any any', + prosrc => 'aggregate_dummy' }, +{ oid => '3271', descr => 'build a jsonb array from any inputs', + proname => 'jsonb_build_array', provariadic => 'any', proisstrict => 'f', + provolatile => 's', prorettype => 'jsonb', proargtypes => 'any', + proallargtypes => '{any}', proargmodes => '{v}', + prosrc => 'jsonb_build_array' }, +{ oid => '3272', descr => 'build an empty jsonb array', + proname => 'jsonb_build_array', proisstrict => 'f', provolatile => 's', + prorettype => 'jsonb', proargtypes => '', + prosrc => 'jsonb_build_array_noargs' }, +{ oid => '3273', + descr => 'build a jsonb object from pairwise key/value inputs', + proname => 'jsonb_build_object', provariadic => 'any', proisstrict => 'f', + provolatile => 's', prorettype => 'jsonb', proargtypes => 'any', + proallargtypes => '{any}', proargmodes => '{v}', + prosrc => 'jsonb_build_object' }, +{ oid => '3274', descr => 'build an empty jsonb object', + proname => 'jsonb_build_object', proisstrict => 'f', provolatile => 's', + prorettype => 'jsonb', proargtypes => '', + prosrc => 'jsonb_build_object_noargs' }, +{ oid => '3262', descr => 'remove object fields with null values from jsonb', + proname => 'jsonb_strip_nulls', prorettype => 'jsonb', proargtypes => 'jsonb', + prosrc => 'jsonb_strip_nulls' }, + +{ oid => '3478', + proname => 'jsonb_object_field', prorettype => 'jsonb', + proargtypes => 'jsonb text', proargnames => '{from_json, field_name}', + prosrc => 'jsonb_object_field' }, +{ oid => '3214', + proname => 'jsonb_object_field_text', prorettype => 'text', + proargtypes => 'jsonb text', proargnames => '{from_json, field_name}', + prosrc => 'jsonb_object_field_text' }, +{ oid => '3215', + proname => 'jsonb_array_element', prorettype => 'jsonb', + proargtypes => 'jsonb int4', proargnames => '{from_json, element_index}', + prosrc => 'jsonb_array_element' }, +{ oid => '3216', + proname => 'jsonb_array_element_text', prorettype => 'text', + proargtypes => 'jsonb int4', proargnames => '{from_json, element_index}', + prosrc => 'jsonb_array_element_text' }, +{ oid => '3217', descr => 'get value from jsonb with path elements', + proname => 'jsonb_extract_path', provariadic => 'text', prorettype => 'jsonb', + proargtypes => 'jsonb _text', proallargtypes => '{jsonb,_text}', + proargmodes => '{i,v}', proargnames => '{from_json,path_elems}', + prosrc => 'jsonb_extract_path' }, +{ oid => '3940', descr => 'get value from jsonb as text with path elements', + proname => 'jsonb_extract_path_text', provariadic => 'text', + prorettype => 'text', proargtypes => 'jsonb _text', + proallargtypes => '{jsonb,_text}', proargmodes => '{i,v}', + proargnames => '{from_json,path_elems}', + prosrc => 'jsonb_extract_path_text' }, +{ oid => '3219', descr => 'elements of a jsonb array', + proname => 'jsonb_array_elements', prorows => '100', proretset => 't', + prorettype => 'jsonb', proargtypes => 'jsonb', + proallargtypes => '{jsonb,jsonb}', proargmodes => '{i,o}', + proargnames => '{from_json,value}', prosrc => 'jsonb_array_elements' }, +{ oid => '3465', descr => 'elements of jsonb array', + proname => 'jsonb_array_elements_text', prorows => '100', proretset => 't', + prorettype => 'text', proargtypes => 'jsonb', + proallargtypes => '{jsonb,text}', proargmodes => '{i,o}', + proargnames => '{from_json,value}', prosrc => 'jsonb_array_elements_text' }, +{ oid => '3207', descr => 'length of jsonb array', + proname => 'jsonb_array_length', prorettype => 'int4', proargtypes => 'jsonb', + prosrc => 'jsonb_array_length' }, +{ oid => '3931', descr => 'get jsonb object keys', + proname => 'jsonb_object_keys', prorows => '100', proretset => 't', + prorettype => 'text', proargtypes => 'jsonb', prosrc => 'jsonb_object_keys' }, +{ oid => '3208', descr => 'key value pairs of a jsonb object', + proname => 'jsonb_each', prorows => '100', proretset => 't', + prorettype => 'record', proargtypes => 'jsonb', + proallargtypes => '{jsonb,text,jsonb}', proargmodes => '{i,o,o}', + proargnames => '{from_json,key,value}', prosrc => 'jsonb_each' }, +{ oid => '3932', descr => 'key value pairs of a jsonb object', + proname => 'jsonb_each_text', prorows => '100', proretset => 't', + prorettype => 'record', proargtypes => 'jsonb', + proallargtypes => '{jsonb,text,text}', proargmodes => '{i,o,o}', + proargnames => '{from_json,key,value}', prosrc => 'jsonb_each_text' }, +{ oid => '3209', descr => 'get record fields from a jsonb object', + proname => 'jsonb_populate_record', proisstrict => 'f', provolatile => 's', + prorettype => 'anyelement', proargtypes => 'anyelement jsonb', + prosrc => 'jsonb_populate_record' }, +{ oid => '3475', + descr => 'get set of records with fields from a jsonb array of objects', + proname => 'jsonb_populate_recordset', prorows => '100', proisstrict => 'f', + proretset => 't', provolatile => 's', prorettype => 'anyelement', + proargtypes => 'anyelement jsonb', prosrc => 'jsonb_populate_recordset' }, +{ oid => '3490', descr => 'get record fields from a jsonb object', + proname => 'jsonb_to_record', provolatile => 's', prorettype => 'record', + proargtypes => 'jsonb', prosrc => 'jsonb_to_record' }, +{ oid => '3491', + descr => 'get set of records with fields from a jsonb array of objects', + proname => 'jsonb_to_recordset', prorows => '100', proisstrict => 'f', + proretset => 't', provolatile => 's', prorettype => 'record', + proargtypes => 'jsonb', prosrc => 'jsonb_to_recordset' }, +{ oid => '3210', descr => 'get the type of a jsonb value', + proname => 'jsonb_typeof', prorettype => 'text', proargtypes => 'jsonb', + prosrc => 'jsonb_typeof' }, +{ oid => '4038', + proname => 'jsonb_ne', prorettype => 'bool', proargtypes => 'jsonb jsonb', + prosrc => 'jsonb_ne' }, +{ oid => '4039', + proname => 'jsonb_lt', prorettype => 'bool', proargtypes => 'jsonb jsonb', + prosrc => 'jsonb_lt' }, +{ oid => '4040', + proname => 'jsonb_gt', prorettype => 'bool', proargtypes => 'jsonb jsonb', + prosrc => 'jsonb_gt' }, +{ oid => '4041', + proname => 'jsonb_le', prorettype => 'bool', proargtypes => 'jsonb jsonb', + prosrc => 'jsonb_le' }, +{ oid => '4042', + proname => 'jsonb_ge', prorettype => 'bool', proargtypes => 'jsonb jsonb', + prosrc => 'jsonb_ge' }, +{ oid => '4043', + proname => 'jsonb_eq', prorettype => 'bool', proargtypes => 'jsonb jsonb', + prosrc => 'jsonb_eq' }, +{ oid => '4044', descr => 'less-equal-greater', + proname => 'jsonb_cmp', prorettype => 'int4', proargtypes => 'jsonb jsonb', + prosrc => 'jsonb_cmp' }, +{ oid => '4045', descr => 'hash', + proname => 'jsonb_hash', prorettype => 'int4', proargtypes => 'jsonb', + prosrc => 'jsonb_hash' }, +{ oid => '3416', descr => 'hash', + proname => 'jsonb_hash_extended', prorettype => 'int8', + proargtypes => 'jsonb int8', prosrc => 'jsonb_hash_extended' }, +{ oid => '4046', + proname => 'jsonb_contains', prorettype => 'bool', + proargtypes => 'jsonb jsonb', prosrc => 'jsonb_contains' }, +{ oid => '4047', + proname => 'jsonb_exists', prorettype => 'bool', proargtypes => 'jsonb text', + prosrc => 'jsonb_exists' }, +{ oid => '4048', + proname => 'jsonb_exists_any', prorettype => 'bool', + proargtypes => 'jsonb _text', prosrc => 'jsonb_exists_any' }, +{ oid => '4049', + proname => 'jsonb_exists_all', prorettype => 'bool', + proargtypes => 'jsonb _text', prosrc => 'jsonb_exists_all' }, +{ oid => '4050', + proname => 'jsonb_contained', prorettype => 'bool', + proargtypes => 'jsonb jsonb', prosrc => 'jsonb_contained' }, +{ oid => '3480', descr => 'GIN support', + proname => 'gin_compare_jsonb', prorettype => 'int4', + proargtypes => 'text text', prosrc => 'gin_compare_jsonb' }, +{ oid => '3482', descr => 'GIN support', + proname => 'gin_extract_jsonb', prorettype => 'internal', + proargtypes => 'jsonb internal internal', prosrc => 'gin_extract_jsonb' }, +{ oid => '3483', descr => 'GIN support', + proname => 'gin_extract_jsonb_query', prorettype => 'internal', + proargtypes => 'jsonb internal int2 internal internal internal internal', + prosrc => 'gin_extract_jsonb_query' }, +{ oid => '3484', descr => 'GIN support', + proname => 'gin_consistent_jsonb', prorettype => 'bool', + proargtypes => 'internal int2 jsonb int4 internal internal internal internal', + prosrc => 'gin_consistent_jsonb' }, +{ oid => '3488', descr => 'GIN support', + proname => 'gin_triconsistent_jsonb', prorettype => 'char', + proargtypes => 'internal int2 jsonb int4 internal internal internal', + prosrc => 'gin_triconsistent_jsonb' }, +{ oid => '3485', descr => 'GIN support', + proname => 'gin_extract_jsonb_path', prorettype => 'internal', + proargtypes => 'jsonb internal internal', + prosrc => 'gin_extract_jsonb_path' }, +{ oid => '3486', descr => 'GIN support', + proname => 'gin_extract_jsonb_query_path', prorettype => 'internal', + proargtypes => 'jsonb internal int2 internal internal internal internal', + prosrc => 'gin_extract_jsonb_query_path' }, +{ oid => '3487', descr => 'GIN support', + proname => 'gin_consistent_jsonb_path', prorettype => 'bool', + proargtypes => 'internal int2 jsonb int4 internal internal internal internal', + prosrc => 'gin_consistent_jsonb_path' }, +{ oid => '3489', descr => 'GIN support', + proname => 'gin_triconsistent_jsonb_path', prorettype => 'char', + proargtypes => 'internal int2 jsonb int4 internal internal internal', + prosrc => 'gin_triconsistent_jsonb_path' }, +{ oid => '3301', + proname => 'jsonb_concat', prorettype => 'jsonb', + proargtypes => 'jsonb jsonb', prosrc => 'jsonb_concat' }, +{ oid => '3302', + proname => 'jsonb_delete', prorettype => 'jsonb', proargtypes => 'jsonb text', + prosrc => 'jsonb_delete' }, +{ oid => '3303', + proname => 'jsonb_delete', prorettype => 'jsonb', proargtypes => 'jsonb int4', + prosrc => 'jsonb_delete_idx' }, +{ oid => '3343', + proname => 'jsonb_delete', provariadic => 'text', prorettype => 'jsonb', + proargtypes => 'jsonb _text', proallargtypes => '{jsonb,_text}', + proargmodes => '{i,v}', proargnames => '{from_json,path_elems}', + prosrc => 'jsonb_delete_array' }, +{ oid => '3304', + proname => 'jsonb_delete_path', prorettype => 'jsonb', + proargtypes => 'jsonb _text', prosrc => 'jsonb_delete_path' }, +{ oid => '3305', descr => 'Set part of a jsonb', + proname => 'jsonb_set', prorettype => 'jsonb', + proargtypes => 'jsonb _text jsonb bool', prosrc => 'jsonb_set' }, +{ oid => '3306', descr => 'Indented text from jsonb', + proname => 'jsonb_pretty', prorettype => 'text', proargtypes => 'jsonb', + prosrc => 'jsonb_pretty' }, +{ oid => '3579', descr => 'Insert value into a jsonb', + proname => 'jsonb_insert', prorettype => 'jsonb', + proargtypes => 'jsonb _text jsonb bool', prosrc => 'jsonb_insert' }, + +# txid +{ oid => '2939', descr => 'I/O', + proname => 'txid_snapshot_in', prorettype => 'txid_snapshot', + proargtypes => 'cstring', prosrc => 'txid_snapshot_in' }, +{ oid => '2940', descr => 'I/O', + proname => 'txid_snapshot_out', prorettype => 'cstring', + proargtypes => 'txid_snapshot', prosrc => 'txid_snapshot_out' }, +{ oid => '2941', descr => 'I/O', + proname => 'txid_snapshot_recv', prorettype => 'txid_snapshot', + proargtypes => 'internal', prosrc => 'txid_snapshot_recv' }, +{ oid => '2942', descr => 'I/O', + proname => 'txid_snapshot_send', prorettype => 'bytea', + proargtypes => 'txid_snapshot', prosrc => 'txid_snapshot_send' }, +{ oid => '2943', descr => 'get current transaction ID', + proname => 'txid_current', provolatile => 's', proparallel => 'u', + prorettype => 'int8', proargtypes => '', prosrc => 'txid_current' }, +{ oid => '3348', descr => 'get current transaction ID', + proname => 'txid_current_if_assigned', provolatile => 's', proparallel => 'u', + prorettype => 'int8', proargtypes => '', + prosrc => 'txid_current_if_assigned' }, +{ oid => '2944', descr => 'get current snapshot', + proname => 'txid_current_snapshot', provolatile => 's', + prorettype => 'txid_snapshot', proargtypes => '', + prosrc => 'txid_current_snapshot' }, +{ oid => '2945', descr => 'get xmin of snapshot', + proname => 'txid_snapshot_xmin', prorettype => 'int8', + proargtypes => 'txid_snapshot', prosrc => 'txid_snapshot_xmin' }, +{ oid => '2946', descr => 'get xmax of snapshot', + proname => 'txid_snapshot_xmax', prorettype => 'int8', + proargtypes => 'txid_snapshot', prosrc => 'txid_snapshot_xmax' }, +{ oid => '2947', descr => 'get set of in-progress txids in snapshot', + proname => 'txid_snapshot_xip', prorows => '50', proretset => 't', + prorettype => 'int8', proargtypes => 'txid_snapshot', + prosrc => 'txid_snapshot_xip' }, +{ oid => '2948', descr => 'is txid visible in snapshot?', + proname => 'txid_visible_in_snapshot', prorettype => 'bool', + proargtypes => 'int8 txid_snapshot', prosrc => 'txid_visible_in_snapshot' }, +{ oid => '3360', descr => 'commit status of transaction', + proname => 'txid_status', provolatile => 'v', prorettype => 'text', + proargtypes => 'int8', prosrc => 'txid_status' }, + +# record comparison using normal comparison rules +{ oid => '2981', + proname => 'record_eq', prorettype => 'bool', proargtypes => 'record record', + prosrc => 'record_eq' }, +{ oid => '2982', + proname => 'record_ne', prorettype => 'bool', proargtypes => 'record record', + prosrc => 'record_ne' }, +{ oid => '2983', + proname => 'record_lt', prorettype => 'bool', proargtypes => 'record record', + prosrc => 'record_lt' }, +{ oid => '2984', + proname => 'record_gt', prorettype => 'bool', proargtypes => 'record record', + prosrc => 'record_gt' }, +{ oid => '2985', + proname => 'record_le', prorettype => 'bool', proargtypes => 'record record', + prosrc => 'record_le' }, +{ oid => '2986', + proname => 'record_ge', prorettype => 'bool', proargtypes => 'record record', + prosrc => 'record_ge' }, +{ oid => '2987', descr => 'less-equal-greater', + proname => 'btrecordcmp', prorettype => 'int4', + proargtypes => 'record record', prosrc => 'btrecordcmp' }, + +# record comparison using raw byte images +{ oid => '3181', + proname => 'record_image_eq', prorettype => 'bool', + proargtypes => 'record record', prosrc => 'record_image_eq' }, +{ oid => '3182', + proname => 'record_image_ne', prorettype => 'bool', + proargtypes => 'record record', prosrc => 'record_image_ne' }, +{ oid => '3183', + proname => 'record_image_lt', prorettype => 'bool', + proargtypes => 'record record', prosrc => 'record_image_lt' }, +{ oid => '3184', + proname => 'record_image_gt', prorettype => 'bool', + proargtypes => 'record record', prosrc => 'record_image_gt' }, +{ oid => '3185', + proname => 'record_image_le', prorettype => 'bool', + proargtypes => 'record record', prosrc => 'record_image_le' }, +{ oid => '3186', + proname => 'record_image_ge', prorettype => 'bool', + proargtypes => 'record record', prosrc => 'record_image_ge' }, +{ oid => '3187', descr => 'less-equal-greater based on byte images', + proname => 'btrecordimagecmp', prorettype => 'int4', + proargtypes => 'record record', prosrc => 'btrecordimagecmp' }, + +# Extensions +{ oid => '3082', descr => 'list available extensions', + proname => 'pg_available_extensions', procost => '10', prorows => '100', + proretset => 't', provolatile => 's', prorettype => 'record', + proargtypes => '', proallargtypes => '{name,text,text}', + proargmodes => '{o,o,o}', proargnames => '{name,default_version,comment}', + prosrc => 'pg_available_extensions' }, +{ oid => '3083', descr => 'list available extension versions', + proname => 'pg_available_extension_versions', procost => '10', + prorows => '100', proretset => 't', provolatile => 's', + prorettype => 'record', proargtypes => '', + proallargtypes => '{name,text,bool,bool,name,_name,text}', + proargmodes => '{o,o,o,o,o,o,o}', + proargnames => '{name,version,superuser,relocatable,schema,requires,comment}', + prosrc => 'pg_available_extension_versions' }, +{ oid => '3084', descr => 'list an extension\'s version update paths', + proname => 'pg_extension_update_paths', procost => '10', prorows => '100', + proretset => 't', provolatile => 's', prorettype => 'record', + proargtypes => 'name', proallargtypes => '{name,text,text,text}', + proargmodes => '{i,o,o,o}', proargnames => '{name,source,target,path}', + prosrc => 'pg_extension_update_paths' }, +{ oid => '3086', + descr => 'flag an extension\'s table contents to be emitted by pg_dump', + proname => 'pg_extension_config_dump', provolatile => 'v', proparallel => 'u', + prorettype => 'void', proargtypes => 'regclass text', + prosrc => 'pg_extension_config_dump' }, + +# SQL-spec window functions +{ oid => '3100', descr => 'row number within partition', + proname => 'row_number', prokind => 'w', proisstrict => 'f', + prorettype => 'int8', proargtypes => '', prosrc => 'window_row_number' }, +{ oid => '3101', descr => 'integer rank with gaps', + proname => 'rank', prokind => 'w', proisstrict => 'f', prorettype => 'int8', + proargtypes => '', prosrc => 'window_rank' }, +{ oid => '3102', descr => 'integer rank without gaps', + proname => 'dense_rank', prokind => 'w', proisstrict => 'f', + prorettype => 'int8', proargtypes => '', prosrc => 'window_dense_rank' }, +{ oid => '3103', descr => 'fractional rank within partition', + proname => 'percent_rank', prokind => 'w', proisstrict => 'f', + prorettype => 'float8', proargtypes => '', prosrc => 'window_percent_rank' }, +{ oid => '3104', descr => 'fractional row number within partition', + proname => 'cume_dist', prokind => 'w', proisstrict => 'f', + prorettype => 'float8', proargtypes => '', prosrc => 'window_cume_dist' }, +{ oid => '3105', descr => 'split rows into N groups', + proname => 'ntile', prokind => 'w', prorettype => 'int4', + proargtypes => 'int4', prosrc => 'window_ntile' }, +{ oid => '3106', descr => 'fetch the preceding row value', + proname => 'lag', prokind => 'w', prorettype => 'anyelement', + proargtypes => 'anyelement', prosrc => 'window_lag' }, +{ oid => '3107', descr => 'fetch the Nth preceding row value', + proname => 'lag', prokind => 'w', prorettype => 'anyelement', + proargtypes => 'anyelement int4', prosrc => 'window_lag_with_offset' }, +{ oid => '3108', descr => 'fetch the Nth preceding row value with default', + proname => 'lag', prokind => 'w', prorettype => 'anyelement', + proargtypes => 'anyelement int4 anyelement', + prosrc => 'window_lag_with_offset_and_default' }, +{ oid => '3109', descr => 'fetch the following row value', + proname => 'lead', prokind => 'w', prorettype => 'anyelement', + proargtypes => 'anyelement', prosrc => 'window_lead' }, +{ oid => '3110', descr => 'fetch the Nth following row value', + proname => 'lead', prokind => 'w', prorettype => 'anyelement', + proargtypes => 'anyelement int4', prosrc => 'window_lead_with_offset' }, +{ oid => '3111', descr => 'fetch the Nth following row value with default', + proname => 'lead', prokind => 'w', prorettype => 'anyelement', + proargtypes => 'anyelement int4 anyelement', + prosrc => 'window_lead_with_offset_and_default' }, +{ oid => '3112', descr => 'fetch the first row value', + proname => 'first_value', prokind => 'w', prorettype => 'anyelement', + proargtypes => 'anyelement', prosrc => 'window_first_value' }, +{ oid => '3113', descr => 'fetch the last row value', + proname => 'last_value', prokind => 'w', prorettype => 'anyelement', + proargtypes => 'anyelement', prosrc => 'window_last_value' }, +{ oid => '3114', descr => 'fetch the Nth row value', + proname => 'nth_value', prokind => 'w', prorettype => 'anyelement', + proargtypes => 'anyelement int4', prosrc => 'window_nth_value' }, + +# functions for range types +{ oid => '3832', descr => 'I/O', + proname => 'anyrange_in', provolatile => 's', prorettype => 'anyrange', + proargtypes => 'cstring oid int4', prosrc => 'anyrange_in' }, +{ oid => '3833', descr => 'I/O', + proname => 'anyrange_out', provolatile => 's', prorettype => 'cstring', + proargtypes => 'anyrange', prosrc => 'anyrange_out' }, +{ oid => '3834', descr => 'I/O', + proname => 'range_in', provolatile => 's', prorettype => 'anyrange', + proargtypes => 'cstring oid int4', prosrc => 'range_in' }, +{ oid => '3835', descr => 'I/O', + proname => 'range_out', provolatile => 's', prorettype => 'cstring', + proargtypes => 'anyrange', prosrc => 'range_out' }, +{ oid => '3836', descr => 'I/O', + proname => 'range_recv', provolatile => 's', prorettype => 'anyrange', + proargtypes => 'internal oid int4', prosrc => 'range_recv' }, +{ oid => '3837', descr => 'I/O', + proname => 'range_send', provolatile => 's', prorettype => 'bytea', + proargtypes => 'anyrange', prosrc => 'range_send' }, +{ oid => '3848', descr => 'lower bound of range', + proname => 'lower', prorettype => 'anyelement', proargtypes => 'anyrange', + prosrc => 'range_lower' }, +{ oid => '3849', descr => 'upper bound of range', + proname => 'upper', prorettype => 'anyelement', proargtypes => 'anyrange', + prosrc => 'range_upper' }, +{ oid => '3850', descr => 'is the range empty?', + proname => 'isempty', prorettype => 'bool', proargtypes => 'anyrange', + prosrc => 'range_empty' }, +{ oid => '3851', descr => 'is the range\'s lower bound inclusive?', + proname => 'lower_inc', prorettype => 'bool', proargtypes => 'anyrange', + prosrc => 'range_lower_inc' }, +{ oid => '3852', descr => 'is the range\'s upper bound inclusive?', + proname => 'upper_inc', prorettype => 'bool', proargtypes => 'anyrange', + prosrc => 'range_upper_inc' }, +{ oid => '3853', descr => 'is the range\'s lower bound infinite?', + proname => 'lower_inf', prorettype => 'bool', proargtypes => 'anyrange', + prosrc => 'range_lower_inf' }, +{ oid => '3854', descr => 'is the range\'s upper bound infinite?', + proname => 'upper_inf', prorettype => 'bool', proargtypes => 'anyrange', + prosrc => 'range_upper_inf' }, +{ oid => '3855', + proname => 'range_eq', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_eq' }, +{ oid => '3856', + proname => 'range_ne', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_ne' }, +{ oid => '3857', + proname => 'range_overlaps', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_overlaps' }, +{ oid => '3858', + proname => 'range_contains_elem', prorettype => 'bool', + proargtypes => 'anyrange anyelement', prosrc => 'range_contains_elem' }, +{ oid => '3859', + proname => 'range_contains', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_contains' }, +{ oid => '3860', + proname => 'elem_contained_by_range', prorettype => 'bool', + proargtypes => 'anyelement anyrange', prosrc => 'elem_contained_by_range' }, +{ oid => '3861', + proname => 'range_contained_by', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_contained_by' }, +{ oid => '3862', + proname => 'range_adjacent', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_adjacent' }, +{ oid => '3863', + proname => 'range_before', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_before' }, +{ oid => '3864', + proname => 'range_after', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_after' }, +{ oid => '3865', + proname => 'range_overleft', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_overleft' }, +{ oid => '3866', + proname => 'range_overright', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_overright' }, +{ oid => '3867', + proname => 'range_union', prorettype => 'anyrange', + proargtypes => 'anyrange anyrange', prosrc => 'range_union' }, +{ oid => '4057', + descr => 'the smallest range which includes both of the given ranges', + proname => 'range_merge', prorettype => 'anyrange', + proargtypes => 'anyrange anyrange', prosrc => 'range_merge' }, +{ oid => '3868', + proname => 'range_intersect', prorettype => 'anyrange', + proargtypes => 'anyrange anyrange', prosrc => 'range_intersect' }, +{ oid => '3869', + proname => 'range_minus', prorettype => 'anyrange', + proargtypes => 'anyrange anyrange', prosrc => 'range_minus' }, +{ oid => '3870', descr => 'less-equal-greater', + proname => 'range_cmp', prorettype => 'int4', + proargtypes => 'anyrange anyrange', prosrc => 'range_cmp' }, +{ oid => '3871', + proname => 'range_lt', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_lt' }, +{ oid => '3872', + proname => 'range_le', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_le' }, +{ oid => '3873', + proname => 'range_ge', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_ge' }, +{ oid => '3874', + proname => 'range_gt', prorettype => 'bool', + proargtypes => 'anyrange anyrange', prosrc => 'range_gt' }, +{ oid => '3875', descr => 'GiST support', + proname => 'range_gist_consistent', prorettype => 'bool', + proargtypes => 'internal anyrange int2 oid internal', + prosrc => 'range_gist_consistent' }, +{ oid => '3876', descr => 'GiST support', + proname => 'range_gist_union', prorettype => 'anyrange', + proargtypes => 'internal internal', prosrc => 'range_gist_union' }, +{ oid => '3879', descr => 'GiST support', + proname => 'range_gist_penalty', prorettype => 'internal', + proargtypes => 'internal internal internal', prosrc => 'range_gist_penalty' }, +{ oid => '3880', descr => 'GiST support', + proname => 'range_gist_picksplit', prorettype => 'internal', + proargtypes => 'internal internal', prosrc => 'range_gist_picksplit' }, +{ oid => '3881', descr => 'GiST support', + proname => 'range_gist_same', prorettype => 'internal', + proargtypes => 'anyrange anyrange internal', prosrc => 'range_gist_same' }, +{ oid => '3902', descr => 'hash a range', + proname => 'hash_range', prorettype => 'int4', proargtypes => 'anyrange', + prosrc => 'hash_range' }, +{ oid => '3417', descr => 'hash a range', + proname => 'hash_range_extended', prorettype => 'int8', + proargtypes => 'anyrange int8', prosrc => 'hash_range_extended' }, +{ oid => '3916', descr => 'range typanalyze', + proname => 'range_typanalyze', provolatile => 's', prorettype => 'bool', + proargtypes => 'internal', prosrc => 'range_typanalyze' }, +{ oid => '3169', descr => 'restriction selectivity for range operators', + proname => 'rangesel', provolatile => 's', prorettype => 'float8', + proargtypes => 'internal oid internal int4', prosrc => 'rangesel' }, + +{ oid => '3914', descr => 'convert an int4 range to canonical form', + proname => 'int4range_canonical', prorettype => 'int4range', + proargtypes => 'int4range', prosrc => 'int4range_canonical' }, +{ oid => '3928', descr => 'convert an int8 range to canonical form', + proname => 'int8range_canonical', prorettype => 'int8range', + proargtypes => 'int8range', prosrc => 'int8range_canonical' }, +{ oid => '3915', descr => 'convert a date range to canonical form', + proname => 'daterange_canonical', prorettype => 'daterange', + proargtypes => 'daterange', prosrc => 'daterange_canonical' }, +{ oid => '3922', descr => 'float8 difference of two int4 values', + proname => 'int4range_subdiff', prorettype => 'float8', + proargtypes => 'int4 int4', prosrc => 'int4range_subdiff' }, +{ oid => '3923', descr => 'float8 difference of two int8 values', + proname => 'int8range_subdiff', prorettype => 'float8', + proargtypes => 'int8 int8', prosrc => 'int8range_subdiff' }, +{ oid => '3924', descr => 'float8 difference of two numeric values', + proname => 'numrange_subdiff', prorettype => 'float8', + proargtypes => 'numeric numeric', prosrc => 'numrange_subdiff' }, +{ oid => '3925', descr => 'float8 difference of two date values', + proname => 'daterange_subdiff', prorettype => 'float8', + proargtypes => 'date date', prosrc => 'daterange_subdiff' }, +{ oid => '3929', descr => 'float8 difference of two timestamp values', + proname => 'tsrange_subdiff', prorettype => 'float8', + proargtypes => 'timestamp timestamp', prosrc => 'tsrange_subdiff' }, +{ oid => '3930', + descr => 'float8 difference of two timestamp with time zone values', + proname => 'tstzrange_subdiff', prorettype => 'float8', + proargtypes => 'timestamptz timestamptz', prosrc => 'tstzrange_subdiff' }, + +{ oid => '3840', descr => 'int4range constructor', + proname => 'int4range', proisstrict => 'f', prorettype => 'int4range', + proargtypes => 'int4 int4', prosrc => 'range_constructor2' }, +{ oid => '3841', descr => 'int4range constructor', + proname => 'int4range', proisstrict => 'f', prorettype => 'int4range', + proargtypes => 'int4 int4 text', prosrc => 'range_constructor3' }, +{ oid => '3844', descr => 'numrange constructor', + proname => 'numrange', proisstrict => 'f', prorettype => 'numrange', + proargtypes => 'numeric numeric', prosrc => 'range_constructor2' }, +{ oid => '3845', descr => 'numrange constructor', + proname => 'numrange', proisstrict => 'f', prorettype => 'numrange', + proargtypes => 'numeric numeric text', prosrc => 'range_constructor3' }, +{ oid => '3933', descr => 'tsrange constructor', + proname => 'tsrange', proisstrict => 'f', prorettype => 'tsrange', + proargtypes => 'timestamp timestamp', prosrc => 'range_constructor2' }, +{ oid => '3934', descr => 'tsrange constructor', + proname => 'tsrange', proisstrict => 'f', prorettype => 'tsrange', + proargtypes => 'timestamp timestamp text', prosrc => 'range_constructor3' }, +{ oid => '3937', descr => 'tstzrange constructor', + proname => 'tstzrange', proisstrict => 'f', prorettype => 'tstzrange', + proargtypes => 'timestamptz timestamptz', prosrc => 'range_constructor2' }, +{ oid => '3938', descr => 'tstzrange constructor', + proname => 'tstzrange', proisstrict => 'f', prorettype => 'tstzrange', + proargtypes => 'timestamptz timestamptz text', + prosrc => 'range_constructor3' }, +{ oid => '3941', descr => 'daterange constructor', + proname => 'daterange', proisstrict => 'f', prorettype => 'daterange', + proargtypes => 'date date', prosrc => 'range_constructor2' }, +{ oid => '3942', descr => 'daterange constructor', + proname => 'daterange', proisstrict => 'f', prorettype => 'daterange', + proargtypes => 'date date text', prosrc => 'range_constructor3' }, +{ oid => '3945', descr => 'int8range constructor', + proname => 'int8range', proisstrict => 'f', prorettype => 'int8range', + proargtypes => 'int8 int8', prosrc => 'range_constructor2' }, +{ oid => '3946', descr => 'int8range constructor', + proname => 'int8range', proisstrict => 'f', prorettype => 'int8range', + proargtypes => 'int8 int8 text', prosrc => 'range_constructor3' }, + +# date, time, timestamp constructors +{ oid => '3846', descr => 'construct date', + proname => 'make_date', prorettype => 'date', proargtypes => 'int4 int4 int4', + proargnames => '{year,month,day}', prosrc => 'make_date' }, +{ oid => '3847', descr => 'construct time', + proname => 'make_time', prorettype => 'time', + proargtypes => 'int4 int4 float8', proargnames => '{hour,min,sec}', + prosrc => 'make_time' }, +{ oid => '3461', descr => 'construct timestamp', + proname => 'make_timestamp', prorettype => 'timestamp', + proargtypes => 'int4 int4 int4 int4 int4 float8', + proargnames => '{year,month,mday,hour,min,sec}', prosrc => 'make_timestamp' }, +{ oid => '3462', descr => 'construct timestamp with time zone', + proname => 'make_timestamptz', provolatile => 's', + prorettype => 'timestamptz', proargtypes => 'int4 int4 int4 int4 int4 float8', + proargnames => '{year,month,mday,hour,min,sec}', + prosrc => 'make_timestamptz' }, +{ oid => '3463', descr => 'construct timestamp with time zone', + proname => 'make_timestamptz', provolatile => 's', + prorettype => 'timestamptz', + proargtypes => 'int4 int4 int4 int4 int4 float8 text', + proargnames => '{year,month,mday,hour,min,sec,timezone}', + prosrc => 'make_timestamptz_at_timezone' }, +{ oid => '3464', descr => 'construct interval', + proname => 'make_interval', prorettype => 'interval', + proargtypes => 'int4 int4 int4 int4 int4 int4 float8', + proargnames => '{years,months,weeks,days,hours,mins,secs}', + prosrc => 'make_interval' }, + +# spgist opclasses +{ oid => '4018', descr => 'SP-GiST support for quad tree over point', + proname => 'spg_quad_config', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_quad_config' }, +{ oid => '4019', descr => 'SP-GiST support for quad tree over point', + proname => 'spg_quad_choose', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_quad_choose' }, +{ oid => '4020', descr => 'SP-GiST support for quad tree over point', + proname => 'spg_quad_picksplit', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_quad_picksplit' }, +{ oid => '4021', descr => 'SP-GiST support for quad tree over point', + proname => 'spg_quad_inner_consistent', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_quad_inner_consistent' }, +{ oid => '4022', + descr => 'SP-GiST support for quad tree and k-d tree over point', + proname => 'spg_quad_leaf_consistent', prorettype => 'bool', + proargtypes => 'internal internal', prosrc => 'spg_quad_leaf_consistent' }, + +{ oid => '4023', descr => 'SP-GiST support for k-d tree over point', + proname => 'spg_kd_config', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_kd_config' }, +{ oid => '4024', descr => 'SP-GiST support for k-d tree over point', + proname => 'spg_kd_choose', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_kd_choose' }, +{ oid => '4025', descr => 'SP-GiST support for k-d tree over point', + proname => 'spg_kd_picksplit', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_kd_picksplit' }, +{ oid => '4026', descr => 'SP-GiST support for k-d tree over point', + proname => 'spg_kd_inner_consistent', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_kd_inner_consistent' }, + +{ oid => '4027', descr => 'SP-GiST support for radix tree over text', + proname => 'spg_text_config', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_text_config' }, +{ oid => '4028', descr => 'SP-GiST support for radix tree over text', + proname => 'spg_text_choose', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_text_choose' }, +{ oid => '4029', descr => 'SP-GiST support for radix tree over text', + proname => 'spg_text_picksplit', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_text_picksplit' }, +{ oid => '4030', descr => 'SP-GiST support for radix tree over text', + proname => 'spg_text_inner_consistent', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_text_inner_consistent' }, +{ oid => '4031', descr => 'SP-GiST support for radix tree over text', + proname => 'spg_text_leaf_consistent', prorettype => 'bool', + proargtypes => 'internal internal', prosrc => 'spg_text_leaf_consistent' }, + +{ oid => '3469', descr => 'SP-GiST support for quad tree over range', + proname => 'spg_range_quad_config', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_range_quad_config' }, +{ oid => '3470', descr => 'SP-GiST support for quad tree over range', + proname => 'spg_range_quad_choose', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_range_quad_choose' }, +{ oid => '3471', descr => 'SP-GiST support for quad tree over range', + proname => 'spg_range_quad_picksplit', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_range_quad_picksplit' }, +{ oid => '3472', descr => 'SP-GiST support for quad tree over range', + proname => 'spg_range_quad_inner_consistent', prorettype => 'void', + proargtypes => 'internal internal', + prosrc => 'spg_range_quad_inner_consistent' }, +{ oid => '3473', descr => 'SP-GiST support for quad tree over range', + proname => 'spg_range_quad_leaf_consistent', prorettype => 'bool', + proargtypes => 'internal internal', + prosrc => 'spg_range_quad_leaf_consistent' }, + +{ oid => '5012', descr => 'SP-GiST support for quad tree over box', + proname => 'spg_box_quad_config', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_box_quad_config' }, +{ oid => '5013', descr => 'SP-GiST support for quad tree over box', + proname => 'spg_box_quad_choose', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_box_quad_choose' }, +{ oid => '5014', descr => 'SP-GiST support for quad tree over box', + proname => 'spg_box_quad_picksplit', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_box_quad_picksplit' }, +{ oid => '5015', descr => 'SP-GiST support for quad tree over box', + proname => 'spg_box_quad_inner_consistent', prorettype => 'void', + proargtypes => 'internal internal', + prosrc => 'spg_box_quad_inner_consistent' }, +{ oid => '5016', descr => 'SP-GiST support for quad tree over box', + proname => 'spg_box_quad_leaf_consistent', prorettype => 'bool', + proargtypes => 'internal internal', + prosrc => 'spg_box_quad_leaf_consistent' }, + +{ oid => '5010', + descr => 'SP-GiST support for quad tree over 2-D types represented by their bounding boxes', + proname => 'spg_bbox_quad_config', prorettype => 'void', + proargtypes => 'internal internal', prosrc => 'spg_bbox_quad_config' }, +{ oid => '5011', descr => 'SP-GiST support for quad tree over polygons', + proname => 'spg_poly_quad_compress', prorettype => 'box', + proargtypes => 'polygon', prosrc => 'spg_poly_quad_compress' }, + +# replication slots +{ oid => '3779', descr => 'create a physical replication slot', + proname => 'pg_create_physical_replication_slot', provolatile => 'v', + proparallel => 'u', prorettype => 'record', proargtypes => 'name bool bool', + proallargtypes => '{name,bool,bool,name,pg_lsn}', + proargmodes => '{i,i,i,o,o}', + proargnames => '{slot_name,immediately_reserve,temporary,slot_name,lsn}', + prosrc => 'pg_create_physical_replication_slot' }, +{ oid => '3780', descr => 'drop a replication slot', + proname => 'pg_drop_replication_slot', provolatile => 'v', proparallel => 'u', + prorettype => 'void', proargtypes => 'name', + prosrc => 'pg_drop_replication_slot' }, +{ oid => '3781', + descr => 'information about replication slots currently in use', + proname => 'pg_get_replication_slots', prorows => '10', proisstrict => 'f', + proretset => 't', provolatile => 's', prorettype => 'record', + proargtypes => '', + proallargtypes => '{name,name,text,oid,bool,bool,int4,xid,xid,pg_lsn,pg_lsn}', + proargmodes => '{o,o,o,o,o,o,o,o,o,o,o}', + proargnames => '{slot_name,plugin,slot_type,datoid,temporary,active,active_pid,xmin,catalog_xmin,restart_lsn,confirmed_flush_lsn}', + prosrc => 'pg_get_replication_slots' }, +{ oid => '3786', descr => 'set up a logical replication slot', + proname => 'pg_create_logical_replication_slot', provolatile => 'v', + proparallel => 'u', prorettype => 'record', proargtypes => 'name name bool', + proallargtypes => '{name,name,bool,text,pg_lsn}', + proargmodes => '{i,i,i,o,o}', + proargnames => '{slot_name,plugin,temporary,slot_name,lsn}', + prosrc => 'pg_create_logical_replication_slot' }, +{ oid => '3782', descr => 'get changes from replication slot', + proname => 'pg_logical_slot_get_changes', procost => '1000', + prorows => '1000', provariadic => 'text', proisstrict => 'f', + proretset => 't', provolatile => 'v', proparallel => 'u', + prorettype => 'record', proargtypes => 'name pg_lsn int4 _text', + proallargtypes => '{name,pg_lsn,int4,_text,pg_lsn,xid,text}', + proargmodes => '{i,i,i,v,o,o,o}', + proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}', + prosrc => 'pg_logical_slot_get_changes' }, +{ oid => '3783', descr => 'get binary changes from replication slot', + proname => 'pg_logical_slot_get_binary_changes', procost => '1000', + prorows => '1000', provariadic => 'text', proisstrict => 'f', + proretset => 't', provolatile => 'v', proparallel => 'u', + prorettype => 'record', proargtypes => 'name pg_lsn int4 _text', + proallargtypes => '{name,pg_lsn,int4,_text,pg_lsn,xid,bytea}', + proargmodes => '{i,i,i,v,o,o,o}', + proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}', + prosrc => 'pg_logical_slot_get_binary_changes' }, +{ oid => '3784', descr => 'peek at changes from replication slot', + proname => 'pg_logical_slot_peek_changes', procost => '1000', + prorows => '1000', provariadic => 'text', proisstrict => 'f', + proretset => 't', provolatile => 'v', proparallel => 'u', + prorettype => 'record', proargtypes => 'name pg_lsn int4 _text', + proallargtypes => '{name,pg_lsn,int4,_text,pg_lsn,xid,text}', + proargmodes => '{i,i,i,v,o,o,o}', + proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}', + prosrc => 'pg_logical_slot_peek_changes' }, +{ oid => '3785', descr => 'peek at binary changes from replication slot', + proname => 'pg_logical_slot_peek_binary_changes', procost => '1000', + prorows => '1000', provariadic => 'text', proisstrict => 'f', + proretset => 't', provolatile => 'v', proparallel => 'u', + prorettype => 'record', proargtypes => 'name pg_lsn int4 _text', + proallargtypes => '{name,pg_lsn,int4,_text,pg_lsn,xid,bytea}', + proargmodes => '{i,i,i,v,o,o,o}', + proargnames => '{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}', + prosrc => 'pg_logical_slot_peek_binary_changes' }, +{ oid => '3878', descr => 'advance logical replication slot', + proname => 'pg_replication_slot_advance', provolatile => 'v', + proparallel => 'u', prorettype => 'record', proargtypes => 'name pg_lsn', + proallargtypes => '{name,pg_lsn,name,pg_lsn}', proargmodes => '{i,i,o,o}', + proargnames => '{slot_name,upto_lsn,slot_name,end_lsn}', + prosrc => 'pg_replication_slot_advance' }, +{ oid => '3577', descr => 'emit a textual logical decoding message', + proname => 'pg_logical_emit_message', provolatile => 'v', proparallel => 'u', + prorettype => 'pg_lsn', proargtypes => 'bool text text', + prosrc => 'pg_logical_emit_message_text' }, +{ oid => '3578', descr => 'emit a binary logical decoding message', + proname => 'pg_logical_emit_message', provolatile => 'v', proparallel => 'u', + prorettype => 'pg_lsn', proargtypes => 'bool text bytea', + prosrc => 'pg_logical_emit_message_bytea' }, + +# event triggers +{ oid => '3566', descr => 'list objects dropped by the current command', + proname => 'pg_event_trigger_dropped_objects', procost => '10', + prorows => '100', proretset => 't', provolatile => 's', proparallel => 'r', + prorettype => 'record', proargtypes => '', + proallargtypes => '{oid,oid,int4,bool,bool,bool,text,text,text,text,_text,_text}', + proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}', + proargnames => '{classid, objid, objsubid, original, normal, is_temporary, object_type, schema_name, object_name, object_identity, address_names, address_args}', + prosrc => 'pg_event_trigger_dropped_objects' }, +{ oid => '4566', descr => 'return Oid of the table getting rewritten', + proname => 'pg_event_trigger_table_rewrite_oid', provolatile => 's', + proparallel => 'r', prorettype => 'oid', proargtypes => '', + proallargtypes => '{oid}', proargmodes => '{o}', proargnames => '{oid}', + prosrc => 'pg_event_trigger_table_rewrite_oid' }, +{ oid => '4567', descr => 'return reason code for table getting rewritten', + proname => 'pg_event_trigger_table_rewrite_reason', provolatile => 's', + proparallel => 'r', prorettype => 'int4', proargtypes => '', + prosrc => 'pg_event_trigger_table_rewrite_reason' }, +{ oid => '4568', + descr => 'list DDL actions being executed by the current command', + proname => 'pg_event_trigger_ddl_commands', procost => '10', prorows => '100', + proretset => 't', provolatile => 's', proparallel => 'r', + prorettype => 'record', proargtypes => '', + proallargtypes => '{oid,oid,int4,text,text,text,text,bool,pg_ddl_command}', + proargmodes => '{o,o,o,o,o,o,o,o,o}', + proargnames => '{classid, objid, objsubid, command_tag, object_type, schema_name, object_identity, in_extension, command}', + prosrc => 'pg_event_trigger_ddl_commands' }, + +# generic transition functions for ordered-set aggregates +{ oid => '3970', descr => 'aggregate transition function', + proname => 'ordered_set_transition', proisstrict => 'f', + prorettype => 'internal', proargtypes => 'internal any', + prosrc => 'ordered_set_transition' }, +{ oid => '3971', descr => 'aggregate transition function', + proname => 'ordered_set_transition_multi', provariadic => 'any', + proisstrict => 'f', prorettype => 'internal', proargtypes => 'internal any', + proallargtypes => '{internal,any}', proargmodes => '{i,v}', + prosrc => 'ordered_set_transition_multi' }, + +# inverse distribution aggregates (and their support functions) +{ oid => '3972', descr => 'discrete percentile', + proname => 'percentile_disc', prokind => 'a', proisstrict => 'f', + prorettype => 'anyelement', proargtypes => 'float8 anyelement', + prosrc => 'aggregate_dummy' }, +{ oid => '3973', descr => 'aggregate final function', + proname => 'percentile_disc_final', proisstrict => 'f', + prorettype => 'anyelement', proargtypes => 'internal float8 anyelement', + prosrc => 'percentile_disc_final' }, +{ oid => '3974', descr => 'continuous distribution percentile', + proname => 'percentile_cont', prokind => 'a', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '3975', descr => 'aggregate final function', + proname => 'percentile_cont_float8_final', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'internal float8', + prosrc => 'percentile_cont_float8_final' }, +{ oid => '3976', descr => 'continuous distribution percentile', + proname => 'percentile_cont', prokind => 'a', proisstrict => 'f', + prorettype => 'interval', proargtypes => 'float8 interval', + prosrc => 'aggregate_dummy' }, +{ oid => '3977', descr => 'aggregate final function', + proname => 'percentile_cont_interval_final', proisstrict => 'f', + prorettype => 'interval', proargtypes => 'internal float8', + prosrc => 'percentile_cont_interval_final' }, +{ oid => '3978', descr => 'multiple discrete percentiles', + proname => 'percentile_disc', prokind => 'a', proisstrict => 'f', + prorettype => 'anyarray', proargtypes => '_float8 anyelement', + prosrc => 'aggregate_dummy' }, +{ oid => '3979', descr => 'aggregate final function', + proname => 'percentile_disc_multi_final', proisstrict => 'f', + prorettype => 'anyarray', proargtypes => 'internal _float8 anyelement', + prosrc => 'percentile_disc_multi_final' }, +{ oid => '3980', descr => 'multiple continuous percentiles', + proname => 'percentile_cont', prokind => 'a', proisstrict => 'f', + prorettype => '_float8', proargtypes => '_float8 float8', + prosrc => 'aggregate_dummy' }, +{ oid => '3981', descr => 'aggregate final function', + proname => 'percentile_cont_float8_multi_final', proisstrict => 'f', + prorettype => '_float8', proargtypes => 'internal _float8', + prosrc => 'percentile_cont_float8_multi_final' }, +{ oid => '3982', descr => 'multiple continuous percentiles', + proname => 'percentile_cont', prokind => 'a', proisstrict => 'f', + prorettype => '_interval', proargtypes => '_float8 interval', + prosrc => 'aggregate_dummy' }, +{ oid => '3983', descr => 'aggregate final function', + proname => 'percentile_cont_interval_multi_final', proisstrict => 'f', + prorettype => '_interval', proargtypes => 'internal _float8', + prosrc => 'percentile_cont_interval_multi_final' }, +{ oid => '3984', descr => 'most common value', + proname => 'mode', prokind => 'a', proisstrict => 'f', + prorettype => 'anyelement', proargtypes => 'anyelement', + prosrc => 'aggregate_dummy' }, +{ oid => '3985', descr => 'aggregate final function', + proname => 'mode_final', proisstrict => 'f', prorettype => 'anyelement', + proargtypes => 'internal anyelement', prosrc => 'mode_final' }, + +# hypothetical-set aggregates (and their support functions) +{ oid => '3986', descr => 'rank of hypothetical row', + proname => 'rank', provariadic => 'any', prokind => 'a', proisstrict => 'f', + prorettype => 'int8', proargtypes => 'any', proallargtypes => '{any}', + proargmodes => '{v}', prosrc => 'aggregate_dummy' }, +{ oid => '3987', descr => 'aggregate final function', + proname => 'rank_final', provariadic => 'any', proisstrict => 'f', + prorettype => 'int8', proargtypes => 'internal any', + proallargtypes => '{internal,any}', proargmodes => '{i,v}', + prosrc => 'hypothetical_rank_final' }, +{ oid => '3988', descr => 'fractional rank of hypothetical row', + proname => 'percent_rank', provariadic => 'any', prokind => 'a', + proisstrict => 'f', prorettype => 'float8', proargtypes => 'any', + proallargtypes => '{any}', proargmodes => '{v}', + prosrc => 'aggregate_dummy' }, +{ oid => '3989', descr => 'aggregate final function', + proname => 'percent_rank_final', provariadic => 'any', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'internal any', + proallargtypes => '{internal,any}', proargmodes => '{i,v}', + prosrc => 'hypothetical_percent_rank_final' }, +{ oid => '3990', descr => 'cumulative distribution of hypothetical row', + proname => 'cume_dist', provariadic => 'any', prokind => 'a', + proisstrict => 'f', prorettype => 'float8', proargtypes => 'any', + proallargtypes => '{any}', proargmodes => '{v}', + prosrc => 'aggregate_dummy' }, +{ oid => '3991', descr => 'aggregate final function', + proname => 'cume_dist_final', provariadic => 'any', proisstrict => 'f', + prorettype => 'float8', proargtypes => 'internal any', + proallargtypes => '{internal,any}', proargmodes => '{i,v}', + prosrc => 'hypothetical_cume_dist_final' }, +{ oid => '3992', descr => 'rank of hypothetical row without gaps', + proname => 'dense_rank', provariadic => 'any', prokind => 'a', + proisstrict => 'f', prorettype => 'int8', proargtypes => 'any', + proallargtypes => '{any}', proargmodes => '{v}', + prosrc => 'aggregate_dummy' }, +{ oid => '3993', descr => 'aggregate final function', + proname => 'dense_rank_final', provariadic => 'any', proisstrict => 'f', + prorettype => 'int8', proargtypes => 'internal any', + proallargtypes => '{internal,any}', proargmodes => '{i,v}', + prosrc => 'hypothetical_dense_rank_final' }, + +# pg_upgrade support +{ oid => '3582', descr => 'for use by pg_upgrade', + proname => 'binary_upgrade_set_next_pg_type_oid', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => 'oid', + prosrc => 'binary_upgrade_set_next_pg_type_oid' }, +{ oid => '3584', descr => 'for use by pg_upgrade', + proname => 'binary_upgrade_set_next_array_pg_type_oid', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => 'oid', + prosrc => 'binary_upgrade_set_next_array_pg_type_oid' }, +{ oid => '3585', descr => 'for use by pg_upgrade', + proname => 'binary_upgrade_set_next_toast_pg_type_oid', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => 'oid', + prosrc => 'binary_upgrade_set_next_toast_pg_type_oid' }, +{ oid => '3586', descr => 'for use by pg_upgrade', + proname => 'binary_upgrade_set_next_heap_pg_class_oid', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => 'oid', + prosrc => 'binary_upgrade_set_next_heap_pg_class_oid' }, +{ oid => '3587', descr => 'for use by pg_upgrade', + proname => 'binary_upgrade_set_next_index_pg_class_oid', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => 'oid', + prosrc => 'binary_upgrade_set_next_index_pg_class_oid' }, +{ oid => '3588', descr => 'for use by pg_upgrade', + proname => 'binary_upgrade_set_next_toast_pg_class_oid', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => 'oid', + prosrc => 'binary_upgrade_set_next_toast_pg_class_oid' }, +{ oid => '3589', descr => 'for use by pg_upgrade', + proname => 'binary_upgrade_set_next_pg_enum_oid', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => 'oid', + prosrc => 'binary_upgrade_set_next_pg_enum_oid' }, +{ oid => '3590', descr => 'for use by pg_upgrade', + proname => 'binary_upgrade_set_next_pg_authid_oid', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => 'oid', + prosrc => 'binary_upgrade_set_next_pg_authid_oid' }, +{ oid => '3591', descr => 'for use by pg_upgrade', + proname => 'binary_upgrade_create_empty_extension', proisstrict => 'f', + provolatile => 'v', proparallel => 'u', prorettype => 'void', + proargtypes => 'text text bool text _oid _text _text', + prosrc => 'binary_upgrade_create_empty_extension' }, +{ oid => '4083', descr => 'for use by pg_upgrade', + proname => 'binary_upgrade_set_record_init_privs', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => 'bool', + prosrc => 'binary_upgrade_set_record_init_privs' }, + +# replication/origin.h +{ oid => '6003', descr => 'create a replication origin', + proname => 'pg_replication_origin_create', provolatile => 'v', + proparallel => 'u', prorettype => 'oid', proargtypes => 'text', + prosrc => 'pg_replication_origin_create' }, + +{ oid => '6004', descr => 'drop replication origin identified by its name', + proname => 'pg_replication_origin_drop', provolatile => 'v', + proparallel => 'u', prorettype => 'void', proargtypes => 'text', + prosrc => 'pg_replication_origin_drop' }, + +{ oid => '6005', + descr => 'translate the replication origin\'s name to its id', + proname => 'pg_replication_origin_oid', provolatile => 's', + prorettype => 'oid', proargtypes => 'text', + prosrc => 'pg_replication_origin_oid' }, + +{ oid => '6006', + descr => 'configure session to maintain replication progress tracking for the passed in origin', + proname => 'pg_replication_origin_session_setup', provolatile => 'v', + proparallel => 'u', prorettype => 'void', proargtypes => 'text', + prosrc => 'pg_replication_origin_session_setup' }, + +{ oid => '6007', descr => 'teardown configured replication progress tracking', + proname => 'pg_replication_origin_session_reset', provolatile => 'v', + proparallel => 'u', prorettype => 'void', proargtypes => '', + prosrc => 'pg_replication_origin_session_reset' }, + +{ oid => '6008', + descr => 'is a replication origin configured in this session', + proname => 'pg_replication_origin_session_is_setup', provolatile => 'v', + proparallel => 'r', prorettype => 'bool', proargtypes => '', + prosrc => 'pg_replication_origin_session_is_setup' }, + +{ oid => '6009', + descr => 'get the replication progress of the current session', + proname => 'pg_replication_origin_session_progress', provolatile => 'v', + proparallel => 'u', prorettype => 'pg_lsn', proargtypes => 'bool', + prosrc => 'pg_replication_origin_session_progress' }, + +{ oid => '6010', descr => 'setup the transaction\'s origin lsn and timestamp', + proname => 'pg_replication_origin_xact_setup', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => 'pg_lsn timestamptz', + prosrc => 'pg_replication_origin_xact_setup' }, + +{ oid => '6011', descr => 'reset the transaction\'s origin lsn and timestamp', + proname => 'pg_replication_origin_xact_reset', provolatile => 'v', + proparallel => 'r', prorettype => 'void', proargtypes => '', + prosrc => 'pg_replication_origin_xact_reset' }, + +{ oid => '6012', + descr => 'advance replication identifier to specific location', + proname => 'pg_replication_origin_advance', provolatile => 'v', + proparallel => 'u', prorettype => 'void', proargtypes => 'text pg_lsn', + prosrc => 'pg_replication_origin_advance' }, + +{ oid => '6013', + descr => 'get an individual replication origin\'s replication progress', + proname => 'pg_replication_origin_progress', provolatile => 'v', + proparallel => 'u', prorettype => 'pg_lsn', proargtypes => 'text bool', + prosrc => 'pg_replication_origin_progress' }, + +{ oid => '6014', descr => 'get progress for all replication origins', + proname => 'pg_show_replication_origin_status', prorows => '100', + proisstrict => 'f', proretset => 't', provolatile => 'v', proparallel => 'r', + prorettype => 'record', proargtypes => '', + proallargtypes => '{oid,text,pg_lsn,pg_lsn}', proargmodes => '{o,o,o,o}', + proargnames => '{local_id, external_id, remote_lsn, local_lsn}', + prosrc => 'pg_show_replication_origin_status' }, + +# publications +{ oid => '6119', descr => 'get OIDs of tables in a publication', + proname => 'pg_get_publication_tables', prorows => '1000', proretset => 't', + provolatile => 's', prorettype => 'oid', proargtypes => 'text', + proallargtypes => '{text,oid}', proargmodes => '{i,o}', + proargnames => '{pubname,relid}', prosrc => 'pg_get_publication_tables' }, +{ oid => '6121', + descr => 'returns whether a relation can be part of a publication', + proname => 'pg_relation_is_publishable', provolatile => 's', + prorettype => 'bool', proargtypes => 'regclass', + prosrc => 'pg_relation_is_publishable' }, + +# rls +{ oid => '3298', + descr => 'row security for current context active on table by table oid', + proname => 'row_security_active', provolatile => 's', prorettype => 'bool', + proargtypes => 'oid', prosrc => 'row_security_active' }, +{ oid => '3299', + descr => 'row security for current context active on table by table name', + proname => 'row_security_active', provolatile => 's', prorettype => 'bool', + proargtypes => 'text', prosrc => 'row_security_active_name' }, + +# pg_config +{ oid => '3400', descr => 'pg_config binary as a function', + proname => 'pg_config', prorows => '23', proretset => 't', proparallel => 'r', + prorettype => 'record', proargtypes => '', proallargtypes => '{text,text}', + proargmodes => '{o,o}', proargnames => '{name,setting}', + prosrc => 'pg_config' }, + +# pg_controldata related functions +{ oid => '3441', + descr => 'pg_controldata general state information as a function', + proname => 'pg_control_system', provolatile => 'v', prorettype => 'record', + proargtypes => '', proallargtypes => '{int4,int4,int8,timestamptz}', + proargmodes => '{o,o,o,o}', + proargnames => '{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}', + prosrc => 'pg_control_system' }, + +{ oid => '3442', + descr => 'pg_controldata checkpoint state information as a function', + proname => 'pg_control_checkpoint', provolatile => 'v', + prorettype => 'record', proargtypes => '', + proallargtypes => '{pg_lsn,pg_lsn,text,int4,int4,bool,text,oid,xid,xid,xid,oid,xid,xid,oid,xid,xid,timestamptz}', + proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}', + proargnames => '{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}', + prosrc => 'pg_control_checkpoint' }, + +{ oid => '3443', + descr => 'pg_controldata recovery state information as a function', + proname => 'pg_control_recovery', provolatile => 'v', prorettype => 'record', + proargtypes => '', proallargtypes => '{pg_lsn,int4,pg_lsn,pg_lsn,bool}', + proargmodes => '{o,o,o,o,o}', + proargnames => '{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}', + prosrc => 'pg_control_recovery' }, + +{ oid => '3444', + descr => 'pg_controldata init state information as a function', + proname => 'pg_control_init', provolatile => 'v', prorettype => 'record', + proargtypes => '', + proallargtypes => '{int4,int4,int4,int4,int4,int4,int4,int4,int4,bool,bool,int4}', + proargmodes => '{o,o,o,o,o,o,o,o,o,o,o,o}', + proargnames => '{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}', + prosrc => 'pg_control_init' }, + +{ oid => '3996', descr => 'disable data checksums', + proname => 'pg_disable_data_checksums', provolatile => 'v', + prorettype => 'void', proargtypes => '', prosrc => 'disable_data_checksums' }, +{ oid => '3998', descr => 'enable data checksums', + proname => 'pg_enable_data_checksums', provolatile => 'v', + prorettype => 'void', proargtypes => 'int4 int4', + proargnames => '{cost_delay,cost_limit}', prosrc => 'enable_data_checksums' }, + +# collation management functions +{ oid => '3445', descr => 'import collations from operating system', + proname => 'pg_import_system_collations', procost => '100', + provolatile => 'v', proparallel => 'u', prorettype => 'int4', + proargtypes => 'regnamespace', prosrc => 'pg_import_system_collations' }, + +{ oid => '3448', + descr => 'get actual version of collation from operating system', + proname => 'pg_collation_actual_version', procost => '100', + provolatile => 'v', prorettype => 'text', proargtypes => 'oid', + prosrc => 'pg_collation_actual_version' }, + +# system management/monitoring related functions +{ oid => '3353', descr => 'list files in the log directory', + proname => 'pg_ls_logdir', procost => '10', prorows => '20', proretset => 't', + provolatile => 'v', prorettype => 'record', proargtypes => '', + proallargtypes => '{text,int8,timestamptz}', proargmodes => '{o,o,o}', + proargnames => '{name,size,modification}', prosrc => 'pg_ls_logdir' }, +{ oid => '3354', descr => 'list of files in the WAL directory', + proname => 'pg_ls_waldir', procost => '10', prorows => '20', proretset => 't', + provolatile => 'v', prorettype => 'record', proargtypes => '', + proallargtypes => '{text,int8,timestamptz}', proargmodes => '{o,o,o}', + proargnames => '{name,size,modification}', prosrc => 'pg_ls_waldir' }, + +# hash partitioning constraint function +{ oid => '5028', descr => 'hash partition CHECK constraint', + proname => 'satisfies_hash_partition', provariadic => 'any', + proisstrict => 'f', prorettype => 'bool', proargtypes => 'oid int4 int4 any', + proargmodes => '{i,i,i,v}', prosrc => 'satisfies_hash_partition' }, + +] diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index 42c2c429b4..0b5203a68a 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -2,7 +2,6 @@ * * pg_proc.h * definition of the system "procedure" relation (pg_proc) - * along with the relation's initial contents. * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -10,13 +9,8 @@ * src/include/catalog/pg_proc.h * * NOTES - * The script catalog/genbki.pl reads this file and generates .bki - * information from the DATA() statements. utils/Gen_fmgrtab.pl - * generates fmgroids.h and fmgrtab.c the same way. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... - * XXX (eg. #if 0 #endif won't do what you think) + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -24,53 +18,106 @@ #define PG_PROC_H #include "catalog/genbki.h" +#include "catalog/pg_proc_d.h" /* ---------------- * pg_proc definition. cpp turns this into * typedef struct FormData_pg_proc * ---------------- */ -#define ProcedureRelationId 1255 -#define ProcedureRelation_Rowtype_Id 81 - -CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO +CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,ProcedureRelation_Rowtype_Id) BKI_SCHEMA_MACRO { - NameData proname; /* procedure name */ - Oid pronamespace; /* OID of namespace containing this proc */ - Oid proowner; /* procedure owner */ - Oid prolang; /* OID of pg_language entry */ - float4 procost; /* estimated execution cost */ - float4 prorows; /* estimated # of rows out (if proretset) */ - Oid provariadic; /* element type of variadic array, or 0 */ - regproc protransform; /* transforms calls to it during planning */ - char prokind; /* see PROKIND_ categories below */ - bool prosecdef; /* security definer */ - bool proleakproof; /* is it a leak-proof function? */ - bool proisstrict; /* strict with respect to NULLs? */ - bool proretset; /* returns a set? */ - char provolatile; /* see PROVOLATILE_ categories below */ - char proparallel; /* see PROPARALLEL_ categories below */ - int16 pronargs; /* number of arguments */ - int16 pronargdefaults; /* number of arguments with defaults */ - Oid prorettype; /* OID of result type */ + /* procedure name */ + NameData proname; + + /* OID of namespace containing this proc */ + Oid pronamespace BKI_DEFAULT(PGNSP); + + /* procedure owner */ + Oid proowner BKI_DEFAULT(PGUID); + + /* OID of pg_language entry */ + Oid prolang BKI_DEFAULT(12); + + /* estimated execution cost */ + float4 procost BKI_DEFAULT(1); + + /* estimated # of rows out (if proretset) */ + float4 prorows BKI_DEFAULT(0); + + /* element type of variadic array, or 0 */ + Oid provariadic BKI_DEFAULT(0) BKI_LOOKUP(pg_type); + + /* transforms calls to it during planning */ + regproc protransform BKI_DEFAULT(0) BKI_LOOKUP(pg_proc); + + /* see PROKIND_ categories below */ + char prokind BKI_DEFAULT(f); + + /* security definer */ + bool prosecdef BKI_DEFAULT(f); + + /* is it a leak-proof function? */ + bool proleakproof BKI_DEFAULT(f); + + /* strict with respect to NULLs? */ + bool proisstrict BKI_DEFAULT(t); + + /* returns a set? */ + bool proretset BKI_DEFAULT(f); + + /* see PROVOLATILE_ categories below */ + char provolatile BKI_DEFAULT(i); + + /* see PROPARALLEL_ categories below */ + char proparallel BKI_DEFAULT(s); + + /* number of arguments */ + /* Note: need not be given in pg_proc.dat; genbki.pl will compute it */ + int16 pronargs; + + /* number of arguments with defaults */ + int16 pronargdefaults BKI_DEFAULT(0); + + /* OID of result type */ + Oid prorettype BKI_LOOKUP(pg_type); /* * variable-length fields start here, but we allow direct access to * proargtypes */ - oidvector proargtypes; /* parameter types (excludes OUT params) */ + + /* parameter types (excludes OUT params) */ + oidvector proargtypes BKI_LOOKUP(pg_type); #ifdef CATALOG_VARLEN - Oid proallargtypes[1]; /* all param types (NULL if IN only) */ - char proargmodes[1]; /* parameter modes (NULL if IN only) */ - text proargnames[1]; /* parameter names (NULL if no names) */ - pg_node_tree proargdefaults; /* list of expression trees for argument - * defaults (NULL if none) */ - Oid protrftypes[1]; /* types for which to apply transforms */ - text prosrc BKI_FORCE_NOT_NULL; /* procedure source text */ - text probin; /* secondary procedure info (can be NULL) */ - text proconfig[1]; /* procedure-local GUC settings */ - aclitem proacl[1]; /* access permissions */ + + /* all param types (NULL if IN only) */ + Oid proallargtypes[1] BKI_DEFAULT(_null_) BKI_LOOKUP(pg_type); + + /* parameter modes (NULL if IN only) */ + char proargmodes[1] BKI_DEFAULT(_null_); + + /* parameter names (NULL if no names) */ + text proargnames[1] BKI_DEFAULT(_null_); + + /* list of expression trees for argument defaults (NULL if none) */ + pg_node_tree proargdefaults BKI_DEFAULT(_null_); + + /* types for which to apply transforms */ + Oid protrftypes[1] BKI_DEFAULT(_null_); + + /* procedure source text */ + text prosrc BKI_FORCE_NOT_NULL; + + /* secondary procedure info (can be NULL) */ + text probin BKI_DEFAULT(_null_); + + /* procedure-local GUC settings */ + text proconfig[1] BKI_DEFAULT(_null_); + + /* access permissions */ + aclitem proacl[1] BKI_DEFAULT(_null_); #endif } FormData_pg_proc; @@ -81,5541 +128,7 @@ CATALOG(pg_proc,1255) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81) BKI_SCHEMA_MACRO */ typedef FormData_pg_proc *Form_pg_proc; -/* ---------------- - * compiler constants for pg_proc - * ---------------- - */ -#define Natts_pg_proc 28 -#define Anum_pg_proc_proname 1 -#define Anum_pg_proc_pronamespace 2 -#define Anum_pg_proc_proowner 3 -#define Anum_pg_proc_prolang 4 -#define Anum_pg_proc_procost 5 -#define Anum_pg_proc_prorows 6 -#define Anum_pg_proc_provariadic 7 -#define Anum_pg_proc_protransform 8 -#define Anum_pg_proc_prokind 9 -#define Anum_pg_proc_prosecdef 10 -#define Anum_pg_proc_proleakproof 11 -#define Anum_pg_proc_proisstrict 12 -#define Anum_pg_proc_proretset 13 -#define Anum_pg_proc_provolatile 14 -#define Anum_pg_proc_proparallel 15 -#define Anum_pg_proc_pronargs 16 -#define Anum_pg_proc_pronargdefaults 17 -#define Anum_pg_proc_prorettype 18 -#define Anum_pg_proc_proargtypes 19 -#define Anum_pg_proc_proallargtypes 20 -#define Anum_pg_proc_proargmodes 21 -#define Anum_pg_proc_proargnames 22 -#define Anum_pg_proc_proargdefaults 23 -#define Anum_pg_proc_protrftypes 24 -#define Anum_pg_proc_prosrc 25 -#define Anum_pg_proc_probin 26 -#define Anum_pg_proc_proconfig 27 -#define Anum_pg_proc_proacl 28 - -/* ---------------- - * initial contents of pg_proc - * ---------------- - */ - -/* - * Note: every entry in pg_proc.h is expected to have a DESCR() comment, - * except for functions that implement pg_operator.h operators and don't - * have a good reason to be called directly rather than via the operator. - * (If you do expect such a function to be used directly, you should - * duplicate the operator's comment.) initdb will supply suitable default - * comments for functions referenced by pg_operator. - * - * Try to follow the style of existing functions' comments. - * Some recommended conventions: - * "I/O" for typinput, typoutput, typreceive, typsend functions - * "I/O typmod" for typmodin, typmodout functions - * "aggregate transition function" for aggtransfn functions, unless - * they are reasonably useful in their own right - * "aggregate final function" for aggfinalfn functions (likewise) - * "convert srctypename to desttypename" for cast functions - * "less-equal-greater" for B-tree comparison functions - */ - -/* keep the following ordered by OID so that later changes can be made easier */ - -/* OIDS 1 - 99 */ - -DATA(insert OID = 1242 ( boolin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "2275" _null_ _null_ _null_ _null_ _null_ boolin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1243 ( boolout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "16" _null_ _null_ _null_ _null_ _null_ boolout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1244 ( byteain PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2275" _null_ _null_ _null_ _null_ _null_ byteain _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 31 ( byteaout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "17" _null_ _null_ _null_ _null_ _null_ byteaout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1245 ( charin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 18 "2275" _null_ _null_ _null_ _null_ _null_ charin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 33 ( charout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "18" _null_ _null_ _null_ _null_ _null_ charout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 34 ( namein PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 19 "2275" _null_ _null_ _null_ _null_ _null_ namein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 35 ( nameout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "19" _null_ _null_ _null_ _null_ _null_ nameout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 38 ( int2in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "2275" _null_ _null_ _null_ _null_ _null_ int2in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 39 ( int2out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "21" _null_ _null_ _null_ _null_ _null_ int2out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 40 ( int2vectorin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 22 "2275" _null_ _null_ _null_ _null_ _null_ int2vectorin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 41 ( int2vectorout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "22" _null_ _null_ _null_ _null_ _null_ int2vectorout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 42 ( int4in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "2275" _null_ _null_ _null_ _null_ _null_ int4in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 43 ( int4out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ int4out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 44 ( regprocin PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 24 "2275" _null_ _null_ _null_ _null_ _null_ regprocin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 45 ( regprocout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "24" _null_ _null_ _null_ _null_ _null_ regprocout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3494 ( to_regproc PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 24 "25" _null_ _null_ _null_ _null_ _null_ to_regproc _null_ _null_ _null_ )); -DESCR("convert proname to regproc"); -DATA(insert OID = 3479 ( to_regprocedure PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2202 "25" _null_ _null_ _null_ _null_ _null_ to_regprocedure _null_ _null_ _null_ )); -DESCR("convert proname to regprocedure"); -DATA(insert OID = 46 ( textin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "2275" _null_ _null_ _null_ _null_ _null_ textin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 47 ( textout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "25" _null_ _null_ _null_ _null_ _null_ textout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 48 ( tidin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 27 "2275" _null_ _null_ _null_ _null_ _null_ tidin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 49 ( tidout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "27" _null_ _null_ _null_ _null_ _null_ tidout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 50 ( xidin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 28 "2275" _null_ _null_ _null_ _null_ _null_ xidin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 51 ( xidout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "28" _null_ _null_ _null_ _null_ _null_ xidout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 52 ( cidin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 29 "2275" _null_ _null_ _null_ _null_ _null_ cidin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 53 ( cidout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "29" _null_ _null_ _null_ _null_ _null_ cidout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 54 ( oidvectorin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 30 "2275" _null_ _null_ _null_ _null_ _null_ oidvectorin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 55 ( oidvectorout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "30" _null_ _null_ _null_ _null_ _null_ oidvectorout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 56 ( boollt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boollt _null_ _null_ _null_ )); -DATA(insert OID = 57 ( boolgt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boolgt _null_ _null_ _null_ )); -DATA(insert OID = 60 ( booleq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ booleq _null_ _null_ _null_ )); -DATA(insert OID = 61 ( chareq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ chareq _null_ _null_ _null_ )); -DATA(insert OID = 62 ( nameeq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ nameeq _null_ _null_ _null_ )); -DATA(insert OID = 63 ( int2eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2eq _null_ _null_ _null_ )); -DATA(insert OID = 64 ( int2lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2lt _null_ _null_ _null_ )); -DATA(insert OID = 65 ( int4eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4eq _null_ _null_ _null_ )); -DATA(insert OID = 66 ( int4lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4lt _null_ _null_ _null_ )); -DATA(insert OID = 67 ( texteq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ texteq _null_ _null_ _null_ )); -DATA(insert OID = 3696 ( starts_with PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_starts_with _null_ _null_ _null_ )); -DATA(insert OID = 68 ( xideq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "28 28" _null_ _null_ _null_ _null_ _null_ xideq _null_ _null_ _null_ )); -DATA(insert OID = 3308 ( xidneq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "28 28" _null_ _null_ _null_ _null_ _null_ xidneq _null_ _null_ _null_ )); -DATA(insert OID = 69 ( cideq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "29 29" _null_ _null_ _null_ _null_ _null_ cideq _null_ _null_ _null_ )); -DATA(insert OID = 70 ( charne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ charne _null_ _null_ _null_ )); -DATA(insert OID = 1246 ( charlt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ charlt _null_ _null_ _null_ )); -DATA(insert OID = 72 ( charle PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ charle _null_ _null_ _null_ )); -DATA(insert OID = 73 ( chargt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ chargt _null_ _null_ _null_ )); -DATA(insert OID = 74 ( charge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "18 18" _null_ _null_ _null_ _null_ _null_ charge _null_ _null_ _null_ )); -DATA(insert OID = 77 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "18" _null_ _null_ _null_ _null_ _null_ chartoi4 _null_ _null_ _null_ )); -DESCR("convert char to int4"); -DATA(insert OID = 78 ( char PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 18 "23" _null_ _null_ _null_ _null_ _null_ i4tochar _null_ _null_ _null_ )); -DESCR("convert int4 to char"); - -DATA(insert OID = 79 ( nameregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1252 ( nameregexne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameregexne _null_ _null_ _null_ )); -DATA(insert OID = 1254 ( textregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1256 ( textregexne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textregexne _null_ _null_ _null_ )); -DATA(insert OID = 1257 ( textlen PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ )); -DESCR("length"); -DATA(insert OID = 1258 ( textcat PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ textcat _null_ _null_ _null_ )); - -DATA(insert OID = 84 ( boolne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boolne _null_ _null_ _null_ )); -DATA(insert OID = 89 ( version PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 25 "" _null_ _null_ _null_ _null_ _null_ pgsql_version _null_ _null_ _null_ )); -DESCR("PostgreSQL version string"); - -DATA(insert OID = 86 ( pg_ddl_command_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 32 "2275" _null_ _null_ _null_ _null_ _null_ pg_ddl_command_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 87 ( pg_ddl_command_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "32" _null_ _null_ _null_ _null_ _null_ pg_ddl_command_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 88 ( pg_ddl_command_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 32 "2281" _null_ _null_ _null_ _null_ _null_ pg_ddl_command_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 90 ( pg_ddl_command_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "32" _null_ _null_ _null_ _null_ _null_ pg_ddl_command_send _null_ _null_ _null_ )); -DESCR("I/O"); - -/* OIDS 100 - 199 */ - -DATA(insert OID = 101 ( eqsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ eqsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of = and related operators"); -DATA(insert OID = 102 ( neqsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ neqsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of <> and related operators"); -DATA(insert OID = 103 ( scalarltsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ scalarltsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of < and related operators on scalar datatypes"); -DATA(insert OID = 104 ( scalargtsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ scalargtsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of > and related operators on scalar datatypes"); -DATA(insert OID = 105 ( eqjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ eqjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of = and related operators"); -DATA(insert OID = 106 ( neqjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ neqjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of <> and related operators"); -DATA(insert OID = 107 ( scalarltjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ scalarltjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of < and related operators on scalar datatypes"); -DATA(insert OID = 108 ( scalargtjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ scalargtjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of > and related operators on scalar datatypes"); - -DATA(insert OID = 336 ( scalarlesel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ scalarlesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of <= and related operators on scalar datatypes"); -DATA(insert OID = 337 ( scalargesel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ scalargesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of >= and related operators on scalar datatypes"); -DATA(insert OID = 386 ( scalarlejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ scalarlejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of <= and related operators on scalar datatypes"); -DATA(insert OID = 398 ( scalargejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ scalargejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of >= and related operators on scalar datatypes"); - -DATA(insert OID = 109 ( unknownin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 705 "2275" _null_ _null_ _null_ _null_ _null_ unknownin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 110 ( unknownout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "705" _null_ _null_ _null_ _null_ _null_ unknownout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 111 ( numeric_fac PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ numeric_fac _null_ _null_ _null_ )); - -DATA(insert OID = 115 ( box_above_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_above_eq _null_ _null_ _null_ )); -DATA(insert OID = 116 ( box_below_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_below_eq _null_ _null_ _null_ )); - -DATA(insert OID = 117 ( point_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "2275" _null_ _null_ _null_ _null_ _null_ point_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 118 ( point_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "600" _null_ _null_ _null_ _null_ _null_ point_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 119 ( lseg_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 601 "2275" _null_ _null_ _null_ _null_ _null_ lseg_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 120 ( lseg_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "601" _null_ _null_ _null_ _null_ _null_ lseg_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 121 ( path_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 602 "2275" _null_ _null_ _null_ _null_ _null_ path_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 122 ( path_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "602" _null_ _null_ _null_ _null_ _null_ path_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 123 ( box_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 603 "2275" _null_ _null_ _null_ _null_ _null_ box_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 124 ( box_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "603" _null_ _null_ _null_ _null_ _null_ box_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 125 ( box_overlap PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_overlap _null_ _null_ _null_ )); -DATA(insert OID = 126 ( box_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_ge _null_ _null_ _null_ )); -DATA(insert OID = 127 ( box_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_gt _null_ _null_ _null_ )); -DATA(insert OID = 128 ( box_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_eq _null_ _null_ _null_ )); -DATA(insert OID = 129 ( box_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_lt _null_ _null_ _null_ )); -DATA(insert OID = 130 ( box_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_le _null_ _null_ _null_ )); -DATA(insert OID = 131 ( point_above PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_above _null_ _null_ _null_ )); -DATA(insert OID = 132 ( point_left PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_left _null_ _null_ _null_ )); -DATA(insert OID = 133 ( point_right PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_right _null_ _null_ _null_ )); -DATA(insert OID = 134 ( point_below PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_below _null_ _null_ _null_ )); -DATA(insert OID = 135 ( point_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_eq _null_ _null_ _null_ )); -DATA(insert OID = 136 ( on_pb PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 603" _null_ _null_ _null_ _null_ _null_ on_pb _null_ _null_ _null_ )); -DATA(insert OID = 137 ( on_ppath PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 602" _null_ _null_ _null_ _null_ _null_ on_ppath _null_ _null_ _null_ )); -DATA(insert OID = 138 ( box_center PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "603" _null_ _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ )); -DATA(insert OID = 139 ( areasel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ areasel _null_ _null_ _null_ )); -DESCR("restriction selectivity for area-comparison operators"); -DATA(insert OID = 140 ( areajoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ areajoinsel _null_ _null_ _null_ )); -DESCR("join selectivity for area-comparison operators"); -DATA(insert OID = 141 ( int4mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4mul _null_ _null_ _null_ )); -DATA(insert OID = 144 ( int4ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4ne _null_ _null_ _null_ )); -DATA(insert OID = 145 ( int2ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2ne _null_ _null_ _null_ )); -DATA(insert OID = 146 ( int2gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2gt _null_ _null_ _null_ )); -DATA(insert OID = 147 ( int4gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4gt _null_ _null_ _null_ )); -DATA(insert OID = 148 ( int2le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2le _null_ _null_ _null_ )); -DATA(insert OID = 149 ( int4le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4le _null_ _null_ _null_ )); -DATA(insert OID = 150 ( int4ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ int4ge _null_ _null_ _null_ )); -DATA(insert OID = 151 ( int2ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 21" _null_ _null_ _null_ _null_ _null_ int2ge _null_ _null_ _null_ )); -DATA(insert OID = 152 ( int2mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2mul _null_ _null_ _null_ )); -DATA(insert OID = 153 ( int2div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2div _null_ _null_ _null_ )); -DATA(insert OID = 154 ( int4div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4div _null_ _null_ _null_ )); -DATA(insert OID = 155 ( int2mod PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2mod _null_ _null_ _null_ )); -DATA(insert OID = 156 ( int4mod PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4mod _null_ _null_ _null_ )); -DATA(insert OID = 157 ( textne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textne _null_ _null_ _null_ )); -DATA(insert OID = 158 ( int24eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24eq _null_ _null_ _null_ )); -DATA(insert OID = 159 ( int42eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42eq _null_ _null_ _null_ )); -DATA(insert OID = 160 ( int24lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24lt _null_ _null_ _null_ )); -DATA(insert OID = 161 ( int42lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42lt _null_ _null_ _null_ )); -DATA(insert OID = 162 ( int24gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24gt _null_ _null_ _null_ )); -DATA(insert OID = 163 ( int42gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42gt _null_ _null_ _null_ )); -DATA(insert OID = 164 ( int24ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24ne _null_ _null_ _null_ )); -DATA(insert OID = 165 ( int42ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42ne _null_ _null_ _null_ )); -DATA(insert OID = 166 ( int24le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24le _null_ _null_ _null_ )); -DATA(insert OID = 167 ( int42le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42le _null_ _null_ _null_ )); -DATA(insert OID = 168 ( int24ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 23" _null_ _null_ _null_ _null_ _null_ int24ge _null_ _null_ _null_ )); -DATA(insert OID = 169 ( int42ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 21" _null_ _null_ _null_ _null_ _null_ int42ge _null_ _null_ _null_ )); -DATA(insert OID = 170 ( int24mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "21 23" _null_ _null_ _null_ _null_ _null_ int24mul _null_ _null_ _null_ )); -DATA(insert OID = 171 ( int42mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 21" _null_ _null_ _null_ _null_ _null_ int42mul _null_ _null_ _null_ )); -DATA(insert OID = 172 ( int24div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "21 23" _null_ _null_ _null_ _null_ _null_ int24div _null_ _null_ _null_ )); -DATA(insert OID = 173 ( int42div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 21" _null_ _null_ _null_ _null_ _null_ int42div _null_ _null_ _null_ )); -DATA(insert OID = 176 ( int2pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2pl _null_ _null_ _null_ )); -DATA(insert OID = 177 ( int4pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4pl _null_ _null_ _null_ )); -DATA(insert OID = 178 ( int24pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "21 23" _null_ _null_ _null_ _null_ _null_ int24pl _null_ _null_ _null_ )); -DATA(insert OID = 179 ( int42pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 21" _null_ _null_ _null_ _null_ _null_ int42pl _null_ _null_ _null_ )); -DATA(insert OID = 180 ( int2mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2mi _null_ _null_ _null_ )); -DATA(insert OID = 181 ( int4mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4mi _null_ _null_ _null_ )); -DATA(insert OID = 182 ( int24mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "21 23" _null_ _null_ _null_ _null_ _null_ int24mi _null_ _null_ _null_ )); -DATA(insert OID = 183 ( int42mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 21" _null_ _null_ _null_ _null_ _null_ int42mi _null_ _null_ _null_ )); -DATA(insert OID = 184 ( oideq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oideq _null_ _null_ _null_ )); -DATA(insert OID = 185 ( oidne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oidne _null_ _null_ _null_ )); -DATA(insert OID = 186 ( box_same PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_same _null_ _null_ _null_ )); -DATA(insert OID = 187 ( box_contain PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_contain _null_ _null_ _null_ )); -DATA(insert OID = 188 ( box_left PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_left _null_ _null_ _null_ )); -DATA(insert OID = 189 ( box_overleft PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_overleft _null_ _null_ _null_ )); -DATA(insert OID = 190 ( box_overright PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_overright _null_ _null_ _null_ )); -DATA(insert OID = 191 ( box_right PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_right _null_ _null_ _null_ )); -DATA(insert OID = 192 ( box_contained PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_contained _null_ _null_ _null_ )); -DATA(insert OID = 193 ( box_contain_pt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 600" _null_ _null_ _null_ _null_ _null_ box_contain_pt _null_ _null_ _null_ )); - -DATA(insert OID = 195 ( pg_node_tree_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 194 "2275" _null_ _null_ _null_ _null_ _null_ pg_node_tree_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 196 ( pg_node_tree_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "194" _null_ _null_ _null_ _null_ _null_ pg_node_tree_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 197 ( pg_node_tree_recv PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 194 "2281" _null_ _null_ _null_ _null_ _null_ pg_node_tree_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 198 ( pg_node_tree_send PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "194" _null_ _null_ _null_ _null_ _null_ pg_node_tree_send _null_ _null_ _null_ )); -DESCR("I/O"); - -/* OIDS 200 - 299 */ - -DATA(insert OID = 200 ( float4in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "2275" _null_ _null_ _null_ _null_ _null_ float4in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 201 ( float4out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "700" _null_ _null_ _null_ _null_ _null_ float4out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 202 ( float4mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4mul _null_ _null_ _null_ )); -DATA(insert OID = 203 ( float4div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4div _null_ _null_ _null_ )); -DATA(insert OID = 204 ( float4pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4pl _null_ _null_ _null_ )); -DATA(insert OID = 205 ( float4mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4mi _null_ _null_ _null_ )); -DATA(insert OID = 206 ( float4um PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ float4um _null_ _null_ _null_ )); -DATA(insert OID = 207 ( float4abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ float4abs _null_ _null_ _null_ )); -DATA(insert OID = 208 ( float4_accum PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1022 "1022 700" _null_ _null_ _null_ _null_ _null_ float4_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 209 ( float4larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 211 ( float4smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 700 "700 700" _null_ _null_ _null_ _null_ _null_ float4smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 212 ( int4um PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4um _null_ _null_ _null_ )); -DATA(insert OID = 213 ( int2um PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ int2um _null_ _null_ _null_ )); - -DATA(insert OID = 214 ( float8in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "2275" _null_ _null_ _null_ _null_ _null_ float8in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 215 ( float8out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "701" _null_ _null_ _null_ _null_ _null_ float8out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 216 ( float8mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8mul _null_ _null_ _null_ )); -DATA(insert OID = 217 ( float8div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8div _null_ _null_ _null_ )); -DATA(insert OID = 218 ( float8pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8pl _null_ _null_ _null_ )); -DATA(insert OID = 219 ( float8mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8mi _null_ _null_ _null_ )); -DATA(insert OID = 220 ( float8um PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ float8um _null_ _null_ _null_ )); -DATA(insert OID = 221 ( float8abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ float8abs _null_ _null_ _null_ )); -DATA(insert OID = 222 ( float8_accum PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1022 "1022 701" _null_ _null_ _null_ _null_ _null_ float8_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 276 ( float8_combine PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1022 "1022 1022" _null_ _null_ _null_ _null_ _null_ float8_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 223 ( float8larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 224 ( float8smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ float8smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 225 ( lseg_center PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "601" _null_ _null_ _null_ _null_ _null_ lseg_center _null_ _null_ _null_ )); -DATA(insert OID = 226 ( path_center PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "602" _null_ _null_ _null_ _null_ _null_ path_center _null_ _null_ _null_ )); -DATA(insert OID = 227 ( poly_center PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "604" _null_ _null_ _null_ _null_ _null_ poly_center _null_ _null_ _null_ )); - -DATA(insert OID = 228 ( dround PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dround _null_ _null_ _null_ )); -DESCR("round to nearest integer"); -DATA(insert OID = 229 ( dtrunc PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dtrunc _null_ _null_ _null_ )); -DESCR("truncate to integer"); -DATA(insert OID = 2308 ( ceil PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dceil _null_ _null_ _null_ )); -DESCR("nearest integer >= value"); -DATA(insert OID = 2320 ( ceiling PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dceil _null_ _null_ _null_ )); -DESCR("nearest integer >= value"); -DATA(insert OID = 2309 ( floor PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dfloor _null_ _null_ _null_ )); -DESCR("nearest integer <= value"); -DATA(insert OID = 2310 ( sign PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dsign _null_ _null_ _null_ )); -DESCR("sign of value"); -DATA(insert OID = 230 ( dsqrt PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dsqrt _null_ _null_ _null_ )); -DATA(insert OID = 231 ( dcbrt PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcbrt _null_ _null_ _null_ )); -DATA(insert OID = 232 ( dpow PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ )); -DATA(insert OID = 233 ( dexp PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dexp _null_ _null_ _null_ )); -DESCR("natural exponential (e^x)"); -DATA(insert OID = 234 ( dlog1 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dlog1 _null_ _null_ _null_ )); -DESCR("natural logarithm"); -DATA(insert OID = 235 ( float8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "21" _null_ _null_ _null_ _null_ _null_ i2tod _null_ _null_ _null_ )); -DESCR("convert int2 to float8"); -DATA(insert OID = 236 ( float4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "21" _null_ _null_ _null_ _null_ _null_ i2tof _null_ _null_ _null_ )); -DESCR("convert int2 to float4"); -DATA(insert OID = 237 ( int2 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "701" _null_ _null_ _null_ _null_ _null_ dtoi2 _null_ _null_ _null_ )); -DESCR("convert float8 to int2"); -DATA(insert OID = 238 ( int2 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "700" _null_ _null_ _null_ _null_ _null_ ftoi2 _null_ _null_ _null_ )); -DESCR("convert float4 to int2"); -DATA(insert OID = 239 ( line_distance PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "628 628" _null_ _null_ _null_ _null_ _null_ line_distance _null_ _null_ _null_ )); - -DATA(insert OID = 240 ( abstimein PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 702 "2275" _null_ _null_ _null_ _null_ _null_ abstimein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 241 ( abstimeout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "702" _null_ _null_ _null_ _null_ _null_ abstimeout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 242 ( reltimein PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 703 "2275" _null_ _null_ _null_ _null_ _null_ reltimein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 243 ( reltimeout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "703" _null_ _null_ _null_ _null_ _null_ reltimeout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 244 ( timepl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 702 "702 703" _null_ _null_ _null_ _null_ _null_ timepl _null_ _null_ _null_ )); -DATA(insert OID = 245 ( timemi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 702 "702 703" _null_ _null_ _null_ _null_ _null_ timemi _null_ _null_ _null_ )); -DATA(insert OID = 246 ( tintervalin PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 704 "2275" _null_ _null_ _null_ _null_ _null_ tintervalin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 247 ( tintervalout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "704" _null_ _null_ _null_ _null_ _null_ tintervalout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 248 ( intinterval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "702 704" _null_ _null_ _null_ _null_ _null_ intinterval _null_ _null_ _null_ )); -DATA(insert OID = 249 ( tintervalrel PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 703 "704" _null_ _null_ _null_ _null_ _null_ tintervalrel _null_ _null_ _null_ )); -DESCR("tinterval to reltime"); -DATA(insert OID = 250 ( timenow PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 702 "" _null_ _null_ _null_ _null_ _null_ timenow _null_ _null_ _null_ )); -DESCR("current date and time (abstime)"); -DATA(insert OID = 251 ( abstimeeq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimeeq _null_ _null_ _null_ )); -DATA(insert OID = 252 ( abstimene PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimene _null_ _null_ _null_ )); -DATA(insert OID = 253 ( abstimelt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimelt _null_ _null_ _null_ )); -DATA(insert OID = 254 ( abstimegt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimegt _null_ _null_ _null_ )); -DATA(insert OID = 255 ( abstimele PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimele _null_ _null_ _null_ )); -DATA(insert OID = 256 ( abstimege PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "702 702" _null_ _null_ _null_ _null_ _null_ abstimege _null_ _null_ _null_ )); -DATA(insert OID = 257 ( reltimeeq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimeeq _null_ _null_ _null_ )); -DATA(insert OID = 258 ( reltimene PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimene _null_ _null_ _null_ )); -DATA(insert OID = 259 ( reltimelt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimelt _null_ _null_ _null_ )); -DATA(insert OID = 260 ( reltimegt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimegt _null_ _null_ _null_ )); -DATA(insert OID = 261 ( reltimele PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimele _null_ _null_ _null_ )); -DATA(insert OID = 262 ( reltimege PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "703 703" _null_ _null_ _null_ _null_ _null_ reltimege _null_ _null_ _null_ )); -DATA(insert OID = 263 ( tintervalsame PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalsame _null_ _null_ _null_ )); -DATA(insert OID = 264 ( tintervalct PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalct _null_ _null_ _null_ )); -DATA(insert OID = 265 ( tintervalov PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalov _null_ _null_ _null_ )); -DATA(insert OID = 266 ( tintervalleneq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervalleneq _null_ _null_ _null_ )); -DATA(insert OID = 267 ( tintervallenne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervallenne _null_ _null_ _null_ )); -DATA(insert OID = 268 ( tintervallenlt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervallenlt _null_ _null_ _null_ )); -DATA(insert OID = 269 ( tintervallengt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervallengt _null_ _null_ _null_ )); -DATA(insert OID = 270 ( tintervallenle PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervallenle _null_ _null_ _null_ )); -DATA(insert OID = 271 ( tintervallenge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 703" _null_ _null_ _null_ _null_ _null_ tintervallenge _null_ _null_ _null_ )); -DATA(insert OID = 272 ( tintervalstart PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 702 "704" _null_ _null_ _null_ _null_ _null_ tintervalstart _null_ _null_ _null_ )); -DATA(insert OID = 273 ( tintervalend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 702 "704" _null_ _null_ _null_ _null_ _null_ tintervalend _null_ _null_ _null_ )); -DESCR("end of interval"); -DATA(insert OID = 274 ( timeofday PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 25 "" _null_ _null_ _null_ _null_ _null_ timeofday _null_ _null_ _null_ )); -DESCR("current date and time - increments during transactions"); -DATA(insert OID = 275 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "702" _null_ _null_ _null_ _null_ _null_ abstime_finite _null_ _null_ _null_ )); -DESCR("finite abstime?"); - -DATA(insert OID = 277 ( inter_sl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "601 628" _null_ _null_ _null_ _null_ _null_ inter_sl _null_ _null_ _null_ )); -DATA(insert OID = 278 ( inter_lb PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "628 603" _null_ _null_ _null_ _null_ _null_ inter_lb _null_ _null_ _null_ )); - -DATA(insert OID = 279 ( float48mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "700 701" _null_ _null_ _null_ _null_ _null_ float48mul _null_ _null_ _null_ )); -DATA(insert OID = 280 ( float48div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "700 701" _null_ _null_ _null_ _null_ _null_ float48div _null_ _null_ _null_ )); -DATA(insert OID = 281 ( float48pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "700 701" _null_ _null_ _null_ _null_ _null_ float48pl _null_ _null_ _null_ )); -DATA(insert OID = 282 ( float48mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "700 701" _null_ _null_ _null_ _null_ _null_ float48mi _null_ _null_ _null_ )); -DATA(insert OID = 283 ( float84mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 700" _null_ _null_ _null_ _null_ _null_ float84mul _null_ _null_ _null_ )); -DATA(insert OID = 284 ( float84div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 700" _null_ _null_ _null_ _null_ _null_ float84div _null_ _null_ _null_ )); -DATA(insert OID = 285 ( float84pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 700" _null_ _null_ _null_ _null_ _null_ float84pl _null_ _null_ _null_ )); -DATA(insert OID = 286 ( float84mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 700" _null_ _null_ _null_ _null_ _null_ float84mi _null_ _null_ _null_ )); - -DATA(insert OID = 287 ( float4eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4eq _null_ _null_ _null_ )); -DATA(insert OID = 288 ( float4ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4ne _null_ _null_ _null_ )); -DATA(insert OID = 289 ( float4lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4lt _null_ _null_ _null_ )); -DATA(insert OID = 290 ( float4le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4le _null_ _null_ _null_ )); -DATA(insert OID = 291 ( float4gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4gt _null_ _null_ _null_ )); -DATA(insert OID = 292 ( float4ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 700" _null_ _null_ _null_ _null_ _null_ float4ge _null_ _null_ _null_ )); - -DATA(insert OID = 293 ( float8eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8eq _null_ _null_ _null_ )); -DATA(insert OID = 294 ( float8ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8ne _null_ _null_ _null_ )); -DATA(insert OID = 295 ( float8lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8lt _null_ _null_ _null_ )); -DATA(insert OID = 296 ( float8le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8le _null_ _null_ _null_ )); -DATA(insert OID = 297 ( float8gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8gt _null_ _null_ _null_ )); -DATA(insert OID = 298 ( float8ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 701" _null_ _null_ _null_ _null_ _null_ float8ge _null_ _null_ _null_ )); - -DATA(insert OID = 299 ( float48eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48eq _null_ _null_ _null_ )); - -/* OIDS 300 - 399 */ - -DATA(insert OID = 300 ( float48ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48ne _null_ _null_ _null_ )); -DATA(insert OID = 301 ( float48lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48lt _null_ _null_ _null_ )); -DATA(insert OID = 302 ( float48le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48le _null_ _null_ _null_ )); -DATA(insert OID = 303 ( float48gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48gt _null_ _null_ _null_ )); -DATA(insert OID = 304 ( float48ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "700 701" _null_ _null_ _null_ _null_ _null_ float48ge _null_ _null_ _null_ )); -DATA(insert OID = 305 ( float84eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84eq _null_ _null_ _null_ )); -DATA(insert OID = 306 ( float84ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84ne _null_ _null_ _null_ )); -DATA(insert OID = 307 ( float84lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84lt _null_ _null_ _null_ )); -DATA(insert OID = 308 ( float84le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84le _null_ _null_ _null_ )); -DATA(insert OID = 309 ( float84gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84gt _null_ _null_ _null_ )); -DATA(insert OID = 310 ( float84ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "701 700" _null_ _null_ _null_ _null_ _null_ float84ge _null_ _null_ _null_ )); -DATA(insert OID = 320 ( width_bucket PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 23 "701 701 701 23" _null_ _null_ _null_ _null_ _null_ width_bucket_float8 _null_ _null_ _null_ )); -DESCR("bucket number of operand in equal-width histogram"); - -DATA(insert OID = 311 ( float8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ ftod _null_ _null_ _null_ )); -DESCR("convert float4 to float8"); -DATA(insert OID = 312 ( float4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "701" _null_ _null_ _null_ _null_ _null_ dtof _null_ _null_ _null_ )); -DESCR("convert float8 to float4"); -DATA(insert OID = 313 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "21" _null_ _null_ _null_ _null_ _null_ i2toi4 _null_ _null_ _null_ )); -DESCR("convert int2 to int4"); -DATA(insert OID = 314 ( int2 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "23" _null_ _null_ _null_ _null_ _null_ i4toi2 _null_ _null_ _null_ )); -DESCR("convert int4 to int2"); -DATA(insert OID = 316 ( float8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "23" _null_ _null_ _null_ _null_ _null_ i4tod _null_ _null_ _null_ )); -DESCR("convert int4 to float8"); -DATA(insert OID = 317 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "701" _null_ _null_ _null_ _null_ _null_ dtoi4 _null_ _null_ _null_ )); -DESCR("convert float8 to int4"); -DATA(insert OID = 318 ( float4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "23" _null_ _null_ _null_ _null_ _null_ i4tof _null_ _null_ _null_ )); -DESCR("convert int4 to float4"); -DATA(insert OID = 319 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "700" _null_ _null_ _null_ _null_ _null_ ftoi4 _null_ _null_ _null_ )); -DESCR("convert float4 to int4"); - -/* Index access method handlers */ -DATA(insert OID = 330 ( bthandler PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ bthandler _null_ _null_ _null_ )); -DESCR("btree index access method handler"); -DATA(insert OID = 331 ( hashhandler PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ hashhandler _null_ _null_ _null_ )); -DESCR("hash index access method handler"); -DATA(insert OID = 332 ( gisthandler PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ gisthandler _null_ _null_ _null_ )); -DESCR("gist index access method handler"); -DATA(insert OID = 333 ( ginhandler PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ ginhandler _null_ _null_ _null_ )); -DESCR("gin index access method handler"); -DATA(insert OID = 334 ( spghandler PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ spghandler _null_ _null_ _null_ )); -DESCR("spgist index access method handler"); -DATA(insert OID = 335 ( brinhandler PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 325 "2281" _null_ _null_ _null_ _null_ _null_ brinhandler _null_ _null_ _null_ )); -DESCR("brin index access method handler"); -DATA(insert OID = 3952 ( brin_summarize_new_values PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 23 "2205" _null_ _null_ _null_ _null_ _null_ brin_summarize_new_values _null_ _null_ _null_ )); -DESCR("brin: standalone scan new table pages"); -DATA(insert OID = 3999 ( brin_summarize_range PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 23 "2205 20" _null_ _null_ _null_ _null_ _null_ brin_summarize_range _null_ _null_ _null_ )); -DESCR("brin: standalone scan new table pages"); -DATA(insert OID = 4014 ( brin_desummarize_range PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 2278 "2205 20" _null_ _null_ _null_ _null_ _null_ brin_desummarize_range _null_ _null_ _null_ )); -DESCR("brin: desummarize page range"); - -DATA(insert OID = 338 ( amvalidate PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ amvalidate _null_ _null_ _null_ )); -DESCR("validate an operator class"); - -DATA(insert OID = 636 ( pg_indexam_has_property PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ pg_indexam_has_property _null_ _null_ _null_ )); -DESCR("test property of an index access method"); -DATA(insert OID = 637 ( pg_index_has_property PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "2205 25" _null_ _null_ _null_ _null_ _null_ pg_index_has_property _null_ _null_ _null_ )); -DESCR("test property of an index"); -DATA(insert OID = 638 ( pg_index_column_has_property PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "2205 23 25" _null_ _null_ _null_ _null_ _null_ pg_index_column_has_property _null_ _null_ _null_ )); -DESCR("test property of an index column"); - -DATA(insert OID = 339 ( poly_same PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_same _null_ _null_ _null_ )); -DATA(insert OID = 340 ( poly_contain PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_contain _null_ _null_ _null_ )); -DATA(insert OID = 341 ( poly_left PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_left _null_ _null_ _null_ )); -DATA(insert OID = 342 ( poly_overleft PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_overleft _null_ _null_ _null_ )); -DATA(insert OID = 343 ( poly_overright PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_overright _null_ _null_ _null_ )); -DATA(insert OID = 344 ( poly_right PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_right _null_ _null_ _null_ )); -DATA(insert OID = 345 ( poly_contained PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_contained _null_ _null_ _null_ )); -DATA(insert OID = 346 ( poly_overlap PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_overlap _null_ _null_ _null_ )); -DATA(insert OID = 347 ( poly_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 604 "2275" _null_ _null_ _null_ _null_ _null_ poly_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 348 ( poly_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "604" _null_ _null_ _null_ _null_ _null_ poly_out _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 350 ( btint2cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "21 21" _null_ _null_ _null_ _null_ _null_ btint2cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3129 ( btint2sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btint2sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 351 ( btint4cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ btint4cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3130 ( btint4sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btint4sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 842 ( btint8cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "20 20" _null_ _null_ _null_ _null_ _null_ btint8cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3131 ( btint8sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btint8sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 354 ( btfloat4cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "700 700" _null_ _null_ _null_ _null_ _null_ btfloat4cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3132 ( btfloat4sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btfloat4sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 355 ( btfloat8cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "701 701" _null_ _null_ _null_ _null_ _null_ btfloat8cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3133 ( btfloat8sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btfloat8sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 356 ( btoidcmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "26 26" _null_ _null_ _null_ _null_ _null_ btoidcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3134 ( btoidsortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btoidsortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 404 ( btoidvectorcmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "30 30" _null_ _null_ _null_ _null_ _null_ btoidvectorcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 357 ( btabstimecmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "702 702" _null_ _null_ _null_ _null_ _null_ btabstimecmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 358 ( btcharcmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "18 18" _null_ _null_ _null_ _null_ _null_ btcharcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 359 ( btnamecmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "19 19" _null_ _null_ _null_ _null_ _null_ btnamecmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3135 ( btnamesortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btnamesortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 360 ( bttextcmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ bttextcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3255 ( bttextsortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ bttextsortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 377 ( cash_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "790 790" _null_ _null_ _null_ _null_ _null_ cash_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 380 ( btreltimecmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "703 703" _null_ _null_ _null_ _null_ _null_ btreltimecmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 381 ( bttintervalcmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "704 704" _null_ _null_ _null_ _null_ _null_ bttintervalcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 382 ( btarraycmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "2277 2277" _null_ _null_ _null_ _null_ _null_ btarraycmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 4126 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "20 20 20 16 16" _null_ _null_ _null_ _null_ _null_ in_range_int8_int8 _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4127 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "23 23 20 16 16" _null_ _null_ _null_ _null_ _null_ in_range_int4_int8 _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4128 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "23 23 23 16 16" _null_ _null_ _null_ _null_ _null_ in_range_int4_int4 _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4129 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "23 23 21 16 16" _null_ _null_ _null_ _null_ _null_ in_range_int4_int2 _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4130 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "21 21 20 16 16" _null_ _null_ _null_ _null_ _null_ in_range_int2_int8 _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4131 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "21 21 23 16 16" _null_ _null_ _null_ _null_ _null_ in_range_int2_int4 _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4132 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "21 21 21 16 16" _null_ _null_ _null_ _null_ _null_ in_range_int2_int2 _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4139 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "701 701 701 16 16" _null_ _null_ _null_ _null_ _null_ in_range_float8_float8 _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4140 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "700 700 701 16 16" _null_ _null_ _null_ _null_ _null_ in_range_float4_float8 _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4141 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "1700 1700 1700 16 16" _null_ _null_ _null_ _null_ _null_ in_range_numeric_numeric _null_ _null_ _null_ )); -DESCR("window RANGE support"); - -DATA(insert OID = 361 ( lseg_distance PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_distance _null_ _null_ _null_ )); -DATA(insert OID = 362 ( lseg_interpt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_interpt _null_ _null_ _null_ )); -DATA(insert OID = 363 ( dist_ps PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "600 601" _null_ _null_ _null_ _null_ _null_ dist_ps _null_ _null_ _null_ )); -DATA(insert OID = 364 ( dist_pb PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "600 603" _null_ _null_ _null_ _null_ _null_ dist_pb _null_ _null_ _null_ )); -DATA(insert OID = 365 ( dist_sb PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "601 603" _null_ _null_ _null_ _null_ _null_ dist_sb _null_ _null_ _null_ )); -DATA(insert OID = 366 ( close_ps PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "600 601" _null_ _null_ _null_ _null_ _null_ close_ps _null_ _null_ _null_ )); -DATA(insert OID = 367 ( close_pb PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "600 603" _null_ _null_ _null_ _null_ _null_ close_pb _null_ _null_ _null_ )); -DATA(insert OID = 368 ( close_sb PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "601 603" _null_ _null_ _null_ _null_ _null_ close_sb _null_ _null_ _null_ )); -DATA(insert OID = 369 ( on_ps PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 601" _null_ _null_ _null_ _null_ _null_ on_ps _null_ _null_ _null_ )); -DATA(insert OID = 370 ( path_distance PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "602 602" _null_ _null_ _null_ _null_ _null_ path_distance _null_ _null_ _null_ )); -DATA(insert OID = 371 ( dist_ppath PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "600 602" _null_ _null_ _null_ _null_ _null_ dist_ppath _null_ _null_ _null_ )); -DATA(insert OID = 372 ( on_sb PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "601 603" _null_ _null_ _null_ _null_ _null_ on_sb _null_ _null_ _null_ )); -DATA(insert OID = 373 ( inter_sb PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "601 603" _null_ _null_ _null_ _null_ _null_ inter_sb _null_ _null_ _null_ )); - -/* OIDS 400 - 499 */ - -DATA(insert OID = 401 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "1042" _null_ _null_ _null_ _null_ _null_ rtrim1 _null_ _null_ _null_ )); -DESCR("convert char(n) to text"); -DATA(insert OID = 406 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "19" _null_ _null_ _null_ _null_ _null_ name_text _null_ _null_ _null_ )); -DESCR("convert name to text"); -DATA(insert OID = 407 ( name PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 19 "25" _null_ _null_ _null_ _null_ _null_ text_name _null_ _null_ _null_ )); -DESCR("convert text to name"); -DATA(insert OID = 408 ( bpchar PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1042 "19" _null_ _null_ _null_ _null_ _null_ name_bpchar _null_ _null_ _null_ )); -DESCR("convert name to char(n)"); -DATA(insert OID = 409 ( name PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 19 "1042" _null_ _null_ _null_ _null_ _null_ bpchar_name _null_ _null_ _null_ )); -DESCR("convert char(n) to name"); - -DATA(insert OID = 449 ( hashint2 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "21" _null_ _null_ _null_ _null_ _null_ hashint2 _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 441 ( hashint2extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "21 20" _null_ _null_ _null_ _null_ _null_ hashint2extended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 450 ( hashint4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ hashint4 _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 425 ( hashint4extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "23 20" _null_ _null_ _null_ _null_ _null_ hashint4extended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 949 ( hashint8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "20" _null_ _null_ _null_ _null_ _null_ hashint8 _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 442 ( hashint8extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ hashint8extended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 451 ( hashfloat4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "700" _null_ _null_ _null_ _null_ _null_ hashfloat4 _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 443 ( hashfloat4extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "700 20" _null_ _null_ _null_ _null_ _null_ hashfloat4extended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 452 ( hashfloat8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "701" _null_ _null_ _null_ _null_ _null_ hashfloat8 _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 444 ( hashfloat8extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "701 20" _null_ _null_ _null_ _null_ _null_ hashfloat8extended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 453 ( hashoid PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "26" _null_ _null_ _null_ _null_ _null_ hashoid _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 445 ( hashoidextended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "26 20" _null_ _null_ _null_ _null_ _null_ hashoidextended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 454 ( hashchar PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "18" _null_ _null_ _null_ _null_ _null_ hashchar _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 446 ( hashcharextended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "18 20" _null_ _null_ _null_ _null_ _null_ hashcharextended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 455 ( hashname PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "19" _null_ _null_ _null_ _null_ _null_ hashname _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 447 ( hashnameextended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "19 20" _null_ _null_ _null_ _null_ _null_ hashnameextended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 400 ( hashtext PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ hashtext _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 448 ( hashtextextended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "25 20" _null_ _null_ _null_ _null_ _null_ hashtextextended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 456 ( hashvarlena PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "2281" _null_ _null_ _null_ _null_ _null_ hashvarlena _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 772 ( hashvarlenaextended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "2281 20" _null_ _null_ _null_ _null_ _null_ hashvarlenaextended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 457 ( hashoidvector PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "30" _null_ _null_ _null_ _null_ _null_ hashoidvector _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 776 ( hashoidvectorextended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "30 20" _null_ _null_ _null_ _null_ _null_ hashoidvectorextended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 329 ( hash_aclitem PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1033" _null_ _null_ _null_ _null_ _null_ hash_aclitem _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 777 ( hash_aclitem_extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "1033 20" _null_ _null_ _null_ _null_ _null_ hash_aclitem_extended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 399 ( hashmacaddr PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "829" _null_ _null_ _null_ _null_ _null_ hashmacaddr _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 778 ( hashmacaddrextended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "829 20" _null_ _null_ _null_ _null_ _null_ hashmacaddrextended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 422 ( hashinet PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "869" _null_ _null_ _null_ _null_ _null_ hashinet _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 779 ( hashinetextended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "869 20" _null_ _null_ _null_ _null_ _null_ hashinetextended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 432 ( hash_numeric PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1700" _null_ _null_ _null_ _null_ _null_ hash_numeric _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 780 ( hash_numeric_extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "1700 20" _null_ _null_ _null_ _null_ _null_ hash_numeric_extended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 328 ( hashmacaddr8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "774" _null_ _null_ _null_ _null_ _null_ hashmacaddr8 _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 781 ( hashmacaddr8extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "774 20" _null_ _null_ _null_ _null_ _null_ hashmacaddr8extended _null_ _null_ _null_ )); -DESCR("hash"); - -DATA(insert OID = 438 ( num_nulls PGNSP PGUID 12 1 0 2276 0 f f f f f i s 1 0 23 "2276" "{2276}" "{v}" _null_ _null_ _null_ pg_num_nulls _null_ _null_ _null_ )); -DESCR("count the number of NULL arguments"); -DATA(insert OID = 440 ( num_nonnulls PGNSP PGUID 12 1 0 2276 0 f f f f f i s 1 0 23 "2276" "{2276}" "{v}" _null_ _null_ _null_ pg_num_nonnulls _null_ _null_ _null_ )); -DESCR("count the number of non-NULL arguments"); - -DATA(insert OID = 458 ( text_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ text_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 459 ( text_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ text_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 460 ( int8in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "2275" _null_ _null_ _null_ _null_ _null_ int8in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 461 ( int8out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "20" _null_ _null_ _null_ _null_ _null_ int8out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 462 ( int8um PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8um _null_ _null_ _null_ )); -DATA(insert OID = 463 ( int8pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8pl _null_ _null_ _null_ )); -DATA(insert OID = 464 ( int8mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8mi _null_ _null_ _null_ )); -DATA(insert OID = 465 ( int8mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8mul _null_ _null_ _null_ )); -DATA(insert OID = 466 ( int8div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8div _null_ _null_ _null_ )); -DATA(insert OID = 467 ( int8eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8eq _null_ _null_ _null_ )); -DATA(insert OID = 468 ( int8ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8ne _null_ _null_ _null_ )); -DATA(insert OID = 469 ( int8lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8lt _null_ _null_ _null_ )); -DATA(insert OID = 470 ( int8gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8gt _null_ _null_ _null_ )); -DATA(insert OID = 471 ( int8le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8le _null_ _null_ _null_ )); -DATA(insert OID = 472 ( int8ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 20" _null_ _null_ _null_ _null_ _null_ int8ge _null_ _null_ _null_ )); - -DATA(insert OID = 474 ( int84eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84eq _null_ _null_ _null_ )); -DATA(insert OID = 475 ( int84ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84ne _null_ _null_ _null_ )); -DATA(insert OID = 476 ( int84lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84lt _null_ _null_ _null_ )); -DATA(insert OID = 477 ( int84gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84gt _null_ _null_ _null_ )); -DATA(insert OID = 478 ( int84le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84le _null_ _null_ _null_ )); -DATA(insert OID = 479 ( int84ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 23" _null_ _null_ _null_ _null_ _null_ int84ge _null_ _null_ _null_ )); - -DATA(insert OID = 480 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "20" _null_ _null_ _null_ _null_ _null_ int84 _null_ _null_ _null_ )); -DESCR("convert int8 to int4"); -DATA(insert OID = 481 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "23" _null_ _null_ _null_ _null_ _null_ int48 _null_ _null_ _null_ )); -DESCR("convert int4 to int8"); -DATA(insert OID = 482 ( float8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "20" _null_ _null_ _null_ _null_ _null_ i8tod _null_ _null_ _null_ )); -DESCR("convert int8 to float8"); -DATA(insert OID = 483 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "701" _null_ _null_ _null_ _null_ _null_ dtoi8 _null_ _null_ _null_ )); -DESCR("convert float8 to int8"); - -/* OIDS 500 - 599 */ - -/* OIDS 600 - 699 */ - -DATA(insert OID = 626 ( hash_array PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "2277" _null_ _null_ _null_ _null_ _null_ hash_array _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 782 ( hash_array_extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "2277 20" _null_ _null_ _null_ _null_ _null_ hash_array_extended _null_ _null_ _null_ )); -DESCR("hash"); - -DATA(insert OID = 652 ( float4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "20" _null_ _null_ _null_ _null_ _null_ i8tof _null_ _null_ _null_ )); -DESCR("convert int8 to float4"); -DATA(insert OID = 653 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "700" _null_ _null_ _null_ _null_ _null_ ftoi8 _null_ _null_ _null_ )); -DESCR("convert float4 to int8"); - -DATA(insert OID = 714 ( int2 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "20" _null_ _null_ _null_ _null_ _null_ int82 _null_ _null_ _null_ )); -DESCR("convert int8 to int2"); -DATA(insert OID = 754 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "21" _null_ _null_ _null_ _null_ _null_ int28 _null_ _null_ _null_ )); -DESCR("convert int2 to int8"); - -DATA(insert OID = 655 ( namelt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ namelt _null_ _null_ _null_ )); -DATA(insert OID = 656 ( namele PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ namele _null_ _null_ _null_ )); -DATA(insert OID = 657 ( namegt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ namegt _null_ _null_ _null_ )); -DATA(insert OID = 658 ( namege PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ namege _null_ _null_ _null_ )); -DATA(insert OID = 659 ( namene PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "19 19" _null_ _null_ _null_ _null_ _null_ namene _null_ _null_ _null_ )); - -DATA(insert OID = 668 ( bpchar PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1042 "1042 23 16" _null_ _null_ _null_ _null_ _null_ bpchar _null_ _null_ _null_ )); -DESCR("adjust char() to typmod length"); -DATA(insert OID = 3097 ( varchar_transform PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ varchar_transform _null_ _null_ _null_ )); -DESCR("transform a varchar length coercion"); -DATA(insert OID = 669 ( varchar PGNSP PGUID 12 1 0 0 varchar_transform f f f t f i s 3 0 1043 "1043 23 16" _null_ _null_ _null_ _null_ _null_ varchar _null_ _null_ _null_ )); -DESCR("adjust varchar() to typmod length"); - -DATA(insert OID = 676 ( mktinterval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 704 "702 702" _null_ _null_ _null_ _null_ _null_ mktinterval _null_ _null_ _null_ )); - -DATA(insert OID = 619 ( oidvectorne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectorne _null_ _null_ _null_ )); -DATA(insert OID = 677 ( oidvectorlt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectorlt _null_ _null_ _null_ )); -DATA(insert OID = 678 ( oidvectorle PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectorle _null_ _null_ _null_ )); -DATA(insert OID = 679 ( oidvectoreq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectoreq _null_ _null_ _null_ )); -DATA(insert OID = 680 ( oidvectorge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectorge _null_ _null_ _null_ )); -DATA(insert OID = 681 ( oidvectorgt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "30 30" _null_ _null_ _null_ _null_ _null_ oidvectorgt _null_ _null_ _null_ )); - -/* OIDS 700 - 799 */ -DATA(insert OID = 710 ( getpgusername PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ current_user _null_ _null_ _null_ )); -DESCR("deprecated, use current_user instead"); -DATA(insert OID = 716 ( oidlt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oidlt _null_ _null_ _null_ )); -DATA(insert OID = 717 ( oidle PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oidle _null_ _null_ _null_ )); - -DATA(insert OID = 720 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "17" _null_ _null_ _null_ _null_ _null_ byteaoctetlen _null_ _null_ _null_ )); -DESCR("octet length"); -DATA(insert OID = 721 ( get_byte PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "17 23" _null_ _null_ _null_ _null_ _null_ byteaGetByte _null_ _null_ _null_ )); -DESCR("get byte"); -DATA(insert OID = 722 ( set_byte PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ _null_ byteaSetByte _null_ _null_ _null_ )); -DESCR("set byte"); -DATA(insert OID = 723 ( get_bit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "17 23" _null_ _null_ _null_ _null_ _null_ byteaGetBit _null_ _null_ _null_ )); -DESCR("get bit"); -DATA(insert OID = 724 ( set_bit PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ _null_ byteaSetBit _null_ _null_ _null_ )); -DESCR("set bit"); -DATA(insert OID = 749 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 17 "17 17 23 23" _null_ _null_ _null_ _null_ _null_ byteaoverlay _null_ _null_ _null_ )); -DESCR("substitute portion of string"); -DATA(insert OID = 752 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 17 "17 17 23" _null_ _null_ _null_ _null_ _null_ byteaoverlay_no_len _null_ _null_ _null_ )); -DESCR("substitute portion of string"); - -DATA(insert OID = 725 ( dist_pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "600 628" _null_ _null_ _null_ _null_ _null_ dist_pl _null_ _null_ _null_ )); -DATA(insert OID = 726 ( dist_lb PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "628 603" _null_ _null_ _null_ _null_ _null_ dist_lb _null_ _null_ _null_ )); -DATA(insert OID = 727 ( dist_sl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "601 628" _null_ _null_ _null_ _null_ _null_ dist_sl _null_ _null_ _null_ )); -DATA(insert OID = 728 ( dist_cpoly PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "718 604" _null_ _null_ _null_ _null_ _null_ dist_cpoly _null_ _null_ _null_ )); -DATA(insert OID = 729 ( poly_distance PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "604 604" _null_ _null_ _null_ _null_ _null_ poly_distance _null_ _null_ _null_ )); -DATA(insert OID = 3275 ( dist_ppoly PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "600 604" _null_ _null_ _null_ _null_ _null_ dist_ppoly _null_ _null_ _null_ )); -DATA(insert OID = 3292 ( dist_polyp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "604 600" _null_ _null_ _null_ _null_ _null_ dist_polyp _null_ _null_ _null_ )); -DATA(insert OID = 3290 ( dist_cpoint PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "718 600" _null_ _null_ _null_ _null_ _null_ dist_cpoint _null_ _null_ _null_ )); - -DATA(insert OID = 740 ( text_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_lt _null_ _null_ _null_ )); -DATA(insert OID = 741 ( text_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_le _null_ _null_ _null_ )); -DATA(insert OID = 742 ( text_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_gt _null_ _null_ _null_ )); -DATA(insert OID = 743 ( text_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_ge _null_ _null_ _null_ )); - -DATA(insert OID = 745 ( current_user PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ current_user _null_ _null_ _null_ )); -DESCR("current user name"); -DATA(insert OID = 746 ( session_user PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ session_user _null_ _null_ _null_ )); -DESCR("session user name"); - -DATA(insert OID = 744 ( array_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_eq _null_ _null_ _null_ )); -DATA(insert OID = 390 ( array_ne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_ne _null_ _null_ _null_ )); -DATA(insert OID = 391 ( array_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_lt _null_ _null_ _null_ )); -DATA(insert OID = 392 ( array_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_gt _null_ _null_ _null_ )); -DATA(insert OID = 393 ( array_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_le _null_ _null_ _null_ )); -DATA(insert OID = 396 ( array_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_ge _null_ _null_ _null_ )); -DATA(insert OID = 747 ( array_dims PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "2277" _null_ _null_ _null_ _null_ _null_ array_dims _null_ _null_ _null_ )); -DESCR("array dimensions"); -DATA(insert OID = 748 ( array_ndims PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "2277" _null_ _null_ _null_ _null_ _null_ array_ndims _null_ _null_ _null_ )); -DESCR("number of array dimensions"); -DATA(insert OID = 750 ( array_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 2277 "2275 26 23" _null_ _null_ _null_ _null_ _null_ array_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 751 ( array_out PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "2277" _null_ _null_ _null_ _null_ _null_ array_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2091 ( array_lower PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "2277 23" _null_ _null_ _null_ _null_ _null_ array_lower _null_ _null_ _null_ )); -DESCR("array lower dimension"); -DATA(insert OID = 2092 ( array_upper PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "2277 23" _null_ _null_ _null_ _null_ _null_ array_upper _null_ _null_ _null_ )); -DESCR("array upper dimension"); -DATA(insert OID = 2176 ( array_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "2277 23" _null_ _null_ _null_ _null_ _null_ array_length _null_ _null_ _null_ )); -DESCR("array length"); -DATA(insert OID = 3179 ( cardinality PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "2277" _null_ _null_ _null_ _null_ _null_ array_cardinality _null_ _null_ _null_ )); -DESCR("array cardinality"); -DATA(insert OID = 378 ( array_append PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2277 "2277 2283" _null_ _null_ _null_ _null_ _null_ array_append _null_ _null_ _null_ )); -DESCR("append element onto end of array"); -DATA(insert OID = 379 ( array_prepend PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2277 "2283 2277" _null_ _null_ _null_ _null_ _null_ array_prepend _null_ _null_ _null_ )); -DESCR("prepend element onto front of array"); -DATA(insert OID = 383 ( array_cat PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_cat _null_ _null_ _null_ )); -DATA(insert OID = 394 ( string_to_array PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 1009 "25 25" _null_ _null_ _null_ _null_ _null_ text_to_array _null_ _null_ _null_ )); -DESCR("split delimited text into text[]"); -DATA(insert OID = 395 ( array_to_string PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "2277 25" _null_ _null_ _null_ _null_ _null_ array_to_text _null_ _null_ _null_ )); -DESCR("concatenate array elements, using delimiter, into text"); -DATA(insert OID = 376 ( string_to_array PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ _null_ text_to_array_null _null_ _null_ _null_ )); -DESCR("split delimited text into text[], with null string"); -DATA(insert OID = 384 ( array_to_string PGNSP PGUID 12 1 0 0 0 f f f f f s s 3 0 25 "2277 25 25" _null_ _null_ _null_ _null_ _null_ array_to_text_null _null_ _null_ _null_ )); -DESCR("concatenate array elements, using delimiter and null string, into text"); -DATA(insert OID = 515 ( array_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 516 ( array_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2277 "2277 2277" _null_ _null_ _null_ _null_ _null_ array_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 3277 ( array_position PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 23 "2277 2283" _null_ _null_ _null_ _null_ _null_ array_position _null_ _null_ _null_ )); -DESCR("returns an offset of value in array"); -DATA(insert OID = 3278 ( array_position PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 23 "2277 2283 23" _null_ _null_ _null_ _null_ _null_ array_position_start _null_ _null_ _null_ )); -DESCR("returns an offset of value in array with start index"); -DATA(insert OID = 3279 ( array_positions PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 1007 "2277 2283" _null_ _null_ _null_ _null_ _null_ array_positions _null_ _null_ _null_ )); -DESCR("returns an array of offsets of some value in array"); -DATA(insert OID = 1191 ( generate_subscripts PGNSP PGUID 12 1 1000 0 0 f f f t t i s 3 0 23 "2277 23 16" _null_ _null_ _null_ _null_ _null_ generate_subscripts _null_ _null_ _null_ )); -DESCR("array subscripts generator"); -DATA(insert OID = 1192 ( generate_subscripts PGNSP PGUID 12 1 1000 0 0 f f f t t i s 2 0 23 "2277 23" _null_ _null_ _null_ _null_ _null_ generate_subscripts_nodir _null_ _null_ _null_ )); -DESCR("array subscripts generator"); -DATA(insert OID = 1193 ( array_fill PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2277 "2283 1007" _null_ _null_ _null_ _null_ _null_ array_fill _null_ _null_ _null_ )); -DESCR("array constructor with value"); -DATA(insert OID = 1286 ( array_fill PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 2277 "2283 1007 1007" _null_ _null_ _null_ _null_ _null_ array_fill_with_lower_bounds _null_ _null_ _null_ )); -DESCR("array constructor with value"); -DATA(insert OID = 2331 ( unnest PGNSP PGUID 12 1 100 0 0 f f f t t i s 1 0 2283 "2277" _null_ _null_ _null_ _null_ _null_ array_unnest _null_ _null_ _null_ )); -DESCR("expand array to set of rows"); -DATA(insert OID = 3167 ( array_remove PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2277 "2277 2283" _null_ _null_ _null_ _null_ _null_ array_remove _null_ _null_ _null_ )); -DESCR("remove any occurrences of an element from an array"); -DATA(insert OID = 3168 ( array_replace PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 2277 "2277 2283 2283" _null_ _null_ _null_ _null_ _null_ array_replace _null_ _null_ _null_ )); -DESCR("replace any occurrences of an element in an array"); -DATA(insert OID = 2333 ( array_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 2776" _null_ _null_ _null_ _null_ _null_ array_agg_transfn _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 2334 ( array_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2277 "2281 2776" _null_ _null_ _null_ _null_ _null_ array_agg_finalfn _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2335 ( array_agg PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 2277 "2776" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("concatenate aggregate input into an array"); -DATA(insert OID = 4051 ( array_agg_array_transfn PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 2277" _null_ _null_ _null_ _null_ _null_ array_agg_array_transfn _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 4052 ( array_agg_array_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2277 "2281 2277" _null_ _null_ _null_ _null_ _null_ array_agg_array_finalfn _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 4053 ( array_agg PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 2277 "2277" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("concatenate aggregate input into an array"); -DATA(insert OID = 3218 ( width_bucket PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "2283 2277" _null_ _null_ _null_ _null_ _null_ width_bucket_array _null_ _null_ _null_ )); -DESCR("bucket number of operand given a sorted array of bucket lower bounds"); -DATA(insert OID = 3816 ( array_typanalyze PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ array_typanalyze _null_ _null_ _null_ )); -DESCR("array typanalyze"); -DATA(insert OID = 3817 ( arraycontsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ arraycontsel _null_ _null_ _null_ )); -DESCR("restriction selectivity for array-containment operators"); -DATA(insert OID = 3818 ( arraycontjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ arraycontjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity for array-containment operators"); - -DATA(insert OID = 760 ( smgrin PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 210 "2275" _null_ _null_ _null_ _null_ _null_ smgrin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 761 ( smgrout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "210" _null_ _null_ _null_ _null_ _null_ smgrout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 762 ( smgreq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "210 210" _null_ _null_ _null_ _null_ _null_ smgreq _null_ _null_ _null_ )); -DESCR("storage manager"); -DATA(insert OID = 763 ( smgrne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "210 210" _null_ _null_ _null_ _null_ _null_ smgrne _null_ _null_ _null_ )); -DESCR("storage manager"); - -DATA(insert OID = 764 ( lo_import PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 26 "25" _null_ _null_ _null_ _null_ _null_ be_lo_import _null_ _null_ _null_ )); -DESCR("large object import"); -DATA(insert OID = 767 ( lo_import PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 26 "25 26" _null_ _null_ _null_ _null_ _null_ be_lo_import_with_oid _null_ _null_ _null_ )); -DESCR("large object import"); -DATA(insert OID = 765 ( lo_export PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 23 "26 25" _null_ _null_ _null_ _null_ _null_ be_lo_export _null_ _null_ _null_ )); -DESCR("large object export"); - -DATA(insert OID = 766 ( int4inc PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4inc _null_ _null_ _null_ )); -DESCR("increment"); -DATA(insert OID = 768 ( int4larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 769 ( int4smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 770 ( int2larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 771 ( int2smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 784 ( tintervaleq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervaleq _null_ _null_ _null_ )); -DATA(insert OID = 785 ( tintervalne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalne _null_ _null_ _null_ )); -DATA(insert OID = 786 ( tintervallt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervallt _null_ _null_ _null_ )); -DATA(insert OID = 787 ( tintervalgt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalgt _null_ _null_ _null_ )); -DATA(insert OID = 788 ( tintervalle PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalle _null_ _null_ _null_ )); -DATA(insert OID = 789 ( tintervalge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "704 704" _null_ _null_ _null_ _null_ _null_ tintervalge _null_ _null_ _null_ )); - -/* OIDS 800 - 899 */ - -DATA(insert OID = 846 ( cash_mul_flt4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 700" _null_ _null_ _null_ _null_ _null_ cash_mul_flt4 _null_ _null_ _null_ )); -DATA(insert OID = 847 ( cash_div_flt4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 700" _null_ _null_ _null_ _null_ _null_ cash_div_flt4 _null_ _null_ _null_ )); -DATA(insert OID = 848 ( flt4_mul_cash PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "700 790" _null_ _null_ _null_ _null_ _null_ flt4_mul_cash _null_ _null_ _null_ )); - -DATA(insert OID = 849 ( position PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ textpos _null_ _null_ _null_ )); -DESCR("position of substring"); -DATA(insert OID = 850 ( textlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ )); -DATA(insert OID = 851 ( textnlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ )); - -DATA(insert OID = 852 ( int48eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48eq _null_ _null_ _null_ )); -DATA(insert OID = 853 ( int48ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48ne _null_ _null_ _null_ )); -DATA(insert OID = 854 ( int48lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48lt _null_ _null_ _null_ )); -DATA(insert OID = 855 ( int48gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48gt _null_ _null_ _null_ )); -DATA(insert OID = 856 ( int48le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48le _null_ _null_ _null_ )); -DATA(insert OID = 857 ( int48ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "23 20" _null_ _null_ _null_ _null_ _null_ int48ge _null_ _null_ _null_ )); - -DATA(insert OID = 858 ( namelike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ namelike _null_ _null_ _null_ )); -DATA(insert OID = 859 ( namenlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ namenlike _null_ _null_ _null_ )); - -DATA(insert OID = 860 ( bpchar PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1042 "18" _null_ _null_ _null_ _null_ _null_ char_bpchar _null_ _null_ _null_ )); -DESCR("convert char to char(n)"); - -DATA(insert OID = 861 ( current_database PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ current_database _null_ _null_ _null_ )); -DESCR("name of the current database"); -DATA(insert OID = 817 ( current_query PGNSP PGUID 12 1 0 0 0 f f f f f v r 0 0 25 "" _null_ _null_ _null_ _null_ _null_ current_query _null_ _null_ _null_ )); -DESCR("get the currently executing query"); - -DATA(insert OID = 3399 ( int8_mul_cash PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "20 790" _null_ _null_ _null_ _null_ _null_ int8_mul_cash _null_ _null_ _null_ )); -DATA(insert OID = 862 ( int4_mul_cash PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "23 790" _null_ _null_ _null_ _null_ _null_ int4_mul_cash _null_ _null_ _null_ )); -DATA(insert OID = 863 ( int2_mul_cash PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "21 790" _null_ _null_ _null_ _null_ _null_ int2_mul_cash _null_ _null_ _null_ )); -DATA(insert OID = 3344 ( cash_mul_int8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 20" _null_ _null_ _null_ _null_ _null_ cash_mul_int8 _null_ _null_ _null_ )); -DATA(insert OID = 3345 ( cash_div_int8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 20" _null_ _null_ _null_ _null_ _null_ cash_div_int8 _null_ _null_ _null_ )); -DATA(insert OID = 864 ( cash_mul_int4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 23" _null_ _null_ _null_ _null_ _null_ cash_mul_int4 _null_ _null_ _null_ )); -DATA(insert OID = 865 ( cash_div_int4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 23" _null_ _null_ _null_ _null_ _null_ cash_div_int4 _null_ _null_ _null_ )); -DATA(insert OID = 866 ( cash_mul_int2 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 21" _null_ _null_ _null_ _null_ _null_ cash_mul_int2 _null_ _null_ _null_ )); -DATA(insert OID = 867 ( cash_div_int2 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 21" _null_ _null_ _null_ _null_ _null_ cash_div_int2 _null_ _null_ _null_ )); - -DATA(insert OID = 886 ( cash_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 790 "2275" _null_ _null_ _null_ _null_ _null_ cash_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 887 ( cash_out PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "790" _null_ _null_ _null_ _null_ _null_ cash_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 888 ( cash_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_eq _null_ _null_ _null_ )); -DATA(insert OID = 889 ( cash_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_ne _null_ _null_ _null_ )); -DATA(insert OID = 890 ( cash_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_lt _null_ _null_ _null_ )); -DATA(insert OID = 891 ( cash_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_le _null_ _null_ _null_ )); -DATA(insert OID = 892 ( cash_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_gt _null_ _null_ _null_ )); -DATA(insert OID = 893 ( cash_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "790 790" _null_ _null_ _null_ _null_ _null_ cash_ge _null_ _null_ _null_ )); -DATA(insert OID = 894 ( cash_pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 790" _null_ _null_ _null_ _null_ _null_ cash_pl _null_ _null_ _null_ )); -DATA(insert OID = 895 ( cash_mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 790" _null_ _null_ _null_ _null_ _null_ cash_mi _null_ _null_ _null_ )); -DATA(insert OID = 896 ( cash_mul_flt8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 701" _null_ _null_ _null_ _null_ _null_ cash_mul_flt8 _null_ _null_ _null_ )); -DATA(insert OID = 897 ( cash_div_flt8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 701" _null_ _null_ _null_ _null_ _null_ cash_div_flt8 _null_ _null_ _null_ )); -DATA(insert OID = 898 ( cashlarger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 790" _null_ _null_ _null_ _null_ _null_ cashlarger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 899 ( cashsmaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "790 790" _null_ _null_ _null_ _null_ _null_ cashsmaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 919 ( flt8_mul_cash PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 790 "701 790" _null_ _null_ _null_ _null_ _null_ flt8_mul_cash _null_ _null_ _null_ )); -DATA(insert OID = 935 ( cash_words PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "790" _null_ _null_ _null_ _null_ _null_ cash_words _null_ _null_ _null_ )); -DESCR("output money amount as words"); -DATA(insert OID = 3822 ( cash_div_cash PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "790 790" _null_ _null_ _null_ _null_ _null_ cash_div_cash _null_ _null_ _null_ )); -DATA(insert OID = 3823 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1700 "790" _null_ _null_ _null_ _null_ _null_ cash_numeric _null_ _null_ _null_ )); -DESCR("convert money to numeric"); -DATA(insert OID = 3824 ( money PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 790 "1700" _null_ _null_ _null_ _null_ _null_ numeric_cash _null_ _null_ _null_ )); -DESCR("convert numeric to money"); -DATA(insert OID = 3811 ( money PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 790 "23" _null_ _null_ _null_ _null_ _null_ int4_cash _null_ _null_ _null_ )); -DESCR("convert int4 to money"); -DATA(insert OID = 3812 ( money PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 790 "20" _null_ _null_ _null_ _null_ _null_ int8_cash _null_ _null_ _null_ )); -DESCR("convert int8 to money"); - -/* OIDS 900 - 999 */ - -DATA(insert OID = 940 ( mod PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2mod _null_ _null_ _null_ )); -DESCR("modulus"); -DATA(insert OID = 941 ( mod PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4mod _null_ _null_ _null_ )); -DESCR("modulus"); - -DATA(insert OID = 945 ( int8mod PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8mod _null_ _null_ _null_ )); -DATA(insert OID = 947 ( mod PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8mod _null_ _null_ _null_ )); -DESCR("modulus"); - -DATA(insert OID = 944 ( char PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 18 "25" _null_ _null_ _null_ _null_ _null_ text_char _null_ _null_ _null_ )); -DESCR("convert text to char"); -DATA(insert OID = 946 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "18" _null_ _null_ _null_ _null_ _null_ char_text _null_ _null_ _null_ )); -DESCR("convert char to text"); - -DATA(insert OID = 952 ( lo_open PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 23 "26 23" _null_ _null_ _null_ _null_ _null_ be_lo_open _null_ _null_ _null_ )); -DESCR("large object open"); -DATA(insert OID = 953 ( lo_close PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ be_lo_close _null_ _null_ _null_ )); -DESCR("large object close"); -DATA(insert OID = 954 ( loread PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 17 "23 23" _null_ _null_ _null_ _null_ _null_ be_loread _null_ _null_ _null_ )); -DESCR("large object read"); -DATA(insert OID = 955 ( lowrite PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 23 "23 17" _null_ _null_ _null_ _null_ _null_ be_lowrite _null_ _null_ _null_ )); -DESCR("large object write"); -DATA(insert OID = 956 ( lo_lseek PGNSP PGUID 12 1 0 0 0 f f f t f v u 3 0 23 "23 23 23" _null_ _null_ _null_ _null_ _null_ be_lo_lseek _null_ _null_ _null_ )); -DESCR("large object seek"); -DATA(insert OID = 3170 ( lo_lseek64 PGNSP PGUID 12 1 0 0 0 f f f t f v u 3 0 20 "23 20 23" _null_ _null_ _null_ _null_ _null_ be_lo_lseek64 _null_ _null_ _null_ )); -DESCR("large object seek (64 bit)"); -DATA(insert OID = 957 ( lo_creat PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 26 "23" _null_ _null_ _null_ _null_ _null_ be_lo_creat _null_ _null_ _null_ )); -DESCR("large object create"); -DATA(insert OID = 715 ( lo_create PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 26 "26" _null_ _null_ _null_ _null_ _null_ be_lo_create _null_ _null_ _null_ )); -DESCR("large object create"); -DATA(insert OID = 958 ( lo_tell PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ be_lo_tell _null_ _null_ _null_ )); -DESCR("large object position"); -DATA(insert OID = 3171 ( lo_tell64 PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 20 "23" _null_ _null_ _null_ _null_ _null_ be_lo_tell64 _null_ _null_ _null_ )); -DESCR("large object position (64 bit)"); -DATA(insert OID = 1004 ( lo_truncate PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ be_lo_truncate _null_ _null_ _null_ )); -DESCR("truncate large object"); -DATA(insert OID = 3172 ( lo_truncate64 PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 23 "23 20" _null_ _null_ _null_ _null_ _null_ be_lo_truncate64 _null_ _null_ _null_ )); -DESCR("truncate large object (64 bit)"); - -DATA(insert OID = 3457 ( lo_from_bytea PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 26 "26 17" _null_ _null_ _null_ _null_ _null_ be_lo_from_bytea _null_ _null_ _null_ )); -DESCR("create new large object with given content"); -DATA(insert OID = 3458 ( lo_get PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 17 "26" _null_ _null_ _null_ _null_ _null_ be_lo_get _null_ _null_ _null_ )); -DESCR("read entire large object"); -DATA(insert OID = 3459 ( lo_get PGNSP PGUID 12 1 0 0 0 f f f t f v u 3 0 17 "26 20 23" _null_ _null_ _null_ _null_ _null_ be_lo_get_fragment _null_ _null_ _null_ )); -DESCR("read large object from offset for length"); -DATA(insert OID = 3460 ( lo_put PGNSP PGUID 12 1 0 0 0 f f f t f v u 3 0 2278 "26 20 17" _null_ _null_ _null_ _null_ _null_ be_lo_put _null_ _null_ _null_ )); -DESCR("write data at offset"); - -DATA(insert OID = 959 ( on_pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 628" _null_ _null_ _null_ _null_ _null_ on_pl _null_ _null_ _null_ )); -DATA(insert OID = 960 ( on_sl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "601 628" _null_ _null_ _null_ _null_ _null_ on_sl _null_ _null_ _null_ )); -DATA(insert OID = 961 ( close_pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "600 628" _null_ _null_ _null_ _null_ _null_ close_pl _null_ _null_ _null_ )); -DATA(insert OID = 962 ( close_sl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "601 628" _null_ _null_ _null_ _null_ _null_ close_sl _null_ _null_ _null_ )); -DATA(insert OID = 963 ( close_lb PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "628 603" _null_ _null_ _null_ _null_ _null_ close_lb _null_ _null_ _null_ )); - -DATA(insert OID = 964 ( lo_unlink PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 23 "26" _null_ _null_ _null_ _null_ _null_ be_lo_unlink _null_ _null_ _null_ )); -DESCR("large object unlink (delete)"); - -DATA(insert OID = 973 ( path_inter PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_inter _null_ _null_ _null_ )); -DATA(insert OID = 975 ( area PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "603" _null_ _null_ _null_ _null_ _null_ box_area _null_ _null_ _null_ )); -DESCR("box area"); -DATA(insert OID = 976 ( width PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "603" _null_ _null_ _null_ _null_ _null_ box_width _null_ _null_ _null_ )); -DESCR("box width"); -DATA(insert OID = 977 ( height PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "603" _null_ _null_ _null_ _null_ _null_ box_height _null_ _null_ _null_ )); -DESCR("box height"); -DATA(insert OID = 978 ( box_distance PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "603 603" _null_ _null_ _null_ _null_ _null_ box_distance _null_ _null_ _null_ )); -DATA(insert OID = 979 ( area PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "602" _null_ _null_ _null_ _null_ _null_ path_area _null_ _null_ _null_ )); -DESCR("area of a closed path"); -DATA(insert OID = 980 ( box_intersect PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 603 "603 603" _null_ _null_ _null_ _null_ _null_ box_intersect _null_ _null_ _null_ )); -DATA(insert OID = 4067 ( bound_box PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 603 "603 603" _null_ _null_ _null_ _null_ _null_ boxes_bound_box _null_ _null_ _null_ )); -DESCR("bounding box of two boxes"); -DATA(insert OID = 981 ( diagonal PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 601 "603" _null_ _null_ _null_ _null_ _null_ box_diagonal _null_ _null_ _null_ )); -DESCR("box diagonal"); -DATA(insert OID = 982 ( path_n_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_n_lt _null_ _null_ _null_ )); -DATA(insert OID = 983 ( path_n_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_n_gt _null_ _null_ _null_ )); -DATA(insert OID = 984 ( path_n_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_n_eq _null_ _null_ _null_ )); -DATA(insert OID = 985 ( path_n_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_n_le _null_ _null_ _null_ )); -DATA(insert OID = 986 ( path_n_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "602 602" _null_ _null_ _null_ _null_ _null_ path_n_ge _null_ _null_ _null_ )); -DATA(insert OID = 987 ( path_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "602" _null_ _null_ _null_ _null_ _null_ path_length _null_ _null_ _null_ )); -DATA(insert OID = 988 ( point_ne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_ne _null_ _null_ _null_ )); -DATA(insert OID = 989 ( point_vert PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_vert _null_ _null_ _null_ )); -DATA(insert OID = 990 ( point_horiz PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_horiz _null_ _null_ _null_ )); -DATA(insert OID = 991 ( point_distance PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "600 600" _null_ _null_ _null_ _null_ _null_ point_distance _null_ _null_ _null_ )); -DATA(insert OID = 992 ( slope PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "600 600" _null_ _null_ _null_ _null_ _null_ point_slope _null_ _null_ _null_ )); -DESCR("slope between points"); -DATA(insert OID = 993 ( lseg PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 601 "600 600" _null_ _null_ _null_ _null_ _null_ lseg_construct _null_ _null_ _null_ )); -DESCR("convert points to line segment"); -DATA(insert OID = 994 ( lseg_intersect PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_intersect _null_ _null_ _null_ )); -DATA(insert OID = 995 ( lseg_parallel PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_parallel _null_ _null_ _null_ )); -DATA(insert OID = 996 ( lseg_perp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_perp _null_ _null_ _null_ )); -DATA(insert OID = 997 ( lseg_vertical PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "601" _null_ _null_ _null_ _null_ _null_ lseg_vertical _null_ _null_ _null_ )); -DATA(insert OID = 998 ( lseg_horizontal PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "601" _null_ _null_ _null_ _null_ _null_ lseg_horizontal _null_ _null_ _null_ )); -DATA(insert OID = 999 ( lseg_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_eq _null_ _null_ _null_ )); - -/* OIDS 1000 - 1999 */ - -DATA(insert OID = 3994 ( timestamp_izone_transform PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ timestamp_izone_transform _null_ _null_ _null_ )); -DESCR("transform a time zone adjustment"); -DATA(insert OID = 1026 ( timezone PGNSP PGUID 12 1 0 0 timestamp_izone_transform f f f t f i s 2 0 1114 "1186 1184" _null_ _null_ _null_ _null_ _null_ timestamptz_izone _null_ _null_ _null_ )); -DESCR("adjust timestamp to new time zone"); - -DATA(insert OID = 1031 ( aclitemin PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1033 "2275" _null_ _null_ _null_ _null_ _null_ aclitemin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1032 ( aclitemout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "1033" _null_ _null_ _null_ _null_ _null_ aclitemout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1035 ( aclinsert PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1034 "1034 1033" _null_ _null_ _null_ _null_ _null_ aclinsert _null_ _null_ _null_ )); -DESCR("add/update ACL item"); -DATA(insert OID = 1036 ( aclremove PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1034 "1034 1033" _null_ _null_ _null_ _null_ _null_ aclremove _null_ _null_ _null_ )); -DESCR("remove ACL item"); -DATA(insert OID = 1037 ( aclcontains PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1034 1033" _null_ _null_ _null_ _null_ _null_ aclcontains _null_ _null_ _null_ )); -DESCR("contains"); -DATA(insert OID = 1062 ( aclitemeq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1033 1033" _null_ _null_ _null_ _null_ _null_ aclitem_eq _null_ _null_ _null_ )); -DATA(insert OID = 1365 ( makeaclitem PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 1033 "26 26 25 16" _null_ _null_ _null_ _null_ _null_ makeaclitem _null_ _null_ _null_ )); -DESCR("make ACL item"); -DATA(insert OID = 3943 ( acldefault PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1034 "18 26" _null_ _null_ _null_ _null_ _null_ acldefault_sql _null_ _null_ _null_ )); -DESCR("TODO"); -DATA(insert OID = 1689 ( aclexplode PGNSP PGUID 12 1 10 0 0 f f f t t s s 1 0 2249 "1034" "{1034,26,26,25,16}" "{i,o,o,o,o}" "{acl,grantor,grantee,privilege_type,is_grantable}" _null_ _null_ aclexplode _null_ _null_ _null_ )); -DESCR("convert ACL item array to table, for use by information schema"); -DATA(insert OID = 1044 ( bpcharin PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1042 "2275 26 23" _null_ _null_ _null_ _null_ _null_ bpcharin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1045 ( bpcharout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "1042" _null_ _null_ _null_ _null_ _null_ bpcharout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2913 ( bpchartypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ bpchartypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2914 ( bpchartypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ bpchartypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1046 ( varcharin PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1043 "2275 26 23" _null_ _null_ _null_ _null_ _null_ varcharin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1047 ( varcharout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "1043" _null_ _null_ _null_ _null_ _null_ varcharout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2915 ( varchartypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ varchartypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2916 ( varchartypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ varchartypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1048 ( bpchareq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchareq _null_ _null_ _null_ )); -DATA(insert OID = 1049 ( bpcharlt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpcharlt _null_ _null_ _null_ )); -DATA(insert OID = 1050 ( bpcharle PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpcharle _null_ _null_ _null_ )); -DATA(insert OID = 1051 ( bpchargt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchargt _null_ _null_ _null_ )); -DATA(insert OID = 1052 ( bpcharge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpcharge _null_ _null_ _null_ )); -DATA(insert OID = 1053 ( bpcharne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpcharne _null_ _null_ _null_ )); -DATA(insert OID = 1063 ( bpchar_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1042 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1064 ( bpchar_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1042 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1078 ( bpcharcmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpcharcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3328 ( bpchar_sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ bpchar_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 1080 ( hashbpchar PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1042" _null_ _null_ _null_ _null_ _null_ hashbpchar _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 972 ( hashbpcharextended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "1042 20" _null_ _null_ _null_ _null_ _null_ hashbpcharextended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 1081 ( format_type PGNSP PGUID 12 1 0 0 0 f f f f f s s 2 0 25 "26 23" _null_ _null_ _null_ _null_ _null_ format_type _null_ _null_ _null_ )); -DESCR("format a type oid and atttypmod to canonical SQL"); -DATA(insert OID = 1084 ( date_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1082 "2275" _null_ _null_ _null_ _null_ _null_ date_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1085 ( date_out PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "1082" _null_ _null_ _null_ _null_ _null_ date_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1086 ( date_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_eq _null_ _null_ _null_ )); -DATA(insert OID = 1087 ( date_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_lt _null_ _null_ _null_ )); -DATA(insert OID = 1088 ( date_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_le _null_ _null_ _null_ )); -DATA(insert OID = 1089 ( date_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_gt _null_ _null_ _null_ )); -DATA(insert OID = 1090 ( date_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_ge _null_ _null_ _null_ )); -DATA(insert OID = 1091 ( date_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_ne _null_ _null_ _null_ )); -DATA(insert OID = 1092 ( date_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3136 ( date_sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ date_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 4133 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "1082 1082 1186 16 16" _null_ _null_ _null_ _null_ _null_ in_range_date_interval _null_ _null_ _null_ )); -DESCR("window RANGE support"); - -/* OIDS 1100 - 1199 */ - -DATA(insert OID = 1102 ( time_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_lt _null_ _null_ _null_ )); -DATA(insert OID = 1103 ( time_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_le _null_ _null_ _null_ )); -DATA(insert OID = 1104 ( time_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_gt _null_ _null_ _null_ )); -DATA(insert OID = 1105 ( time_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_ge _null_ _null_ _null_ )); -DATA(insert OID = 1106 ( time_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_ne _null_ _null_ _null_ )); -DATA(insert OID = 1107 ( time_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 1138 ( date_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1082 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1139 ( date_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1082 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1140 ( date_mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1082 1082" _null_ _null_ _null_ _null_ _null_ date_mi _null_ _null_ _null_ )); -DATA(insert OID = 1141 ( date_pli PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1082 "1082 23" _null_ _null_ _null_ _null_ _null_ date_pli _null_ _null_ _null_ )); -DATA(insert OID = 1142 ( date_mii PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1082 "1082 23" _null_ _null_ _null_ _null_ _null_ date_mii _null_ _null_ _null_ )); -DATA(insert OID = 1143 ( time_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 1083 "2275 26 23" _null_ _null_ _null_ _null_ _null_ time_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1144 ( time_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "1083" _null_ _null_ _null_ _null_ _null_ time_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2909 ( timetypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ timetypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2910 ( timetypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ timetypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1145 ( time_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_eq _null_ _null_ _null_ )); - -DATA(insert OID = 1146 ( circle_add_pt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 718 "718 600" _null_ _null_ _null_ _null_ _null_ circle_add_pt _null_ _null_ _null_ )); -DATA(insert OID = 1147 ( circle_sub_pt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 718 "718 600" _null_ _null_ _null_ _null_ _null_ circle_sub_pt _null_ _null_ _null_ )); -DATA(insert OID = 1148 ( circle_mul_pt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 718 "718 600" _null_ _null_ _null_ _null_ _null_ circle_mul_pt _null_ _null_ _null_ )); -DATA(insert OID = 1149 ( circle_div_pt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 718 "718 600" _null_ _null_ _null_ _null_ _null_ circle_div_pt _null_ _null_ _null_ )); - -DATA(insert OID = 1150 ( timestamptz_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 1184 "2275 26 23" _null_ _null_ _null_ _null_ _null_ timestamptz_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1151 ( timestamptz_out PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2907 ( timestamptztypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ timestamptztypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2908 ( timestamptztypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ timestamptztypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1152 ( timestamptz_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_eq _null_ _null_ _null_ )); -DATA(insert OID = 1153 ( timestamptz_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_ne _null_ _null_ _null_ )); -DATA(insert OID = 1154 ( timestamptz_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_lt _null_ _null_ _null_ )); -DATA(insert OID = 1155 ( timestamptz_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_le _null_ _null_ _null_ )); -DATA(insert OID = 1156 ( timestamptz_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_ge _null_ _null_ _null_ )); -DATA(insert OID = 1157 ( timestamptz_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_gt _null_ _null_ _null_ )); -DATA(insert OID = 1158 ( to_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1184 "701" _null_ _null_ _null_ _null_ _null_ float8_timestamptz _null_ _null_ _null_ )); -DESCR("convert UNIX epoch to timestamptz"); -DATA(insert OID = 3995 ( timestamp_zone_transform PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ timestamp_zone_transform _null_ _null_ _null_ )); -DESCR("transform a time zone adjustment"); -DATA(insert OID = 1159 ( timezone PGNSP PGUID 12 1 0 0 timestamp_zone_transform f f f t f i s 2 0 1114 "25 1184" _null_ _null_ _null_ _null_ _null_ timestamptz_zone _null_ _null_ _null_ )); -DESCR("adjust timestamp to new time zone"); - -DATA(insert OID = 1160 ( interval_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 1186 "2275 26 23" _null_ _null_ _null_ _null_ _null_ interval_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1161 ( interval_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "1186" _null_ _null_ _null_ _null_ _null_ interval_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2903 ( intervaltypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ intervaltypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2904 ( intervaltypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ intervaltypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1162 ( interval_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_eq _null_ _null_ _null_ )); -DATA(insert OID = 1163 ( interval_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_ne _null_ _null_ _null_ )); -DATA(insert OID = 1164 ( interval_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_lt _null_ _null_ _null_ )); -DATA(insert OID = 1165 ( interval_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_le _null_ _null_ _null_ )); -DATA(insert OID = 1166 ( interval_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_ge _null_ _null_ _null_ )); -DATA(insert OID = 1167 ( interval_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_gt _null_ _null_ _null_ )); -DATA(insert OID = 1168 ( interval_um PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ interval_um _null_ _null_ _null_ )); -DATA(insert OID = 1169 ( interval_pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_pl _null_ _null_ _null_ )); -DATA(insert OID = 1170 ( interval_mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_mi _null_ _null_ _null_ )); -DATA(insert OID = 1171 ( date_part PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 701 "25 1184" _null_ _null_ _null_ _null_ _null_ timestamptz_part _null_ _null_ _null_ )); -DESCR("extract field from timestamp with time zone"); -DATA(insert OID = 1172 ( date_part PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "25 1186" _null_ _null_ _null_ _null_ _null_ interval_part _null_ _null_ _null_ )); -DESCR("extract field from interval"); -DATA(insert OID = 1173 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1184 "702" _null_ _null_ _null_ _null_ _null_ abstime_timestamptz _null_ _null_ _null_ )); -DESCR("convert abstime to timestamp with time zone"); -DATA(insert OID = 1174 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1184 "1082" _null_ _null_ _null_ _null_ _null_ date_timestamptz _null_ _null_ _null_ )); -DESCR("convert date to timestamp with time zone"); -DATA(insert OID = 2711 ( justify_interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ interval_justify_interval _null_ _null_ _null_ )); -DESCR("promote groups of 24 hours to numbers of days and promote groups of 30 days to numbers of months"); -DATA(insert OID = 1175 ( justify_hours PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ interval_justify_hours _null_ _null_ _null_ )); -DESCR("promote groups of 24 hours to numbers of days"); -DATA(insert OID = 1295 ( justify_days PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ interval_justify_days _null_ _null_ _null_ )); -DESCR("promote groups of 30 days to numbers of months"); -DATA(insert OID = 1176 ( timestamptz PGNSP PGUID 14 1 0 0 0 f f f t f s s 2 0 1184 "1082 1083" _null_ _null_ _null_ _null_ _null_ "select cast(($1 + $2) as timestamp with time zone)" _null_ _null_ _null_ )); -DESCR("convert date and time to timestamp with time zone"); -DATA(insert OID = 1177 ( interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1186 "703" _null_ _null_ _null_ _null_ _null_ reltime_interval _null_ _null_ _null_ )); -DESCR("convert reltime to interval"); -DATA(insert OID = 1178 ( date PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1082 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_date _null_ _null_ _null_ )); -DESCR("convert timestamp with time zone to date"); -DATA(insert OID = 1179 ( date PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1082 "702" _null_ _null_ _null_ _null_ _null_ abstime_date _null_ _null_ _null_ )); -DESCR("convert abstime to date"); -DATA(insert OID = 1180 ( abstime PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 702 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_abstime _null_ _null_ _null_ )); -DESCR("convert timestamp with time zone to abstime"); -DATA(insert OID = 1181 ( age PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 23 "28" _null_ _null_ _null_ _null_ _null_ xid_age _null_ _null_ _null_ )); -DESCR("age of a transaction ID, in transactions before current transaction"); -DATA(insert OID = 3939 ( mxid_age PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 23 "28" _null_ _null_ _null_ _null_ _null_ mxid_age _null_ _null_ _null_ )); -DESCR("age of a multi-transaction ID, in multi-transactions before current multi-transaction"); - -DATA(insert OID = 1188 ( timestamptz_mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_mi _null_ _null_ _null_ )); -DATA(insert OID = 1189 ( timestamptz_pl_interval PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 1184 "1184 1186" _null_ _null_ _null_ _null_ _null_ timestamptz_pl_interval _null_ _null_ _null_ )); -DATA(insert OID = 1190 ( timestamptz_mi_interval PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 1184 "1184 1186" _null_ _null_ _null_ _null_ _null_ timestamptz_mi_interval _null_ _null_ _null_ )); -DATA(insert OID = 1194 ( reltime PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 703 "1186" _null_ _null_ _null_ _null_ _null_ interval_reltime _null_ _null_ _null_ )); -DESCR("convert interval to reltime"); -DATA(insert OID = 1195 ( timestamptz_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1184 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1196 ( timestamptz_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1184 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1197 ( interval_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1198 ( interval_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1199 ( age PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamptz_age _null_ _null_ _null_ )); -DESCR("date difference preserving months and years"); - -/* OIDS 1200 - 1299 */ - -DATA(insert OID = 3918 ( interval_transform PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ interval_transform _null_ _null_ _null_ )); -DESCR("transform an interval length coercion"); -DATA(insert OID = 1200 ( interval PGNSP PGUID 12 1 0 0 interval_transform f f f t f i s 2 0 1186 "1186 23" _null_ _null_ _null_ _null_ _null_ interval_scale _null_ _null_ _null_ )); -DESCR("adjust interval precision"); - -DATA(insert OID = 1215 ( obj_description PGNSP PGUID 14 100 0 0 0 f f f t f s s 2 0 25 "26 19" _null_ _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP) and objsubid = 0" _null_ _null_ _null_ )); -DESCR("get description for object id and catalog name"); -DATA(insert OID = 1216 ( col_description PGNSP PGUID 14 100 0 0 0 f f f t f s s 2 0 25 "26 23" _null_ _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and classoid = ''pg_catalog.pg_class''::pg_catalog.regclass and objsubid = $2" _null_ _null_ _null_ )); -DESCR("get description for table column"); -DATA(insert OID = 1993 ( shobj_description PGNSP PGUID 14 100 0 0 0 f f f t f s s 2 0 25 "26 19" _null_ _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_shdescription where objoid = $1 and classoid = (select oid from pg_catalog.pg_class where relname = $2 and relnamespace = PGNSP)" _null_ _null_ _null_ )); -DESCR("get description for object id and shared catalog name"); - -DATA(insert OID = 1217 ( date_trunc PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 1184 "25 1184" _null_ _null_ _null_ _null_ _null_ timestamptz_trunc _null_ _null_ _null_ )); -DESCR("truncate timestamp with time zone to specified units"); -DATA(insert OID = 1218 ( date_trunc PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "25 1186" _null_ _null_ _null_ _null_ _null_ interval_trunc _null_ _null_ _null_ )); -DESCR("truncate interval to specified units"); - -DATA(insert OID = 1219 ( int8inc PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8inc _null_ _null_ _null_ )); -DESCR("increment"); -DATA(insert OID = 3546 ( int8dec PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8dec _null_ _null_ _null_ )); -DESCR("decrement"); -DATA(insert OID = 2804 ( int8inc_any PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 2276" _null_ _null_ _null_ _null_ _null_ int8inc_any _null_ _null_ _null_ )); -DESCR("increment, ignores second argument"); -DATA(insert OID = 3547 ( int8dec_any PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 2276" _null_ _null_ _null_ _null_ _null_ int8dec_any _null_ _null_ _null_ )); -DESCR("decrement, ignores second argument"); -DATA(insert OID = 1230 ( int8abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8abs _null_ _null_ _null_ )); - -DATA(insert OID = 1236 ( int8larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1237 ( int8smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 1238 ( texticregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ texticregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1239 ( texticregexne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ texticregexne _null_ _null_ _null_ )); -DATA(insert OID = 1240 ( nameicregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameicregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1241 ( nameicregexne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameicregexne _null_ _null_ _null_ )); - -DATA(insert OID = 1251 ( int4abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4abs _null_ _null_ _null_ )); -DATA(insert OID = 1253 ( int2abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ int2abs _null_ _null_ _null_ )); - -DATA(insert OID = 1271 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f i s 4 0 16 "1266 1266 1266 1266" _null_ _null_ _null_ _null_ _null_ overlaps_timetz _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1272 ( datetime_pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1114 "1082 1083" _null_ _null_ _null_ _null_ _null_ datetime_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 1273 ( date_part PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "25 1266" _null_ _null_ _null_ _null_ _null_ timetz_part _null_ _null_ _null_ )); -DESCR("extract field from time with time zone"); -DATA(insert OID = 1274 ( int84pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int84pl _null_ _null_ _null_ )); -DATA(insert OID = 1275 ( int84mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int84mi _null_ _null_ _null_ )); -DATA(insert OID = 1276 ( int84mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int84mul _null_ _null_ _null_ )); -DATA(insert OID = 1277 ( int84div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int84div _null_ _null_ _null_ )); -DATA(insert OID = 1278 ( int48pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "23 20" _null_ _null_ _null_ _null_ _null_ int48pl _null_ _null_ _null_ )); -DATA(insert OID = 1279 ( int48mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "23 20" _null_ _null_ _null_ _null_ _null_ int48mi _null_ _null_ _null_ )); -DATA(insert OID = 1280 ( int48mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "23 20" _null_ _null_ _null_ _null_ _null_ int48mul _null_ _null_ _null_ )); -DATA(insert OID = 1281 ( int48div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "23 20" _null_ _null_ _null_ _null_ _null_ int48div _null_ _null_ _null_ )); - -DATA(insert OID = 837 ( int82pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 21" _null_ _null_ _null_ _null_ _null_ int82pl _null_ _null_ _null_ )); -DATA(insert OID = 838 ( int82mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 21" _null_ _null_ _null_ _null_ _null_ int82mi _null_ _null_ _null_ )); -DATA(insert OID = 839 ( int82mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 21" _null_ _null_ _null_ _null_ _null_ int82mul _null_ _null_ _null_ )); -DATA(insert OID = 840 ( int82div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 21" _null_ _null_ _null_ _null_ _null_ int82div _null_ _null_ _null_ )); -DATA(insert OID = 841 ( int28pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "21 20" _null_ _null_ _null_ _null_ _null_ int28pl _null_ _null_ _null_ )); -DATA(insert OID = 942 ( int28mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "21 20" _null_ _null_ _null_ _null_ _null_ int28mi _null_ _null_ _null_ )); -DATA(insert OID = 943 ( int28mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "21 20" _null_ _null_ _null_ _null_ _null_ int28mul _null_ _null_ _null_ )); -DATA(insert OID = 948 ( int28div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "21 20" _null_ _null_ _null_ _null_ _null_ int28div _null_ _null_ _null_ )); - -DATA(insert OID = 1287 ( oid PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 26 "20" _null_ _null_ _null_ _null_ _null_ i8tooid _null_ _null_ _null_ )); -DESCR("convert int8 to oid"); -DATA(insert OID = 1288 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ oidtoi8 _null_ _null_ _null_ )); -DESCR("convert oid to int8"); - -DATA(insert OID = 1291 ( suppress_redundant_updates_trigger PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ suppress_redundant_updates_trigger _null_ _null_ _null_ )); -DESCR("trigger to suppress updates when new and old records match"); - -DATA(insert OID = 1292 ( tideq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tideq _null_ _null_ _null_ )); -DATA(insert OID = 1293 ( currtid PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 27 "26 27" _null_ _null_ _null_ _null_ _null_ currtid_byreloid _null_ _null_ _null_ )); -DESCR("latest tid of a tuple"); -DATA(insert OID = 1294 ( currtid2 PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 27 "25 27" _null_ _null_ _null_ _null_ _null_ currtid_byrelname _null_ _null_ _null_ )); -DESCR("latest tid of a tuple"); -DATA(insert OID = 1265 ( tidne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tidne _null_ _null_ _null_ )); -DATA(insert OID = 2790 ( tidgt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tidgt _null_ _null_ _null_ )); -DATA(insert OID = 2791 ( tidlt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tidlt _null_ _null_ _null_ )); -DATA(insert OID = 2792 ( tidge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tidge _null_ _null_ _null_ )); -DATA(insert OID = 2793 ( tidle PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "27 27" _null_ _null_ _null_ _null_ _null_ tidle _null_ _null_ _null_ )); -DATA(insert OID = 2794 ( bttidcmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "27 27" _null_ _null_ _null_ _null_ _null_ bttidcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2795 ( tidlarger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 27 "27 27" _null_ _null_ _null_ _null_ _null_ tidlarger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 2796 ( tidsmaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 27 "27 27" _null_ _null_ _null_ _null_ _null_ tidsmaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 1296 ( timedate_pl PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 1114 "1083 1082" _null_ _null_ _null_ _null_ _null_ "select ($2 + $1)" _null_ _null_ _null_ )); -DATA(insert OID = 1297 ( datetimetz_pl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1184 "1082 1266" _null_ _null_ _null_ _null_ _null_ datetimetz_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 1298 ( timetzdate_pl PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 1184 "1266 1082" _null_ _null_ _null_ _null_ _null_ "select ($2 + $1)" _null_ _null_ _null_ )); -DATA(insert OID = 1299 ( now PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ now _null_ _null_ _null_ )); -DESCR("current transaction time"); -DATA(insert OID = 2647 ( transaction_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ now _null_ _null_ _null_ )); -DESCR("current transaction time"); -DATA(insert OID = 2648 ( statement_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ statement_timestamp _null_ _null_ _null_ )); -DESCR("current statement time"); -DATA(insert OID = 2649 ( clock_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ clock_timestamp _null_ _null_ _null_ )); -DESCR("current clock time"); - -/* OIDS 1300 - 1399 */ - -DATA(insert OID = 1300 ( positionsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ positionsel _null_ _null_ _null_ )); -DESCR("restriction selectivity for position-comparison operators"); -DATA(insert OID = 1301 ( positionjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ positionjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity for position-comparison operators"); -DATA(insert OID = 1302 ( contsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ contsel _null_ _null_ _null_ )); -DESCR("restriction selectivity for containment comparison operators"); -DATA(insert OID = 1303 ( contjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ contjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity for containment comparison operators"); - -DATA(insert OID = 1304 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f i s 4 0 16 "1184 1184 1184 1184" _null_ _null_ _null_ _null_ _null_ overlaps_timestamp _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1305 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f s s 4 0 16 "1184 1186 1184 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1306 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f s s 4 0 16 "1184 1184 1184 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1307 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f s s 4 0 16 "1184 1186 1184 1184" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); - -DATA(insert OID = 1308 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f i s 4 0 16 "1083 1083 1083 1083" _null_ _null_ _null_ _null_ _null_ overlaps_time _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1309 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i s 4 0 16 "1083 1186 1083 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1310 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i s 4 0 16 "1083 1083 1083 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 1311 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i s 4 0 16 "1083 1186 1083 1083" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); - -DATA(insert OID = 1312 ( timestamp_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 1114 "2275 26 23" _null_ _null_ _null_ _null_ _null_ timestamp_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1313 ( timestamp_out PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2905 ( timestamptypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ timestamptypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2906 ( timestamptypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ timestamptypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1314 ( timestamptz_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1184 1184" _null_ _null_ _null_ _null_ _null_ timestamp_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 1315 ( interval_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1186 1186" _null_ _null_ _null_ _null_ _null_ interval_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 1316 ( time PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1083 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_time _null_ _null_ _null_ )); -DESCR("convert timestamp to time"); - -DATA(insert OID = 1317 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ )); -DESCR("length"); -DATA(insert OID = 1318 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1042" _null_ _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ )); -DESCR("character length"); - -DATA(insert OID = 1319 ( xideqint4 PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "28 23" _null_ _null_ _null_ _null_ _null_ xideq _null_ _null_ _null_ )); -DATA(insert OID = 3309 ( xidneqint4 PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "28 23" _null_ _null_ _null_ _null_ _null_ xidneq _null_ _null_ _null_ )); - -DATA(insert OID = 1326 ( interval_div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "1186 701" _null_ _null_ _null_ _null_ _null_ interval_div _null_ _null_ _null_ )); - -DATA(insert OID = 1339 ( dlog10 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dlog10 _null_ _null_ _null_ )); -DESCR("base 10 logarithm"); -DATA(insert OID = 1340 ( log PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dlog10 _null_ _null_ _null_ )); -DESCR("base 10 logarithm"); -DATA(insert OID = 1341 ( ln PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dlog1 _null_ _null_ _null_ )); -DESCR("natural logarithm"); -DATA(insert OID = 1342 ( round PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dround _null_ _null_ _null_ )); -DESCR("round to nearest integer"); -DATA(insert OID = 1343 ( trunc PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dtrunc _null_ _null_ _null_ )); -DESCR("truncate to integer"); -DATA(insert OID = 1344 ( sqrt PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dsqrt _null_ _null_ _null_ )); -DESCR("square root"); -DATA(insert OID = 1345 ( cbrt PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcbrt _null_ _null_ _null_ )); -DESCR("cube root"); -DATA(insert OID = 1346 ( pow PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ )); -DESCR("exponentiation"); -DATA(insert OID = 1368 ( power PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ dpow _null_ _null_ _null_ )); -DESCR("exponentiation"); -DATA(insert OID = 1347 ( exp PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dexp _null_ _null_ _null_ )); -DESCR("natural exponential (e^x)"); - -/* - * This form of obj_description is now deprecated, since it will fail if - * OIDs are not unique across system catalogs. Use the other form instead. - */ -DATA(insert OID = 1348 ( obj_description PGNSP PGUID 14 100 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ "select description from pg_catalog.pg_description where objoid = $1 and objsubid = 0" _null_ _null_ _null_ )); -DESCR("deprecated, use two-argument form instead"); -DATA(insert OID = 1349 ( oidvectortypes PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "30" _null_ _null_ _null_ _null_ _null_ oidvectortypes _null_ _null_ _null_ )); -DESCR("print type names of oidvector field"); - - -DATA(insert OID = 1350 ( timetz_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 1266 "2275 26 23" _null_ _null_ _null_ _null_ _null_ timetz_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1351 ( timetz_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "1266" _null_ _null_ _null_ _null_ _null_ timetz_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2911 ( timetztypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ timetztypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2912 ( timetztypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ timetztypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 1352 ( timetz_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_eq _null_ _null_ _null_ )); -DATA(insert OID = 1353 ( timetz_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_ne _null_ _null_ _null_ )); -DATA(insert OID = 1354 ( timetz_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_lt _null_ _null_ _null_ )); -DATA(insert OID = 1355 ( timetz_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_le _null_ _null_ _null_ )); -DATA(insert OID = 1356 ( timetz_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_ge _null_ _null_ _null_ )); -DATA(insert OID = 1357 ( timetz_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_gt _null_ _null_ _null_ )); -DATA(insert OID = 1358 ( timetz_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 1359 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1184 "1082 1266" _null_ _null_ _null_ _null_ _null_ datetimetz_timestamptz _null_ _null_ _null_ )); -DESCR("convert date and time with time zone to timestamp with time zone"); - -DATA(insert OID = 1364 ( time PGNSP PGUID 14 1 0 0 0 f f f t f s s 1 0 1083 "702" _null_ _null_ _null_ _null_ _null_ "select cast(cast($1 as timestamp without time zone) as pg_catalog.time)" _null_ _null_ _null_ )); -DESCR("convert abstime to time"); - -DATA(insert OID = 1367 ( character_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1042" _null_ _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ )); -DESCR("character length"); -DATA(insert OID = 1369 ( character_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ )); -DESCR("character length"); - -DATA(insert OID = 1370 ( interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1186 "1083" _null_ _null_ _null_ _null_ _null_ time_interval _null_ _null_ _null_ )); -DESCR("convert time to interval"); -DATA(insert OID = 1372 ( char_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1042" _null_ _null_ _null_ _null_ _null_ bpcharlen _null_ _null_ _null_ )); -DESCR("character length"); -DATA(insert OID = 1374 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ textoctetlen _null_ _null_ _null_ )); -DESCR("octet length"); -DATA(insert OID = 1375 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1042" _null_ _null_ _null_ _null_ _null_ bpcharoctetlen _null_ _null_ _null_ )); -DESCR("octet length"); - -DATA(insert OID = 1377 ( time_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1083 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1378 ( time_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1083 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1379 ( timetz_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1266 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1380 ( timetz_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1266 "1266 1266" _null_ _null_ _null_ _null_ _null_ timetz_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 1381 ( char_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ textlen _null_ _null_ _null_ )); -DESCR("character length"); - -DATA(insert OID = 1382 ( date_part PGNSP PGUID 14 1 0 0 0 f f f t f s s 2 0 701 "25 702" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as timestamp with time zone))" _null_ _null_ _null_ )); -DESCR("extract field from abstime"); -DATA(insert OID = 1383 ( date_part PGNSP PGUID 14 1 0 0 0 f f f t f s s 2 0 701 "25 703" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as pg_catalog.interval))" _null_ _null_ _null_ )); -DESCR("extract field from reltime"); -DATA(insert OID = 1384 ( date_part PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 701 "25 1082" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.date_part($1, cast($2 as timestamp without time zone))" _null_ _null_ _null_ )); -DESCR("extract field from date"); -DATA(insert OID = 1385 ( date_part PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "25 1083" _null_ _null_ _null_ _null_ _null_ time_part _null_ _null_ _null_ )); -DESCR("extract field from time"); -DATA(insert OID = 1386 ( age PGNSP PGUID 14 1 0 0 0 f f f t f s s 1 0 1186 "1184" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.age(cast(current_date as timestamp with time zone), $1)" _null_ _null_ _null_ )); -DESCR("date difference from today preserving months and years"); - -DATA(insert OID = 1388 ( timetz PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1266 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_timetz _null_ _null_ _null_ )); -DESCR("convert timestamp with time zone to time with time zone"); - -DATA(insert OID = 1373 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "1082" _null_ _null_ _null_ _null_ _null_ date_finite _null_ _null_ _null_ )); -DESCR("finite date?"); -DATA(insert OID = 1389 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "1184" _null_ _null_ _null_ _null_ _null_ timestamp_finite _null_ _null_ _null_ )); -DESCR("finite timestamp?"); -DATA(insert OID = 1390 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "1186" _null_ _null_ _null_ _null_ _null_ interval_finite _null_ _null_ _null_ )); -DESCR("finite interval?"); - - -DATA(insert OID = 1376 ( factorial PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ numeric_fac _null_ _null_ _null_ )); -DESCR("factorial"); -DATA(insert OID = 1394 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ float4abs _null_ _null_ _null_ )); -DESCR("absolute value"); -DATA(insert OID = 1395 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ float8abs _null_ _null_ _null_ )); -DESCR("absolute value"); -DATA(insert OID = 1396 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8abs _null_ _null_ _null_ )); -DESCR("absolute value"); -DATA(insert OID = 1397 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4abs _null_ _null_ _null_ )); -DESCR("absolute value"); -DATA(insert OID = 1398 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ int2abs _null_ _null_ _null_ )); -DESCR("absolute value"); - -/* OIDS 1400 - 1499 */ - -DATA(insert OID = 1400 ( name PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 19 "1043" _null_ _null_ _null_ _null_ _null_ text_name _null_ _null_ _null_ )); -DESCR("convert varchar to name"); -DATA(insert OID = 1401 ( varchar PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1043 "19" _null_ _null_ _null_ _null_ _null_ name_text _null_ _null_ _null_ )); -DESCR("convert name to varchar"); - -DATA(insert OID = 1402 ( current_schema PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ current_schema _null_ _null_ _null_ )); -DESCR("current schema name"); -DATA(insert OID = 1403 ( current_schemas PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1003 "16" _null_ _null_ _null_ _null_ _null_ current_schemas _null_ _null_ _null_ )); -DESCR("current schema search list"); - -DATA(insert OID = 1404 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 25 "25 25 23 23" _null_ _null_ _null_ _null_ _null_ textoverlay _null_ _null_ _null_ )); -DESCR("substitute portion of string"); -DATA(insert OID = 1405 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 25 "25 25 23" _null_ _null_ _null_ _null_ _null_ textoverlay_no_len _null_ _null_ _null_ )); -DESCR("substitute portion of string"); - -DATA(insert OID = 1406 ( isvertical PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_vert _null_ _null_ _null_ )); -DESCR("vertically aligned"); -DATA(insert OID = 1407 ( ishorizontal PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 600" _null_ _null_ _null_ _null_ _null_ point_horiz _null_ _null_ _null_ )); -DESCR("horizontally aligned"); -DATA(insert OID = 1408 ( isparallel PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_parallel _null_ _null_ _null_ )); -DESCR("parallel"); -DATA(insert OID = 1409 ( isperp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_perp _null_ _null_ _null_ )); -DESCR("perpendicular"); -DATA(insert OID = 1410 ( isvertical PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "601" _null_ _null_ _null_ _null_ _null_ lseg_vertical _null_ _null_ _null_ )); -DESCR("vertical"); -DATA(insert OID = 1411 ( ishorizontal PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "601" _null_ _null_ _null_ _null_ _null_ lseg_horizontal _null_ _null_ _null_ )); -DESCR("horizontal"); -DATA(insert OID = 1412 ( isparallel PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_parallel _null_ _null_ _null_ )); -DESCR("parallel"); -DATA(insert OID = 1413 ( isperp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_perp _null_ _null_ _null_ )); -DESCR("perpendicular"); -DATA(insert OID = 1414 ( isvertical PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "628" _null_ _null_ _null_ _null_ _null_ line_vertical _null_ _null_ _null_ )); -DESCR("vertical"); -DATA(insert OID = 1415 ( ishorizontal PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "628" _null_ _null_ _null_ _null_ _null_ line_horizontal _null_ _null_ _null_ )); -DESCR("horizontal"); -DATA(insert OID = 1416 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "718" _null_ _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ )); -DESCR("center of"); - -DATA(insert OID = 1419 ( time PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1083 "1186" _null_ _null_ _null_ _null_ _null_ interval_time _null_ _null_ _null_ )); -DESCR("convert interval to time"); - -DATA(insert OID = 1421 ( box PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 603 "600 600" _null_ _null_ _null_ _null_ _null_ points_box _null_ _null_ _null_ )); -DESCR("convert points to box"); -DATA(insert OID = 1422 ( box_add PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 603 "603 600" _null_ _null_ _null_ _null_ _null_ box_add _null_ _null_ _null_ )); -DATA(insert OID = 1423 ( box_sub PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 603 "603 600" _null_ _null_ _null_ _null_ _null_ box_sub _null_ _null_ _null_ )); -DATA(insert OID = 1424 ( box_mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 603 "603 600" _null_ _null_ _null_ _null_ _null_ box_mul _null_ _null_ _null_ )); -DATA(insert OID = 1425 ( box_div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 603 "603 600" _null_ _null_ _null_ _null_ _null_ box_div _null_ _null_ _null_ )); -DATA(insert OID = 1426 ( path_contain_pt PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 16 "602 600" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.on_ppath($2, $1)" _null_ _null_ _null_ )); -DATA(insert OID = 1428 ( poly_contain_pt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 600" _null_ _null_ _null_ _null_ _null_ poly_contain_pt _null_ _null_ _null_ )); -DATA(insert OID = 1429 ( pt_contained_poly PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 604" _null_ _null_ _null_ _null_ _null_ pt_contained_poly _null_ _null_ _null_ )); - -DATA(insert OID = 1430 ( isclosed PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "602" _null_ _null_ _null_ _null_ _null_ path_isclosed _null_ _null_ _null_ )); -DESCR("path closed?"); -DATA(insert OID = 1431 ( isopen PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "602" _null_ _null_ _null_ _null_ _null_ path_isopen _null_ _null_ _null_ )); -DESCR("path open?"); -DATA(insert OID = 1432 ( path_npoints PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "602" _null_ _null_ _null_ _null_ _null_ path_npoints _null_ _null_ _null_ )); - -/* pclose and popen might better be named close and open, but that crashes initdb. - * - thomas 97/04/20 - */ - -DATA(insert OID = 1433 ( pclose PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 602 "602" _null_ _null_ _null_ _null_ _null_ path_close _null_ _null_ _null_ )); -DESCR("close path"); -DATA(insert OID = 1434 ( popen PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 602 "602" _null_ _null_ _null_ _null_ _null_ path_open _null_ _null_ _null_ )); -DESCR("open path"); -DATA(insert OID = 1435 ( path_add PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 602 "602 602" _null_ _null_ _null_ _null_ _null_ path_add _null_ _null_ _null_ )); -DATA(insert OID = 1436 ( path_add_pt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 602 "602 600" _null_ _null_ _null_ _null_ _null_ path_add_pt _null_ _null_ _null_ )); -DATA(insert OID = 1437 ( path_sub_pt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 602 "602 600" _null_ _null_ _null_ _null_ _null_ path_sub_pt _null_ _null_ _null_ )); -DATA(insert OID = 1438 ( path_mul_pt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 602 "602 600" _null_ _null_ _null_ _null_ _null_ path_mul_pt _null_ _null_ _null_ )); -DATA(insert OID = 1439 ( path_div_pt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 602 "602 600" _null_ _null_ _null_ _null_ _null_ path_div_pt _null_ _null_ _null_ )); - -DATA(insert OID = 1440 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "701 701" _null_ _null_ _null_ _null_ _null_ construct_point _null_ _null_ _null_ )); -DESCR("convert x, y to point"); -DATA(insert OID = 1441 ( point_add PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "600 600" _null_ _null_ _null_ _null_ _null_ point_add _null_ _null_ _null_ )); -DATA(insert OID = 1442 ( point_sub PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "600 600" _null_ _null_ _null_ _null_ _null_ point_sub _null_ _null_ _null_ )); -DATA(insert OID = 1443 ( point_mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "600 600" _null_ _null_ _null_ _null_ _null_ point_mul _null_ _null_ _null_ )); -DATA(insert OID = 1444 ( point_div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "600 600" _null_ _null_ _null_ _null_ _null_ point_div _null_ _null_ _null_ )); - -DATA(insert OID = 1445 ( poly_npoints PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "604" _null_ _null_ _null_ _null_ _null_ poly_npoints _null_ _null_ _null_ )); -DATA(insert OID = 1446 ( box PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 603 "604" _null_ _null_ _null_ _null_ _null_ poly_box _null_ _null_ _null_ )); -DESCR("convert polygon to bounding box"); -DATA(insert OID = 1447 ( path PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 602 "604" _null_ _null_ _null_ _null_ _null_ poly_path _null_ _null_ _null_ )); -DESCR("convert polygon to path"); -DATA(insert OID = 1448 ( polygon PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 604 "603" _null_ _null_ _null_ _null_ _null_ box_poly _null_ _null_ _null_ )); -DESCR("convert box to polygon"); -DATA(insert OID = 1449 ( polygon PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 604 "602" _null_ _null_ _null_ _null_ _null_ path_poly _null_ _null_ _null_ )); -DESCR("convert path to polygon"); - -DATA(insert OID = 1450 ( circle_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 718 "2275" _null_ _null_ _null_ _null_ _null_ circle_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1451 ( circle_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "718" _null_ _null_ _null_ _null_ _null_ circle_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1452 ( circle_same PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_same _null_ _null_ _null_ )); -DATA(insert OID = 1453 ( circle_contain PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_contain _null_ _null_ _null_ )); -DATA(insert OID = 1454 ( circle_left PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_left _null_ _null_ _null_ )); -DATA(insert OID = 1455 ( circle_overleft PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_overleft _null_ _null_ _null_ )); -DATA(insert OID = 1456 ( circle_overright PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_overright _null_ _null_ _null_ )); -DATA(insert OID = 1457 ( circle_right PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_right _null_ _null_ _null_ )); -DATA(insert OID = 1458 ( circle_contained PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_contained _null_ _null_ _null_ )); -DATA(insert OID = 1459 ( circle_overlap PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_overlap _null_ _null_ _null_ )); -DATA(insert OID = 1460 ( circle_below PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_below _null_ _null_ _null_ )); -DATA(insert OID = 1461 ( circle_above PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_above _null_ _null_ _null_ )); -DATA(insert OID = 1462 ( circle_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_eq _null_ _null_ _null_ )); -DATA(insert OID = 1463 ( circle_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_ne _null_ _null_ _null_ )); -DATA(insert OID = 1464 ( circle_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_lt _null_ _null_ _null_ )); -DATA(insert OID = 1465 ( circle_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_gt _null_ _null_ _null_ )); -DATA(insert OID = 1466 ( circle_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_le _null_ _null_ _null_ )); -DATA(insert OID = 1467 ( circle_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_ge _null_ _null_ _null_ )); -DATA(insert OID = 1468 ( area PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "718" _null_ _null_ _null_ _null_ _null_ circle_area _null_ _null_ _null_ )); -DESCR("area of circle"); -DATA(insert OID = 1469 ( diameter PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "718" _null_ _null_ _null_ _null_ _null_ circle_diameter _null_ _null_ _null_ )); -DESCR("diameter of circle"); -DATA(insert OID = 1470 ( radius PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "718" _null_ _null_ _null_ _null_ _null_ circle_radius _null_ _null_ _null_ )); -DESCR("radius of circle"); -DATA(insert OID = 1471 ( circle_distance PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "718 718" _null_ _null_ _null_ _null_ _null_ circle_distance _null_ _null_ _null_ )); -DATA(insert OID = 1472 ( circle_center PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "718" _null_ _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ )); -DATA(insert OID = 1473 ( circle PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 718 "600 701" _null_ _null_ _null_ _null_ _null_ cr_circle _null_ _null_ _null_ )); -DESCR("convert point and radius to circle"); -DATA(insert OID = 1474 ( circle PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 718 "604" _null_ _null_ _null_ _null_ _null_ poly_circle _null_ _null_ _null_ )); -DESCR("convert polygon to circle"); -DATA(insert OID = 1475 ( polygon PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 604 "23 718" _null_ _null_ _null_ _null_ _null_ circle_poly _null_ _null_ _null_ )); -DESCR("convert vertex count and circle to polygon"); -DATA(insert OID = 1476 ( dist_pc PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "600 718" _null_ _null_ _null_ _null_ _null_ dist_pc _null_ _null_ _null_ )); -DATA(insert OID = 1477 ( circle_contain_pt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 600" _null_ _null_ _null_ _null_ _null_ circle_contain_pt _null_ _null_ _null_ )); -DATA(insert OID = 1478 ( pt_contained_circle PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "600 718" _null_ _null_ _null_ _null_ _null_ pt_contained_circle _null_ _null_ _null_ )); -DATA(insert OID = 4091 ( box PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 603 "600" _null_ _null_ _null_ _null_ _null_ point_box _null_ _null_ _null_ )); -DESCR("convert point to empty box"); -DATA(insert OID = 1479 ( circle PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 718 "603" _null_ _null_ _null_ _null_ _null_ box_circle _null_ _null_ _null_ )); -DESCR("convert box to circle"); -DATA(insert OID = 1480 ( box PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 603 "718" _null_ _null_ _null_ _null_ _null_ circle_box _null_ _null_ _null_ )); -DESCR("convert circle to box"); -DATA(insert OID = 1481 ( tinterval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 704 "702 702" _null_ _null_ _null_ _null_ _null_ mktinterval _null_ _null_ _null_ )); -DESCR("convert to tinterval"); - -DATA(insert OID = 1482 ( lseg_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_ne _null_ _null_ _null_ )); -DATA(insert OID = 1483 ( lseg_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_lt _null_ _null_ _null_ )); -DATA(insert OID = 1484 ( lseg_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_le _null_ _null_ _null_ )); -DATA(insert OID = 1485 ( lseg_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_gt _null_ _null_ _null_ )); -DATA(insert OID = 1486 ( lseg_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "601 601" _null_ _null_ _null_ _null_ _null_ lseg_ge _null_ _null_ _null_ )); -DATA(insert OID = 1487 ( lseg_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "601" _null_ _null_ _null_ _null_ _null_ lseg_length _null_ _null_ _null_ )); -DATA(insert OID = 1488 ( close_ls PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "628 601" _null_ _null_ _null_ _null_ _null_ close_ls _null_ _null_ _null_ )); -DATA(insert OID = 1489 ( close_lseg PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "601 601" _null_ _null_ _null_ _null_ _null_ close_lseg _null_ _null_ _null_ )); - -DATA(insert OID = 1490 ( line_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 628 "2275" _null_ _null_ _null_ _null_ _null_ line_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1491 ( line_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "628" _null_ _null_ _null_ _null_ _null_ line_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1492 ( line_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_eq _null_ _null_ _null_ )); -DATA(insert OID = 1493 ( line PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 628 "600 600" _null_ _null_ _null_ _null_ _null_ line_construct_pp _null_ _null_ _null_ )); -DESCR("construct line from points"); -DATA(insert OID = 1494 ( line_interpt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 600 "628 628" _null_ _null_ _null_ _null_ _null_ line_interpt _null_ _null_ _null_ )); -DATA(insert OID = 1495 ( line_intersect PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_intersect _null_ _null_ _null_ )); -DATA(insert OID = 1496 ( line_parallel PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_parallel _null_ _null_ _null_ )); -DATA(insert OID = 1497 ( line_perp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "628 628" _null_ _null_ _null_ _null_ _null_ line_perp _null_ _null_ _null_ )); -DATA(insert OID = 1498 ( line_vertical PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "628" _null_ _null_ _null_ _null_ _null_ line_vertical _null_ _null_ _null_ )); -DATA(insert OID = 1499 ( line_horizontal PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "628" _null_ _null_ _null_ _null_ _null_ line_horizontal _null_ _null_ _null_ )); - -/* OIDS 1500 - 1599 */ - -DATA(insert OID = 1530 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "601" _null_ _null_ _null_ _null_ _null_ lseg_length _null_ _null_ _null_ )); -DESCR("distance between endpoints"); -DATA(insert OID = 1531 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "602" _null_ _null_ _null_ _null_ _null_ path_length _null_ _null_ _null_ )); -DESCR("sum of path segments"); - - -DATA(insert OID = 1532 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "601" _null_ _null_ _null_ _null_ _null_ lseg_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1533 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "602" _null_ _null_ _null_ _null_ _null_ path_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1534 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "603" _null_ _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1540 ( point PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "604" _null_ _null_ _null_ _null_ _null_ poly_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1541 ( lseg PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 601 "603" _null_ _null_ _null_ _null_ _null_ box_diagonal _null_ _null_ _null_ )); -DESCR("diagonal of"); -DATA(insert OID = 1542 ( center PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "603" _null_ _null_ _null_ _null_ _null_ box_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1543 ( center PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "718" _null_ _null_ _null_ _null_ _null_ circle_center _null_ _null_ _null_ )); -DESCR("center of"); -DATA(insert OID = 1544 ( polygon PGNSP PGUID 14 1 0 0 0 f f f t f i s 1 0 604 "718" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.polygon(12, $1)" _null_ _null_ _null_ )); -DESCR("convert circle to 12-vertex polygon"); -DATA(insert OID = 1545 ( npoints PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "602" _null_ _null_ _null_ _null_ _null_ path_npoints _null_ _null_ _null_ )); -DESCR("number of points"); -DATA(insert OID = 1556 ( npoints PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "604" _null_ _null_ _null_ _null_ _null_ poly_npoints _null_ _null_ _null_ )); -DESCR("number of points"); - -DATA(insert OID = 1564 ( bit_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1560 "2275 26 23" _null_ _null_ _null_ _null_ _null_ bit_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1565 ( bit_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "1560" _null_ _null_ _null_ _null_ _null_ bit_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2919 ( bittypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ bittypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2920 ( bittypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ bittypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); - -DATA(insert OID = 1569 ( like PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ )); -DESCR("matches LIKE expression"); -DATA(insert OID = 1570 ( notlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ )); -DESCR("does not match LIKE expression"); -DATA(insert OID = 1571 ( like PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ namelike _null_ _null_ _null_ )); -DESCR("matches LIKE expression"); -DATA(insert OID = 1572 ( notlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ namenlike _null_ _null_ _null_ )); -DESCR("does not match LIKE expression"); - - -/* SEQUENCE functions */ -DATA(insert OID = 1574 ( nextval PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ nextval_oid _null_ _null_ _null_ )); -DESCR("sequence next value"); -DATA(insert OID = 1575 ( currval PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ currval_oid _null_ _null_ _null_ )); -DESCR("sequence current value"); -DATA(insert OID = 1576 ( setval PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 20 "2205 20" _null_ _null_ _null_ _null_ _null_ setval_oid _null_ _null_ _null_ )); -DESCR("set sequence value"); -DATA(insert OID = 1765 ( setval PGNSP PGUID 12 1 0 0 0 f f f t f v u 3 0 20 "2205 20 16" _null_ _null_ _null_ _null_ _null_ setval3_oid _null_ _null_ _null_ )); -DESCR("set sequence value and is_called status"); -DATA(insert OID = 3078 ( pg_sequence_parameters PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2249 "26" "{26,20,20,20,20,16,20,26}" "{i,o,o,o,o,o,o,o}" "{sequence_oid,start_value,minimum_value,maximum_value,increment,cycle_option,cache_size,data_type}" _null_ _null_ pg_sequence_parameters _null_ _null_ _null_)); -DESCR("sequence parameters, for use by information schema"); -DATA(insert OID = 4032 ( pg_sequence_last_value PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ pg_sequence_last_value _null_ _null_ _null_ )); -DESCR("sequence last value"); - -DATA(insert OID = 1579 ( varbit_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1562 "2275 26 23" _null_ _null_ _null_ _null_ _null_ varbit_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1580 ( varbit_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "1562" _null_ _null_ _null_ _null_ _null_ varbit_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2902 ( varbittypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ varbittypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2921 ( varbittypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ varbittypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); - -DATA(insert OID = 1581 ( biteq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ biteq _null_ _null_ _null_ )); -DATA(insert OID = 1582 ( bitne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitne _null_ _null_ _null_ )); -DATA(insert OID = 1592 ( bitge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitge _null_ _null_ _null_ )); -DATA(insert OID = 1593 ( bitgt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitgt _null_ _null_ _null_ )); -DATA(insert OID = 1594 ( bitle PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitle _null_ _null_ _null_ )); -DATA(insert OID = 1595 ( bitlt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitlt _null_ _null_ _null_ )); -DATA(insert OID = 1596 ( bitcmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 1598 ( random PGNSP PGUID 12 1 0 0 0 f f f t f v r 0 0 701 "" _null_ _null_ _null_ _null_ _null_ drandom _null_ _null_ _null_ )); -DESCR("random value"); -DATA(insert OID = 1599 ( setseed PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 2278 "701" _null_ _null_ _null_ _null_ _null_ setseed _null_ _null_ _null_ )); -DESCR("set random seed"); - -/* OIDS 1600 - 1699 */ - -DATA(insert OID = 1600 ( asin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dasin _null_ _null_ _null_ )); -DESCR("arcsine"); -DATA(insert OID = 1601 ( acos PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dacos _null_ _null_ _null_ )); -DESCR("arccosine"); -DATA(insert OID = 1602 ( atan PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ datan _null_ _null_ _null_ )); -DESCR("arctangent"); -DATA(insert OID = 1603 ( atan2 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ datan2 _null_ _null_ _null_ )); -DESCR("arctangent, two arguments"); -DATA(insert OID = 1604 ( sin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dsin _null_ _null_ _null_ )); -DESCR("sine"); -DATA(insert OID = 1605 ( cos PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcos _null_ _null_ _null_ )); -DESCR("cosine"); -DATA(insert OID = 1606 ( tan PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dtan _null_ _null_ _null_ )); -DESCR("tangent"); -DATA(insert OID = 1607 ( cot PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcot _null_ _null_ _null_ )); -DESCR("cotangent"); - -DATA(insert OID = 2731 ( asind PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dasind _null_ _null_ _null_ )); -DESCR("arcsine, degrees"); -DATA(insert OID = 2732 ( acosd PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dacosd _null_ _null_ _null_ )); -DESCR("arccosine, degrees"); -DATA(insert OID = 2733 ( atand PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ datand _null_ _null_ _null_ )); -DESCR("arctangent, degrees"); -DATA(insert OID = 2734 ( atan2d PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ datan2d _null_ _null_ _null_ )); -DESCR("arctangent, two arguments, degrees"); -DATA(insert OID = 2735 ( sind PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dsind _null_ _null_ _null_ )); -DESCR("sine, degrees"); -DATA(insert OID = 2736 ( cosd PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcosd _null_ _null_ _null_ )); -DESCR("cosine, degrees"); -DATA(insert OID = 2737 ( tand PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dtand _null_ _null_ _null_ )); -DESCR("tangent, degrees"); -DATA(insert OID = 2738 ( cotd PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ dcotd _null_ _null_ _null_ )); -DESCR("cotangent, degrees"); - -DATA(insert OID = 1608 ( degrees PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ degrees _null_ _null_ _null_ )); -DESCR("radians to degrees"); -DATA(insert OID = 1609 ( radians PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ radians _null_ _null_ _null_ )); -DESCR("degrees to radians"); -DATA(insert OID = 1610 ( pi PGNSP PGUID 12 1 0 0 0 f f f t f i s 0 0 701 "" _null_ _null_ _null_ _null_ _null_ dpi _null_ _null_ _null_ )); -DESCR("PI"); - -DATA(insert OID = 1618 ( interval_mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "1186 701" _null_ _null_ _null_ _null_ _null_ interval_mul _null_ _null_ _null_ )); - -DATA(insert OID = 1620 ( ascii PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ ascii _null_ _null_ _null_ )); -DESCR("convert first char to int4"); -DATA(insert OID = 1621 ( chr PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "23" _null_ _null_ _null_ _null_ _null_ chr _null_ _null_ _null_ )); -DESCR("convert int4 to char"); -DATA(insert OID = 1622 ( repeat PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ repeat _null_ _null_ _null_ )); -DESCR("replicate string n times"); - -DATA(insert OID = 1623 ( similar_escape PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ similar_escape _null_ _null_ _null_ )); -DESCR("convert SQL99 regexp pattern to POSIX style"); - -DATA(insert OID = 1624 ( mul_d_interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "701 1186" _null_ _null_ _null_ _null_ _null_ mul_d_interval _null_ _null_ _null_ )); - -DATA(insert OID = 1631 ( bpcharlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ textlike _null_ _null_ _null_ )); -DATA(insert OID = 1632 ( bpcharnlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ textnlike _null_ _null_ _null_ )); - -DATA(insert OID = 1633 ( texticlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ texticlike _null_ _null_ _null_ )); -DATA(insert OID = 1634 ( texticnlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ texticnlike _null_ _null_ _null_ )); -DATA(insert OID = 1635 ( nameiclike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameiclike _null_ _null_ _null_ )); -DATA(insert OID = 1636 ( nameicnlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ nameicnlike _null_ _null_ _null_ )); -DATA(insert OID = 1637 ( like_escape PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ like_escape _null_ _null_ _null_ )); -DESCR("convert LIKE pattern to use backslash escapes"); - -DATA(insert OID = 1656 ( bpcharicregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ texticregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1657 ( bpcharicregexne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ texticregexne _null_ _null_ _null_ )); -DATA(insert OID = 1658 ( bpcharregexeq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ textregexeq _null_ _null_ _null_ )); -DATA(insert OID = 1659 ( bpcharregexne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ textregexne _null_ _null_ _null_ )); -DATA(insert OID = 1660 ( bpchariclike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ texticlike _null_ _null_ _null_ )); -DATA(insert OID = 1661 ( bpcharicnlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 25" _null_ _null_ _null_ _null_ _null_ texticnlike _null_ _null_ _null_ )); - -/* Oracle Compatibility Related Functions - By Edmund Mergl */ -DATA(insert OID = 868 ( strpos PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ textpos _null_ _null_ _null_ )); -DESCR("position of substring"); -DATA(insert OID = 870 ( lower PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ lower _null_ _null_ _null_ )); -DESCR("lowercase"); -DATA(insert OID = 871 ( upper PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ upper _null_ _null_ _null_ )); -DESCR("uppercase"); -DATA(insert OID = 872 ( initcap PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ initcap _null_ _null_ _null_ )); -DESCR("capitalize each word"); -DATA(insert OID = 873 ( lpad PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 25 "25 23 25" _null_ _null_ _null_ _null_ _null_ lpad _null_ _null_ _null_ )); -DESCR("left-pad string to length"); -DATA(insert OID = 874 ( rpad PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 25 "25 23 25" _null_ _null_ _null_ _null_ _null_ rpad _null_ _null_ _null_ )); -DESCR("right-pad string to length"); -DATA(insert OID = 875 ( ltrim PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ ltrim _null_ _null_ _null_ )); -DESCR("trim selected characters from left end of string"); -DATA(insert OID = 876 ( rtrim PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ rtrim _null_ _null_ _null_ )); -DESCR("trim selected characters from right end of string"); -DATA(insert OID = 877 ( substr PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 25 "25 23 23" _null_ _null_ _null_ _null_ _null_ text_substr _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 878 ( translate PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ translate _null_ _null_ _null_ )); -DESCR("map a set of characters appearing in string"); -DATA(insert OID = 879 ( lpad PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.lpad($1, $2, '' '')" _null_ _null_ _null_ )); -DESCR("left-pad string to length"); -DATA(insert OID = 880 ( rpad PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.rpad($1, $2, '' '')" _null_ _null_ _null_ )); -DESCR("right-pad string to length"); -DATA(insert OID = 881 ( ltrim PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ ltrim1 _null_ _null_ _null_ )); -DESCR("trim spaces from left end of string"); -DATA(insert OID = 882 ( rtrim PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ rtrim1 _null_ _null_ _null_ )); -DESCR("trim spaces from right end of string"); -DATA(insert OID = 883 ( substr PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ text_substr_no_len _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 884 ( btrim PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ btrim _null_ _null_ _null_ )); -DESCR("trim selected characters from both ends of string"); -DATA(insert OID = 885 ( btrim PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ btrim1 _null_ _null_ _null_ )); -DESCR("trim spaces from both ends of string"); - -DATA(insert OID = 936 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 25 "25 23 23" _null_ _null_ _null_ _null_ _null_ text_substr _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 937 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ text_substr_no_len _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 2087 ( replace PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ replace_text _null_ _null_ _null_ )); -DESCR("replace all occurrences in string of old_substr with new_substr"); -DATA(insert OID = 2284 ( regexp_replace PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ textregexreplace_noopt _null_ _null_ _null_ )); -DESCR("replace text using regexp"); -DATA(insert OID = 2285 ( regexp_replace PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 25 "25 25 25 25" _null_ _null_ _null_ _null_ _null_ textregexreplace _null_ _null_ _null_ )); -DESCR("replace text using regexp"); -DATA(insert OID = 3396 ( regexp_match PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1009 "25 25" _null_ _null_ _null_ _null_ _null_ regexp_match_no_flags _null_ _null_ _null_ )); -DESCR("find first match for regexp"); -DATA(insert OID = 3397 ( regexp_match PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ _null_ regexp_match _null_ _null_ _null_ )); -DESCR("find first match for regexp"); -DATA(insert OID = 2763 ( regexp_matches PGNSP PGUID 12 1 1 0 0 f f f t t i s 2 0 1009 "25 25" _null_ _null_ _null_ _null_ _null_ regexp_matches_no_flags _null_ _null_ _null_ )); -DESCR("find match(es) for regexp"); -DATA(insert OID = 2764 ( regexp_matches PGNSP PGUID 12 1 10 0 0 f f f t t i s 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ _null_ regexp_matches _null_ _null_ _null_ )); -DESCR("find match(es) for regexp"); -DATA(insert OID = 2088 ( split_part PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 25 "25 25 23" _null_ _null_ _null_ _null_ _null_ split_text _null_ _null_ _null_ )); -DESCR("split string by field_sep and return field_num"); -DATA(insert OID = 2765 ( regexp_split_to_table PGNSP PGUID 12 1 1000 0 0 f f f t t i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_table_no_flags _null_ _null_ _null_ )); -DESCR("split string by pattern"); -DATA(insert OID = 2766 ( regexp_split_to_table PGNSP PGUID 12 1 1000 0 0 f f f t t i s 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_table _null_ _null_ _null_ )); -DESCR("split string by pattern"); -DATA(insert OID = 2767 ( regexp_split_to_array PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1009 "25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_array_no_flags _null_ _null_ _null_ )); -DESCR("split string by pattern"); -DATA(insert OID = 2768 ( regexp_split_to_array PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1009 "25 25 25" _null_ _null_ _null_ _null_ _null_ regexp_split_to_array _null_ _null_ _null_ )); -DESCR("split string by pattern"); -DATA(insert OID = 2089 ( to_hex PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "23" _null_ _null_ _null_ _null_ _null_ to_hex32 _null_ _null_ _null_ )); -DESCR("convert int4 number to hex"); -DATA(insert OID = 2090 ( to_hex PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "20" _null_ _null_ _null_ _null_ _null_ to_hex64 _null_ _null_ _null_ )); -DESCR("convert int8 number to hex"); - -/* for character set encoding support */ - -/* return database encoding name */ -DATA(insert OID = 1039 ( getdatabaseencoding PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ getdatabaseencoding _null_ _null_ _null_ )); -DESCR("encoding name of current database"); - -/* return client encoding name i.e. session encoding */ -DATA(insert OID = 810 ( pg_client_encoding PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 19 "" _null_ _null_ _null_ _null_ _null_ pg_client_encoding _null_ _null_ _null_ )); -DESCR("encoding name of current database"); - -DATA(insert OID = 1713 ( length PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 23 "17 19" _null_ _null_ _null_ _null_ _null_ length_in_encoding _null_ _null_ _null_ )); -DESCR("length of string in specified encoding"); - -DATA(insert OID = 1714 ( convert_from PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "17 19" _null_ _null_ _null_ _null_ _null_ pg_convert_from _null_ _null_ _null_ )); -DESCR("convert string with specified source encoding name"); - -DATA(insert OID = 1717 ( convert_to PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 17 "25 19" _null_ _null_ _null_ _null_ _null_ pg_convert_to _null_ _null_ _null_ )); -DESCR("convert string with specified destination encoding name"); - -DATA(insert OID = 1813 ( convert PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 17 "17 19 19" _null_ _null_ _null_ _null_ _null_ pg_convert _null_ _null_ _null_ )); -DESCR("convert string with specified encoding names"); - -DATA(insert OID = 1264 ( pg_char_to_encoding PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 23 "19" _null_ _null_ _null_ _null_ _null_ PG_char_to_encoding _null_ _null_ _null_ )); -DESCR("convert encoding name to encoding id"); - -DATA(insert OID = 1597 ( pg_encoding_to_char PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 19 "23" _null_ _null_ _null_ _null_ _null_ PG_encoding_to_char _null_ _null_ _null_ )); -DESCR("convert encoding id to encoding name"); - -DATA(insert OID = 2319 ( pg_encoding_max_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ pg_encoding_max_length_sql _null_ _null_ _null_ )); -DESCR("maximum octet length of a character in given encoding"); - -DATA(insert OID = 1638 ( oidgt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oidgt _null_ _null_ _null_ )); -DATA(insert OID = 1639 ( oidge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "26 26" _null_ _null_ _null_ _null_ _null_ oidge _null_ _null_ _null_ )); - -/* System-view support functions */ -DATA(insert OID = 1573 ( pg_get_ruledef PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_ruledef _null_ _null_ _null_ )); -DESCR("source text of a rule"); -DATA(insert OID = 1640 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ pg_get_viewdef_name _null_ _null_ _null_ )); -DESCR("select statement of a view"); -DATA(insert OID = 1641 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_viewdef _null_ _null_ _null_ )); -DESCR("select statement of a view"); -DATA(insert OID = 1642 ( pg_get_userbyid PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 19 "26" _null_ _null_ _null_ _null_ _null_ pg_get_userbyid _null_ _null_ _null_ )); -DESCR("role name by OID (with fallback)"); -DATA(insert OID = 1643 ( pg_get_indexdef PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_indexdef _null_ _null_ _null_ )); -DESCR("index description"); -DATA(insert OID = 3415 ( pg_get_statisticsobjdef PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_statisticsobjdef _null_ _null_ _null_ )); -DESCR("extended statistics object description"); -DATA(insert OID = 3352 ( pg_get_partkeydef PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_partkeydef _null_ _null_ _null_ )); -DESCR("partition key description"); -DATA(insert OID = 3408 ( pg_get_partition_constraintdef PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_partition_constraintdef _null_ _null_ _null_ )); -DESCR("partition constraint description"); -DATA(insert OID = 1662 ( pg_get_triggerdef PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_triggerdef _null_ _null_ _null_ )); -DESCR("trigger description"); -DATA(insert OID = 1387 ( pg_get_constraintdef PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_constraintdef _null_ _null_ _null_ )); -DESCR("constraint description"); -DATA(insert OID = 1716 ( pg_get_expr PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "194 26" _null_ _null_ _null_ _null_ _null_ pg_get_expr _null_ _null_ _null_ )); -DESCR("deparse an encoded expression"); -DATA(insert OID = 1665 ( pg_get_serial_sequence PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ pg_get_serial_sequence _null_ _null_ _null_ )); -DESCR("name of sequence for a serial column"); -DATA(insert OID = 2098 ( pg_get_functiondef PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_functiondef _null_ _null_ _null_ )); -DESCR("definition of a function"); -DATA(insert OID = 2162 ( pg_get_function_arguments PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_function_arguments _null_ _null_ _null_ )); -DESCR("argument list of a function"); -DATA(insert OID = 2232 ( pg_get_function_identity_arguments PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_function_identity_arguments _null_ _null_ _null_ )); -DESCR("identity argument list of a function"); -DATA(insert OID = 2165 ( pg_get_function_result PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_get_function_result _null_ _null_ _null_ )); -DESCR("result type of a function"); -DATA(insert OID = 3808 ( pg_get_function_arg_default PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "26 23" _null_ _null_ _null_ _null_ _null_ pg_get_function_arg_default _null_ _null_ _null_ )); -DESCR("function argument default"); - -DATA(insert OID = 1686 ( pg_get_keywords PGNSP PGUID 12 10 400 0 0 f f f t t s s 0 0 2249 "" "{25,18,25}" "{o,o,o}" "{word,catcode,catdesc}" _null_ _null_ pg_get_keywords _null_ _null_ _null_ )); -DESCR("list of SQL keywords"); - -DATA(insert OID = 2289 ( pg_options_to_table PGNSP PGUID 12 1 3 0 0 f f f t t s s 1 0 2249 "1009" "{1009,25,25}" "{i,o,o}" "{options_array,option_name,option_value}" _null_ _null_ pg_options_to_table _null_ _null_ _null_ )); -DESCR("convert generic options array to name/value table"); - -DATA(insert OID = 1619 ( pg_typeof PGNSP PGUID 12 1 0 0 0 f f f f f s s 1 0 2206 "2276" _null_ _null_ _null_ _null_ _null_ pg_typeof _null_ _null_ _null_ )); -DESCR("type of the argument"); -DATA(insert OID = 3162 ( pg_collation_for PGNSP PGUID 12 1 0 0 0 f f f f f s s 1 0 25 "2276" _null_ _null_ _null_ _null_ _null_ pg_collation_for _null_ _null_ _null_ )); -DESCR("collation of the argument; implementation of the COLLATION FOR expression"); - -DATA(insert OID = 3842 ( pg_relation_is_updatable PGNSP PGUID 12 10 0 0 0 f f f t f s s 2 0 23 "2205 16" _null_ _null_ _null_ _null_ _null_ pg_relation_is_updatable _null_ _null_ _null_ )); -DESCR("is a relation insertable/updatable/deletable"); -DATA(insert OID = 3843 ( pg_column_is_updatable PGNSP PGUID 12 10 0 0 0 f f f t f s s 3 0 16 "2205 21 16" _null_ _null_ _null_ _null_ _null_ pg_column_is_updatable _null_ _null_ _null_ )); -DESCR("is a column updatable"); - -DATA(insert OID = 6120 ( pg_get_replica_identity_index PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 2205 "2205" _null_ _null_ _null_ _null_ _null_ pg_get_replica_identity_index _null_ _null_ _null_ )); -DESCR("oid of replica identity index if any"); - -/* Deferrable unique constraint trigger */ -DATA(insert OID = 1250 ( unique_key_recheck PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ unique_key_recheck _null_ _null_ _null_ )); -DESCR("deferred UNIQUE constraint check"); - -/* Generic referential integrity constraint triggers */ -DATA(insert OID = 1644 ( RI_FKey_check_ins PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_check_ins _null_ _null_ _null_ )); -DESCR("referential integrity FOREIGN KEY ... REFERENCES"); -DATA(insert OID = 1645 ( RI_FKey_check_upd PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_check_upd _null_ _null_ _null_ )); -DESCR("referential integrity FOREIGN KEY ... REFERENCES"); -DATA(insert OID = 1646 ( RI_FKey_cascade_del PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_cascade_del _null_ _null_ _null_ )); -DESCR("referential integrity ON DELETE CASCADE"); -DATA(insert OID = 1647 ( RI_FKey_cascade_upd PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_cascade_upd _null_ _null_ _null_ )); -DESCR("referential integrity ON UPDATE CASCADE"); -DATA(insert OID = 1648 ( RI_FKey_restrict_del PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_restrict_del _null_ _null_ _null_ )); -DESCR("referential integrity ON DELETE RESTRICT"); -DATA(insert OID = 1649 ( RI_FKey_restrict_upd PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_restrict_upd _null_ _null_ _null_ )); -DESCR("referential integrity ON UPDATE RESTRICT"); -DATA(insert OID = 1650 ( RI_FKey_setnull_del PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_setnull_del _null_ _null_ _null_ )); -DESCR("referential integrity ON DELETE SET NULL"); -DATA(insert OID = 1651 ( RI_FKey_setnull_upd PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_setnull_upd _null_ _null_ _null_ )); -DESCR("referential integrity ON UPDATE SET NULL"); -DATA(insert OID = 1652 ( RI_FKey_setdefault_del PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_setdefault_del _null_ _null_ _null_ )); -DESCR("referential integrity ON DELETE SET DEFAULT"); -DATA(insert OID = 1653 ( RI_FKey_setdefault_upd PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_setdefault_upd _null_ _null_ _null_ )); -DESCR("referential integrity ON UPDATE SET DEFAULT"); -DATA(insert OID = 1654 ( RI_FKey_noaction_del PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_noaction_del _null_ _null_ _null_ )); -DESCR("referential integrity ON DELETE NO ACTION"); -DATA(insert OID = 1655 ( RI_FKey_noaction_upd PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ RI_FKey_noaction_upd _null_ _null_ _null_ )); -DESCR("referential integrity ON UPDATE NO ACTION"); - -DATA(insert OID = 1666 ( varbiteq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ biteq _null_ _null_ _null_ )); -DATA(insert OID = 1667 ( varbitne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitne _null_ _null_ _null_ )); -DATA(insert OID = 1668 ( varbitge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitge _null_ _null_ _null_ )); -DATA(insert OID = 1669 ( varbitgt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitgt _null_ _null_ _null_ )); -DATA(insert OID = 1670 ( varbitle PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitle _null_ _null_ _null_ )); -DATA(insert OID = 1671 ( varbitlt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitlt _null_ _null_ _null_ )); -DATA(insert OID = 1672 ( varbitcmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -/* avoid the C names bitand and bitor, since they are C++ keywords */ -DATA(insert OID = 1673 ( bitand PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ _null_ bit_and _null_ _null_ _null_ )); -DATA(insert OID = 1674 ( bitor PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ _null_ bit_or _null_ _null_ _null_ )); -DATA(insert OID = 1675 ( bitxor PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1560 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitxor _null_ _null_ _null_ )); -DATA(insert OID = 1676 ( bitnot PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1560 "1560" _null_ _null_ _null_ _null_ _null_ bitnot _null_ _null_ _null_ )); -DATA(insert OID = 1677 ( bitshiftleft PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ _null_ bitshiftleft _null_ _null_ _null_ )); -DATA(insert OID = 1678 ( bitshiftright PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ _null_ bitshiftright _null_ _null_ _null_ )); -DATA(insert OID = 1679 ( bitcat PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1562 "1562 1562" _null_ _null_ _null_ _null_ _null_ bitcat _null_ _null_ _null_ )); -DATA(insert OID = 1680 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1560 "1560 23 23" _null_ _null_ _null_ _null_ _null_ bitsubstr _null_ _null_ _null_ )); -DESCR("extract portion of bitstring"); -DATA(insert OID = 1681 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1560" _null_ _null_ _null_ _null_ _null_ bitlength _null_ _null_ _null_ )); -DESCR("bitstring length"); -DATA(insert OID = 1682 ( octet_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1560" _null_ _null_ _null_ _null_ _null_ bitoctetlength _null_ _null_ _null_ )); -DESCR("octet length"); -DATA(insert OID = 1683 ( bit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1560 "23 23" _null_ _null_ _null_ _null_ _null_ bitfromint4 _null_ _null_ _null_ )); -DESCR("convert int4 to bitstring"); -DATA(insert OID = 1684 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1560" _null_ _null_ _null_ _null_ _null_ bittoint4 _null_ _null_ _null_ )); -DESCR("convert bitstring to int4"); - -DATA(insert OID = 1685 ( bit PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1560 "1560 23 16" _null_ _null_ _null_ _null_ _null_ bit _null_ _null_ _null_ )); -DESCR("adjust bit() to typmod length"); -DATA(insert OID = 3158 ( varbit_transform PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ varbit_transform _null_ _null_ _null_ )); -DESCR("transform a varbit length coercion"); -DATA(insert OID = 1687 ( varbit PGNSP PGUID 12 1 0 0 varbit_transform f f f t f i s 3 0 1562 "1562 23 16" _null_ _null_ _null_ _null_ _null_ varbit _null_ _null_ _null_ )); -DESCR("adjust varbit() to typmod length"); - -DATA(insert OID = 1698 ( position PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1560 1560" _null_ _null_ _null_ _null_ _null_ bitposition _null_ _null_ _null_ )); -DESCR("position of sub-bitstring"); -DATA(insert OID = 1699 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1560 "1560 23" _null_ _null_ _null_ _null_ _null_ bitsubstr_no_len _null_ _null_ _null_ )); -DESCR("extract portion of bitstring"); - -DATA(insert OID = 3030 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 1560 "1560 1560 23 23" _null_ _null_ _null_ _null_ _null_ bitoverlay _null_ _null_ _null_ )); -DESCR("substitute portion of bitstring"); -DATA(insert OID = 3031 ( overlay PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1560 "1560 1560 23" _null_ _null_ _null_ _null_ _null_ bitoverlay_no_len _null_ _null_ _null_ )); -DESCR("substitute portion of bitstring"); -DATA(insert OID = 3032 ( get_bit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1560 23" _null_ _null_ _null_ _null_ _null_ bitgetbit _null_ _null_ _null_ )); -DESCR("get bit"); -DATA(insert OID = 3033 ( set_bit PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1560 "1560 23 23" _null_ _null_ _null_ _null_ _null_ bitsetbit _null_ _null_ _null_ )); -DESCR("set bit"); - -/* for macaddr type support */ -DATA(insert OID = 436 ( macaddr_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 829 "2275" _null_ _null_ _null_ _null_ _null_ macaddr_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 437 ( macaddr_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "829" _null_ _null_ _null_ _null_ _null_ macaddr_out _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 753 ( trunc PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 829 "829" _null_ _null_ _null_ _null_ _null_ macaddr_trunc _null_ _null_ _null_ )); -DESCR("MACADDR manufacturer fields"); - -DATA(insert OID = 830 ( macaddr_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_eq _null_ _null_ _null_ )); -DATA(insert OID = 831 ( macaddr_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_lt _null_ _null_ _null_ )); -DATA(insert OID = 832 ( macaddr_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_le _null_ _null_ _null_ )); -DATA(insert OID = 833 ( macaddr_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_gt _null_ _null_ _null_ )); -DATA(insert OID = 834 ( macaddr_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_ge _null_ _null_ _null_ )); -DATA(insert OID = 835 ( macaddr_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_ne _null_ _null_ _null_ )); -DATA(insert OID = 836 ( macaddr_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3144 ( macaddr_not PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 829 "829" _null_ _null_ _null_ _null_ _null_ macaddr_not _null_ _null_ _null_ )); -DATA(insert OID = 3145 ( macaddr_and PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 829 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_and _null_ _null_ _null_ )); -DATA(insert OID = 3146 ( macaddr_or PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 829 "829 829" _null_ _null_ _null_ _null_ _null_ macaddr_or _null_ _null_ _null_ )); -DATA(insert OID = 3359 ( macaddr_sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ macaddr_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); - -/* for macaddr8 type support */ -DATA(insert OID = 4110 ( macaddr8_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 774 "2275" _null_ _null_ _null_ _null_ _null_ macaddr8_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4111 ( macaddr8_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "774" _null_ _null_ _null_ _null_ _null_ macaddr8_out _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 4112 ( trunc PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 774 "774" _null_ _null_ _null_ _null_ _null_ macaddr8_trunc _null_ _null_ _null_ )); -DESCR("MACADDR8 manufacturer fields"); - -DATA(insert OID = 4113 ( macaddr8_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_eq _null_ _null_ _null_ )); -DATA(insert OID = 4114 ( macaddr8_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_lt _null_ _null_ _null_ )); -DATA(insert OID = 4115 ( macaddr8_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_le _null_ _null_ _null_ )); -DATA(insert OID = 4116 ( macaddr8_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_gt _null_ _null_ _null_ )); -DATA(insert OID = 4117 ( macaddr8_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_ge _null_ _null_ _null_ )); -DATA(insert OID = 4118 ( macaddr8_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_ne _null_ _null_ _null_ )); -DATA(insert OID = 4119 ( macaddr8_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 4120 ( macaddr8_not PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 774 "774" _null_ _null_ _null_ _null_ _null_ macaddr8_not _null_ _null_ _null_ )); -DATA(insert OID = 4121 ( macaddr8_and PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 774 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_and _null_ _null_ _null_ )); -DATA(insert OID = 4122 ( macaddr8_or PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 774 "774 774" _null_ _null_ _null_ _null_ _null_ macaddr8_or _null_ _null_ _null_ )); -DATA(insert OID = 4123 ( macaddr8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 774 "829" _null_ _null_ _null_ _null_ _null_ macaddrtomacaddr8 _null_ _null_ _null_ )); -DESCR("convert macaddr to macaddr8"); -DATA(insert OID = 4124 ( macaddr PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 829 "774" _null_ _null_ _null_ _null_ _null_ macaddr8tomacaddr _null_ _null_ _null_ )); -DESCR("convert macaddr8 to macaddr"); -DATA(insert OID = 4125 ( macaddr8_set7bit PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 774 "774" _null_ _null_ _null_ _null_ _null_ macaddr8_set7bit _null_ _null_ _null_ )); -DESCR("set 7th bit in macaddr8"); - -/* for inet type support */ -DATA(insert OID = 910 ( inet_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 869 "2275" _null_ _null_ _null_ _null_ _null_ inet_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 911 ( inet_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "869" _null_ _null_ _null_ _null_ _null_ inet_out _null_ _null_ _null_ )); -DESCR("I/O"); - -/* for cidr type support */ -DATA(insert OID = 1267 ( cidr_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 650 "2275" _null_ _null_ _null_ _null_ _null_ cidr_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1427 ( cidr_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "650" _null_ _null_ _null_ _null_ _null_ cidr_out _null_ _null_ _null_ )); -DESCR("I/O"); - -/* these are used for both inet and cidr */ -DATA(insert OID = 920 ( network_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_eq _null_ _null_ _null_ )); -DATA(insert OID = 921 ( network_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_lt _null_ _null_ _null_ )); -DATA(insert OID = 922 ( network_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_le _null_ _null_ _null_ )); -DATA(insert OID = 923 ( network_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_gt _null_ _null_ _null_ )); -DATA(insert OID = 924 ( network_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_ge _null_ _null_ _null_ )); -DATA(insert OID = 925 ( network_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_ne _null_ _null_ _null_ )); -DATA(insert OID = 3562 ( network_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 869 "869 869" _null_ _null_ _null_ _null_ _null_ network_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 3563 ( network_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 869 "869 869" _null_ _null_ _null_ _null_ _null_ network_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 926 ( network_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "869 869" _null_ _null_ _null_ _null_ _null_ network_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 927 ( network_sub PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_sub _null_ _null_ _null_ )); -DATA(insert OID = 928 ( network_subeq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_subeq _null_ _null_ _null_ )); -DATA(insert OID = 929 ( network_sup PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_sup _null_ _null_ _null_ )); -DATA(insert OID = 930 ( network_supeq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_supeq _null_ _null_ _null_ )); -DATA(insert OID = 3551 ( network_overlap PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ network_overlap _null_ _null_ _null_ )); - -/* inet/cidr functions */ -DATA(insert OID = 598 ( abbrev PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "869" _null_ _null_ _null_ _null_ _null_ inet_abbrev _null_ _null_ _null_ )); -DESCR("abbreviated display of inet value"); -DATA(insert OID = 599 ( abbrev PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "650" _null_ _null_ _null_ _null_ _null_ cidr_abbrev _null_ _null_ _null_ )); -DESCR("abbreviated display of cidr value"); -DATA(insert OID = 605 ( set_masklen PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 869 "869 23" _null_ _null_ _null_ _null_ _null_ inet_set_masklen _null_ _null_ _null_ )); -DESCR("change netmask of inet"); -DATA(insert OID = 635 ( set_masklen PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 650 "650 23" _null_ _null_ _null_ _null_ _null_ cidr_set_masklen _null_ _null_ _null_ )); -DESCR("change netmask of cidr"); -DATA(insert OID = 711 ( family PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "869" _null_ _null_ _null_ _null_ _null_ network_family _null_ _null_ _null_ )); -DESCR("address family (4 for IPv4, 6 for IPv6)"); -DATA(insert OID = 683 ( network PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 650 "869" _null_ _null_ _null_ _null_ _null_ network_network _null_ _null_ _null_ )); -DESCR("network part of address"); -DATA(insert OID = 696 ( netmask PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ network_netmask _null_ _null_ _null_ )); -DESCR("netmask of address"); -DATA(insert OID = 697 ( masklen PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "869" _null_ _null_ _null_ _null_ _null_ network_masklen _null_ _null_ _null_ )); -DESCR("netmask length"); -DATA(insert OID = 698 ( broadcast PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ network_broadcast _null_ _null_ _null_ )); -DESCR("broadcast address of network"); -DATA(insert OID = 699 ( host PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "869" _null_ _null_ _null_ _null_ _null_ network_host _null_ _null_ _null_ )); -DESCR("show address octets only"); -DATA(insert OID = 730 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "869" _null_ _null_ _null_ _null_ _null_ network_show _null_ _null_ _null_ )); -DESCR("show all parts of inet/cidr value"); -DATA(insert OID = 1362 ( hostmask PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ network_hostmask _null_ _null_ _null_ )); -DESCR("hostmask of address"); -DATA(insert OID = 1715 ( cidr PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 650 "869" _null_ _null_ _null_ _null_ _null_ inet_to_cidr _null_ _null_ _null_ )); -DESCR("convert inet to cidr"); - -DATA(insert OID = 2196 ( inet_client_addr PGNSP PGUID 12 1 0 0 0 f f f f f s r 0 0 869 "" _null_ _null_ _null_ _null_ _null_ inet_client_addr _null_ _null_ _null_ )); -DESCR("inet address of the client"); -DATA(insert OID = 2197 ( inet_client_port PGNSP PGUID 12 1 0 0 0 f f f f f s r 0 0 23 "" _null_ _null_ _null_ _null_ _null_ inet_client_port _null_ _null_ _null_ )); -DESCR("client's port number for this connection"); -DATA(insert OID = 2198 ( inet_server_addr PGNSP PGUID 12 1 0 0 0 f f f f f s s 0 0 869 "" _null_ _null_ _null_ _null_ _null_ inet_server_addr _null_ _null_ _null_ )); -DESCR("inet address of the server"); -DATA(insert OID = 2199 ( inet_server_port PGNSP PGUID 12 1 0 0 0 f f f f f s s 0 0 23 "" _null_ _null_ _null_ _null_ _null_ inet_server_port _null_ _null_ _null_ )); -DESCR("server's port number for this connection"); - -DATA(insert OID = 2627 ( inetnot PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ inetnot _null_ _null_ _null_ )); -DATA(insert OID = 2628 ( inetand PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 869 "869 869" _null_ _null_ _null_ _null_ _null_ inetand _null_ _null_ _null_ )); -DATA(insert OID = 2629 ( inetor PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 869 "869 869" _null_ _null_ _null_ _null_ _null_ inetor _null_ _null_ _null_ )); -DATA(insert OID = 2630 ( inetpl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 869 "869 20" _null_ _null_ _null_ _null_ _null_ inetpl _null_ _null_ _null_ )); -DATA(insert OID = 2631 ( int8pl_inet PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 869 "20 869" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); -DATA(insert OID = 2632 ( inetmi_int8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 869 "869 20" _null_ _null_ _null_ _null_ _null_ inetmi_int8 _null_ _null_ _null_ )); -DATA(insert OID = 2633 ( inetmi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "869 869" _null_ _null_ _null_ _null_ _null_ inetmi _null_ _null_ _null_ )); -DATA(insert OID = 4071 ( inet_same_family PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "869 869" _null_ _null_ _null_ _null_ _null_ inet_same_family _null_ _null_ _null_ )); -DESCR("are the addresses from the same family?"); -DATA(insert OID = 4063 ( inet_merge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 650 "869 869" _null_ _null_ _null_ _null_ _null_ inet_merge _null_ _null_ _null_ )); -DESCR("the smallest network which includes both of the given networks"); - -/* GiST support for inet and cidr */ -DATA(insert OID = 3553 ( inet_gist_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "2281 869 21 26 2281" _null_ _null_ _null_ _null_ _null_ inet_gist_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3554 ( inet_gist_union PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 869 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_gist_union _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3555 ( inet_gist_compress PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ inet_gist_compress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3573 ( inet_gist_fetch PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ inet_gist_fetch _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3557 ( inet_gist_penalty PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ inet_gist_penalty _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3558 ( inet_gist_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_gist_picksplit _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3559 ( inet_gist_same PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "869 869 2281" _null_ _null_ _null_ _null_ _null_ inet_gist_same _null_ _null_ _null_ )); -DESCR("GiST support"); - -/* SP-GiST support for inet and cidr */ -DATA(insert OID = 3795 ( inet_spg_config PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_spg_config _null_ _null_ _null_ )); -DESCR("SP-GiST support"); -DATA(insert OID = 3796 ( inet_spg_choose PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_spg_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support"); -DATA(insert OID = 3797 ( inet_spg_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_spg_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support"); -DATA(insert OID = 3798 ( inet_spg_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_spg_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support"); -DATA(insert OID = 3799 ( inet_spg_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ _null_ inet_spg_leaf_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support"); - -/* Selectivity estimation for inet and cidr */ -DATA(insert OID = 3560 ( networksel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ networksel _null_ _null_ _null_ )); -DESCR("restriction selectivity for network operators"); -DATA(insert OID = 3561 ( networkjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ networkjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity for network operators"); - -DATA(insert OID = 1690 ( time_mi_time PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "1083 1083" _null_ _null_ _null_ _null_ _null_ time_mi_time _null_ _null_ _null_ )); - -DATA(insert OID = 1691 ( boolle PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boolle _null_ _null_ _null_ )); -DATA(insert OID = 1692 ( boolge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boolge _null_ _null_ _null_ )); -DATA(insert OID = 1693 ( btboolcmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "16 16" _null_ _null_ _null_ _null_ _null_ btboolcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 1688 ( time_hash PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1083" _null_ _null_ _null_ _null_ _null_ time_hash _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 3409 ( time_hash_extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "1083 20" _null_ _null_ _null_ _null_ _null_ time_hash_extended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 1696 ( timetz_hash PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1266" _null_ _null_ _null_ _null_ _null_ timetz_hash _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 3410 ( timetz_hash_extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "1266 20" _null_ _null_ _null_ _null_ _null_ timetz_hash_extended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 1697 ( interval_hash PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1186" _null_ _null_ _null_ _null_ _null_ interval_hash _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 3418 ( interval_hash_extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "1186 20" _null_ _null_ _null_ _null_ _null_ interval_hash_extended _null_ _null_ _null_ )); -DESCR("hash"); - - -/* OID's 1700 - 1799 NUMERIC data type */ -DATA(insert OID = 1701 ( numeric_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1700 "2275 26 23" _null_ _null_ _null_ _null_ _null_ numeric_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1702 ( numeric_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "1700" _null_ _null_ _null_ _null_ _null_ numeric_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2917 ( numerictypmodin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1263" _null_ _null_ _null_ _null_ _null_ numerictypmodin _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 2918 ( numerictypmodout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "23" _null_ _null_ _null_ _null_ _null_ numerictypmodout _null_ _null_ _null_ )); -DESCR("I/O typmod"); -DATA(insert OID = 3157 ( numeric_transform PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ numeric_transform _null_ _null_ _null_ )); -DESCR("transform a numeric length coercion"); -DATA(insert OID = 1703 ( numeric PGNSP PGUID 12 1 0 0 numeric_transform f f f t f i s 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ _null_ numeric _null_ _null_ _null_ )); -DESCR("adjust numeric to typmod precision/scale"); -DATA(insert OID = 1704 ( numeric_abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_abs _null_ _null_ _null_ )); -DATA(insert OID = 1705 ( abs PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_abs _null_ _null_ _null_ )); -DESCR("absolute value"); -DATA(insert OID = 1706 ( sign PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_sign _null_ _null_ _null_ )); -DESCR("sign of value"); -DATA(insert OID = 1707 ( round PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ _null_ numeric_round _null_ _null_ _null_ )); -DESCR("value rounded to 'scale'"); -DATA(insert OID = 1708 ( round PGNSP PGUID 14 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.round($1,0)" _null_ _null_ _null_ )); -DESCR("value rounded to 'scale' of zero"); -DATA(insert OID = 1709 ( trunc PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 23" _null_ _null_ _null_ _null_ _null_ numeric_trunc _null_ _null_ _null_ )); -DESCR("value truncated to 'scale'"); -DATA(insert OID = 1710 ( trunc PGNSP PGUID 14 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.trunc($1,0)" _null_ _null_ _null_ )); -DESCR("value truncated to 'scale' of zero"); -DATA(insert OID = 1711 ( ceil PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_ceil _null_ _null_ _null_ )); -DESCR("nearest integer >= value"); -DATA(insert OID = 2167 ( ceiling PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_ceil _null_ _null_ _null_ )); -DESCR("nearest integer >= value"); -DATA(insert OID = 1712 ( floor PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_floor _null_ _null_ _null_ )); -DESCR("nearest integer <= value"); -DATA(insert OID = 1718 ( numeric_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_eq _null_ _null_ _null_ )); -DATA(insert OID = 1719 ( numeric_ne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_ne _null_ _null_ _null_ )); -DATA(insert OID = 1720 ( numeric_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_gt _null_ _null_ _null_ )); -DATA(insert OID = 1721 ( numeric_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_ge _null_ _null_ _null_ )); -DATA(insert OID = 1722 ( numeric_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_lt _null_ _null_ _null_ )); -DATA(insert OID = 1723 ( numeric_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_le _null_ _null_ _null_ )); -DATA(insert OID = 1724 ( numeric_add PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_add _null_ _null_ _null_ )); -DATA(insert OID = 1725 ( numeric_sub PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_sub _null_ _null_ _null_ )); -DATA(insert OID = 1726 ( numeric_mul PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_mul _null_ _null_ _null_ )); -DATA(insert OID = 1727 ( numeric_div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_div _null_ _null_ _null_ )); -DATA(insert OID = 1728 ( mod PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_mod _null_ _null_ _null_ )); -DESCR("modulus"); -DATA(insert OID = 1729 ( numeric_mod PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_mod _null_ _null_ _null_ )); -DATA(insert OID = 1730 ( sqrt PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_sqrt _null_ _null_ _null_ )); -DESCR("square root"); -DATA(insert OID = 1731 ( numeric_sqrt PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_sqrt _null_ _null_ _null_ )); -DESCR("square root"); -DATA(insert OID = 1732 ( exp PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_exp _null_ _null_ _null_ )); -DESCR("natural exponential (e^x)"); -DATA(insert OID = 1733 ( numeric_exp PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_exp _null_ _null_ _null_ )); -DESCR("natural exponential (e^x)"); -DATA(insert OID = 1734 ( ln PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_ln _null_ _null_ _null_ )); -DESCR("natural logarithm"); -DATA(insert OID = 1735 ( numeric_ln PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_ln _null_ _null_ _null_ )); -DESCR("natural logarithm"); -DATA(insert OID = 1736 ( log PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_log _null_ _null_ _null_ )); -DESCR("logarithm base m of n"); -DATA(insert OID = 1737 ( numeric_log PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_log _null_ _null_ _null_ )); -DESCR("logarithm base m of n"); -DATA(insert OID = 1738 ( pow PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ )); -DESCR("exponentiation"); -DATA(insert OID = 2169 ( power PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ )); -DESCR("exponentiation"); -DATA(insert OID = 1739 ( numeric_power PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_power _null_ _null_ _null_ )); -DATA(insert OID = 3281 ( scale PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1700" _null_ _null_ _null_ _null_ _null_ numeric_scale _null_ _null_ _null_ )); -DESCR("number of decimal digits in the fractional part"); -DATA(insert OID = 1740 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ int4_numeric _null_ _null_ _null_ )); -DESCR("convert int4 to numeric"); -DATA(insert OID = 1741 ( log PGNSP PGUID 14 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.log(10, $1)" _null_ _null_ _null_ )); -DESCR("base 10 logarithm"); -DATA(insert OID = 1742 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "700" _null_ _null_ _null_ _null_ _null_ float4_numeric _null_ _null_ _null_ )); -DESCR("convert float4 to numeric"); -DATA(insert OID = 1743 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "701" _null_ _null_ _null_ _null_ _null_ float8_numeric _null_ _null_ _null_ )); -DESCR("convert float8 to numeric"); -DATA(insert OID = 1744 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1700" _null_ _null_ _null_ _null_ _null_ numeric_int4 _null_ _null_ _null_ )); -DESCR("convert numeric to int4"); -DATA(insert OID = 1745 ( float4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_float4 _null_ _null_ _null_ )); -DESCR("convert numeric to float4"); -DATA(insert OID = 1746 ( float8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1700" _null_ _null_ _null_ _null_ _null_ numeric_float8 _null_ _null_ _null_ )); -DESCR("convert numeric to float8"); -DATA(insert OID = 1973 ( div PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_div_trunc _null_ _null_ _null_ )); -DESCR("trunc(x/y)"); -DATA(insert OID = 1980 ( numeric_div_trunc PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_div_trunc _null_ _null_ _null_ )); -DESCR("trunc(x/y)"); -DATA(insert OID = 2170 ( width_bucket PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 23 "1700 1700 1700 23" _null_ _null_ _null_ _null_ _null_ width_bucket_numeric _null_ _null_ _null_ )); -DESCR("bucket number of operand in equal-width histogram"); - -DATA(insert OID = 1747 ( time_pl_interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1083 "1083 1186" _null_ _null_ _null_ _null_ _null_ time_pl_interval _null_ _null_ _null_ )); -DATA(insert OID = 1748 ( time_mi_interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1083 "1083 1186" _null_ _null_ _null_ _null_ _null_ time_mi_interval _null_ _null_ _null_ )); -DATA(insert OID = 1749 ( timetz_pl_interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1266 "1266 1186" _null_ _null_ _null_ _null_ _null_ timetz_pl_interval _null_ _null_ _null_ )); -DATA(insert OID = 1750 ( timetz_mi_interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1266 "1266 1186" _null_ _null_ _null_ _null_ _null_ timetz_mi_interval _null_ _null_ _null_ )); - -DATA(insert OID = 1764 ( numeric_inc PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_inc _null_ _null_ _null_ )); -DESCR("increment by one"); -DATA(insert OID = 1766 ( numeric_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 1767 ( numeric_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1769 ( numeric_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1700 1700" _null_ _null_ _null_ _null_ _null_ numeric_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3283 ( numeric_sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ numeric_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 1771 ( numeric_uminus PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_uminus _null_ _null_ _null_ )); -DATA(insert OID = 1779 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "1700" _null_ _null_ _null_ _null_ _null_ numeric_int8 _null_ _null_ _null_ )); -DESCR("convert numeric to int8"); -DATA(insert OID = 1781 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ int8_numeric _null_ _null_ _null_ )); -DESCR("convert int8 to numeric"); -DATA(insert OID = 1782 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ int2_numeric _null_ _null_ _null_ )); -DESCR("convert int2 to numeric"); -DATA(insert OID = 1783 ( int2 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "1700" _null_ _null_ _null_ _null_ _null_ numeric_int2 _null_ _null_ _null_ )); -DESCR("convert numeric to int2"); - - -DATA(insert OID = 3556 ( bool PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_bool _null_ _null_ _null_ )); -DESCR("convert jsonb to boolean"); -DATA(insert OID = 3449 ( numeric PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_numeric _null_ _null_ _null_ )); -DESCR("convert jsonb to numeric"); -DATA(insert OID = 3450 ( int2 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_int2 _null_ _null_ _null_ )); -DESCR("convert jsonb to int2"); -DATA(insert OID = 3451 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_int4 _null_ _null_ _null_ )); -DESCR("convert jsonb to int4"); -DATA(insert OID = 3452 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_int8 _null_ _null_ _null_ )); -DESCR("convert jsonb to int8"); -DATA(insert OID = 3453 ( float4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_float4 _null_ _null_ _null_ )); -DESCR("convert jsonb to float4"); -DATA(insert OID = 2580 ( float8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_float8 _null_ _null_ _null_ )); -DESCR("convert jsonb to float8"); - -/* formatting */ -DATA(insert OID = 1770 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "1184 25" _null_ _null_ _null_ _null_ _null_ timestamptz_to_char _null_ _null_ _null_ )); -DESCR("format timestamp with time zone to text"); -DATA(insert OID = 1772 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "1700 25" _null_ _null_ _null_ _null_ _null_ numeric_to_char _null_ _null_ _null_ )); -DESCR("format numeric to text"); -DATA(insert OID = 1773 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "23 25" _null_ _null_ _null_ _null_ _null_ int4_to_char _null_ _null_ _null_ )); -DESCR("format int4 to text"); -DATA(insert OID = 1774 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "20 25" _null_ _null_ _null_ _null_ _null_ int8_to_char _null_ _null_ _null_ )); -DESCR("format int8 to text"); -DATA(insert OID = 1775 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "700 25" _null_ _null_ _null_ _null_ _null_ float4_to_char _null_ _null_ _null_ )); -DESCR("format float4 to text"); -DATA(insert OID = 1776 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "701 25" _null_ _null_ _null_ _null_ _null_ float8_to_char _null_ _null_ _null_ )); -DESCR("format float8 to text"); -DATA(insert OID = 1777 ( to_number PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 1700 "25 25" _null_ _null_ _null_ _null_ _null_ numeric_to_number _null_ _null_ _null_ )); -DESCR("convert text to numeric"); -DATA(insert OID = 1778 ( to_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 1184 "25 25" _null_ _null_ _null_ _null_ _null_ to_timestamp _null_ _null_ _null_ )); -DESCR("convert text to timestamp with time zone"); -DATA(insert OID = 1780 ( to_date PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 1082 "25 25" _null_ _null_ _null_ _null_ _null_ to_date _null_ _null_ _null_ )); -DESCR("convert text to date"); -DATA(insert OID = 1768 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "1186 25" _null_ _null_ _null_ _null_ _null_ interval_to_char _null_ _null_ _null_ )); -DESCR("format interval to text"); - -DATA(insert OID = 1282 ( quote_ident PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ quote_ident _null_ _null_ _null_ )); -DESCR("quote an identifier for usage in a querystring"); -DATA(insert OID = 1283 ( quote_literal PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ quote_literal _null_ _null_ _null_ )); -DESCR("quote a literal for usage in a querystring"); -DATA(insert OID = 1285 ( quote_literal PGNSP PGUID 14 1 0 0 0 f f f t f s s 1 0 25 "2283" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.quote_literal($1::pg_catalog.text)" _null_ _null_ _null_ )); -DESCR("quote a data value for usage in a querystring"); -DATA(insert OID = 1289 ( quote_nullable PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ quote_nullable _null_ _null_ _null_ )); -DESCR("quote a possibly-null literal for usage in a querystring"); -DATA(insert OID = 1290 ( quote_nullable PGNSP PGUID 14 1 0 0 0 f f f f f s s 1 0 25 "2283" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.quote_nullable($1::pg_catalog.text)" _null_ _null_ _null_ )); -DESCR("quote a possibly-null data value for usage in a querystring"); - -DATA(insert OID = 1798 ( oidin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 26 "2275" _null_ _null_ _null_ _null_ _null_ oidin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 1799 ( oidout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "26" _null_ _null_ _null_ _null_ _null_ oidout _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 3058 ( concat PGNSP PGUID 12 1 0 2276 0 f f f f f s s 1 0 25 "2276" "{2276}" "{v}" _null_ _null_ _null_ text_concat _null_ _null_ _null_ )); -DESCR("concatenate values"); -DATA(insert OID = 3059 ( concat_ws PGNSP PGUID 12 1 0 2276 0 f f f f f s s 2 0 25 "25 2276" "{25,2276}" "{i,v}" _null_ _null_ _null_ text_concat_ws _null_ _null_ _null_ )); -DESCR("concatenate values with separators"); -DATA(insert OID = 3060 ( left PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ text_left _null_ _null_ _null_ )); -DESCR("extract the first n characters"); -DATA(insert OID = 3061 ( right PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ text_right _null_ _null_ _null_ )); -DESCR("extract the last n characters"); -DATA(insert OID = 3062 ( reverse PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ text_reverse _null_ _null_ _null_ )); -DESCR("reverse text"); -DATA(insert OID = 3539 ( format PGNSP PGUID 12 1 0 2276 0 f f f f f s s 2 0 25 "25 2276" "{25,2276}" "{i,v}" _null_ _null_ _null_ text_format _null_ _null_ _null_ )); -DESCR("format text message"); -DATA(insert OID = 3540 ( format PGNSP PGUID 12 1 0 0 0 f f f f f s s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ text_format_nv _null_ _null_ _null_ )); -DESCR("format text message"); - -DATA(insert OID = 1810 ( bit_length PGNSP PGUID 14 1 0 0 0 f f f t f i s 1 0 23 "17" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.octet_length($1) * 8" _null_ _null_ _null_ )); -DESCR("length in bits"); -DATA(insert OID = 1811 ( bit_length PGNSP PGUID 14 1 0 0 0 f f f t f i s 1 0 23 "25" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.octet_length($1) * 8" _null_ _null_ _null_ )); -DESCR("length in bits"); -DATA(insert OID = 1812 ( bit_length PGNSP PGUID 14 1 0 0 0 f f f t f i s 1 0 23 "1560" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.length($1)" _null_ _null_ _null_ )); -DESCR("length in bits"); - -/* Selectivity estimators for LIKE and related operators */ -DATA(insert OID = 1814 ( iclikesel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ iclikesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of ILIKE"); -DATA(insert OID = 1815 ( icnlikesel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ icnlikesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of NOT ILIKE"); -DATA(insert OID = 1816 ( iclikejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ iclikejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of ILIKE"); -DATA(insert OID = 1817 ( icnlikejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ icnlikejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of NOT ILIKE"); -DATA(insert OID = 1818 ( regexeqsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ regexeqsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of regex match"); -DATA(insert OID = 1819 ( likesel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ likesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of LIKE"); -DATA(insert OID = 1820 ( icregexeqsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ icregexeqsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of case-insensitive regex match"); -DATA(insert OID = 1821 ( regexnesel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ regexnesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of regex non-match"); -DATA(insert OID = 1822 ( nlikesel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ nlikesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of NOT LIKE"); -DATA(insert OID = 1823 ( icregexnesel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ icregexnesel _null_ _null_ _null_ )); -DESCR("restriction selectivity of case-insensitive regex non-match"); -DATA(insert OID = 1824 ( regexeqjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ regexeqjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of regex match"); -DATA(insert OID = 1825 ( likejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ likejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of LIKE"); -DATA(insert OID = 1826 ( icregexeqjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ icregexeqjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of case-insensitive regex match"); -DATA(insert OID = 1827 ( regexnejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ regexnejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of regex non-match"); -DATA(insert OID = 1828 ( nlikejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ nlikejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of NOT LIKE"); -DATA(insert OID = 1829 ( icregexnejoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ icregexnejoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of case-insensitive regex non-match"); -DATA(insert OID = 3437 ( prefixsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ prefixsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of exact prefix"); -DATA(insert OID = 3438 ( prefixjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ prefixjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of exact prefix"); - -/* Aggregate-related functions */ -DATA(insert OID = 1830 ( float8_avg PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_avg _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2512 ( float8_var_pop PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_var_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1831 ( float8_var_samp PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_var_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2513 ( float8_stddev_pop PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_stddev_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1832 ( float8_stddev_samp PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_stddev_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1833 ( numeric_accum PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 1700" _null_ _null_ _null_ _null_ _null_ numeric_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3341 ( numeric_combine PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ numeric_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 2858 ( numeric_avg_accum PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 1700" _null_ _null_ _null_ _null_ _null_ numeric_avg_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3337 ( numeric_avg_combine PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ numeric_avg_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 2740 ( numeric_avg_serialize PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ numeric_avg_serialize _null_ _null_ _null_ )); -DESCR("aggregate serial function"); -DATA(insert OID = 2741 ( numeric_avg_deserialize PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "17 2281" _null_ _null_ _null_ _null_ _null_ numeric_avg_deserialize _null_ _null_ _null_ )); -DESCR("aggregate deserial function"); -DATA(insert OID = 3335 ( numeric_serialize PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ numeric_serialize _null_ _null_ _null_ )); -DESCR("aggregate serial function"); -DATA(insert OID = 3336 ( numeric_deserialize PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "17 2281" _null_ _null_ _null_ _null_ _null_ numeric_deserialize _null_ _null_ _null_ )); -DESCR("aggregate deserial function"); -DATA(insert OID = 3548 ( numeric_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 1700" _null_ _null_ _null_ _null_ _null_ numeric_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1834 ( int2_accum PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 21" _null_ _null_ _null_ _null_ _null_ int2_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1835 ( int4_accum PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 23" _null_ _null_ _null_ _null_ _null_ int4_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1836 ( int8_accum PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 20" _null_ _null_ _null_ _null_ _null_ int8_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3338 ( numeric_poly_combine PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 3339 ( numeric_poly_serialize PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_serialize _null_ _null_ _null_ )); -DESCR("aggregate serial function"); -DATA(insert OID = 3340 ( numeric_poly_deserialize PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "17 2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_deserialize _null_ _null_ _null_ )); -DESCR("aggregate deserial function"); -DATA(insert OID = 2746 ( int8_avg_accum PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 20" _null_ _null_ _null_ _null_ _null_ int8_avg_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3567 ( int2_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 21" _null_ _null_ _null_ _null_ _null_ int2_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3568 ( int4_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 23" _null_ _null_ _null_ _null_ _null_ int4_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3569 ( int8_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 20" _null_ _null_ _null_ _null_ _null_ int8_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3387 ( int8_avg_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 20" _null_ _null_ _null_ _null_ _null_ int8_avg_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 2785 ( int8_avg_combine PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ int8_avg_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 2786 ( int8_avg_serialize PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ int8_avg_serialize _null_ _null_ _null_ )); -DESCR("aggregate serial function"); -DATA(insert OID = 2787 ( int8_avg_deserialize PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "17 2281" _null_ _null_ _null_ _null_ _null_ int8_avg_deserialize _null_ _null_ _null_ )); -DESCR("aggregate deserial function"); -DATA(insert OID = 3324 ( int4_avg_combine PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1016 "1016 1016" _null_ _null_ _null_ _null_ _null_ int4_avg_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 3178 ( numeric_sum PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_sum _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1837 ( numeric_avg PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_avg _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2514 ( numeric_var_pop PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_var_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1838 ( numeric_var_samp PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_var_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2596 ( numeric_stddev_pop PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_stddev_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1839 ( numeric_stddev_samp PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_stddev_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1840 ( int2_sum PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 20 "20 21" _null_ _null_ _null_ _null_ _null_ int2_sum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1841 ( int4_sum PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int4_sum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1842 ( int8_sum PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 1700 "1700 20" _null_ _null_ _null_ _null_ _null_ int8_sum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3388 ( numeric_poly_sum PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_sum _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3389 ( numeric_poly_avg PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_avg _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3390 ( numeric_poly_var_pop PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_var_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3391 ( numeric_poly_var_samp PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_var_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3392 ( numeric_poly_stddev_pop PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_stddev_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3393 ( numeric_poly_stddev_samp PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 1700 "2281" _null_ _null_ _null_ _null_ _null_ numeric_poly_stddev_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); - -DATA(insert OID = 1843 ( interval_accum PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1187 "1187 1186" _null_ _null_ _null_ _null_ _null_ interval_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3325 ( interval_combine PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1187 "1187 1187" _null_ _null_ _null_ _null_ _null_ interval_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 3549 ( interval_accum_inv PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1187 "1187 1186" _null_ _null_ _null_ _null_ _null_ interval_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1844 ( interval_avg PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1186 "1187" _null_ _null_ _null_ _null_ _null_ interval_avg _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 1962 ( int2_avg_accum PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1016 "1016 21" _null_ _null_ _null_ _null_ _null_ int2_avg_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1963 ( int4_avg_accum PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1016 "1016 23" _null_ _null_ _null_ _null_ _null_ int4_avg_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3570 ( int2_avg_accum_inv PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1016 "1016 21" _null_ _null_ _null_ _null_ _null_ int2_avg_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3571 ( int4_avg_accum_inv PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1016 "1016 23" _null_ _null_ _null_ _null_ _null_ int4_avg_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 1964 ( int8_avg PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1016" _null_ _null_ _null_ _null_ _null_ int8_avg _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3572 ( int2int4_sum PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "1016" _null_ _null_ _null_ _null_ _null_ int2int4_sum _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2805 ( int8inc_float8_float8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 20 "20 701 701" _null_ _null_ _null_ _null_ _null_ int8inc_float8_float8 _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 2806 ( float8_regr_accum PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1022 "1022 701 701" _null_ _null_ _null_ _null_ _null_ float8_regr_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3342 ( float8_regr_combine PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1022 "1022 1022" _null_ _null_ _null_ _null_ _null_ float8_regr_combine _null_ _null_ _null_ )); -DESCR("aggregate combine function"); -DATA(insert OID = 2807 ( float8_regr_sxx PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_sxx _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2808 ( float8_regr_syy PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_syy _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2809 ( float8_regr_sxy PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_sxy _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2810 ( float8_regr_avgx PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_avgx _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2811 ( float8_regr_avgy PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_avgy _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2812 ( float8_regr_r2 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_r2 _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2813 ( float8_regr_slope PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_slope _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2814 ( float8_regr_intercept PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_regr_intercept _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2815 ( float8_covar_pop PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_covar_pop _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2816 ( float8_covar_samp PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_covar_samp _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2817 ( float8_corr PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "1022" _null_ _null_ _null_ _null_ _null_ float8_corr _null_ _null_ _null_ )); -DESCR("aggregate final function"); - -DATA(insert OID = 3535 ( string_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 2281 "2281 25 25" _null_ _null_ _null_ _null_ _null_ string_agg_transfn _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3536 ( string_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 25 "2281" _null_ _null_ _null_ _null_ _null_ string_agg_finalfn _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3538 ( string_agg PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("concatenate aggregate input into a string"); -DATA(insert OID = 3543 ( bytea_string_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 2281 "2281 17 17" _null_ _null_ _null_ _null_ _null_ bytea_string_agg_transfn _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3544 ( bytea_string_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ bytea_string_agg_finalfn _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3545 ( string_agg PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 17 "17 17" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("concatenate aggregate input into a bytea"); - -/* To ASCII conversion */ -DATA(insert OID = 1845 ( to_ascii PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ to_ascii_default _null_ _null_ _null_ )); -DESCR("encode text from DB encoding to ASCII text"); -DATA(insert OID = 1846 ( to_ascii PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 23" _null_ _null_ _null_ _null_ _null_ to_ascii_enc _null_ _null_ _null_ )); -DESCR("encode text from encoding to ASCII text"); -DATA(insert OID = 1847 ( to_ascii PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 19" _null_ _null_ _null_ _null_ _null_ to_ascii_encname _null_ _null_ _null_ )); -DESCR("encode text from encoding to ASCII text"); - -DATA(insert OID = 1848 ( interval_pl_time PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 1083 "1186 1083" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); - -DATA(insert OID = 1850 ( int28eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28eq _null_ _null_ _null_ )); -DATA(insert OID = 1851 ( int28ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28ne _null_ _null_ _null_ )); -DATA(insert OID = 1852 ( int28lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28lt _null_ _null_ _null_ )); -DATA(insert OID = 1853 ( int28gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28gt _null_ _null_ _null_ )); -DATA(insert OID = 1854 ( int28le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28le _null_ _null_ _null_ )); -DATA(insert OID = 1855 ( int28ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "21 20" _null_ _null_ _null_ _null_ _null_ int28ge _null_ _null_ _null_ )); - -DATA(insert OID = 1856 ( int82eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82eq _null_ _null_ _null_ )); -DATA(insert OID = 1857 ( int82ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82ne _null_ _null_ _null_ )); -DATA(insert OID = 1858 ( int82lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82lt _null_ _null_ _null_ )); -DATA(insert OID = 1859 ( int82gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82gt _null_ _null_ _null_ )); -DATA(insert OID = 1860 ( int82le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82le _null_ _null_ _null_ )); -DATA(insert OID = 1861 ( int82ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "20 21" _null_ _null_ _null_ _null_ _null_ int82ge _null_ _null_ _null_ )); - -DATA(insert OID = 1892 ( int2and PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2and _null_ _null_ _null_ )); -DATA(insert OID = 1893 ( int2or PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2or _null_ _null_ _null_ )); -DATA(insert OID = 1894 ( int2xor PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 21" _null_ _null_ _null_ _null_ _null_ int2xor _null_ _null_ _null_ )); -DATA(insert OID = 1895 ( int2not PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ int2not _null_ _null_ _null_ )); -DATA(insert OID = 1896 ( int2shl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 23" _null_ _null_ _null_ _null_ _null_ int2shl _null_ _null_ _null_ )); -DATA(insert OID = 1897 ( int2shr PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 21 "21 23" _null_ _null_ _null_ _null_ _null_ int2shr _null_ _null_ _null_ )); - -DATA(insert OID = 1898 ( int4and PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4and _null_ _null_ _null_ )); -DATA(insert OID = 1899 ( int4or PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4or _null_ _null_ _null_ )); -DATA(insert OID = 1900 ( int4xor PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4xor _null_ _null_ _null_ )); -DATA(insert OID = 1901 ( int4not PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4not _null_ _null_ _null_ )); -DATA(insert OID = 1902 ( int4shl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4shl _null_ _null_ _null_ )); -DATA(insert OID = 1903 ( int4shr PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ int4shr _null_ _null_ _null_ )); - -DATA(insert OID = 1904 ( int8and PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8and _null_ _null_ _null_ )); -DATA(insert OID = 1905 ( int8or PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8or _null_ _null_ _null_ )); -DATA(insert OID = 1906 ( int8xor PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ int8xor _null_ _null_ _null_ )); -DATA(insert OID = 1907 ( int8not PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8not _null_ _null_ _null_ )); -DATA(insert OID = 1908 ( int8shl PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int8shl _null_ _null_ _null_ )); -DATA(insert OID = 1909 ( int8shr PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "20 23" _null_ _null_ _null_ _null_ _null_ int8shr _null_ _null_ _null_ )); - -DATA(insert OID = 1910 ( int8up PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ int8up _null_ _null_ _null_ )); -DATA(insert OID = 1911 ( int2up PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ int2up _null_ _null_ _null_ )); -DATA(insert OID = 1912 ( int4up PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ int4up _null_ _null_ _null_ )); -DATA(insert OID = 1913 ( float4up PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ float4up _null_ _null_ _null_ )); -DATA(insert OID = 1914 ( float8up PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ float8up _null_ _null_ _null_ )); -DATA(insert OID = 1915 ( numeric_uplus PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ numeric_uplus _null_ _null_ _null_ )); - -DATA(insert OID = 1922 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on relation by username, rel name"); -DATA(insert OID = 1923 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on relation by username, rel oid"); -DATA(insert OID = 1924 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on relation by user oid, rel name"); -DATA(insert OID = 1925 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on relation by user oid, rel oid"); -DATA(insert OID = 1926 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on relation by rel name"); -DATA(insert OID = 1927 ( has_table_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_table_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on relation by rel oid"); - -DATA(insert OID = 2181 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on sequence by username, seq name"); -DATA(insert OID = 2182 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on sequence by username, seq oid"); -DATA(insert OID = 2183 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on sequence by user oid, seq name"); -DATA(insert OID = 2184 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on sequence by user oid, seq oid"); -DATA(insert OID = 2185 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on sequence by seq name"); -DATA(insert OID = 2186 ( has_sequence_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_sequence_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on sequence by seq oid"); - -DATA(insert OID = 3012 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 16 "19 25 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_name_name _null_ _null_ _null_ )); -DESCR("user privilege on column by username, rel name, col name"); -DATA(insert OID = 3013 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 16 "19 25 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_name_attnum _null_ _null_ _null_ )); -DESCR("user privilege on column by username, rel name, col attnum"); -DATA(insert OID = 3014 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 16 "19 26 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_id_name _null_ _null_ _null_ )); -DESCR("user privilege on column by username, rel oid, col name"); -DATA(insert OID = 3015 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 16 "19 26 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_id_attnum _null_ _null_ _null_ )); -DESCR("user privilege on column by username, rel oid, col attnum"); -DATA(insert OID = 3016 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 16 "26 25 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_name_name _null_ _null_ _null_ )); -DESCR("user privilege on column by user oid, rel name, col name"); -DATA(insert OID = 3017 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 16 "26 25 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_name_attnum _null_ _null_ _null_ )); -DESCR("user privilege on column by user oid, rel name, col attnum"); -DATA(insert OID = 3018 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 16 "26 26 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_id_name _null_ _null_ _null_ )); -DESCR("user privilege on column by user oid, rel oid, col name"); -DATA(insert OID = 3019 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 16 "26 26 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_id_attnum _null_ _null_ _null_ )); -DESCR("user privilege on column by user oid, rel oid, col attnum"); -DATA(insert OID = 3020 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "25 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_name _null_ _null_ _null_ )); -DESCR("current user privilege on column by rel name, col name"); -DATA(insert OID = 3021 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "25 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_name_attnum _null_ _null_ _null_ )); -DESCR("current user privilege on column by rel name, col attnum"); -DATA(insert OID = 3022 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_name _null_ _null_ _null_ )); -DESCR("current user privilege on column by rel oid, col name"); -DATA(insert OID = 3023 ( has_column_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 21 25" _null_ _null_ _null_ _null_ _null_ has_column_privilege_id_attnum _null_ _null_ _null_ )); -DESCR("current user privilege on column by rel oid, col attnum"); - -DATA(insert OID = 3024 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on any column by username, rel name"); -DATA(insert OID = 3025 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on any column by username, rel oid"); -DATA(insert OID = 3026 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on any column by user oid, rel name"); -DATA(insert OID = 3027 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on any column by user oid, rel oid"); -DATA(insert OID = 3028 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on any column by rel name"); -DATA(insert OID = 3029 ( has_any_column_privilege PGNSP PGUID 12 10 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_any_column_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on any column by rel oid"); - -DATA(insert OID = 3355 ( pg_ndistinct_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3361 "2275" _null_ _null_ _null_ _null_ _null_ pg_ndistinct_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3356 ( pg_ndistinct_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "3361" _null_ _null_ _null_ _null_ _null_ pg_ndistinct_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3357 ( pg_ndistinct_recv PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 3361 "2281" _null_ _null_ _null_ _null_ _null_ pg_ndistinct_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3358 ( pg_ndistinct_send PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "3361" _null_ _null_ _null_ _null_ _null_ pg_ndistinct_send _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 3404 ( pg_dependencies_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3402 "2275" _null_ _null_ _null_ _null_ _null_ pg_dependencies_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3405 ( pg_dependencies_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "3402" _null_ _null_ _null_ _null_ _null_ pg_dependencies_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3406 ( pg_dependencies_recv PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 3402 "2281" _null_ _null_ _null_ _null_ _null_ pg_dependencies_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3407 ( pg_dependencies_send PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "3402" _null_ _null_ _null_ _null_ _null_ pg_dependencies_send _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 1928 ( pg_stat_get_numscans PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_numscans _null_ _null_ _null_ )); -DESCR("statistics: number of scans done for table/index"); -DATA(insert OID = 1929 ( pg_stat_get_tuples_returned PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_returned _null_ _null_ _null_ )); -DESCR("statistics: number of tuples read by seqscan"); -DATA(insert OID = 1930 ( pg_stat_get_tuples_fetched PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_fetched _null_ _null_ _null_ )); -DESCR("statistics: number of tuples fetched by idxscan"); -DATA(insert OID = 1931 ( pg_stat_get_tuples_inserted PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_inserted _null_ _null_ _null_ )); -DESCR("statistics: number of tuples inserted"); -DATA(insert OID = 1932 ( pg_stat_get_tuples_updated PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_updated _null_ _null_ _null_ )); -DESCR("statistics: number of tuples updated"); -DATA(insert OID = 1933 ( pg_stat_get_tuples_deleted PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_deleted _null_ _null_ _null_ )); -DESCR("statistics: number of tuples deleted"); -DATA(insert OID = 1972 ( pg_stat_get_tuples_hot_updated PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_tuples_hot_updated _null_ _null_ _null_ )); -DESCR("statistics: number of tuples hot updated"); -DATA(insert OID = 2878 ( pg_stat_get_live_tuples PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_live_tuples _null_ _null_ _null_ )); -DESCR("statistics: number of live tuples"); -DATA(insert OID = 2879 ( pg_stat_get_dead_tuples PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_dead_tuples _null_ _null_ _null_ )); -DESCR("statistics: number of dead tuples"); -DATA(insert OID = 3177 ( pg_stat_get_mod_since_analyze PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_mod_since_analyze _null_ _null_ _null_ )); -DESCR("statistics: number of tuples changed since last analyze"); -DATA(insert OID = 1934 ( pg_stat_get_blocks_fetched PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_blocks_fetched _null_ _null_ _null_ )); -DESCR("statistics: number of blocks fetched"); -DATA(insert OID = 1935 ( pg_stat_get_blocks_hit PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_blocks_hit _null_ _null_ _null_ )); -DESCR("statistics: number of blocks found in cache"); -DATA(insert OID = 2781 ( pg_stat_get_last_vacuum_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 1184 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_last_vacuum_time _null_ _null_ _null_ )); -DESCR("statistics: last manual vacuum time for a table"); -DATA(insert OID = 2782 ( pg_stat_get_last_autovacuum_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 1184 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_last_autovacuum_time _null_ _null_ _null_ )); -DESCR("statistics: last auto vacuum time for a table"); -DATA(insert OID = 2783 ( pg_stat_get_last_analyze_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 1184 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_last_analyze_time _null_ _null_ _null_ )); -DESCR("statistics: last manual analyze time for a table"); -DATA(insert OID = 2784 ( pg_stat_get_last_autoanalyze_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 1184 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_last_autoanalyze_time _null_ _null_ _null_ )); -DESCR("statistics: last auto analyze time for a table"); -DATA(insert OID = 3054 ( pg_stat_get_vacuum_count PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_vacuum_count _null_ _null_ _null_ )); -DESCR("statistics: number of manual vacuums for a table"); -DATA(insert OID = 3055 ( pg_stat_get_autovacuum_count PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_autovacuum_count _null_ _null_ _null_ )); -DESCR("statistics: number of auto vacuums for a table"); -DATA(insert OID = 3056 ( pg_stat_get_analyze_count PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_analyze_count _null_ _null_ _null_ )); -DESCR("statistics: number of manual analyzes for a table"); -DATA(insert OID = 3057 ( pg_stat_get_autoanalyze_count PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_autoanalyze_count _null_ _null_ _null_ )); -DESCR("statistics: number of auto analyzes for a table"); -DATA(insert OID = 1936 ( pg_stat_get_backend_idset PGNSP PGUID 12 1 100 0 0 f f f t t s r 0 0 23 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_idset _null_ _null_ _null_ )); -DESCR("statistics: currently active backend IDs"); -DATA(insert OID = 2022 ( pg_stat_get_activity PGNSP PGUID 12 1 100 0 0 f f f f t s r 1 0 2249 "23" "{23,26,23,26,25,25,25,25,25,1184,1184,1184,1184,869,25,23,28,28,25,16,25,25,23,16,25}" "{i,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{pid,datid,pid,usesysid,application_name,state,query,wait_event_type,wait_event,xact_start,query_start,backend_start,state_change,client_addr,client_hostname,client_port,backend_xid,backend_xmin,backend_type,ssl,sslversion,sslcipher,sslbits,sslcompression,sslclientdn}" _null_ _null_ pg_stat_get_activity _null_ _null_ _null_ )); -DESCR("statistics: information about currently active backends"); -DATA(insert OID = 3318 ( pg_stat_get_progress_info PGNSP PGUID 12 1 100 0 0 f f f t t s r 1 0 2249 "25" "{25,23,26,26,20,20,20,20,20,20,20,20,20,20}" "{i,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{cmdtype,pid,datid,relid,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10}" _null_ _null_ pg_stat_get_progress_info _null_ _null_ _null_ )); -DESCR("statistics: information about progress of backends running maintenance command"); -DATA(insert OID = 3099 ( pg_stat_get_wal_senders PGNSP PGUID 12 1 10 0 0 f f f f t s r 0 0 2249 "" "{23,25,3220,3220,3220,3220,1186,1186,1186,23,25}" "{o,o,o,o,o,o,o,o,o,o,o}" "{pid,state,sent_lsn,write_lsn,flush_lsn,replay_lsn,write_lag,flush_lag,replay_lag,sync_priority,sync_state}" _null_ _null_ pg_stat_get_wal_senders _null_ _null_ _null_ )); -DESCR("statistics: information about currently active replication"); -DATA(insert OID = 3317 ( pg_stat_get_wal_receiver PGNSP PGUID 12 1 0 0 0 f f f f f s r 0 0 2249 "" "{23,25,3220,23,3220,23,1184,1184,3220,1184,25,25,23,25}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{pid,status,receive_start_lsn,receive_start_tli,received_lsn,received_tli,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time,slot_name,sender_host,sender_port,conninfo}" _null_ _null_ pg_stat_get_wal_receiver _null_ _null_ _null_ )); -DESCR("statistics: information about WAL receiver"); -DATA(insert OID = 6118 ( pg_stat_get_subscription PGNSP PGUID 12 1 0 0 0 f f f f f s r 1 0 2249 "26" "{26,26,26,23,3220,1184,1184,3220,1184}" "{i,o,o,o,o,o,o,o,o}" "{subid,subid,relid,pid,received_lsn,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time}" _null_ _null_ pg_stat_get_subscription _null_ _null_ _null_ )); -DESCR("statistics: information about subscription"); -DATA(insert OID = 2026 ( pg_backend_pid PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 23 "" _null_ _null_ _null_ _null_ _null_ pg_backend_pid _null_ _null_ _null_ )); -DESCR("statistics: current backend PID"); -DATA(insert OID = 1937 ( pg_stat_get_backend_pid PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_pid _null_ _null_ _null_ )); -DESCR("statistics: PID of backend"); -DATA(insert OID = 1938 ( pg_stat_get_backend_dbid PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 26 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_dbid _null_ _null_ _null_ )); -DESCR("statistics: database ID of backend"); -DATA(insert OID = 1939 ( pg_stat_get_backend_userid PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 26 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_userid _null_ _null_ _null_ )); -DESCR("statistics: user ID of backend"); -DATA(insert OID = 1940 ( pg_stat_get_backend_activity PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 25 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_activity _null_ _null_ _null_ )); -DESCR("statistics: current query of backend"); -DATA(insert OID = 2788 ( pg_stat_get_backend_wait_event_type PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 25 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_wait_event_type _null_ _null_ _null_ )); -DESCR("statistics: wait event type on which backend is currently waiting"); -DATA(insert OID = 2853 ( pg_stat_get_backend_wait_event PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 25 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_wait_event _null_ _null_ _null_ )); -DESCR("statistics: wait event on which backend is currently waiting"); -DATA(insert OID = 2094 ( pg_stat_get_backend_activity_start PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 1184 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_activity_start _null_ _null_ _null_ )); -DESCR("statistics: start time for current query of backend"); -DATA(insert OID = 2857 ( pg_stat_get_backend_xact_start PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 1184 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_xact_start _null_ _null_ _null_ )); -DESCR("statistics: start time for backend's current transaction"); -DATA(insert OID = 1391 ( pg_stat_get_backend_start PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 1184 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_start _null_ _null_ _null_ )); -DESCR("statistics: start time for current backend session"); -DATA(insert OID = 1392 ( pg_stat_get_backend_client_addr PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 869 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_client_addr _null_ _null_ _null_ )); -DESCR("statistics: address of client connected to backend"); -DATA(insert OID = 1393 ( pg_stat_get_backend_client_port PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ pg_stat_get_backend_client_port _null_ _null_ _null_ )); -DESCR("statistics: port number of client connected to backend"); -DATA(insert OID = 1941 ( pg_stat_get_db_numbackends PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 23 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_numbackends _null_ _null_ _null_ )); -DESCR("statistics: number of backends in database"); -DATA(insert OID = 1942 ( pg_stat_get_db_xact_commit PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_xact_commit _null_ _null_ _null_ )); -DESCR("statistics: transactions committed"); -DATA(insert OID = 1943 ( pg_stat_get_db_xact_rollback PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_xact_rollback _null_ _null_ _null_ )); -DESCR("statistics: transactions rolled back"); -DATA(insert OID = 1944 ( pg_stat_get_db_blocks_fetched PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_blocks_fetched _null_ _null_ _null_ )); -DESCR("statistics: blocks fetched for database"); -DATA(insert OID = 1945 ( pg_stat_get_db_blocks_hit PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_blocks_hit _null_ _null_ _null_ )); -DESCR("statistics: blocks found in cache for database"); -DATA(insert OID = 2758 ( pg_stat_get_db_tuples_returned PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_returned _null_ _null_ _null_ )); -DESCR("statistics: tuples returned for database"); -DATA(insert OID = 2759 ( pg_stat_get_db_tuples_fetched PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_fetched _null_ _null_ _null_ )); -DESCR("statistics: tuples fetched for database"); -DATA(insert OID = 2760 ( pg_stat_get_db_tuples_inserted PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_inserted _null_ _null_ _null_ )); -DESCR("statistics: tuples inserted in database"); -DATA(insert OID = 2761 ( pg_stat_get_db_tuples_updated PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_updated _null_ _null_ _null_ )); -DESCR("statistics: tuples updated in database"); -DATA(insert OID = 2762 ( pg_stat_get_db_tuples_deleted PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_tuples_deleted _null_ _null_ _null_ )); -DESCR("statistics: tuples deleted in database"); -DATA(insert OID = 3065 ( pg_stat_get_db_conflict_tablespace PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_tablespace _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database caused by drop tablespace"); -DATA(insert OID = 3066 ( pg_stat_get_db_conflict_lock PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_lock _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database caused by relation lock"); -DATA(insert OID = 3067 ( pg_stat_get_db_conflict_snapshot PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_snapshot _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database caused by snapshot expiry"); -DATA(insert OID = 3068 ( pg_stat_get_db_conflict_bufferpin PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_bufferpin _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database caused by shared buffer pin"); -DATA(insert OID = 3069 ( pg_stat_get_db_conflict_startup_deadlock PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_startup_deadlock _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database caused by buffer deadlock"); -DATA(insert OID = 3070 ( pg_stat_get_db_conflict_all PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_conflict_all _null_ _null_ _null_ )); -DESCR("statistics: recovery conflicts in database"); -DATA(insert OID = 3152 ( pg_stat_get_db_deadlocks PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_deadlocks _null_ _null_ _null_ )); -DESCR("statistics: deadlocks detected in database"); -DATA(insert OID = 3074 ( pg_stat_get_db_stat_reset_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 1184 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_stat_reset_time _null_ _null_ _null_ )); -DESCR("statistics: last reset for a database"); -DATA(insert OID = 3150 ( pg_stat_get_db_temp_files PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_temp_files _null_ _null_ _null_ )); -DESCR("statistics: number of temporary files written"); -DATA(insert OID = 3151 ( pg_stat_get_db_temp_bytes PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_temp_bytes _null_ _null_ _null_ )); -DESCR("statistics: number of bytes in temporary files written"); -DATA(insert OID = 2844 ( pg_stat_get_db_blk_read_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_blk_read_time _null_ _null_ _null_ )); -DESCR("statistics: block read time, in milliseconds"); -DATA(insert OID = 2845 ( pg_stat_get_db_blk_write_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_db_blk_write_time _null_ _null_ _null_ )); -DESCR("statistics: block write time, in milliseconds"); -DATA(insert OID = 3195 ( pg_stat_get_archiver PGNSP PGUID 12 1 0 0 0 f f f f f s r 0 0 2249 "" "{20,25,1184,20,25,1184,1184}" "{o,o,o,o,o,o,o}" "{archived_count,last_archived_wal,last_archived_time,failed_count,last_failed_wal,last_failed_time,stats_reset}" _null_ _null_ pg_stat_get_archiver _null_ _null_ _null_ )); -DESCR("statistics: information about WAL archiver"); -DATA(insert OID = 2769 ( pg_stat_get_bgwriter_timed_checkpoints PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_timed_checkpoints _null_ _null_ _null_ )); -DESCR("statistics: number of timed checkpoints started by the bgwriter"); -DATA(insert OID = 2770 ( pg_stat_get_bgwriter_requested_checkpoints PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_requested_checkpoints _null_ _null_ _null_ )); -DESCR("statistics: number of backend requested checkpoints started by the bgwriter"); -DATA(insert OID = 2771 ( pg_stat_get_bgwriter_buf_written_checkpoints PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_buf_written_checkpoints _null_ _null_ _null_ )); -DESCR("statistics: number of buffers written by the bgwriter during checkpoints"); -DATA(insert OID = 2772 ( pg_stat_get_bgwriter_buf_written_clean PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_buf_written_clean _null_ _null_ _null_ )); -DESCR("statistics: number of buffers written by the bgwriter for cleaning dirty buffers"); -DATA(insert OID = 2773 ( pg_stat_get_bgwriter_maxwritten_clean PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_maxwritten_clean _null_ _null_ _null_ )); -DESCR("statistics: number of times the bgwriter stopped processing when it had written too many buffers while cleaning"); -DATA(insert OID = 3075 ( pg_stat_get_bgwriter_stat_reset_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_bgwriter_stat_reset_time _null_ _null_ _null_ )); -DESCR("statistics: last reset for the bgwriter"); -DATA(insert OID = 3160 ( pg_stat_get_checkpoint_write_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 701 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_checkpoint_write_time _null_ _null_ _null_ )); -DESCR("statistics: checkpoint time spent writing buffers to disk, in milliseconds"); -DATA(insert OID = 3161 ( pg_stat_get_checkpoint_sync_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 701 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_checkpoint_sync_time _null_ _null_ _null_ )); -DESCR("statistics: checkpoint time spent synchronizing buffers to disk, in milliseconds"); -DATA(insert OID = 2775 ( pg_stat_get_buf_written_backend PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_buf_written_backend _null_ _null_ _null_ )); -DESCR("statistics: number of buffers written by backends"); -DATA(insert OID = 3063 ( pg_stat_get_buf_fsync_backend PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_buf_fsync_backend _null_ _null_ _null_ )); -DESCR("statistics: number of backend buffer writes that did their own fsync"); -DATA(insert OID = 2859 ( pg_stat_get_buf_alloc PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 20 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_buf_alloc _null_ _null_ _null_ )); -DESCR("statistics: number of buffer allocations"); - -DATA(insert OID = 2978 ( pg_stat_get_function_calls PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_function_calls _null_ _null_ _null_ )); -DESCR("statistics: number of function calls"); -DATA(insert OID = 2979 ( pg_stat_get_function_total_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_function_total_time _null_ _null_ _null_ )); -DESCR("statistics: total execution time of function, in milliseconds"); -DATA(insert OID = 2980 ( pg_stat_get_function_self_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_function_self_time _null_ _null_ _null_ )); -DESCR("statistics: self execution time of function, in milliseconds"); - -DATA(insert OID = 3037 ( pg_stat_get_xact_numscans PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_numscans _null_ _null_ _null_ )); -DESCR("statistics: number of scans done for table/index in current transaction"); -DATA(insert OID = 3038 ( pg_stat_get_xact_tuples_returned PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_returned _null_ _null_ _null_ )); -DESCR("statistics: number of tuples read by seqscan in current transaction"); -DATA(insert OID = 3039 ( pg_stat_get_xact_tuples_fetched PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_fetched _null_ _null_ _null_ )); -DESCR("statistics: number of tuples fetched by idxscan in current transaction"); -DATA(insert OID = 3040 ( pg_stat_get_xact_tuples_inserted PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_inserted _null_ _null_ _null_ )); -DESCR("statistics: number of tuples inserted in current transaction"); -DATA(insert OID = 3041 ( pg_stat_get_xact_tuples_updated PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_updated _null_ _null_ _null_ )); -DESCR("statistics: number of tuples updated in current transaction"); -DATA(insert OID = 3042 ( pg_stat_get_xact_tuples_deleted PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_deleted _null_ _null_ _null_ )); -DESCR("statistics: number of tuples deleted in current transaction"); -DATA(insert OID = 3043 ( pg_stat_get_xact_tuples_hot_updated PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_tuples_hot_updated _null_ _null_ _null_ )); -DESCR("statistics: number of tuples hot updated in current transaction"); -DATA(insert OID = 3044 ( pg_stat_get_xact_blocks_fetched PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_blocks_fetched _null_ _null_ _null_ )); -DESCR("statistics: number of blocks fetched in current transaction"); -DATA(insert OID = 3045 ( pg_stat_get_xact_blocks_hit PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_blocks_hit _null_ _null_ _null_ )); -DESCR("statistics: number of blocks found in cache in current transaction"); -DATA(insert OID = 3046 ( pg_stat_get_xact_function_calls PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_function_calls _null_ _null_ _null_ )); -DESCR("statistics: number of function calls in current transaction"); -DATA(insert OID = 3047 ( pg_stat_get_xact_function_total_time PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_function_total_time _null_ _null_ _null_ )); -DESCR("statistics: total execution time of function in current transaction, in milliseconds"); -DATA(insert OID = 3048 ( pg_stat_get_xact_function_self_time PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 701 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_get_xact_function_self_time _null_ _null_ _null_ )); -DESCR("statistics: self execution time of function in current transaction, in milliseconds"); - -DATA(insert OID = 3788 ( pg_stat_get_snapshot_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_stat_get_snapshot_timestamp _null_ _null_ _null_ )); -DESCR("statistics: timestamp of the current statistics snapshot"); -DATA(insert OID = 2230 ( pg_stat_clear_snapshot PGNSP PGUID 12 1 0 0 0 f f f f f v r 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_stat_clear_snapshot _null_ _null_ _null_ )); -DESCR("statistics: discard current transaction's statistics snapshot"); -DATA(insert OID = 2274 ( pg_stat_reset PGNSP PGUID 12 1 0 0 0 f f f f f v s 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_stat_reset _null_ _null_ _null_ )); -DESCR("statistics: reset collected statistics for current database"); -DATA(insert OID = 3775 ( pg_stat_reset_shared PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 2278 "25" _null_ _null_ _null_ _null_ _null_ pg_stat_reset_shared _null_ _null_ _null_ )); -DESCR("statistics: reset collected statistics shared across the cluster"); -DATA(insert OID = 3776 ( pg_stat_reset_single_table_counters PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_reset_single_table_counters _null_ _null_ _null_ )); -DESCR("statistics: reset collected statistics for a single table or index in the current database"); -DATA(insert OID = 3777 ( pg_stat_reset_single_function_counters PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ pg_stat_reset_single_function_counters _null_ _null_ _null_ )); -DESCR("statistics: reset collected statistics for a single function in the current database"); - -DATA(insert OID = 3163 ( pg_trigger_depth PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 23 "" _null_ _null_ _null_ _null_ _null_ pg_trigger_depth _null_ _null_ _null_ )); -DESCR("current trigger depth"); - -DATA(insert OID = 3778 ( pg_tablespace_location PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_tablespace_location _null_ _null_ _null_ )); -DESCR("tablespace location"); - -DATA(insert OID = 1946 ( encode PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "17 25" _null_ _null_ _null_ _null_ _null_ binary_encode _null_ _null_ _null_ )); -DESCR("convert bytea value into some ascii-only text string"); -DATA(insert OID = 1947 ( decode PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 17 "25 25" _null_ _null_ _null_ _null_ _null_ binary_decode _null_ _null_ _null_ )); -DESCR("convert ascii-encoded text string into bytea value"); - -DATA(insert OID = 1948 ( byteaeq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteaeq _null_ _null_ _null_ )); -DATA(insert OID = 1949 ( bytealt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ bytealt _null_ _null_ _null_ )); -DATA(insert OID = 1950 ( byteale PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteale _null_ _null_ _null_ )); -DATA(insert OID = 1951 ( byteagt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteagt _null_ _null_ _null_ )); -DATA(insert OID = 1952 ( byteage PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteage _null_ _null_ _null_ )); -DATA(insert OID = 1953 ( byteane PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteane _null_ _null_ _null_ )); -DATA(insert OID = 1954 ( byteacmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "17 17" _null_ _null_ _null_ _null_ _null_ byteacmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3331 ( bytea_sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ bytea_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); - -DATA(insert OID = 3917 ( timestamp_transform PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ timestamp_transform _null_ _null_ _null_ )); -DESCR("transform a timestamp length coercion"); -DATA(insert OID = 3944 ( time_transform PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ time_transform _null_ _null_ _null_ )); -DESCR("transform a time length coercion"); - -DATA(insert OID = 1961 ( timestamp PGNSP PGUID 12 1 0 0 timestamp_transform f f f t f i s 2 0 1114 "1114 23" _null_ _null_ _null_ _null_ _null_ timestamp_scale _null_ _null_ _null_ )); -DESCR("adjust timestamp precision"); - -DATA(insert OID = 1965 ( oidlarger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 26 "26 26" _null_ _null_ _null_ _null_ _null_ oidlarger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 1966 ( oidsmaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 26 "26 26" _null_ _null_ _null_ _null_ _null_ oidsmaller _null_ _null_ _null_ )); -DESCR("smaller of two"); - -DATA(insert OID = 1967 ( timestamptz PGNSP PGUID 12 1 0 0 timestamp_transform f f f t f i s 2 0 1184 "1184 23" _null_ _null_ _null_ _null_ _null_ timestamptz_scale _null_ _null_ _null_ )); -DESCR("adjust timestamptz precision"); -DATA(insert OID = 1968 ( time PGNSP PGUID 12 1 0 0 time_transform f f f t f i s 2 0 1083 "1083 23" _null_ _null_ _null_ _null_ _null_ time_scale _null_ _null_ _null_ )); -DESCR("adjust time precision"); -DATA(insert OID = 1969 ( timetz PGNSP PGUID 12 1 0 0 time_transform f f f t f i s 2 0 1266 "1266 23" _null_ _null_ _null_ _null_ _null_ timetz_scale _null_ _null_ _null_ )); -DESCR("adjust time with time zone precision"); - -DATA(insert OID = 2003 ( textanycat PGNSP PGUID 14 1 0 0 0 f f f t f s s 2 0 25 "25 2776" _null_ _null_ _null_ _null_ _null_ "select $1 || $2::pg_catalog.text" _null_ _null_ _null_ )); -DATA(insert OID = 2004 ( anytextcat PGNSP PGUID 14 1 0 0 0 f f f t f s s 2 0 25 "2776 25" _null_ _null_ _null_ _null_ _null_ "select $1::pg_catalog.text || $2" _null_ _null_ _null_ )); - -DATA(insert OID = 2005 ( bytealike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ bytealike _null_ _null_ _null_ )); -DATA(insert OID = 2006 ( byteanlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteanlike _null_ _null_ _null_ )); -DATA(insert OID = 2007 ( like PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ bytealike _null_ _null_ _null_ )); -DESCR("matches LIKE expression"); -DATA(insert OID = 2008 ( notlike PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "17 17" _null_ _null_ _null_ _null_ _null_ byteanlike _null_ _null_ _null_ )); -DESCR("does not match LIKE expression"); -DATA(insert OID = 2009 ( like_escape PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 17 "17 17" _null_ _null_ _null_ _null_ _null_ like_escape_bytea _null_ _null_ _null_ )); -DESCR("convert LIKE pattern to use backslash escapes"); -DATA(insert OID = 2010 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "17" _null_ _null_ _null_ _null_ _null_ byteaoctetlen _null_ _null_ _null_ )); -DESCR("octet length"); -DATA(insert OID = 2011 ( byteacat PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 17 "17 17" _null_ _null_ _null_ _null_ _null_ byteacat _null_ _null_ _null_ )); -DATA(insert OID = 2012 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ _null_ bytea_substr _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 2013 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 17 "17 23" _null_ _null_ _null_ _null_ _null_ bytea_substr_no_len _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 2085 ( substr PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 17 "17 23 23" _null_ _null_ _null_ _null_ _null_ bytea_substr _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 2086 ( substr PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 17 "17 23" _null_ _null_ _null_ _null_ _null_ bytea_substr_no_len _null_ _null_ _null_ )); -DESCR("extract portion of string"); -DATA(insert OID = 2014 ( position PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "17 17" _null_ _null_ _null_ _null_ _null_ byteapos _null_ _null_ _null_ )); -DESCR("position of substring"); -DATA(insert OID = 2015 ( btrim PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 17 "17 17" _null_ _null_ _null_ _null_ _null_ byteatrim _null_ _null_ _null_ )); -DESCR("trim both ends of string"); - -DATA(insert OID = 2019 ( time PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1083 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_time _null_ _null_ _null_ )); -DESCR("convert timestamp with time zone to time"); -DATA(insert OID = 2020 ( date_trunc PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1114 "25 1114" _null_ _null_ _null_ _null_ _null_ timestamp_trunc _null_ _null_ _null_ )); -DESCR("truncate timestamp to specified units"); -DATA(insert OID = 2021 ( date_part PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "25 1114" _null_ _null_ _null_ _null_ _null_ timestamp_part _null_ _null_ _null_ )); -DESCR("extract field from timestamp"); -DATA(insert OID = 2023 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1114 "702" _null_ _null_ _null_ _null_ _null_ abstime_timestamp _null_ _null_ _null_ )); -DESCR("convert abstime to timestamp"); -DATA(insert OID = 2024 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1114 "1082" _null_ _null_ _null_ _null_ _null_ date_timestamp _null_ _null_ _null_ )); -DESCR("convert date to timestamp"); -DATA(insert OID = 2025 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1114 "1082 1083" _null_ _null_ _null_ _null_ _null_ datetime_timestamp _null_ _null_ _null_ )); -DESCR("convert date and time to timestamp"); -DATA(insert OID = 2027 ( timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1114 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_timestamp _null_ _null_ _null_ )); -DESCR("convert timestamp with time zone to timestamp"); -DATA(insert OID = 2028 ( timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1184 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_timestamptz _null_ _null_ _null_ )); -DESCR("convert timestamp to timestamp with time zone"); -DATA(insert OID = 2029 ( date PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1082 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_date _null_ _null_ _null_ )); -DESCR("convert timestamp to date"); -DATA(insert OID = 2030 ( abstime PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 702 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_abstime _null_ _null_ _null_ )); -DESCR("convert timestamp to abstime"); -DATA(insert OID = 2031 ( timestamp_mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_mi _null_ _null_ _null_ )); -DATA(insert OID = 2032 ( timestamp_pl_interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1114 "1114 1186" _null_ _null_ _null_ _null_ _null_ timestamp_pl_interval _null_ _null_ _null_ )); -DATA(insert OID = 2033 ( timestamp_mi_interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1114 "1114 1186" _null_ _null_ _null_ _null_ _null_ timestamp_mi_interval _null_ _null_ _null_ )); -DATA(insert OID = 2035 ( timestamp_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1114 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 2036 ( timestamp_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1114 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 2037 ( timezone PGNSP PGUID 12 1 0 0 0 f f f t f v s 2 0 1266 "25 1266" _null_ _null_ _null_ _null_ _null_ timetz_zone _null_ _null_ _null_ )); -DESCR("adjust time with time zone to new zone"); -DATA(insert OID = 2038 ( timezone PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1266 "1186 1266" _null_ _null_ _null_ _null_ _null_ timetz_izone _null_ _null_ _null_ )); -DESCR("adjust time with time zone to new zone"); -DATA(insert OID = 2039 ( timestamp_hash PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_hash _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 3411 ( timestamp_hash_extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "1114 20" _null_ _null_ _null_ _null_ _null_ timestamp_hash_extended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 2041 ( overlaps PGNSP PGUID 12 1 0 0 0 f f f f f i s 4 0 16 "1114 1114 1114 1114" _null_ _null_ _null_ _null_ _null_ overlaps_timestamp _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 2042 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i s 4 0 16 "1114 1186 1114 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 2043 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i s 4 0 16 "1114 1114 1114 1186" _null_ _null_ _null_ _null_ _null_ "select ($1, $2) overlaps ($3, ($3 + $4))" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 2044 ( overlaps PGNSP PGUID 14 1 0 0 0 f f f f f i s 4 0 16 "1114 1186 1114 1114" _null_ _null_ _null_ _null_ _null_ "select ($1, ($1 + $2)) overlaps ($3, $4)" _null_ _null_ _null_ )); -DESCR("intervals overlap?"); -DATA(insert OID = 2045 ( timestamp_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3137 ( timestamp_sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ timestamp_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); - -DATA(insert OID = 4134 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "1114 1114 1186 16 16" _null_ _null_ _null_ _null_ _null_ in_range_timestamp_interval _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4135 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 16 "1184 1184 1186 16 16" _null_ _null_ _null_ _null_ _null_ in_range_timestamptz_interval _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4136 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "1186 1186 1186 16 16" _null_ _null_ _null_ _null_ _null_ in_range_interval_interval _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4137 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "1083 1083 1186 16 16" _null_ _null_ _null_ _null_ _null_ in_range_time_interval _null_ _null_ _null_ )); -DESCR("window RANGE support"); -DATA(insert OID = 4138 ( in_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "1266 1266 1186 16 16" _null_ _null_ _null_ _null_ _null_ in_range_timetz_interval _null_ _null_ _null_ )); -DESCR("window RANGE support"); - -DATA(insert OID = 2046 ( time PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1083 "1266" _null_ _null_ _null_ _null_ _null_ timetz_time _null_ _null_ _null_ )); -DESCR("convert time with time zone to time"); -DATA(insert OID = 2047 ( timetz PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 1266 "1083" _null_ _null_ _null_ _null_ _null_ time_timetz _null_ _null_ _null_ )); -DESCR("convert time to time with time zone"); -DATA(insert OID = 2048 ( isfinite PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_finite _null_ _null_ _null_ )); -DESCR("finite timestamp?"); -DATA(insert OID = 2049 ( to_char PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "1114 25" _null_ _null_ _null_ _null_ _null_ timestamp_to_char _null_ _null_ _null_ )); -DESCR("format timestamp to text"); -DATA(insert OID = 2052 ( timestamp_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_eq _null_ _null_ _null_ )); -DATA(insert OID = 2053 ( timestamp_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_ne _null_ _null_ _null_ )); -DATA(insert OID = 2054 ( timestamp_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_lt _null_ _null_ _null_ )); -DATA(insert OID = 2055 ( timestamp_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_le _null_ _null_ _null_ )); -DATA(insert OID = 2056 ( timestamp_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_ge _null_ _null_ _null_ )); -DATA(insert OID = 2057 ( timestamp_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_gt _null_ _null_ _null_ )); -DATA(insert OID = 2058 ( age PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1186 "1114 1114" _null_ _null_ _null_ _null_ _null_ timestamp_age _null_ _null_ _null_ )); -DESCR("date difference preserving months and years"); -DATA(insert OID = 2059 ( age PGNSP PGUID 14 1 0 0 0 f f f t f s s 1 0 1186 "1114" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.age(cast(current_date as timestamp without time zone), $1)" _null_ _null_ _null_ )); -DESCR("date difference from today preserving months and years"); - -DATA(insert OID = 2069 ( timezone PGNSP PGUID 12 1 0 0 timestamp_zone_transform f f f t f i s 2 0 1184 "25 1114" _null_ _null_ _null_ _null_ _null_ timestamp_zone _null_ _null_ _null_ )); -DESCR("adjust timestamp to new time zone"); -DATA(insert OID = 2070 ( timezone PGNSP PGUID 12 1 0 0 timestamp_izone_transform f f f t f i s 2 0 1184 "1186 1114" _null_ _null_ _null_ _null_ _null_ timestamp_izone _null_ _null_ _null_ )); -DESCR("adjust timestamp to new time zone"); -DATA(insert OID = 2071 ( date_pl_interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1114 "1082 1186" _null_ _null_ _null_ _null_ _null_ date_pl_interval _null_ _null_ _null_ )); -DATA(insert OID = 2072 ( date_mi_interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1114 "1082 1186" _null_ _null_ _null_ _null_ _null_ date_mi_interval _null_ _null_ _null_ )); - -DATA(insert OID = 2073 ( substring PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "25 25" _null_ _null_ _null_ _null_ _null_ textregexsubstr _null_ _null_ _null_ )); -DESCR("extract text matching regular expression"); -DATA(insert OID = 2074 ( substring PGNSP PGUID 14 1 0 0 0 f f f t f i s 3 0 25 "25 25 25" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.substring($1, pg_catalog.similar_escape($2, $3))" _null_ _null_ _null_ )); -DESCR("extract text matching SQL99 regular expression"); - -DATA(insert OID = 2075 ( bit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1560 "20 23" _null_ _null_ _null_ _null_ _null_ bitfromint8 _null_ _null_ _null_ )); -DESCR("convert int8 to bitstring"); -DATA(insert OID = 2076 ( int8 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "1560" _null_ _null_ _null_ _null_ _null_ bittoint8 _null_ _null_ _null_ )); -DESCR("convert bitstring to int8"); - -DATA(insert OID = 2077 ( current_setting PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ show_config_by_name _null_ _null_ _null_ )); -DESCR("SHOW X as a function"); -DATA(insert OID = 3294 ( current_setting PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "25 16" _null_ _null_ _null_ _null_ _null_ show_config_by_name_missing_ok _null_ _null_ _null_ )); -DESCR("SHOW X as a function, optionally no error for missing variable"); -DATA(insert OID = 2078 ( set_config PGNSP PGUID 12 1 0 0 0 f f f f f v u 3 0 25 "25 25 16" _null_ _null_ _null_ _null_ _null_ set_config_by_name _null_ _null_ _null_ )); -DESCR("SET X as a function"); -DATA(insert OID = 2084 ( pg_show_all_settings PGNSP PGUID 12 1 1000 0 0 f f f t t s s 0 0 2249 "" "{25,25,25,25,25,25,25,25,25,25,25,1009,25,25,25,23,16}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{name,setting,unit,category,short_desc,extra_desc,context,vartype,source,min_val,max_val,enumvals,boot_val,reset_val,sourcefile,sourceline,pending_restart}" _null_ _null_ show_all_settings _null_ _null_ _null_ )); -DESCR("SHOW ALL as a function"); -DATA(insert OID = 3329 ( pg_show_all_file_settings PGNSP PGUID 12 1 1000 0 0 f f f t t v s 0 0 2249 "" "{25,23,23,25,25,16,25}" "{o,o,o,o,o,o,o}" "{sourcefile,sourceline,seqno,name,setting,applied,error}" _null_ _null_ show_all_file_settings _null_ _null_ _null_ )); -DESCR("show config file settings"); -DATA(insert OID = 3401 ( pg_hba_file_rules PGNSP PGUID 12 1 1000 0 0 f f f t t v s 0 0 2249 "" "{23,25,1009,1009,25,25,25,1009,25}" "{o,o,o,o,o,o,o,o,o}" "{line_number,type,database,user_name,address,netmask,auth_method,options,error}" _null_ _null_ pg_hba_file_rules _null_ _null_ _null_ )); -DESCR("show pg_hba.conf rules"); -DATA(insert OID = 1371 ( pg_lock_status PGNSP PGUID 12 1 1000 0 0 f f f t t v s 0 0 2249 "" "{25,26,26,23,21,25,28,26,26,21,25,23,25,16,16}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid,virtualtransaction,pid,mode,granted,fastpath}" _null_ _null_ pg_lock_status _null_ _null_ _null_ )); -DESCR("view system lock information"); -DATA(insert OID = 2561 ( pg_blocking_pids PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 1007 "23" _null_ _null_ _null_ _null_ _null_ pg_blocking_pids _null_ _null_ _null_ )); -DESCR("get array of PIDs of sessions blocking specified backend PID from acquiring a heavyweight lock"); -DATA(insert OID = 3376 ( pg_safe_snapshot_blocking_pids PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 1007 "23" _null_ _null_ _null_ _null_ _null_ pg_safe_snapshot_blocking_pids _null_ _null_ _null_ )); -DESCR("get array of PIDs of sessions blocking specified backend PID from acquiring a safe snapshot"); -DATA(insert OID = 3378 ( pg_isolation_test_session_is_blocked PGNSP PGUID 12 1 0 0 0 f f f t f v s 2 0 16 "23 1007" _null_ _null_ _null_ _null_ _null_ pg_isolation_test_session_is_blocked _null_ _null_ _null_ )); -DESCR("isolationtester support function"); -DATA(insert OID = 1065 ( pg_prepared_xact PGNSP PGUID 12 1 1000 0 0 f f f t t v s 0 0 2249 "" "{28,25,1184,26,26}" "{o,o,o,o,o}" "{transaction,gid,prepared,ownerid,dbid}" _null_ _null_ pg_prepared_xact _null_ _null_ _null_ )); -DESCR("view two-phase transactions"); -DATA(insert OID = 3819 ( pg_get_multixact_members PGNSP PGUID 12 1 1000 0 0 f f f t t v s 1 0 2249 "28" "{28,28,25}" "{i,o,o}" "{multixid,xid,mode}" _null_ _null_ pg_get_multixact_members _null_ _null_ _null_ )); -DESCR("view members of a multixactid"); - -DATA(insert OID = 3581 ( pg_xact_commit_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 1184 "28" _null_ _null_ _null_ _null_ _null_ pg_xact_commit_timestamp _null_ _null_ _null_ )); -DESCR("get commit timestamp of a transaction"); - -DATA(insert OID = 3583 ( pg_last_committed_xact PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2249 "" "{28,1184}" "{o,o}" "{xid,timestamp}" _null_ _null_ pg_last_committed_xact _null_ _null_ _null_ )); -DESCR("get transaction Id and commit timestamp of latest transaction commit"); - -DATA(insert OID = 3537 ( pg_describe_object PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 25 "26 26 23" _null_ _null_ _null_ _null_ _null_ pg_describe_object _null_ _null_ _null_ )); -DESCR("get identification of SQL object"); - -DATA(insert OID = 3839 ( pg_identify_object PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 2249 "26 26 23" "{26,26,23,25,25,25,25}" "{i,i,i,o,o,o,o}" "{classid,objid,objsubid,type,schema,name,identity}" _null_ _null_ pg_identify_object _null_ _null_ _null_ )); -DESCR("get machine-parseable identification of SQL object"); - -DATA(insert OID = 3382 ( pg_identify_object_as_address PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 2249 "26 26 23" "{26,26,23,25,1009,1009}" "{i,i,i,o,o,o}" "{classid,objid,objsubid,type,object_names,object_args}" _null_ _null_ pg_identify_object_as_address _null_ _null_ _null_ )); -DESCR("get identification of SQL object for pg_get_object_address()"); - -DATA(insert OID = 3954 ( pg_get_object_address PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 2249 "25 1009 1009" "{25,1009,1009,26,26,23}" "{i,i,i,o,o,o}" "{type,name,args,classid,objid,objsubid}" _null_ _null_ pg_get_object_address _null_ _null_ _null_ )); -DESCR("get OID-based object address from name/args arrays"); - -DATA(insert OID = 2079 ( pg_table_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_table_is_visible _null_ _null_ _null_ )); -DESCR("is table visible in search path?"); -DATA(insert OID = 2080 ( pg_type_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_type_is_visible _null_ _null_ _null_ )); -DESCR("is type visible in search path?"); -DATA(insert OID = 2081 ( pg_function_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_function_is_visible _null_ _null_ _null_ )); -DESCR("is function visible in search path?"); -DATA(insert OID = 2082 ( pg_operator_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_operator_is_visible _null_ _null_ _null_ )); -DESCR("is operator visible in search path?"); -DATA(insert OID = 2083 ( pg_opclass_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_opclass_is_visible _null_ _null_ _null_ )); -DESCR("is opclass visible in search path?"); -DATA(insert OID = 3829 ( pg_opfamily_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_opfamily_is_visible _null_ _null_ _null_ )); -DESCR("is opfamily visible in search path?"); -DATA(insert OID = 2093 ( pg_conversion_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_conversion_is_visible _null_ _null_ _null_ )); -DESCR("is conversion visible in search path?"); -DATA(insert OID = 3403 ( pg_statistics_obj_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_statistics_obj_is_visible _null_ _null_ _null_ )); -DESCR("is statistics object visible in search path?"); -DATA(insert OID = 3756 ( pg_ts_parser_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_ts_parser_is_visible _null_ _null_ _null_ )); -DESCR("is text search parser visible in search path?"); -DATA(insert OID = 3757 ( pg_ts_dict_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_ts_dict_is_visible _null_ _null_ _null_ )); -DESCR("is text search dictionary visible in search path?"); -DATA(insert OID = 3768 ( pg_ts_template_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_ts_template_is_visible _null_ _null_ _null_ )); -DESCR("is text search template visible in search path?"); -DATA(insert OID = 3758 ( pg_ts_config_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_ts_config_is_visible _null_ _null_ _null_ )); -DESCR("is text search configuration visible in search path?"); -DATA(insert OID = 3815 ( pg_collation_is_visible PGNSP PGUID 12 10 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_collation_is_visible _null_ _null_ _null_ )); -DESCR("is collation visible in search path?"); - -DATA(insert OID = 2854 ( pg_my_temp_schema PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 26 "" _null_ _null_ _null_ _null_ _null_ pg_my_temp_schema _null_ _null_ _null_ )); -DESCR("get OID of current session's temp schema, if any"); -DATA(insert OID = 2855 ( pg_is_other_temp_schema PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ pg_is_other_temp_schema _null_ _null_ _null_ )); -DESCR("is schema another session's temp schema?"); - -DATA(insert OID = 2171 ( pg_cancel_backend PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 16 "23" _null_ _null_ _null_ _null_ _null_ pg_cancel_backend _null_ _null_ _null_ )); -DESCR("cancel a server process' current query"); -DATA(insert OID = 2096 ( pg_terminate_backend PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 16 "23" _null_ _null_ _null_ _null_ _null_ pg_terminate_backend _null_ _null_ _null_ )); -DESCR("terminate a server process"); -DATA(insert OID = 2172 ( pg_start_backup PGNSP PGUID 12 1 0 0 0 f f f t f v r 3 0 3220 "25 16 16" _null_ _null_ _null_ _null_ _null_ pg_start_backup _null_ _null_ _null_ )); -DESCR("prepare for taking an online backup"); -DATA(insert OID = 2173 ( pg_stop_backup PGNSP PGUID 12 1 0 0 0 f f f t f v r 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_stop_backup _null_ _null_ _null_ )); -DESCR("finish taking an online backup"); -DATA(insert OID = 2739 ( pg_stop_backup PGNSP PGUID 12 1 1 0 0 f f f t t v r 2 0 2249 "16 16" "{16,16,3220,25,25}" "{i,i,o,o,o}" "{exclusive,wait_for_archive,lsn,labelfile,spcmapfile}" _null_ _null_ pg_stop_backup_v2 _null_ _null_ _null_ )); -DESCR("finish taking an online backup"); -DATA(insert OID = 3813 ( pg_is_in_backup PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_is_in_backup _null_ _null_ _null_ )); -DESCR("true if server is in online backup"); -DATA(insert OID = 3814 ( pg_backup_start_time PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_backup_start_time _null_ _null_ _null_ )); -DESCR("start time of an online backup"); -DATA(insert OID = 2848 ( pg_switch_wal PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_switch_wal _null_ _null_ _null_ )); -DESCR("switch to new wal file"); -DATA(insert OID = 3098 ( pg_create_restore_point PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 3220 "25" _null_ _null_ _null_ _null_ _null_ pg_create_restore_point _null_ _null_ _null_ )); -DESCR("create a named restore point"); -DATA(insert OID = 2849 ( pg_current_wal_lsn PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_current_wal_lsn _null_ _null_ _null_ )); -DESCR("current wal write location"); -DATA(insert OID = 2852 ( pg_current_wal_insert_lsn PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_current_wal_insert_lsn _null_ _null_ _null_ )); -DESCR("current wal insert location"); -DATA(insert OID = 3330 ( pg_current_wal_flush_lsn PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_current_wal_flush_lsn _null_ _null_ _null_ )); -DESCR("current wal flush location"); -DATA(insert OID = 2850 ( pg_walfile_name_offset PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2249 "3220" "{3220,25,23}" "{i,o,o}" "{lsn,file_name,file_offset}" _null_ _null_ pg_walfile_name_offset _null_ _null_ _null_ )); -DESCR("wal filename and byte offset, given a wal location"); -DATA(insert OID = 2851 ( pg_walfile_name PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "3220" _null_ _null_ _null_ _null_ _null_ pg_walfile_name _null_ _null_ _null_ )); -DESCR("wal filename, given a wal location"); - -DATA(insert OID = 3165 ( pg_wal_lsn_diff PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_wal_lsn_diff _null_ _null_ _null_ )); -DESCR("difference in bytes, given two wal locations"); - -DATA(insert OID = 3809 ( pg_export_snapshot PGNSP PGUID 12 1 0 0 0 f f f t f v u 0 0 25 "" _null_ _null_ _null_ _null_ _null_ pg_export_snapshot _null_ _null_ _null_ )); -DESCR("export a snapshot"); - -DATA(insert OID = 3810 ( pg_is_in_recovery PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_is_in_recovery _null_ _null_ _null_ )); -DESCR("true if server is in recovery"); - -DATA(insert OID = 3820 ( pg_last_wal_receive_lsn PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_last_wal_receive_lsn _null_ _null_ _null_ )); -DESCR("current wal flush location"); -DATA(insert OID = 3821 ( pg_last_wal_replay_lsn PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 3220 "" _null_ _null_ _null_ _null_ _null_ pg_last_wal_replay_lsn _null_ _null_ _null_ )); -DESCR("last wal replay location"); -DATA(insert OID = 3830 ( pg_last_xact_replay_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_last_xact_replay_timestamp _null_ _null_ _null_ )); -DESCR("timestamp of last replay xact"); - -DATA(insert OID = 3071 ( pg_wal_replay_pause PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_wal_replay_pause _null_ _null_ _null_ )); -DESCR("pause wal replay"); -DATA(insert OID = 3072 ( pg_wal_replay_resume PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_wal_replay_resume _null_ _null_ _null_ )); -DESCR("resume wal replay, if it was paused"); -DATA(insert OID = 3073 ( pg_is_wal_replay_paused PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_is_wal_replay_paused _null_ _null_ _null_ )); -DESCR("true if wal replay is paused"); - -DATA(insert OID = 2621 ( pg_reload_conf PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_reload_conf _null_ _null_ _null_ )); -DESCR("reload configuration files"); -DATA(insert OID = 2622 ( pg_rotate_logfile PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_rotate_logfile_v2 _null_ _null_ _null_ )); -DESCR("rotate log file"); -DATA(insert OID = 4099 ( pg_rotate_logfile_old PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_rotate_logfile _null_ _null_ _null_ )); -DESCR("rotate log file - old version for adminpack 1.0"); -DATA(insert OID = 3800 ( pg_current_logfile PGNSP PGUID 12 1 0 0 0 f f f f f v s 0 0 25 "" _null_ _null_ _null_ _null_ _null_ pg_current_logfile _null_ _null_ _null_ )); -DESCR("current logging collector file location"); -DATA(insert OID = 3801 ( pg_current_logfile PGNSP PGUID 12 1 0 0 0 f f f f f v s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ pg_current_logfile_1arg _null_ _null_ _null_ )); -DESCR("current logging collector file location"); - -DATA(insert OID = 2623 ( pg_stat_file PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 2249 "25" "{25,20,1184,1184,1184,1184,16}" "{i,o,o,o,o,o,o}" "{filename,size,access,modification,change,creation,isdir}" _null_ _null_ pg_stat_file_1arg _null_ _null_ _null_ )); -DESCR("get information about file"); -DATA(insert OID = 3307 ( pg_stat_file PGNSP PGUID 12 1 0 0 0 f f f t f v s 2 0 2249 "25 16" "{25,16,20,1184,1184,1184,1184,16}" "{i,i,o,o,o,o,o,o}" "{filename,missing_ok,size,access,modification,change,creation,isdir}" _null_ _null_ pg_stat_file _null_ _null_ _null_ )); -DESCR("get information about file"); -DATA(insert OID = 2624 ( pg_read_file PGNSP PGUID 12 1 0 0 0 f f f t f v s 3 0 25 "25 20 20" _null_ _null_ _null_ _null_ _null_ pg_read_file_off_len _null_ _null_ _null_ )); -DESCR("read text from a file"); -DATA(insert OID = 3293 ( pg_read_file PGNSP PGUID 12 1 0 0 0 f f f t f v s 4 0 25 "25 20 20 16" _null_ _null_ _null_ _null_ _null_ pg_read_file_v2 _null_ _null_ _null_ )); -DESCR("read text from a file"); -DATA(insert OID = 4100 ( pg_read_file_old PGNSP PGUID 12 1 0 0 0 f f f t f v s 3 0 25 "25 20 20" _null_ _null_ _null_ _null_ _null_ pg_read_file _null_ _null_ _null_ )); -DESCR("read text from a file - old version for adminpack 1.0"); -DATA(insert OID = 3826 ( pg_read_file PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ pg_read_file_all _null_ _null_ _null_ )); -DESCR("read text from a file"); -DATA(insert OID = 3827 ( pg_read_binary_file PGNSP PGUID 12 1 0 0 0 f f f t f v s 3 0 17 "25 20 20" _null_ _null_ _null_ _null_ _null_ pg_read_binary_file_off_len _null_ _null_ _null_ )); -DESCR("read bytea from a file"); -DATA(insert OID = 3295 ( pg_read_binary_file PGNSP PGUID 12 1 0 0 0 f f f t f v s 4 0 17 "25 20 20 16" _null_ _null_ _null_ _null_ _null_ pg_read_binary_file _null_ _null_ _null_ )); -DESCR("read bytea from a file"); -DATA(insert OID = 3828 ( pg_read_binary_file PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 17 "25" _null_ _null_ _null_ _null_ _null_ pg_read_binary_file_all _null_ _null_ _null_ )); -DESCR("read bytea from a file"); -DATA(insert OID = 2625 ( pg_ls_dir PGNSP PGUID 12 1 1000 0 0 f f f t t v s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ pg_ls_dir_1arg _null_ _null_ _null_ )); -DESCR("list all files in a directory"); -DATA(insert OID = 3297 ( pg_ls_dir PGNSP PGUID 12 1 1000 0 0 f f f t t v s 3 0 25 "25 16 16" _null_ _null_ _null_ _null_ _null_ pg_ls_dir _null_ _null_ _null_ )); -DESCR("list all files in a directory"); -DATA(insert OID = 2626 ( pg_sleep PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 2278 "701" _null_ _null_ _null_ _null_ _null_ pg_sleep _null_ _null_ _null_ )); -DESCR("sleep for the specified time in seconds"); -DATA(insert OID = 3935 ( pg_sleep_for PGNSP PGUID 14 1 0 0 0 f f f t f v s 1 0 2278 "1186" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.pg_sleep(extract(epoch from pg_catalog.clock_timestamp() operator(pg_catalog.+) $1) operator(pg_catalog.-) extract(epoch from pg_catalog.clock_timestamp()))" _null_ _null_ _null_ )); -DESCR("sleep for the specified interval"); -DATA(insert OID = 3936 ( pg_sleep_until PGNSP PGUID 14 1 0 0 0 f f f t f v s 1 0 2278 "1184" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.pg_sleep(extract(epoch from $1) operator(pg_catalog.-) extract(epoch from pg_catalog.clock_timestamp()))" _null_ _null_ _null_ )); -DESCR("sleep until the specified time"); -DATA(insert OID = 315 ( pg_jit_available PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_jit_available _null_ _null_ _null_ )); -DESCR("Is JIT compilation available in this session?"); - -DATA(insert OID = 2971 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "16" _null_ _null_ _null_ _null_ _null_ booltext _null_ _null_ _null_ )); -DESCR("convert boolean to text"); - -/* Aggregates (moved here from pg_aggregate for 7.3) */ - -DATA(insert OID = 2100 ( avg PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as numeric of all bigint values"); -DATA(insert OID = 2101 ( avg PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as numeric of all integer values"); -DATA(insert OID = 2102 ( avg PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as numeric of all smallint values"); -DATA(insert OID = 2103 ( avg PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as numeric of all numeric values"); -DATA(insert OID = 2104 ( avg PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as float8 of all float4 values"); -DATA(insert OID = 2105 ( avg PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as float8 of all float8 values"); -DATA(insert OID = 2106 ( avg PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("the average (arithmetic mean) as interval of all interval values"); - -DATA(insert OID = 2107 ( sum PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as numeric across all bigint input values"); -DATA(insert OID = 2108 ( sum PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 20 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as bigint across all integer input values"); -DATA(insert OID = 2109 ( sum PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 20 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as bigint across all smallint input values"); -DATA(insert OID = 2110 ( sum PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as float4 across all float4 input values"); -DATA(insert OID = 2111 ( sum PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as float8 across all float8 input values"); -DATA(insert OID = 2112 ( sum PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 790 "790" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as money across all money input values"); -DATA(insert OID = 2113 ( sum PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as interval across all interval input values"); -DATA(insert OID = 2114 ( sum PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum as numeric across all numeric input values"); - -DATA(insert OID = 2115 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all bigint input values"); -DATA(insert OID = 2116 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all integer input values"); -DATA(insert OID = 2117 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all smallint input values"); -DATA(insert OID = 2118 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 26 "26" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all oid input values"); -DATA(insert OID = 2119 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all float4 input values"); -DATA(insert OID = 2120 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all float8 input values"); -DATA(insert OID = 2121 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 702 "702" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all abstime input values"); -DATA(insert OID = 2122 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1082 "1082" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all date input values"); -DATA(insert OID = 2123 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1083 "1083" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all time input values"); -DATA(insert OID = 2124 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1266 "1266" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all time with time zone input values"); -DATA(insert OID = 2125 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 790 "790" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all money input values"); -DATA(insert OID = 2126 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1114 "1114" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all timestamp input values"); -DATA(insert OID = 2127 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1184 "1184" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all timestamp with time zone input values"); -DATA(insert OID = 2128 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all interval input values"); -DATA(insert OID = 2129 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all text input values"); -DATA(insert OID = 2130 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all numeric input values"); -DATA(insert OID = 2050 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 2277 "2277" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all anyarray input values"); -DATA(insert OID = 2244 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1042 "1042" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all bpchar input values"); -DATA(insert OID = 2797 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 27 "27" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all tid input values"); -DATA(insert OID = 3564 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all inet input values"); - -DATA(insert OID = 2131 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all bigint input values"); -DATA(insert OID = 2132 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all integer input values"); -DATA(insert OID = 2133 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all smallint input values"); -DATA(insert OID = 2134 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 26 "26" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all oid input values"); -DATA(insert OID = 2135 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 700 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all float4 input values"); -DATA(insert OID = 2136 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all float8 input values"); -DATA(insert OID = 2137 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 702 "702" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all abstime input values"); -DATA(insert OID = 2138 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1082 "1082" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all date input values"); -DATA(insert OID = 2139 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1083 "1083" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all time input values"); -DATA(insert OID = 2140 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1266 "1266" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all time with time zone input values"); -DATA(insert OID = 2141 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 790 "790" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all money input values"); -DATA(insert OID = 2142 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1114 "1114" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all timestamp input values"); -DATA(insert OID = 2143 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1184 "1184" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all timestamp with time zone input values"); -DATA(insert OID = 2144 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1186 "1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all interval input values"); -DATA(insert OID = 2145 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all text values"); -DATA(insert OID = 2146 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all numeric input values"); -DATA(insert OID = 2051 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 2277 "2277" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all anyarray input values"); -DATA(insert OID = 2245 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1042 "1042" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all bpchar input values"); -DATA(insert OID = 2798 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 27 "27" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all tid input values"); -DATA(insert OID = 3565 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 869 "869" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all inet input values"); - -/* count has two forms: count(any) and count(*) */ -DATA(insert OID = 2147 ( count PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 20 "2276" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("number of input rows for which the input expression is not null"); -DATA(insert OID = 2803 ( count PGNSP PGUID 12 1 0 0 0 a f f f f i s 0 0 20 "" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("number of input rows"); - -DATA(insert OID = 2718 ( var_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of bigint input values (square of the population standard deviation)"); -DATA(insert OID = 2719 ( var_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of integer input values (square of the population standard deviation)"); -DATA(insert OID = 2720 ( var_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of smallint input values (square of the population standard deviation)"); -DATA(insert OID = 2721 ( var_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of float4 input values (square of the population standard deviation)"); -DATA(insert OID = 2722 ( var_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of float8 input values (square of the population standard deviation)"); -DATA(insert OID = 2723 ( var_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population variance of numeric input values (square of the population standard deviation)"); - -DATA(insert OID = 2641 ( var_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of bigint input values (square of the sample standard deviation)"); -DATA(insert OID = 2642 ( var_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of integer input values (square of the sample standard deviation)"); -DATA(insert OID = 2643 ( var_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of smallint input values (square of the sample standard deviation)"); -DATA(insert OID = 2644 ( var_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of float4 input values (square of the sample standard deviation)"); - -DATA(insert OID = 2645 ( var_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of float8 input values (square of the sample standard deviation)"); -DATA(insert OID = 2646 ( var_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample variance of numeric input values (square of the sample standard deviation)"); - -DATA(insert OID = 2148 ( variance PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); -DATA(insert OID = 2149 ( variance PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); -DATA(insert OID = 2150 ( variance PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); -DATA(insert OID = 2151 ( variance PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); -DATA(insert OID = 2152 ( variance PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); -DATA(insert OID = 2153 ( variance PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for var_samp"); - -DATA(insert OID = 2724 ( stddev_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of bigint input values"); -DATA(insert OID = 2725 ( stddev_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of integer input values"); -DATA(insert OID = 2726 ( stddev_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of smallint input values"); -DATA(insert OID = 2727 ( stddev_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of float4 input values"); -DATA(insert OID = 2728 ( stddev_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of float8 input values"); -DATA(insert OID = 2729 ( stddev_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population standard deviation of numeric input values"); - -DATA(insert OID = 2712 ( stddev_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of bigint input values"); -DATA(insert OID = 2713 ( stddev_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of integer input values"); -DATA(insert OID = 2714 ( stddev_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of smallint input values"); -DATA(insert OID = 2715 ( stddev_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of float4 input values"); -DATA(insert OID = 2716 ( stddev_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of float8 input values"); -DATA(insert OID = 2717 ( stddev_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample standard deviation of numeric input values"); - -DATA(insert OID = 2154 ( stddev PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); -DATA(insert OID = 2155 ( stddev PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); -DATA(insert OID = 2156 ( stddev PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); -DATA(insert OID = 2157 ( stddev PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); -DATA(insert OID = 2158 ( stddev PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 701 "701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); -DATA(insert OID = 2159 ( stddev PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1700 "1700" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("historical alias for stddev_samp"); - -DATA(insert OID = 2818 ( regr_count PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 20 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("number of input rows in which both expressions are not null"); -DATA(insert OID = 2819 ( regr_sxx PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum of squares of the independent variable (sum(X^2) - sum(X)^2/N)"); -DATA(insert OID = 2820 ( regr_syy PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum of squares of the dependent variable (sum(Y^2) - sum(Y)^2/N)"); -DATA(insert OID = 2821 ( regr_sxy PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sum of products of independent times dependent variable (sum(X*Y) - sum(X) * sum(Y)/N)"); -DATA(insert OID = 2822 ( regr_avgx PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("average of the independent variable (sum(X)/N)"); -DATA(insert OID = 2823 ( regr_avgy PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("average of the dependent variable (sum(Y)/N)"); -DATA(insert OID = 2824 ( regr_r2 PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("square of the correlation coefficient"); -DATA(insert OID = 2825 ( regr_slope PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("slope of the least-squares-fit linear equation determined by the (X, Y) pairs"); -DATA(insert OID = 2826 ( regr_intercept PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("y-intercept of the least-squares-fit linear equation determined by the (X, Y) pairs"); - -DATA(insert OID = 2827 ( covar_pop PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("population covariance"); -DATA(insert OID = 2828 ( covar_samp PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("sample covariance"); -DATA(insert OID = 2829 ( corr PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("correlation coefficient"); - -DATA(insert OID = 2160 ( text_pattern_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_pattern_lt _null_ _null_ _null_ )); -DATA(insert OID = 2161 ( text_pattern_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_pattern_le _null_ _null_ _null_ )); -DATA(insert OID = 2163 ( text_pattern_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_pattern_ge _null_ _null_ _null_ )); -DATA(insert OID = 2164 ( text_pattern_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ text_pattern_gt _null_ _null_ _null_ )); -DATA(insert OID = 2166 ( bttext_pattern_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ bttext_pattern_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3332 ( bttext_pattern_sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ bttext_pattern_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); - -DATA(insert OID = 2174 ( bpchar_pattern_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_pattern_lt _null_ _null_ _null_ )); -DATA(insert OID = 2175 ( bpchar_pattern_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_pattern_le _null_ _null_ _null_ )); -DATA(insert OID = 2177 ( bpchar_pattern_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_pattern_ge _null_ _null_ _null_ )); -DATA(insert OID = 2178 ( bpchar_pattern_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1042 1042" _null_ _null_ _null_ _null_ _null_ bpchar_pattern_gt _null_ _null_ _null_ )); -DATA(insert OID = 2180 ( btbpchar_pattern_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1042 1042" _null_ _null_ _null_ _null_ _null_ btbpchar_pattern_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3333 ( btbpchar_pattern_sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ btbpchar_pattern_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); - -DATA(insert OID = 2188 ( btint48cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 20" _null_ _null_ _null_ _null_ _null_ btint48cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2189 ( btint84cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "20 23" _null_ _null_ _null_ _null_ _null_ btint84cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2190 ( btint24cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "21 23" _null_ _null_ _null_ _null_ _null_ btint24cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2191 ( btint42cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "23 21" _null_ _null_ _null_ _null_ _null_ btint42cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2192 ( btint28cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "21 20" _null_ _null_ _null_ _null_ _null_ btint28cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2193 ( btint82cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "20 21" _null_ _null_ _null_ _null_ _null_ btint82cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2194 ( btfloat48cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "700 701" _null_ _null_ _null_ _null_ _null_ btfloat48cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 2195 ( btfloat84cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "701 700" _null_ _null_ _null_ _null_ _null_ btfloat84cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 2212 ( regprocedurein PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2202 "2275" _null_ _null_ _null_ _null_ _null_ regprocedurein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2213 ( regprocedureout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "2202" _null_ _null_ _null_ _null_ _null_ regprocedureout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2214 ( regoperin PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2203 "2275" _null_ _null_ _null_ _null_ _null_ regoperin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2215 ( regoperout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "2203" _null_ _null_ _null_ _null_ _null_ regoperout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3492 ( to_regoper PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2203 "25" _null_ _null_ _null_ _null_ _null_ to_regoper _null_ _null_ _null_ )); -DESCR("convert operator name to regoper"); -DATA(insert OID = 3476 ( to_regoperator PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2204 "25" _null_ _null_ _null_ _null_ _null_ to_regoperator _null_ _null_ _null_ )); -DESCR("convert operator name to regoperator"); -DATA(insert OID = 2216 ( regoperatorin PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2204 "2275" _null_ _null_ _null_ _null_ _null_ regoperatorin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2217 ( regoperatorout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "2204" _null_ _null_ _null_ _null_ _null_ regoperatorout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2218 ( regclassin PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2205 "2275" _null_ _null_ _null_ _null_ _null_ regclassin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2219 ( regclassout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "2205" _null_ _null_ _null_ _null_ _null_ regclassout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3495 ( to_regclass PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2205 "25" _null_ _null_ _null_ _null_ _null_ to_regclass _null_ _null_ _null_ )); -DESCR("convert classname to regclass"); -DATA(insert OID = 2220 ( regtypein PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2206 "2275" _null_ _null_ _null_ _null_ _null_ regtypein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2221 ( regtypeout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "2206" _null_ _null_ _null_ _null_ _null_ regtypeout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3493 ( to_regtype PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2206 "25" _null_ _null_ _null_ _null_ _null_ to_regtype _null_ _null_ _null_ )); -DESCR("convert type name to regtype"); -DATA(insert OID = 1079 ( regclass PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2205 "25" _null_ _null_ _null_ _null_ _null_ text_regclass _null_ _null_ _null_ )); -DESCR("convert text to regclass"); - -DATA(insert OID = 4098 ( regrolein PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 4096 "2275" _null_ _null_ _null_ _null_ _null_ regrolein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4092 ( regroleout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "4096" _null_ _null_ _null_ _null_ _null_ regroleout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4093 ( to_regrole PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 4096 "25" _null_ _null_ _null_ _null_ _null_ to_regrole _null_ _null_ _null_ )); -DESCR("convert role name to regrole"); - -DATA(insert OID = 4084 ( regnamespacein PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 4089 "2275" _null_ _null_ _null_ _null_ _null_ regnamespacein _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4085 ( regnamespaceout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "4089" _null_ _null_ _null_ _null_ _null_ regnamespaceout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4086 ( to_regnamespace PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 4089 "25" _null_ _null_ _null_ _null_ _null_ to_regnamespace _null_ _null_ _null_ )); -DESCR("convert namespace name to regnamespace"); - -DATA(insert OID = 1268 ( parse_ident PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1009 "25 16" _null_ _null_ "{str,strict}" _null_ _null_ parse_ident _null_ _null_ _null_ )); -DESCR("parse qualified identifier to array of identifiers"); - -DATA(insert OID = 2246 ( fmgr_internal_validator PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ fmgr_internal_validator _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 2247 ( fmgr_c_validator PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ fmgr_c_validator _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 2248 ( fmgr_sql_validator PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ fmgr_sql_validator _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 2250 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on database by username, database name"); -DATA(insert OID = 2251 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on database by username, database oid"); -DATA(insert OID = 2252 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on database by user oid, database name"); -DATA(insert OID = 2253 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on database by user oid, database oid"); -DATA(insert OID = 2254 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on database by database name"); -DATA(insert OID = 2255 ( has_database_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_database_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on database by database oid"); - -DATA(insert OID = 2256 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on function by username, function name"); -DATA(insert OID = 2257 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on function by username, function oid"); -DATA(insert OID = 2258 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on function by user oid, function name"); -DATA(insert OID = 2259 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on function by user oid, function oid"); -DATA(insert OID = 2260 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on function by function name"); -DATA(insert OID = 2261 ( has_function_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_function_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on function by function oid"); - -DATA(insert OID = 2262 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on language by username, language name"); -DATA(insert OID = 2263 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on language by username, language oid"); -DATA(insert OID = 2264 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on language by user oid, language name"); -DATA(insert OID = 2265 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on language by user oid, language oid"); -DATA(insert OID = 2266 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on language by language name"); -DATA(insert OID = 2267 ( has_language_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_language_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on language by language oid"); - -DATA(insert OID = 2268 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on schema by username, schema name"); -DATA(insert OID = 2269 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on schema by username, schema oid"); -DATA(insert OID = 2270 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on schema by user oid, schema name"); -DATA(insert OID = 2271 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on schema by user oid, schema oid"); -DATA(insert OID = 2272 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on schema by schema name"); -DATA(insert OID = 2273 ( has_schema_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_schema_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on schema by schema oid"); - -DATA(insert OID = 2390 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on tablespace by username, tablespace name"); -DATA(insert OID = 2391 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on tablespace by username, tablespace oid"); -DATA(insert OID = 2392 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on tablespace by user oid, tablespace name"); -DATA(insert OID = 2393 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on tablespace by user oid, tablespace oid"); -DATA(insert OID = 2394 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on tablespace by tablespace name"); -DATA(insert OID = 2395 ( has_tablespace_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_tablespace_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on tablespace by tablespace oid"); - -DATA(insert OID = 3000 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on foreign data wrapper by username, foreign data wrapper name"); -DATA(insert OID = 3001 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on foreign data wrapper by username, foreign data wrapper oid"); -DATA(insert OID = 3002 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on foreign data wrapper by user oid, foreign data wrapper name"); -DATA(insert OID = 3003 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on foreign data wrapper by user oid, foreign data wrapper oid"); -DATA(insert OID = 3004 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on foreign data wrapper by foreign data wrapper name"); -DATA(insert OID = 3005 ( has_foreign_data_wrapper_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_foreign_data_wrapper_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on foreign data wrapper by foreign data wrapper oid"); - -DATA(insert OID = 3006 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on server by username, server name"); -DATA(insert OID = 3007 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on server by username, server oid"); -DATA(insert OID = 3008 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on server by user oid, server name"); -DATA(insert OID = 3009 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on server by user oid, server oid"); -DATA(insert OID = 3010 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on server by server name"); -DATA(insert OID = 3011 ( has_server_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_server_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on server by server oid"); - -DATA(insert OID = 3138 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 25 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_name_name _null_ _null_ _null_ )); -DESCR("user privilege on type by username, type name"); -DATA(insert OID = 3139 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_name_id _null_ _null_ _null_ )); -DESCR("user privilege on type by username, type oid"); -DATA(insert OID = 3140 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 25 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_id_name _null_ _null_ _null_ )); -DESCR("user privilege on type by user oid, type name"); -DATA(insert OID = 3141 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_id_id _null_ _null_ _null_ )); -DESCR("user privilege on type by user oid, type oid"); -DATA(insert OID = 3142 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_name _null_ _null_ _null_ )); -DESCR("current user privilege on type by type name"); -DATA(insert OID = 3143 ( has_type_privilege PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ has_type_privilege_id _null_ _null_ _null_ )); -DESCR("current user privilege on type by type oid"); - -DATA(insert OID = 2705 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 19 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_name_name _null_ _null_ _null_ )); -DESCR("user privilege on role by username, role name"); -DATA(insert OID = 2706 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "19 26 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_name_id _null_ _null_ _null_ )); -DESCR("user privilege on role by username, role oid"); -DATA(insert OID = 2707 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 19 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_id_name _null_ _null_ _null_ )); -DESCR("user privilege on role by user oid, role name"); -DATA(insert OID = 2708 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 16 "26 26 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_id_id _null_ _null_ _null_ )); -DESCR("user privilege on role by user oid, role oid"); -DATA(insert OID = 2709 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "19 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_name _null_ _null_ _null_ )); -DESCR("current user privilege on role by role name"); -DATA(insert OID = 2710 ( pg_has_role PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "26 25" _null_ _null_ _null_ _null_ _null_ pg_has_role_id _null_ _null_ _null_ )); -DESCR("current user privilege on role by role oid"); - -DATA(insert OID = 1269 ( pg_column_size PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 23 "2276" _null_ _null_ _null_ _null_ _null_ pg_column_size _null_ _null_ _null_ )); -DESCR("bytes required to store the value, perhaps with compression"); -DATA(insert OID = 2322 ( pg_tablespace_size PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_tablespace_size_oid _null_ _null_ _null_ )); -DESCR("total disk space usage for the specified tablespace"); -DATA(insert OID = 2323 ( pg_tablespace_size PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 20 "19" _null_ _null_ _null_ _null_ _null_ pg_tablespace_size_name _null_ _null_ _null_ )); -DESCR("total disk space usage for the specified tablespace"); -DATA(insert OID = 2324 ( pg_database_size PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 20 "26" _null_ _null_ _null_ _null_ _null_ pg_database_size_oid _null_ _null_ _null_ )); -DESCR("total disk space usage for the specified database"); -DATA(insert OID = 2168 ( pg_database_size PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 20 "19" _null_ _null_ _null_ _null_ _null_ pg_database_size_name _null_ _null_ _null_ )); -DESCR("total disk space usage for the specified database"); -DATA(insert OID = 2325 ( pg_relation_size PGNSP PGUID 14 1 0 0 0 f f f t f v s 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.pg_relation_size($1, ''main'')" _null_ _null_ _null_ )); -DESCR("disk space usage for the main fork of the specified table or index"); -DATA(insert OID = 2332 ( pg_relation_size PGNSP PGUID 12 1 0 0 0 f f f t f v s 2 0 20 "2205 25" _null_ _null_ _null_ _null_ _null_ pg_relation_size _null_ _null_ _null_ )); -DESCR("disk space usage for the specified fork of a table or index"); -DATA(insert OID = 2286 ( pg_total_relation_size PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ pg_total_relation_size _null_ _null_ _null_ )); -DESCR("total disk space usage for the specified table and associated indexes"); -DATA(insert OID = 2288 ( pg_size_pretty PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "20" _null_ _null_ _null_ _null_ _null_ pg_size_pretty _null_ _null_ _null_ )); -DESCR("convert a long int to a human readable text using size units"); -DATA(insert OID = 3166 ( pg_size_pretty PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "1700" _null_ _null_ _null_ _null_ _null_ pg_size_pretty_numeric _null_ _null_ _null_ )); -DESCR("convert a numeric to a human readable text using size units"); -DATA(insert OID = 3334 ( pg_size_bytes PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "25" _null_ _null_ _null_ _null_ _null_ pg_size_bytes _null_ _null_ _null_ )); -DESCR("convert a size in human-readable format with size units into bytes"); -DATA(insert OID = 2997 ( pg_table_size PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ pg_table_size _null_ _null_ _null_ )); -DESCR("disk space usage for the specified table, including TOAST, free space and visibility map"); -DATA(insert OID = 2998 ( pg_indexes_size PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ pg_indexes_size _null_ _null_ _null_ )); -DESCR("disk space usage for all indexes attached to the specified table"); -DATA(insert OID = 2999 ( pg_relation_filenode PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 26 "2205" _null_ _null_ _null_ _null_ _null_ pg_relation_filenode _null_ _null_ _null_ )); -DESCR("filenode identifier of relation"); -DATA(insert OID = 3454 ( pg_filenode_relation PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 2205 "26 26" _null_ _null_ _null_ _null_ _null_ pg_filenode_relation _null_ _null_ _null_ )); -DESCR("relation OID for filenode and tablespace"); -DATA(insert OID = 3034 ( pg_relation_filepath PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "2205" _null_ _null_ _null_ _null_ _null_ pg_relation_filepath _null_ _null_ _null_ )); -DESCR("file path of relation"); - -DATA(insert OID = 2316 ( postgresql_fdw_validator PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1009 26" _null_ _null_ _null_ _null_ _null_ postgresql_fdw_validator _null_ _null_ _null_)); -DESCR("(internal)"); - -DATA(insert OID = 2290 ( record_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 2249 "2275 26 23" _null_ _null_ _null_ _null_ _null_ record_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2291 ( record_out PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "2249" _null_ _null_ _null_ _null_ _null_ record_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2292 ( cstring_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2275" _null_ _null_ _null_ _null_ _null_ cstring_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2293 ( cstring_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2275" _null_ _null_ _null_ _null_ _null_ cstring_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2294 ( any_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2276 "2275" _null_ _null_ _null_ _null_ _null_ any_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2295 ( any_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2276" _null_ _null_ _null_ _null_ _null_ any_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2296 ( anyarray_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2277 "2275" _null_ _null_ _null_ _null_ _null_ anyarray_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2297 ( anyarray_out PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "2277" _null_ _null_ _null_ _null_ _null_ anyarray_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2298 ( void_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2275" _null_ _null_ _null_ _null_ _null_ void_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2299 ( void_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2278" _null_ _null_ _null_ _null_ _null_ void_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2300 ( trigger_in PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 2279 "2275" _null_ _null_ _null_ _null_ _null_ trigger_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2301 ( trigger_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2279" _null_ _null_ _null_ _null_ _null_ trigger_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3594 ( event_trigger_in PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 3838 "2275" _null_ _null_ _null_ _null_ _null_ event_trigger_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3595 ( event_trigger_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "3838" _null_ _null_ _null_ _null_ _null_ event_trigger_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2302 ( language_handler_in PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 2280 "2275" _null_ _null_ _null_ _null_ _null_ language_handler_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2303 ( language_handler_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2280" _null_ _null_ _null_ _null_ _null_ language_handler_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2304 ( internal_in PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 2281 "2275" _null_ _null_ _null_ _null_ _null_ internal_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2305 ( internal_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2281" _null_ _null_ _null_ _null_ _null_ internal_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2306 ( opaque_in PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 2282 "2275" _null_ _null_ _null_ _null_ _null_ opaque_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2307 ( opaque_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2282" _null_ _null_ _null_ _null_ _null_ opaque_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2312 ( anyelement_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2283 "2275" _null_ _null_ _null_ _null_ _null_ anyelement_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2313 ( anyelement_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2283" _null_ _null_ _null_ _null_ _null_ anyelement_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2398 ( shell_in PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 2282 "2275" _null_ _null_ _null_ _null_ _null_ shell_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2399 ( shell_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2282" _null_ _null_ _null_ _null_ _null_ shell_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2597 ( domain_in PGNSP PGUID 12 1 0 0 0 f f f f f s s 3 0 2276 "2275 26 23" _null_ _null_ _null_ _null_ _null_ domain_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2598 ( domain_recv PGNSP PGUID 12 1 0 0 0 f f f f f s s 3 0 2276 "2281 26 23" _null_ _null_ _null_ _null_ _null_ domain_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2777 ( anynonarray_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2776 "2275" _null_ _null_ _null_ _null_ _null_ anynonarray_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2778 ( anynonarray_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2776" _null_ _null_ _null_ _null_ _null_ anynonarray_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3116 ( fdw_handler_in PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 3115 "2275" _null_ _null_ _null_ _null_ _null_ fdw_handler_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3117 ( fdw_handler_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "3115" _null_ _null_ _null_ _null_ _null_ fdw_handler_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 326 ( index_am_handler_in PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 325 "2275" _null_ _null_ _null_ _null_ _null_ index_am_handler_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 327 ( index_am_handler_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "325" _null_ _null_ _null_ _null_ _null_ index_am_handler_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3311 ( tsm_handler_in PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 3310 "2275" _null_ _null_ _null_ _null_ _null_ tsm_handler_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3312 ( tsm_handler_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "3310" _null_ _null_ _null_ _null_ _null_ tsm_handler_out _null_ _null_ _null_ )); -DESCR("I/O"); - -/* tablesample method handlers */ -DATA(insert OID = 3313 ( bernoulli PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 3310 "2281" _null_ _null_ _null_ _null_ _null_ tsm_bernoulli_handler _null_ _null_ _null_ )); -DESCR("BERNOULLI tablesample method handler"); -DATA(insert OID = 3314 ( system PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 3310 "2281" _null_ _null_ _null_ _null_ _null_ tsm_system_handler _null_ _null_ _null_ )); -DESCR("SYSTEM tablesample method handler"); - -/* cryptographic */ -DATA(insert OID = 2311 ( md5 PGNSP PGUID 12 1 0 0 0 f f t t f i s 1 0 25 "25" _null_ _null_ _null_ _null_ _null_ md5_text _null_ _null_ _null_ )); -DESCR("MD5 hash"); -DATA(insert OID = 2321 ( md5 PGNSP PGUID 12 1 0 0 0 f f t t f i s 1 0 25 "17" _null_ _null_ _null_ _null_ _null_ md5_bytea _null_ _null_ _null_ )); -DESCR("MD5 hash"); -DATA(insert OID = 3419 ( sha224 PGNSP PGUID 12 1 0 0 0 f f t t f i s 1 0 17 "17" _null_ _null_ _null_ _null_ _null_ sha224_bytea _null_ _null_ _null_ )); -DESCR("SHA-224 hash"); -DATA(insert OID = 3420 ( sha256 PGNSP PGUID 12 1 0 0 0 f f t t f i s 1 0 17 "17" _null_ _null_ _null_ _null_ _null_ sha256_bytea _null_ _null_ _null_ )); -DESCR("SHA-256 hash"); -DATA(insert OID = 3421 ( sha384 PGNSP PGUID 12 1 0 0 0 f f t t f i s 1 0 17 "17" _null_ _null_ _null_ _null_ _null_ sha384_bytea _null_ _null_ _null_ )); -DESCR("SHA-384 hash"); -DATA(insert OID = 3422 ( sha512 PGNSP PGUID 12 1 0 0 0 f f t t f i s 1 0 17 "17" _null_ _null_ _null_ _null_ _null_ sha512_bytea _null_ _null_ _null_ )); -DESCR("SHA-512 hash"); - -/* crosstype operations for date vs. timestamp and timestamptz */ -DATA(insert OID = 2338 ( date_lt_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_lt_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2339 ( date_le_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_le_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2340 ( date_eq_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_eq_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2341 ( date_gt_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_gt_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2342 ( date_ge_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_ge_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2343 ( date_ne_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_ne_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2344 ( date_cmp_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1082 1114" _null_ _null_ _null_ _null_ _null_ date_cmp_timestamp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 2351 ( date_lt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_lt_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2352 ( date_le_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_le_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2353 ( date_eq_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_eq_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2354 ( date_gt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_gt_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2355 ( date_ge_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_ge_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2356 ( date_ne_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_ne_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2357 ( date_cmp_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 23 "1082 1184" _null_ _null_ _null_ _null_ _null_ date_cmp_timestamptz _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 2364 ( timestamp_lt_date PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_lt_date _null_ _null_ _null_ )); -DATA(insert OID = 2365 ( timestamp_le_date PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_le_date _null_ _null_ _null_ )); -DATA(insert OID = 2366 ( timestamp_eq_date PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_eq_date _null_ _null_ _null_ )); -DATA(insert OID = 2367 ( timestamp_gt_date PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_gt_date _null_ _null_ _null_ )); -DATA(insert OID = 2368 ( timestamp_ge_date PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_ge_date _null_ _null_ _null_ )); -DATA(insert OID = 2369 ( timestamp_ne_date PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_ne_date _null_ _null_ _null_ )); -DATA(insert OID = 2370 ( timestamp_cmp_date PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "1114 1082" _null_ _null_ _null_ _null_ _null_ timestamp_cmp_date _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 2377 ( timestamptz_lt_date PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_lt_date _null_ _null_ _null_ )); -DATA(insert OID = 2378 ( timestamptz_le_date PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_le_date _null_ _null_ _null_ )); -DATA(insert OID = 2379 ( timestamptz_eq_date PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_eq_date _null_ _null_ _null_ )); -DATA(insert OID = 2380 ( timestamptz_gt_date PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_gt_date _null_ _null_ _null_ )); -DATA(insert OID = 2381 ( timestamptz_ge_date PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_ge_date _null_ _null_ _null_ )); -DATA(insert OID = 2382 ( timestamptz_ne_date PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_ne_date _null_ _null_ _null_ )); -DATA(insert OID = 2383 ( timestamptz_cmp_date PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 23 "1184 1082" _null_ _null_ _null_ _null_ _null_ timestamptz_cmp_date _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -/* crosstype operations for timestamp vs. timestamptz */ -DATA(insert OID = 2520 ( timestamp_lt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_lt_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2521 ( timestamp_le_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_le_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2522 ( timestamp_eq_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_eq_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2523 ( timestamp_gt_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_gt_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2524 ( timestamp_ge_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_ge_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2525 ( timestamp_ne_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_ne_timestamptz _null_ _null_ _null_ )); -DATA(insert OID = 2526 ( timestamp_cmp_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 23 "1114 1184" _null_ _null_ _null_ _null_ _null_ timestamp_cmp_timestamptz _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 2527 ( timestamptz_lt_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_lt_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2528 ( timestamptz_le_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_le_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2529 ( timestamptz_eq_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_eq_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2530 ( timestamptz_gt_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_gt_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2531 ( timestamptz_ge_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_ge_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2532 ( timestamptz_ne_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 16 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_ne_timestamp _null_ _null_ _null_ )); -DATA(insert OID = 2533 ( timestamptz_cmp_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 23 "1184 1114" _null_ _null_ _null_ _null_ _null_ timestamptz_cmp_timestamp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - - -/* send/receive functions */ -DATA(insert OID = 2400 ( array_recv PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 2277 "2281 26 23" _null_ _null_ _null_ _null_ _null_ array_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2401 ( array_send PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "2277" _null_ _null_ _null_ _null_ _null_ array_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2402 ( record_recv PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 2249 "2281 26 23" _null_ _null_ _null_ _null_ _null_ record_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2403 ( record_send PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "2249" _null_ _null_ _null_ _null_ _null_ record_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2404 ( int2recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 21 "2281" _null_ _null_ _null_ _null_ _null_ int2recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2405 ( int2send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "21" _null_ _null_ _null_ _null_ _null_ int2send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2406 ( int4recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "2281" _null_ _null_ _null_ _null_ _null_ int4recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2407 ( int4send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "23" _null_ _null_ _null_ _null_ _null_ int4send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2408 ( int8recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "2281" _null_ _null_ _null_ _null_ _null_ int8recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2409 ( int8send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "20" _null_ _null_ _null_ _null_ _null_ int8send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2410 ( int2vectorrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 22 "2281" _null_ _null_ _null_ _null_ _null_ int2vectorrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2411 ( int2vectorsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "22" _null_ _null_ _null_ _null_ _null_ int2vectorsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2412 ( bytearecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2281" _null_ _null_ _null_ _null_ _null_ bytearecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2413 ( byteasend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "17" _null_ _null_ _null_ _null_ _null_ byteasend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2414 ( textrecv PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 25 "2281" _null_ _null_ _null_ _null_ _null_ textrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2415 ( textsend PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "25" _null_ _null_ _null_ _null_ _null_ textsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2416 ( unknownrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 705 "2281" _null_ _null_ _null_ _null_ _null_ unknownrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2417 ( unknownsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "705" _null_ _null_ _null_ _null_ _null_ unknownsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2418 ( oidrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 26 "2281" _null_ _null_ _null_ _null_ _null_ oidrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2419 ( oidsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "26" _null_ _null_ _null_ _null_ _null_ oidsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2420 ( oidvectorrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 30 "2281" _null_ _null_ _null_ _null_ _null_ oidvectorrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2421 ( oidvectorsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "30" _null_ _null_ _null_ _null_ _null_ oidvectorsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2422 ( namerecv PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 19 "2281" _null_ _null_ _null_ _null_ _null_ namerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2423 ( namesend PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "19" _null_ _null_ _null_ _null_ _null_ namesend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2424 ( float4recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 700 "2281" _null_ _null_ _null_ _null_ _null_ float4recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2425 ( float4send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "700" _null_ _null_ _null_ _null_ _null_ float4send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2426 ( float8recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 701 "2281" _null_ _null_ _null_ _null_ _null_ float8recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2427 ( float8send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "701" _null_ _null_ _null_ _null_ _null_ float8send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2428 ( point_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 600 "2281" _null_ _null_ _null_ _null_ _null_ point_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2429 ( point_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "600" _null_ _null_ _null_ _null_ _null_ point_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2430 ( bpcharrecv PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 1042 "2281 26 23" _null_ _null_ _null_ _null_ _null_ bpcharrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2431 ( bpcharsend PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "1042" _null_ _null_ _null_ _null_ _null_ bpcharsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2432 ( varcharrecv PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 1043 "2281 26 23" _null_ _null_ _null_ _null_ _null_ varcharrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2433 ( varcharsend PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "1043" _null_ _null_ _null_ _null_ _null_ varcharsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2434 ( charrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 18 "2281" _null_ _null_ _null_ _null_ _null_ charrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2435 ( charsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "18" _null_ _null_ _null_ _null_ _null_ charsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2436 ( boolrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ boolrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2437 ( boolsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "16" _null_ _null_ _null_ _null_ _null_ boolsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2438 ( tidrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 27 "2281" _null_ _null_ _null_ _null_ _null_ tidrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2439 ( tidsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "27" _null_ _null_ _null_ _null_ _null_ tidsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2440 ( xidrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 28 "2281" _null_ _null_ _null_ _null_ _null_ xidrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2441 ( xidsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "28" _null_ _null_ _null_ _null_ _null_ xidsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2442 ( cidrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 29 "2281" _null_ _null_ _null_ _null_ _null_ cidrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2443 ( cidsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "29" _null_ _null_ _null_ _null_ _null_ cidsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2444 ( regprocrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 24 "2281" _null_ _null_ _null_ _null_ _null_ regprocrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2445 ( regprocsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "24" _null_ _null_ _null_ _null_ _null_ regprocsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2446 ( regprocedurerecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2202 "2281" _null_ _null_ _null_ _null_ _null_ regprocedurerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2447 ( regproceduresend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2202" _null_ _null_ _null_ _null_ _null_ regproceduresend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2448 ( regoperrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2203 "2281" _null_ _null_ _null_ _null_ _null_ regoperrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2449 ( regopersend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2203" _null_ _null_ _null_ _null_ _null_ regopersend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2450 ( regoperatorrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2204 "2281" _null_ _null_ _null_ _null_ _null_ regoperatorrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2451 ( regoperatorsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2204" _null_ _null_ _null_ _null_ _null_ regoperatorsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2452 ( regclassrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2205 "2281" _null_ _null_ _null_ _null_ _null_ regclassrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2453 ( regclasssend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2205" _null_ _null_ _null_ _null_ _null_ regclasssend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2454 ( regtyperecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2206 "2281" _null_ _null_ _null_ _null_ _null_ regtyperecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2455 ( regtypesend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2206" _null_ _null_ _null_ _null_ _null_ regtypesend _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 4094 ( regrolerecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 4096 "2281" _null_ _null_ _null_ _null_ _null_ regrolerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4095 ( regrolesend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "4096" _null_ _null_ _null_ _null_ _null_ regrolesend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4087 ( regnamespacerecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 4089 "2281" _null_ _null_ _null_ _null_ _null_ regnamespacerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 4088 ( regnamespacesend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "4089" _null_ _null_ _null_ _null_ _null_ regnamespacesend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2456 ( bit_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1560 "2281 26 23" _null_ _null_ _null_ _null_ _null_ bit_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2457 ( bit_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "1560" _null_ _null_ _null_ _null_ _null_ bit_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2458 ( varbit_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1562 "2281 26 23" _null_ _null_ _null_ _null_ _null_ varbit_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2459 ( varbit_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "1562" _null_ _null_ _null_ _null_ _null_ varbit_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2460 ( numeric_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1700 "2281 26 23" _null_ _null_ _null_ _null_ _null_ numeric_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2461 ( numeric_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "1700" _null_ _null_ _null_ _null_ _null_ numeric_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2462 ( abstimerecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 702 "2281" _null_ _null_ _null_ _null_ _null_ abstimerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2463 ( abstimesend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "702" _null_ _null_ _null_ _null_ _null_ abstimesend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2464 ( reltimerecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 703 "2281" _null_ _null_ _null_ _null_ _null_ reltimerecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2465 ( reltimesend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "703" _null_ _null_ _null_ _null_ _null_ reltimesend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2466 ( tintervalrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 704 "2281" _null_ _null_ _null_ _null_ _null_ tintervalrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2467 ( tintervalsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "704" _null_ _null_ _null_ _null_ _null_ tintervalsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2468 ( date_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1082 "2281" _null_ _null_ _null_ _null_ _null_ date_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2469 ( date_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "1082" _null_ _null_ _null_ _null_ _null_ date_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2470 ( time_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1083 "2281 26 23" _null_ _null_ _null_ _null_ _null_ time_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2471 ( time_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "1083" _null_ _null_ _null_ _null_ _null_ time_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2472 ( timetz_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1266 "2281 26 23" _null_ _null_ _null_ _null_ _null_ timetz_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2473 ( timetz_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "1266" _null_ _null_ _null_ _null_ _null_ timetz_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2474 ( timestamp_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1114 "2281 26 23" _null_ _null_ _null_ _null_ _null_ timestamp_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2475 ( timestamp_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "1114" _null_ _null_ _null_ _null_ _null_ timestamp_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2476 ( timestamptz_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1184 "2281 26 23" _null_ _null_ _null_ _null_ _null_ timestamptz_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2477 ( timestamptz_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "1184" _null_ _null_ _null_ _null_ _null_ timestamptz_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2478 ( interval_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1186 "2281 26 23" _null_ _null_ _null_ _null_ _null_ interval_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2479 ( interval_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "1186" _null_ _null_ _null_ _null_ _null_ interval_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2480 ( lseg_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 601 "2281" _null_ _null_ _null_ _null_ _null_ lseg_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2481 ( lseg_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "601" _null_ _null_ _null_ _null_ _null_ lseg_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2482 ( path_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 602 "2281" _null_ _null_ _null_ _null_ _null_ path_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2483 ( path_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "602" _null_ _null_ _null_ _null_ _null_ path_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2484 ( box_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 603 "2281" _null_ _null_ _null_ _null_ _null_ box_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2485 ( box_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "603" _null_ _null_ _null_ _null_ _null_ box_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2486 ( poly_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 604 "2281" _null_ _null_ _null_ _null_ _null_ poly_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2487 ( poly_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "604" _null_ _null_ _null_ _null_ _null_ poly_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2488 ( line_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 628 "2281" _null_ _null_ _null_ _null_ _null_ line_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2489 ( line_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "628" _null_ _null_ _null_ _null_ _null_ line_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2490 ( circle_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 718 "2281" _null_ _null_ _null_ _null_ _null_ circle_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2491 ( circle_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "718" _null_ _null_ _null_ _null_ _null_ circle_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2492 ( cash_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 790 "2281" _null_ _null_ _null_ _null_ _null_ cash_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2493 ( cash_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "790" _null_ _null_ _null_ _null_ _null_ cash_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2494 ( macaddr_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 829 "2281" _null_ _null_ _null_ _null_ _null_ macaddr_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2495 ( macaddr_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "829" _null_ _null_ _null_ _null_ _null_ macaddr_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2496 ( inet_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 869 "2281" _null_ _null_ _null_ _null_ _null_ inet_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2497 ( inet_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "869" _null_ _null_ _null_ _null_ _null_ inet_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2498 ( cidr_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 650 "2281" _null_ _null_ _null_ _null_ _null_ cidr_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2499 ( cidr_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "650" _null_ _null_ _null_ _null_ _null_ cidr_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2500 ( cstring_recv PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "2281" _null_ _null_ _null_ _null_ _null_ cstring_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2501 ( cstring_send PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "2275" _null_ _null_ _null_ _null_ _null_ cstring_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2502 ( anyarray_recv PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2277 "2281" _null_ _null_ _null_ _null_ _null_ anyarray_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2503 ( anyarray_send PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "2277" _null_ _null_ _null_ _null_ _null_ anyarray_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3120 ( void_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ void_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3121 ( void_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2278" _null_ _null_ _null_ _null_ _null_ void_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3446 ( macaddr8_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 774 "2281" _null_ _null_ _null_ _null_ _null_ macaddr8_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3447 ( macaddr8_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "774" _null_ _null_ _null_ _null_ _null_ macaddr8_send _null_ _null_ _null_ )); -DESCR("I/O"); - -/* System-view support functions with pretty-print option */ -DATA(insert OID = 2504 ( pg_get_ruledef PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "26 16" _null_ _null_ _null_ _null_ _null_ pg_get_ruledef_ext _null_ _null_ _null_ )); -DESCR("source text of a rule with pretty-print option"); -DATA(insert OID = 2505 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f t f s r 2 0 25 "25 16" _null_ _null_ _null_ _null_ _null_ pg_get_viewdef_name_ext _null_ _null_ _null_ )); -DESCR("select statement of a view with pretty-print option"); -DATA(insert OID = 2506 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f t f s r 2 0 25 "26 16" _null_ _null_ _null_ _null_ _null_ pg_get_viewdef_ext _null_ _null_ _null_ )); -DESCR("select statement of a view with pretty-print option"); -DATA(insert OID = 3159 ( pg_get_viewdef PGNSP PGUID 12 1 0 0 0 f f f t f s r 2 0 25 "26 23" _null_ _null_ _null_ _null_ _null_ pg_get_viewdef_wrap _null_ _null_ _null_ )); -DESCR("select statement of a view with pretty-printing and specified line wrapping"); -DATA(insert OID = 2507 ( pg_get_indexdef PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 25 "26 23 16" _null_ _null_ _null_ _null_ _null_ pg_get_indexdef_ext _null_ _null_ _null_ )); -DESCR("index description (full create statement or single expression) with pretty-print option"); -DATA(insert OID = 2508 ( pg_get_constraintdef PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "26 16" _null_ _null_ _null_ _null_ _null_ pg_get_constraintdef_ext _null_ _null_ _null_ )); -DESCR("constraint description with pretty-print option"); -DATA(insert OID = 2509 ( pg_get_expr PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 25 "194 26 16" _null_ _null_ _null_ _null_ _null_ pg_get_expr_ext _null_ _null_ _null_ )); -DESCR("deparse an encoded expression with pretty-print option"); -DATA(insert OID = 2510 ( pg_prepared_statement PGNSP PGUID 12 1 1000 0 0 f f f t t s r 0 0 2249 "" "{25,25,1184,2211,16}" "{o,o,o,o,o}" "{name,statement,prepare_time,parameter_types,from_sql}" _null_ _null_ pg_prepared_statement _null_ _null_ _null_ )); -DESCR("get the prepared statements for this session"); -DATA(insert OID = 2511 ( pg_cursor PGNSP PGUID 12 1 1000 0 0 f f f t t s r 0 0 2249 "" "{25,25,16,16,16,1184}" "{o,o,o,o,o,o}" "{name,statement,is_holdable,is_binary,is_scrollable,creation_time}" _null_ _null_ pg_cursor _null_ _null_ _null_ )); -DESCR("get the open cursors for this session"); -DATA(insert OID = 2599 ( pg_timezone_abbrevs PGNSP PGUID 12 1 1000 0 0 f f f t t s s 0 0 2249 "" "{25,1186,16}" "{o,o,o}" "{abbrev,utc_offset,is_dst}" _null_ _null_ pg_timezone_abbrevs _null_ _null_ _null_ )); -DESCR("get the available time zone abbreviations"); -DATA(insert OID = 2856 ( pg_timezone_names PGNSP PGUID 12 1 1000 0 0 f f f t t s s 0 0 2249 "" "{25,25,1186,16}" "{o,o,o,o}" "{name,abbrev,utc_offset,is_dst}" _null_ _null_ pg_timezone_names _null_ _null_ _null_ )); -DESCR("get the available time zone names"); -DATA(insert OID = 2730 ( pg_get_triggerdef PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 25 "26 16" _null_ _null_ _null_ _null_ _null_ pg_get_triggerdef_ext _null_ _null_ _null_ )); -DESCR("trigger description with pretty-print option"); - -/* asynchronous notifications */ -DATA(insert OID = 3035 ( pg_listening_channels PGNSP PGUID 12 1 10 0 0 f f f t t s r 0 0 25 "" _null_ _null_ _null_ _null_ _null_ pg_listening_channels _null_ _null_ _null_ )); -DESCR("get the channels that the current backend listens to"); -DATA(insert OID = 3036 ( pg_notify PGNSP PGUID 12 1 0 0 0 f f f f f v r 2 0 2278 "25 25" _null_ _null_ _null_ _null_ _null_ pg_notify _null_ _null_ _null_ )); -DESCR("send a notification event"); -DATA(insert OID = 3296 ( pg_notification_queue_usage PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 701 "" _null_ _null_ _null_ _null_ _null_ pg_notification_queue_usage _null_ _null_ _null_ )); -DESCR("get the fraction of the asynchronous notification queue currently in use"); - -/* non-persistent series generator */ -DATA(insert OID = 1066 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i s 3 0 23 "23 23 23" _null_ _null_ _null_ _null_ _null_ generate_series_step_int4 _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 1067 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i s 2 0 23 "23 23" _null_ _null_ _null_ _null_ _null_ generate_series_int4 _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 1068 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i s 3 0 20 "20 20 20" _null_ _null_ _null_ _null_ _null_ generate_series_step_int8 _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 1069 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i s 2 0 20 "20 20" _null_ _null_ _null_ _null_ _null_ generate_series_int8 _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 3259 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i s 3 0 1700 "1700 1700 1700" _null_ _null_ _null_ _null_ _null_ generate_series_step_numeric _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 3260 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i s 2 0 1700 "1700 1700" _null_ _null_ _null_ _null_ _null_ generate_series_numeric _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 938 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t i s 3 0 1114 "1114 1114 1186" _null_ _null_ _null_ _null_ _null_ generate_series_timestamp _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); -DATA(insert OID = 939 ( generate_series PGNSP PGUID 12 1 1000 0 0 f f f t t s s 3 0 1184 "1184 1184 1186" _null_ _null_ _null_ _null_ _null_ generate_series_timestamptz _null_ _null_ _null_ )); -DESCR("non-persistent series generator"); - -/* boolean aggregates */ -DATA(insert OID = 2515 ( booland_statefunc PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ booland_statefunc _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 2516 ( boolor_statefunc PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "16 16" _null_ _null_ _null_ _null_ _null_ boolor_statefunc _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3496 ( bool_accum PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 16" _null_ _null_ _null_ _null_ _null_ bool_accum _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3497 ( bool_accum_inv PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 16" _null_ _null_ _null_ _null_ _null_ bool_accum_inv _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3498 ( bool_alltrue PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ bool_alltrue _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3499 ( bool_anytrue PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ bool_anytrue _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 2517 ( bool_and PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 16 "16" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("boolean-and aggregate"); -/* ANY, SOME? These names conflict with subquery operators. See doc. */ -DATA(insert OID = 2518 ( bool_or PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 16 "16" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("boolean-or aggregate"); -DATA(insert OID = 2519 ( every PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 16 "16" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("boolean-and aggregate"); - -/* bitwise integer aggregates */ -DATA(insert OID = 2236 ( bit_and PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-and smallint aggregate"); -DATA(insert OID = 2237 ( bit_or PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 21 "21" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-or smallint aggregate"); -DATA(insert OID = 2238 ( bit_and PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-and integer aggregate"); -DATA(insert OID = 2239 ( bit_or PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-or integer aggregate"); -DATA(insert OID = 2240 ( bit_and PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-and bigint aggregate"); -DATA(insert OID = 2241 ( bit_or PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 20 "20" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-or bigint aggregate"); -DATA(insert OID = 2242 ( bit_and PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1560 "1560" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-and bit aggregate"); -DATA(insert OID = 2243 ( bit_or PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 1560 "1560" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("bitwise-or bit aggregate"); - -/* formerly-missing interval + datetime operators */ -DATA(insert OID = 2546 ( interval_pl_date PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 1114 "1186 1082" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); -DATA(insert OID = 2547 ( interval_pl_timetz PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 1266 "1186 1266" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); -DATA(insert OID = 2548 ( interval_pl_timestamp PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 1114 "1186 1114" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); -DATA(insert OID = 2549 ( interval_pl_timestamptz PGNSP PGUID 14 1 0 0 0 f f f t f s s 2 0 1184 "1186 1184" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); -DATA(insert OID = 2550 ( integer_pl_date PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 1082 "23 1082" _null_ _null_ _null_ _null_ _null_ "select $2 + $1" _null_ _null_ _null_ )); - -DATA(insert OID = 2556 ( pg_tablespace_databases PGNSP PGUID 12 1 1000 0 0 f f f t t s s 1 0 26 "26" _null_ _null_ _null_ _null_ _null_ pg_tablespace_databases _null_ _null_ _null_ )); -DESCR("get OIDs of databases in a tablespace"); - -DATA(insert OID = 2557 ( bool PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "23" _null_ _null_ _null_ _null_ _null_ int4_bool _null_ _null_ _null_ )); -DESCR("convert int4 to boolean"); -DATA(insert OID = 2558 ( int4 PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "16" _null_ _null_ _null_ _null_ _null_ bool_int4 _null_ _null_ _null_ )); -DESCR("convert boolean to int4"); -DATA(insert OID = 2559 ( lastval PGNSP PGUID 12 1 0 0 0 f f f t f v u 0 0 20 "" _null_ _null_ _null_ _null_ _null_ lastval _null_ _null_ _null_ )); -DESCR("current value from last used sequence"); - -/* start time function */ -DATA(insert OID = 2560 ( pg_postmaster_start_time PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_postmaster_start_time _null_ _null_ _null_ )); -DESCR("postmaster start time"); -/* config reload time function */ -DATA(insert OID = 2034 ( pg_conf_load_time PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 1184 "" _null_ _null_ _null_ _null_ _null_ pg_conf_load_time _null_ _null_ _null_ )); -DESCR("configuration load time"); - -/* new functions for Y-direction rtree opclasses */ -DATA(insert OID = 2562 ( box_below PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_below _null_ _null_ _null_ )); -DATA(insert OID = 2563 ( box_overbelow PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_overbelow _null_ _null_ _null_ )); -DATA(insert OID = 2564 ( box_overabove PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_overabove _null_ _null_ _null_ )); -DATA(insert OID = 2565 ( box_above PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "603 603" _null_ _null_ _null_ _null_ _null_ box_above _null_ _null_ _null_ )); -DATA(insert OID = 2566 ( poly_below PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_below _null_ _null_ _null_ )); -DATA(insert OID = 2567 ( poly_overbelow PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_overbelow _null_ _null_ _null_ )); -DATA(insert OID = 2568 ( poly_overabove PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_overabove _null_ _null_ _null_ )); -DATA(insert OID = 2569 ( poly_above PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "604 604" _null_ _null_ _null_ _null_ _null_ poly_above _null_ _null_ _null_ )); -DATA(insert OID = 2587 ( circle_overbelow PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_overbelow _null_ _null_ _null_ )); -DATA(insert OID = 2588 ( circle_overabove PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "718 718" _null_ _null_ _null_ _null_ _null_ circle_overabove _null_ _null_ _null_ )); - -/* support functions for GiST r-tree emulation */ -DATA(insert OID = 2578 ( gist_box_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "2281 603 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_box_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2581 ( gist_box_penalty PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gist_box_penalty _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2582 ( gist_box_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ gist_box_picksplit _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2583 ( gist_box_union PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 603 "2281 2281" _null_ _null_ _null_ _null_ _null_ gist_box_union _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2584 ( gist_box_same PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "603 603 2281" _null_ _null_ _null_ _null_ _null_ gist_box_same _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2585 ( gist_poly_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "2281 604 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_poly_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2586 ( gist_poly_compress PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gist_poly_compress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2591 ( gist_circle_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "2281 718 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_circle_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2592 ( gist_circle_compress PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gist_circle_compress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 1030 ( gist_point_compress PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gist_point_compress _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3282 ( gist_point_fetch PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gist_point_fetch _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 2179 ( gist_point_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "2281 600 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_point_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3064 ( gist_point_distance PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 701 "2281 600 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_point_distance _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3280 ( gist_circle_distance PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 701 "2281 718 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_circle_distance _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3288 ( gist_poly_distance PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 701 "2281 604 21 26 2281" _null_ _null_ _null_ _null_ _null_ gist_poly_distance _null_ _null_ _null_ )); -DESCR("GiST support"); - -/* GIN array support */ -DATA(insert OID = 2743 ( ginarrayextract PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "2277 2281 2281" _null_ _null_ _null_ _null_ _null_ ginarrayextract _null_ _null_ _null_ )); -DESCR("GIN array support"); -DATA(insert OID = 2774 ( ginqueryarrayextract PGNSP PGUID 12 1 0 0 0 f f f t f i s 7 0 2281 "2277 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ ginqueryarrayextract _null_ _null_ _null_ )); -DESCR("GIN array support"); -DATA(insert OID = 2744 ( ginarrayconsistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 8 0 16 "2281 21 2277 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ ginarrayconsistent _null_ _null_ _null_ )); -DESCR("GIN array support"); -DATA(insert OID = 3920 ( ginarraytriconsistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 7 0 18 "2281 21 2277 23 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ ginarraytriconsistent _null_ _null_ _null_ )); -DESCR("GIN array support"); -DATA(insert OID = 3076 ( ginarrayextract PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "2277 2281" _null_ _null_ _null_ _null_ _null_ ginarrayextract_2args _null_ _null_ _null_ )); -DESCR("GIN array support (obsolete)"); - -/* overlap/contains/contained */ -DATA(insert OID = 2747 ( arrayoverlap PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ arrayoverlap _null_ _null_ _null_ )); -DATA(insert OID = 2748 ( arraycontains PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ arraycontains _null_ _null_ _null_ )); -DATA(insert OID = 2749 ( arraycontained PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2277 2277" _null_ _null_ _null_ _null_ _null_ arraycontained _null_ _null_ _null_ )); - -/* BRIN minmax */ -DATA(insert OID = 3383 ( brin_minmax_opcinfo PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ brin_minmax_opcinfo _null_ _null_ _null_ )); -DESCR("BRIN minmax support"); -DATA(insert OID = 3384 ( brin_minmax_add_value PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 16 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_minmax_add_value _null_ _null_ _null_ )); -DESCR("BRIN minmax support"); -DATA(insert OID = 3385 ( brin_minmax_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 16 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_minmax_consistent _null_ _null_ _null_ )); -DESCR("BRIN minmax support"); -DATA(insert OID = 3386 ( brin_minmax_union PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 16 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_minmax_union _null_ _null_ _null_ )); -DESCR("BRIN minmax support"); - -/* BRIN inclusion */ -DATA(insert OID = 4105 ( brin_inclusion_opcinfo PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ brin_inclusion_opcinfo _null_ _null_ _null_ )); -DESCR("BRIN inclusion support"); -DATA(insert OID = 4106 ( brin_inclusion_add_value PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 16 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_inclusion_add_value _null_ _null_ _null_ )); -DESCR("BRIN inclusion support"); -DATA(insert OID = 4107 ( brin_inclusion_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 16 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_inclusion_consistent _null_ _null_ _null_ )); -DESCR("BRIN inclusion support"); -DATA(insert OID = 4108 ( brin_inclusion_union PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 16 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ brin_inclusion_union _null_ _null_ _null_ )); -DESCR("BRIN inclusion support"); - -/* userlock replacements */ -DATA(insert OID = 2880 ( pg_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 2278 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_lock_int8 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock"); -DATA(insert OID = 3089 ( pg_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 2278 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_xact_lock_int8 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock"); -DATA(insert OID = 2881 ( pg_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 2278 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_lock_shared_int8 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock"); -DATA(insert OID = 3090 ( pg_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 2278 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_xact_lock_shared_int8 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock"); -DATA(insert OID = 2882 ( pg_try_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_lock_int8 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock if available"); -DATA(insert OID = 3091 ( pg_try_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_int8 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock if available"); -DATA(insert OID = 2883 ( pg_try_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_lock_shared_int8 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock if available"); -DATA(insert OID = 3092 ( pg_try_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_shared_int8 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock if available"); -DATA(insert OID = 2884 ( pg_advisory_unlock PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_unlock_int8 _null_ _null_ _null_ )); -DESCR("release exclusive advisory lock"); -DATA(insert OID = 2885 ( pg_advisory_unlock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 16 "20" _null_ _null_ _null_ _null_ _null_ pg_advisory_unlock_shared_int8 _null_ _null_ _null_ )); -DESCR("release shared advisory lock"); -DATA(insert OID = 2886 ( pg_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 2278 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_lock_int4 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock"); -DATA(insert OID = 3093 ( pg_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 2278 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_xact_lock_int4 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock"); -DATA(insert OID = 2887 ( pg_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 2278 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_lock_shared_int4 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock"); -DATA(insert OID = 3094 ( pg_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 2278 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_xact_lock_shared_int4 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock"); -DATA(insert OID = 2888 ( pg_try_advisory_lock PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_lock_int4 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock if available"); -DATA(insert OID = 3095 ( pg_try_advisory_xact_lock PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_int4 _null_ _null_ _null_ )); -DESCR("obtain exclusive advisory lock if available"); -DATA(insert OID = 2889 ( pg_try_advisory_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_lock_shared_int4 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock if available"); -DATA(insert OID = 3096 ( pg_try_advisory_xact_lock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_try_advisory_xact_lock_shared_int4 _null_ _null_ _null_ )); -DESCR("obtain shared advisory lock if available"); -DATA(insert OID = 2890 ( pg_advisory_unlock PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_unlock_int4 _null_ _null_ _null_ )); -DESCR("release exclusive advisory lock"); -DATA(insert OID = 2891 ( pg_advisory_unlock_shared PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 16 "23 23" _null_ _null_ _null_ _null_ _null_ pg_advisory_unlock_shared_int4 _null_ _null_ _null_ )); -DESCR("release shared advisory lock"); -DATA(insert OID = 2892 ( pg_advisory_unlock_all PGNSP PGUID 12 1 0 0 0 f f f t f v u 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_advisory_unlock_all _null_ _null_ _null_ )); -DESCR("release all advisory locks"); - -/* XML support */ -DATA(insert OID = 2893 ( xml_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 142 "2275" _null_ _null_ _null_ _null_ _null_ xml_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2894 ( xml_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "142" _null_ _null_ _null_ _null_ _null_ xml_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2895 ( xmlcomment PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 142 "25" _null_ _null_ _null_ _null_ _null_ xmlcomment _null_ _null_ _null_ )); -DESCR("generate XML comment"); -DATA(insert OID = 2896 ( xml PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 142 "25" _null_ _null_ _null_ _null_ _null_ texttoxml _null_ _null_ _null_ )); -DESCR("perform a non-validating parse of a character string to produce an XML value"); -DATA(insert OID = 2897 ( xmlvalidate PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "142 25" _null_ _null_ _null_ _null_ _null_ xmlvalidate _null_ _null_ _null_ )); -DESCR("validate an XML value"); -DATA(insert OID = 2898 ( xml_recv PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 142 "2281" _null_ _null_ _null_ _null_ _null_ xml_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2899 ( xml_send PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "142" _null_ _null_ _null_ _null_ _null_ xml_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2900 ( xmlconcat2 PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 142 "142 142" _null_ _null_ _null_ _null_ _null_ xmlconcat2 _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 2901 ( xmlagg PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 142 "142" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("concatenate XML values"); -DATA(insert OID = 2922 ( text PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "142" _null_ _null_ _null_ _null_ _null_ xmltotext _null_ _null_ _null_ )); -DESCR("serialize an XML value to a character string"); - -DATA(insert OID = 2923 ( table_to_xml PGNSP PGUID 12 100 0 0 0 f f f t f s r 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ _null_ table_to_xml _null_ _null_ _null_ )); -DESCR("map table contents to XML"); -DATA(insert OID = 2924 ( query_to_xml PGNSP PGUID 12 100 0 0 0 f f f t f v u 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ _null_ query_to_xml _null_ _null_ _null_ )); -DESCR("map query result to XML"); -DATA(insert OID = 2925 ( cursor_to_xml PGNSP PGUID 12 100 0 0 0 f f f t f v u 5 0 142 "1790 23 16 16 25" _null_ _null_ "{cursor,count,nulls,tableforest,targetns}" _null_ _null_ cursor_to_xml _null_ _null_ _null_ )); -DESCR("map rows from cursor to XML"); -DATA(insert OID = 2926 ( table_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s r 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ _null_ table_to_xmlschema _null_ _null_ _null_ )); -DESCR("map table structure to XML Schema"); -DATA(insert OID = 2927 ( query_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f v u 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ _null_ query_to_xmlschema _null_ _null_ _null_ )); -DESCR("map query result structure to XML Schema"); -DATA(insert OID = 2928 ( cursor_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f v u 4 0 142 "1790 16 16 25" _null_ _null_ "{cursor,nulls,tableforest,targetns}" _null_ _null_ cursor_to_xmlschema _null_ _null_ _null_ )); -DESCR("map cursor structure to XML Schema"); -DATA(insert OID = 2929 ( table_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s r 4 0 142 "2205 16 16 25" _null_ _null_ "{tbl,nulls,tableforest,targetns}" _null_ _null_ table_to_xml_and_xmlschema _null_ _null_ _null_ )); -DESCR("map table contents and structure to XML and XML Schema"); -DATA(insert OID = 2930 ( query_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f v u 4 0 142 "25 16 16 25" _null_ _null_ "{query,nulls,tableforest,targetns}" _null_ _null_ query_to_xml_and_xmlschema _null_ _null_ _null_ )); -DESCR("map query result and structure to XML and XML Schema"); - -DATA(insert OID = 2933 ( schema_to_xml PGNSP PGUID 12 100 0 0 0 f f f t f s r 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ _null_ schema_to_xml _null_ _null_ _null_ )); -DESCR("map schema contents to XML"); -DATA(insert OID = 2934 ( schema_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s r 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ _null_ schema_to_xmlschema _null_ _null_ _null_ )); -DESCR("map schema structure to XML Schema"); -DATA(insert OID = 2935 ( schema_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s r 4 0 142 "19 16 16 25" _null_ _null_ "{schema,nulls,tableforest,targetns}" _null_ _null_ schema_to_xml_and_xmlschema _null_ _null_ _null_ )); -DESCR("map schema contents and structure to XML and XML Schema"); - -DATA(insert OID = 2936 ( database_to_xml PGNSP PGUID 12 100 0 0 0 f f f t f s r 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ _null_ database_to_xml _null_ _null_ _null_ )); -DESCR("map database contents to XML"); -DATA(insert OID = 2937 ( database_to_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s r 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ _null_ database_to_xmlschema _null_ _null_ _null_ )); -DESCR("map database structure to XML Schema"); -DATA(insert OID = 2938 ( database_to_xml_and_xmlschema PGNSP PGUID 12 100 0 0 0 f f f t f s r 3 0 142 "16 16 25" _null_ _null_ "{nulls,tableforest,targetns}" _null_ _null_ database_to_xml_and_xmlschema _null_ _null_ _null_ )); -DESCR("map database contents and structure to XML and XML Schema"); - -DATA(insert OID = 2931 ( xpath PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 143 "25 142 1009" _null_ _null_ _null_ _null_ _null_ xpath _null_ _null_ _null_ )); -DESCR("evaluate XPath expression, with namespaces support"); -DATA(insert OID = 2932 ( xpath PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 143 "25 142" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.xpath($1, $2, ''{}''::pg_catalog.text[])" _null_ _null_ _null_ )); -DESCR("evaluate XPath expression"); - -DATA(insert OID = 2614 ( xmlexists PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "25 142" _null_ _null_ _null_ _null_ _null_ xmlexists _null_ _null_ _null_ )); -DESCR("test XML value against XPath expression"); - -DATA(insert OID = 3049 ( xpath_exists PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 16 "25 142 1009" _null_ _null_ _null_ _null_ _null_ xpath_exists _null_ _null_ _null_ )); -DESCR("test XML value against XPath expression, with namespace support"); -DATA(insert OID = 3050 ( xpath_exists PGNSP PGUID 14 1 0 0 0 f f f t f i s 2 0 16 "25 142" _null_ _null_ _null_ _null_ _null_ "select pg_catalog.xpath_exists($1, $2, ''{}''::pg_catalog.text[])" _null_ _null_ _null_ )); -DESCR("test XML value against XPath expression"); -DATA(insert OID = 3051 ( xml_is_well_formed PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 16 "25" _null_ _null_ _null_ _null_ _null_ xml_is_well_formed _null_ _null_ _null_ )); -DESCR("determine if a string is well formed XML"); -DATA(insert OID = 3052 ( xml_is_well_formed_document PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "25" _null_ _null_ _null_ _null_ _null_ xml_is_well_formed_document _null_ _null_ _null_ )); -DESCR("determine if a string is well formed XML document"); -DATA(insert OID = 3053 ( xml_is_well_formed_content PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "25" _null_ _null_ _null_ _null_ _null_ xml_is_well_formed_content _null_ _null_ _null_ )); -DESCR("determine if a string is well formed XML content"); - -/* json */ -DATA(insert OID = 321 ( json_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 114 "2275" _null_ _null_ _null_ _null_ _null_ json_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 322 ( json_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "114" _null_ _null_ _null_ _null_ _null_ json_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 323 ( json_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 114 "2281" _null_ _null_ _null_ _null_ _null_ json_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 324 ( json_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "114" _null_ _null_ _null_ _null_ _null_ json_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3153 ( array_to_json PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 114 "2277" _null_ _null_ _null_ _null_ _null_ array_to_json _null_ _null_ _null_ )); -DESCR("map array to json"); -DATA(insert OID = 3154 ( array_to_json PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 114 "2277 16" _null_ _null_ _null_ _null_ _null_ array_to_json_pretty _null_ _null_ _null_ )); -DESCR("map array to json with optional pretty printing"); -DATA(insert OID = 3155 ( row_to_json PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 114 "2249" _null_ _null_ _null_ _null_ _null_ row_to_json _null_ _null_ _null_ )); -DESCR("map row to json"); -DATA(insert OID = 3156 ( row_to_json PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 114 "2249 16" _null_ _null_ _null_ _null_ _null_ row_to_json_pretty _null_ _null_ _null_ )); -DESCR("map row to json with optional pretty printing"); -DATA(insert OID = 3173 ( json_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f s s 2 0 2281 "2281 2283" _null_ _null_ _null_ _null_ _null_ json_agg_transfn _null_ _null_ _null_ )); -DESCR("json aggregate transition function"); -DATA(insert OID = 3174 ( json_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 114 "2281" _null_ _null_ _null_ _null_ _null_ json_agg_finalfn _null_ _null_ _null_ )); -DESCR("json aggregate final function"); -DATA(insert OID = 3175 ( json_agg PGNSP PGUID 12 1 0 0 0 a f f f f s s 1 0 114 "2283" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("aggregate input into json"); -DATA(insert OID = 3180 ( json_object_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f s s 3 0 2281 "2281 2276 2276" _null_ _null_ _null_ _null_ _null_ json_object_agg_transfn _null_ _null_ _null_ )); -DESCR("json object aggregate transition function"); -DATA(insert OID = 3196 ( json_object_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f i s 1 0 114 "2281" _null_ _null_ _null_ _null_ _null_ json_object_agg_finalfn _null_ _null_ _null_ )); -DESCR("json object aggregate final function"); -DATA(insert OID = 3197 ( json_object_agg PGNSP PGUID 12 1 0 0 0 a f f f f s s 2 0 114 "2276 2276" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("aggregate input into a json object"); -DATA(insert OID = 3198 ( json_build_array PGNSP PGUID 12 1 0 2276 0 f f f f f s s 1 0 114 "2276" "{2276}" "{v}" _null_ _null_ _null_ json_build_array _null_ _null_ _null_ )); -DESCR("build a json array from any inputs"); -DATA(insert OID = 3199 ( json_build_array PGNSP PGUID 12 1 0 0 0 f f f f f s s 0 0 114 "" _null_ _null_ _null_ _null_ _null_ json_build_array_noargs _null_ _null_ _null_ )); -DESCR("build an empty json array"); -DATA(insert OID = 3200 ( json_build_object PGNSP PGUID 12 1 0 2276 0 f f f f f s s 1 0 114 "2276" "{2276}" "{v}" _null_ _null_ _null_ json_build_object _null_ _null_ _null_ )); -DESCR("build a json object from pairwise key/value inputs"); -DATA(insert OID = 3201 ( json_build_object PGNSP PGUID 12 1 0 0 0 f f f f f s s 0 0 114 "" _null_ _null_ _null_ _null_ _null_ json_build_object_noargs _null_ _null_ _null_ )); -DESCR("build an empty json object"); -DATA(insert OID = 3202 ( json_object PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 114 "1009" _null_ _null_ _null_ _null_ _null_ json_object _null_ _null_ _null_ )); -DESCR("map text array of key value pairs to json object"); -DATA(insert OID = 3203 ( json_object PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 114 "1009 1009" _null_ _null_ _null_ _null_ _null_ json_object_two_arg _null_ _null_ _null_ )); -DESCR("map text arrays of keys and values to json object"); -DATA(insert OID = 3176 ( to_json PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 114 "2283" _null_ _null_ _null_ _null_ _null_ to_json _null_ _null_ _null_ )); -DESCR("map input to json"); -DATA(insert OID = 3261 ( json_strip_nulls PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 114 "114" _null_ _null_ _null_ _null_ _null_ json_strip_nulls _null_ _null_ _null_ )); -DESCR("remove object fields with null values from json"); - -DATA(insert OID = 3947 ( json_object_field PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 114 "114 25" _null_ _null_ "{from_json, field_name}" _null_ _null_ json_object_field _null_ _null_ _null_ )); -DATA(insert OID = 3948 ( json_object_field_text PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "114 25" _null_ _null_ "{from_json, field_name}" _null_ _null_ json_object_field_text _null_ _null_ _null_ )); -DATA(insert OID = 3949 ( json_array_element PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 114 "114 23" _null_ _null_ "{from_json, element_index}" _null_ _null_ json_array_element _null_ _null_ _null_ )); -DATA(insert OID = 3950 ( json_array_element_text PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "114 23" _null_ _null_ "{from_json, element_index}" _null_ _null_ json_array_element_text _null_ _null_ _null_ )); -DATA(insert OID = 3951 ( json_extract_path PGNSP PGUID 12 1 0 25 0 f f f t f i s 2 0 114 "114 1009" "{114,1009}" "{i,v}" "{from_json,path_elems}" _null_ _null_ json_extract_path _null_ _null_ _null_ )); -DESCR("get value from json with path elements"); -DATA(insert OID = 3953 ( json_extract_path_text PGNSP PGUID 12 1 0 25 0 f f f t f i s 2 0 25 "114 1009" "{114,1009}" "{i,v}" "{from_json,path_elems}" _null_ _null_ json_extract_path_text _null_ _null_ _null_ )); -DESCR("get value from json as text with path elements"); -DATA(insert OID = 3955 ( json_array_elements PGNSP PGUID 12 1 100 0 0 f f f t t i s 1 0 114 "114" "{114,114}" "{i,o}" "{from_json,value}" _null_ _null_ json_array_elements _null_ _null_ _null_ )); -DESCR("key value pairs of a json object"); -DATA(insert OID = 3969 ( json_array_elements_text PGNSP PGUID 12 1 100 0 0 f f f t t i s 1 0 25 "114" "{114,25}" "{i,o}" "{from_json,value}" _null_ _null_ json_array_elements_text _null_ _null_ _null_ )); -DESCR("elements of json array"); -DATA(insert OID = 3956 ( json_array_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "114" _null_ _null_ _null_ _null_ _null_ json_array_length _null_ _null_ _null_ )); -DESCR("length of json array"); -DATA(insert OID = 3957 ( json_object_keys PGNSP PGUID 12 1 100 0 0 f f f t t i s 1 0 25 "114" _null_ _null_ _null_ _null_ _null_ json_object_keys _null_ _null_ _null_ )); -DESCR("get json object keys"); -DATA(insert OID = 3958 ( json_each PGNSP PGUID 12 1 100 0 0 f f f t t i s 1 0 2249 "114" "{114,25,114}" "{i,o,o}" "{from_json,key,value}" _null_ _null_ json_each _null_ _null_ _null_ )); -DESCR("key value pairs of a json object"); -DATA(insert OID = 3959 ( json_each_text PGNSP PGUID 12 1 100 0 0 f f f t t i s 1 0 2249 "114" "{114,25,25}" "{i,o,o}" "{from_json,key,value}" _null_ _null_ json_each_text _null_ _null_ _null_ )); -DESCR("key value pairs of a json object"); -DATA(insert OID = 3960 ( json_populate_record PGNSP PGUID 12 1 0 0 0 f f f f f s s 3 0 2283 "2283 114 16" _null_ _null_ _null_ _null_ _null_ json_populate_record _null_ _null_ _null_ )); -DESCR("get record fields from a json object"); -DATA(insert OID = 3961 ( json_populate_recordset PGNSP PGUID 12 1 100 0 0 f f f f t s s 3 0 2283 "2283 114 16" _null_ _null_ _null_ _null_ _null_ json_populate_recordset _null_ _null_ _null_ )); -DESCR("get set of records with fields from a json array of objects"); -DATA(insert OID = 3204 ( json_to_record PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2249 "114" _null_ _null_ _null_ _null_ _null_ json_to_record _null_ _null_ _null_ )); -DESCR("get record fields from a json object"); -DATA(insert OID = 3205 ( json_to_recordset PGNSP PGUID 12 1 100 0 0 f f f f t s s 1 0 2249 "114" _null_ _null_ _null_ _null_ _null_ json_to_recordset _null_ _null_ _null_ )); -DESCR("get set of records with fields from a json array of objects"); -DATA(insert OID = 3968 ( json_typeof PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "114" _null_ _null_ _null_ _null_ _null_ json_typeof _null_ _null_ _null_ )); -DESCR("get the type of a json value"); - -/* uuid */ -DATA(insert OID = 2952 ( uuid_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2950 "2275" _null_ _null_ _null_ _null_ _null_ uuid_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2953 ( uuid_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2950" _null_ _null_ _null_ _null_ _null_ uuid_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2954 ( uuid_lt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_lt _null_ _null_ _null_ )); -DATA(insert OID = 2955 ( uuid_le PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_le _null_ _null_ _null_ )); -DATA(insert OID = 2956 ( uuid_eq PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_eq _null_ _null_ _null_ )); -DATA(insert OID = 2957 ( uuid_ge PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_ge _null_ _null_ _null_ )); -DATA(insert OID = 2958 ( uuid_gt PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_gt _null_ _null_ _null_ )); -DATA(insert OID = 2959 ( uuid_ne PGNSP PGUID 12 1 0 0 0 f f t t f i s 2 0 16 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_ne _null_ _null_ _null_ )); -DATA(insert OID = 2960 ( uuid_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "2950 2950" _null_ _null_ _null_ _null_ _null_ uuid_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3300 ( uuid_sortsupport PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ uuid_sortsupport _null_ _null_ _null_ )); -DESCR("sort support"); -DATA(insert OID = 2961 ( uuid_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2950 "2281" _null_ _null_ _null_ _null_ _null_ uuid_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2962 ( uuid_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2950" _null_ _null_ _null_ _null_ _null_ uuid_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2963 ( uuid_hash PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "2950" _null_ _null_ _null_ _null_ _null_ uuid_hash _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 3412 ( uuid_hash_extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "2950 20" _null_ _null_ _null_ _null_ _null_ uuid_hash_extended _null_ _null_ _null_ )); -DESCR("hash"); - -/* pg_lsn */ -DATA(insert OID = 3229 ( pg_lsn_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3220 "2275" _null_ _null_ _null_ _null_ _null_ pg_lsn_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3230 ( pg_lsn_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3231 ( pg_lsn_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_lt _null_ _null_ _null_ )); -DATA(insert OID = 3232 ( pg_lsn_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_le _null_ _null_ _null_ )); -DATA(insert OID = 3233 ( pg_lsn_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_eq _null_ _null_ _null_ )); -DATA(insert OID = 3234 ( pg_lsn_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_ge _null_ _null_ _null_ )); -DATA(insert OID = 3235 ( pg_lsn_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_gt _null_ _null_ _null_ )); -DATA(insert OID = 3236 ( pg_lsn_ne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_ne _null_ _null_ _null_ )); -DATA(insert OID = 3237 ( pg_lsn_mi PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1700 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_mi _null_ _null_ _null_ )); -DATA(insert OID = 3238 ( pg_lsn_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3220 "2281" _null_ _null_ _null_ _null_ _null_ pg_lsn_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3239 ( pg_lsn_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3251 ( pg_lsn_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "3220 3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3252 ( pg_lsn_hash PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "3220" _null_ _null_ _null_ _null_ _null_ pg_lsn_hash _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 3413 ( pg_lsn_hash_extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "3220 20" _null_ _null_ _null_ _null_ _null_ pg_lsn_hash_extended _null_ _null_ _null_ )); -DESCR("hash"); - -/* enum related procs */ -DATA(insert OID = 3504 ( anyenum_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3500 "2275" _null_ _null_ _null_ _null_ _null_ anyenum_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3505 ( anyenum_out PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "3500" _null_ _null_ _null_ _null_ _null_ anyenum_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3506 ( enum_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 3500 "2275 26" _null_ _null_ _null_ _null_ _null_ enum_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3507 ( enum_out PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "3500" _null_ _null_ _null_ _null_ _null_ enum_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3508 ( enum_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_eq _null_ _null_ _null_ )); -DATA(insert OID = 3509 ( enum_ne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_ne _null_ _null_ _null_ )); -DATA(insert OID = 3510 ( enum_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_lt _null_ _null_ _null_ )); -DATA(insert OID = 3511 ( enum_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_gt _null_ _null_ _null_ )); -DATA(insert OID = 3512 ( enum_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_le _null_ _null_ _null_ )); -DATA(insert OID = 3513 ( enum_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_ge _null_ _null_ _null_ )); -DATA(insert OID = 3514 ( enum_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3515 ( hashenum PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "3500" _null_ _null_ _null_ _null_ _null_ hashenum _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 3414 ( hashenumextended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "3500 20" _null_ _null_ _null_ _null_ _null_ hashenumextended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 3524 ( enum_smaller PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3500 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_smaller _null_ _null_ _null_ )); -DESCR("smaller of two"); -DATA(insert OID = 3525 ( enum_larger PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3500 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_larger _null_ _null_ _null_ )); -DESCR("larger of two"); -DATA(insert OID = 3526 ( max PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 3500 "3500" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("maximum value of all enum input values"); -DATA(insert OID = 3527 ( min PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 3500 "3500" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("minimum value of all enum input values"); -DATA(insert OID = 3528 ( enum_first PGNSP PGUID 12 1 0 0 0 f f f f f s s 1 0 3500 "3500" _null_ _null_ _null_ _null_ _null_ enum_first _null_ _null_ _null_ )); -DESCR("first value of the input enum type"); -DATA(insert OID = 3529 ( enum_last PGNSP PGUID 12 1 0 0 0 f f f f f s s 1 0 3500 "3500" _null_ _null_ _null_ _null_ _null_ enum_last _null_ _null_ _null_ )); -DESCR("last value of the input enum type"); -DATA(insert OID = 3530 ( enum_range PGNSP PGUID 12 1 0 0 0 f f f f f s s 2 0 2277 "3500 3500" _null_ _null_ _null_ _null_ _null_ enum_range_bounds _null_ _null_ _null_ )); -DESCR("range between the two given enum values, as an ordered array"); -DATA(insert OID = 3531 ( enum_range PGNSP PGUID 12 1 0 0 0 f f f f f s s 1 0 2277 "3500" _null_ _null_ _null_ _null_ _null_ enum_range_all _null_ _null_ _null_ )); -DESCR("range of the given enum type, as an ordered array"); -DATA(insert OID = 3532 ( enum_recv PGNSP PGUID 12 1 0 0 0 f f f t f s s 2 0 3500 "2281 26" _null_ _null_ _null_ _null_ _null_ enum_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3533 ( enum_send PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "3500" _null_ _null_ _null_ _null_ _null_ enum_send _null_ _null_ _null_ )); -DESCR("I/O"); - -/* text search stuff */ -DATA(insert OID = 3610 ( tsvectorin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3614 "2275" _null_ _null_ _null_ _null_ _null_ tsvectorin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3639 ( tsvectorrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3614 "2281" _null_ _null_ _null_ _null_ _null_ tsvectorrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3611 ( tsvectorout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "3614" _null_ _null_ _null_ _null_ _null_ tsvectorout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3638 ( tsvectorsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "3614" _null_ _null_ _null_ _null_ _null_ tsvectorsend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3612 ( tsqueryin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3615 "2275" _null_ _null_ _null_ _null_ _null_ tsqueryin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3641 ( tsqueryrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3615 "2281" _null_ _null_ _null_ _null_ _null_ tsqueryrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3613 ( tsqueryout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "3615" _null_ _null_ _null_ _null_ _null_ tsqueryout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3640 ( tsquerysend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "3615" _null_ _null_ _null_ _null_ _null_ tsquerysend _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3646 ( gtsvectorin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3642 "2275" _null_ _null_ _null_ _null_ _null_ gtsvectorin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3647 ( gtsvectorout PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "3642" _null_ _null_ _null_ _null_ _null_ gtsvectorout _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 3616 ( tsvector_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_lt _null_ _null_ _null_ )); -DATA(insert OID = 3617 ( tsvector_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_le _null_ _null_ _null_ )); -DATA(insert OID = 3618 ( tsvector_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_eq _null_ _null_ _null_ )); -DATA(insert OID = 3619 ( tsvector_ne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_ne _null_ _null_ _null_ )); -DATA(insert OID = 3620 ( tsvector_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_ge _null_ _null_ _null_ )); -DATA(insert OID = 3621 ( tsvector_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_gt _null_ _null_ _null_ )); -DATA(insert OID = 3622 ( tsvector_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 3711 ( length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "3614" _null_ _null_ _null_ _null_ _null_ tsvector_length _null_ _null_ _null_ )); -DESCR("number of lexemes"); -DATA(insert OID = 3623 ( strip PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3614 "3614" _null_ _null_ _null_ _null_ _null_ tsvector_strip _null_ _null_ _null_ )); -DESCR("strip position information"); -DATA(insert OID = 3624 ( setweight PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3614 "3614 18" _null_ _null_ _null_ _null_ _null_ tsvector_setweight _null_ _null_ _null_ )); -DESCR("set given weight for whole tsvector"); -DATA(insert OID = 3320 ( setweight PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 3614 "3614 18 1009" _null_ _null_ _null_ _null_ _null_ tsvector_setweight_by_filter _null_ _null_ _null_ )); -DESCR("set given weight for given lexemes"); -DATA(insert OID = 3625 ( tsvector_concat PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3614 "3614 3614" _null_ _null_ _null_ _null_ _null_ tsvector_concat _null_ _null_ _null_ )); -DATA(insert OID = 3321 ( ts_delete PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3614 "3614 25" _null_ _null_ _null_ _null_ _null_ tsvector_delete_str _null_ _null_ _null_ )); -DESCR("delete lexeme"); -DATA(insert OID = 3323 ( ts_delete PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3614 "3614 1009" _null_ _null_ _null_ _null_ _null_ tsvector_delete_arr _null_ _null_ _null_ )); -DESCR("delete given lexemes"); -DATA(insert OID = 3322 ( unnest PGNSP PGUID 12 1 10 0 0 f f f t t i s 1 0 2249 "3614" "{3614,25,1005,1009}" "{i,o,o,o}" "{tsvector,lexeme,positions,weights}" _null_ _null_ tsvector_unnest _null_ _null_ _null_ )); -DESCR("expand tsvector to set of rows"); -DATA(insert OID = 3326 ( tsvector_to_array PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 1009 "3614" _null_ _null_ _null_ _null_ _null_ tsvector_to_array _null_ _null_ _null_ )); -DESCR("convert tsvector to array of lexemes"); -DATA(insert OID = 3327 ( array_to_tsvector PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3614 "1009" _null_ _null_ _null_ _null_ _null_ array_to_tsvector _null_ _null_ _null_ )); -DESCR("build tsvector from array of lexemes"); -DATA(insert OID = 3319 ( ts_filter PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3614 "3614 1002" _null_ _null_ _null_ _null_ _null_ tsvector_filter _null_ _null_ _null_ )); -DESCR("delete lexemes that do not have one of the given weights"); - -DATA(insert OID = 3634 ( ts_match_vq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3614 3615" _null_ _null_ _null_ _null_ _null_ ts_match_vq _null_ _null_ _null_ )); -DATA(insert OID = 3635 ( ts_match_qv PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3615 3614" _null_ _null_ _null_ _null_ _null_ ts_match_qv _null_ _null_ _null_ )); -DATA(insert OID = 3760 ( ts_match_tt PGNSP PGUID 12 100 0 0 0 f f f t f s s 2 0 16 "25 25" _null_ _null_ _null_ _null_ _null_ ts_match_tt _null_ _null_ _null_ )); -DATA(insert OID = 3761 ( ts_match_tq PGNSP PGUID 12 100 0 0 0 f f f t f s s 2 0 16 "25 3615" _null_ _null_ _null_ _null_ _null_ ts_match_tq _null_ _null_ _null_ )); - -DATA(insert OID = 3648 ( gtsvector_compress PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gtsvector_compress _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3649 ( gtsvector_decompress PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gtsvector_decompress _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3650 ( gtsvector_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_picksplit _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3651 ( gtsvector_union PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3642 "2281 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_union _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3652 ( gtsvector_same PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "3642 3642 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_same _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3653 ( gtsvector_penalty PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_penalty _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3654 ( gtsvector_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "2281 3614 21 26 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_consistent _null_ _null_ _null_ )); -DESCR("GiST tsvector support"); -DATA(insert OID = 3790 ( gtsvector_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "2281 3642 23 26 2281" _null_ _null_ _null_ _null_ _null_ gtsvector_consistent_oldsig _null_ _null_ _null_ )); -DESCR("GiST tsvector support (obsolete)"); - -DATA(insert OID = 3656 ( gin_extract_tsvector PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "3614 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_tsvector _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 3657 ( gin_extract_tsquery PGNSP PGUID 12 1 0 0 0 f f f t f i s 7 0 2281 "3614 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_tsquery _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 3658 ( gin_tsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 8 0 16 "2281 21 3614 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_tsquery_consistent _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 3921 ( gin_tsquery_triconsistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 7 0 18 "2281 21 3614 23 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_tsquery_triconsistent _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 3724 ( gin_cmp_tslexeme PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ gin_cmp_tslexeme _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 2700 ( gin_cmp_prefix PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 23 "25 25 21 2281" _null_ _null_ _null_ _null_ _null_ gin_cmp_prefix _null_ _null_ _null_ )); -DESCR("GIN tsvector support"); -DATA(insert OID = 3077 ( gin_extract_tsvector PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "3614 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_tsvector_2args _null_ _null_ _null_ )); -DESCR("GIN tsvector support (obsolete)"); -DATA(insert OID = 3087 ( gin_extract_tsquery PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 2281 "3615 2281 21 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_tsquery_5args _null_ _null_ _null_ )); -DESCR("GIN tsvector support (obsolete)"); -DATA(insert OID = 3088 ( gin_tsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 6 0 16 "2281 21 3615 23 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_tsquery_consistent_6args _null_ _null_ _null_ )); -DESCR("GIN tsvector support (obsolete)"); -DATA(insert OID = 3791 ( gin_extract_tsquery PGNSP PGUID 12 1 0 0 0 f f f t f i s 7 0 2281 "3615 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_tsquery_oldsig _null_ _null_ _null_ )); -DESCR("GIN tsvector support (obsolete)"); -DATA(insert OID = 3792 ( gin_tsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 8 0 16 "2281 21 3615 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_tsquery_consistent_oldsig _null_ _null_ _null_ )); -DESCR("GIN tsvector support (obsolete)"); - -DATA(insert OID = 3789 ( gin_clean_pending_list PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 20 "2205" _null_ _null_ _null_ _null_ _null_ gin_clean_pending_list _null_ _null_ _null_ )); -DESCR("clean up GIN pending list"); - -DATA(insert OID = 3662 ( tsquery_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_lt _null_ _null_ _null_ )); -DATA(insert OID = 3663 ( tsquery_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_le _null_ _null_ _null_ )); -DATA(insert OID = 3664 ( tsquery_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_eq _null_ _null_ _null_ )); -DATA(insert OID = 3665 ( tsquery_ne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_ne _null_ _null_ _null_ )); -DATA(insert OID = 3666 ( tsquery_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_ge _null_ _null_ _null_ )); -DATA(insert OID = 3667 ( tsquery_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_gt _null_ _null_ _null_ )); -DATA(insert OID = 3668 ( tsquery_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -DATA(insert OID = 3669 ( tsquery_and PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3615 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_and _null_ _null_ _null_ )); -DATA(insert OID = 3670 ( tsquery_or PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3615 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_or _null_ _null_ _null_ )); -DATA(insert OID = 5003 ( tsquery_phrase PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3615 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_phrase _null_ _null_ _null_ )); -DATA(insert OID = 5004 ( tsquery_phrase PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 3615 "3615 3615 23" _null_ _null_ _null_ _null_ _null_ tsquery_phrase_distance _null_ _null_ _null_ )); -DESCR("phrase-concatenate with distance"); -DATA(insert OID = 3671 ( tsquery_not PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3615 "3615" _null_ _null_ _null_ _null_ _null_ tsquery_not _null_ _null_ _null_ )); - -DATA(insert OID = 3691 ( tsq_mcontains PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsq_mcontains _null_ _null_ _null_ )); -DATA(insert OID = 3692 ( tsq_mcontained PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3615 3615" _null_ _null_ _null_ _null_ _null_ tsq_mcontained _null_ _null_ _null_ )); - -DATA(insert OID = 3672 ( numnode PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "3615" _null_ _null_ _null_ _null_ _null_ tsquery_numnode _null_ _null_ _null_ )); -DESCR("number of nodes"); -DATA(insert OID = 3673 ( querytree PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "3615" _null_ _null_ _null_ _null_ _null_ tsquerytree _null_ _null_ _null_ )); -DESCR("show real useful query for GiST index"); - -DATA(insert OID = 3684 ( ts_rewrite PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 3615 "3615 3615 3615" _null_ _null_ _null_ _null_ _null_ tsquery_rewrite _null_ _null_ _null_ )); -DESCR("rewrite tsquery"); -DATA(insert OID = 3685 ( ts_rewrite PGNSP PGUID 12 100 0 0 0 f f f t f v u 2 0 3615 "3615 25" _null_ _null_ _null_ _null_ _null_ tsquery_rewrite_query _null_ _null_ _null_ )); -DESCR("rewrite tsquery"); - -DATA(insert OID = 3695 ( gtsquery_compress PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ gtsquery_compress _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3697 ( gtsquery_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_picksplit _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3698 ( gtsquery_union PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "2281 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_union _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3699 ( gtsquery_same PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "20 20 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_same _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3700 ( gtsquery_penalty PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_penalty _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3701 ( gtsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "2281 3615 21 26 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_consistent _null_ _null_ _null_ )); -DESCR("GiST tsquery support"); -DATA(insert OID = 3793 ( gtsquery_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "2281 2281 23 26 2281" _null_ _null_ _null_ _null_ _null_ gtsquery_consistent_oldsig _null_ _null_ _null_ )); -DESCR("GiST tsquery support (obsolete)"); - -DATA(insert OID = 3686 ( tsmatchsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ tsmatchsel _null_ _null_ _null_ )); -DESCR("restriction selectivity of tsvector @@ tsquery"); -DATA(insert OID = 3687 ( tsmatchjoinsel PGNSP PGUID 12 1 0 0 0 f f f t f s s 5 0 701 "2281 26 2281 21 2281" _null_ _null_ _null_ _null_ _null_ tsmatchjoinsel _null_ _null_ _null_ )); -DESCR("join selectivity of tsvector @@ tsquery"); -DATA(insert OID = 3688 ( ts_typanalyze PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ ts_typanalyze _null_ _null_ _null_ )); -DESCR("tsvector typanalyze"); - -DATA(insert OID = 3689 ( ts_stat PGNSP PGUID 12 10 10000 0 0 f f f t t v u 1 0 2249 "25" "{25,25,23,23}" "{i,o,o,o}" "{query,word,ndoc,nentry}" _null_ _null_ ts_stat1 _null_ _null_ _null_ )); -DESCR("statistics of tsvector column"); -DATA(insert OID = 3690 ( ts_stat PGNSP PGUID 12 10 10000 0 0 f f f t t v u 2 0 2249 "25 25" "{25,25,25,23,23}" "{i,i,o,o,o}" "{query,weights,word,ndoc,nentry}" _null_ _null_ ts_stat2 _null_ _null_ _null_ )); -DESCR("statistics of tsvector column"); - -DATA(insert OID = 3703 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 700 "1021 3614 3615 23" _null_ _null_ _null_ _null_ _null_ ts_rank_wttf _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3704 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 700 "1021 3614 3615" _null_ _null_ _null_ _null_ _null_ ts_rank_wtt _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3705 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 700 "3614 3615 23" _null_ _null_ _null_ _null_ _null_ ts_rank_ttf _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3706 ( ts_rank PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 700 "3614 3615" _null_ _null_ _null_ _null_ _null_ ts_rank_tt _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3707 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 700 "1021 3614 3615 23" _null_ _null_ _null_ _null_ _null_ ts_rankcd_wttf _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3708 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 700 "1021 3614 3615" _null_ _null_ _null_ _null_ _null_ ts_rankcd_wtt _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3709 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 700 "3614 3615 23" _null_ _null_ _null_ _null_ _null_ ts_rankcd_ttf _null_ _null_ _null_ )); -DESCR("relevance"); -DATA(insert OID = 3710 ( ts_rank_cd PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 700 "3614 3615" _null_ _null_ _null_ _null_ _null_ ts_rankcd_tt _null_ _null_ _null_ )); -DESCR("relevance"); - -DATA(insert OID = 3713 ( ts_token_type PGNSP PGUID 12 1 16 0 0 f f f t t i s 1 0 2249 "26" "{26,23,25,25}" "{i,o,o,o}" "{parser_oid,tokid,alias,description}" _null_ _null_ ts_token_type_byid _null_ _null_ _null_ )); -DESCR("get parser's token types"); -DATA(insert OID = 3714 ( ts_token_type PGNSP PGUID 12 1 16 0 0 f f f t t s s 1 0 2249 "25" "{25,23,25,25}" "{i,o,o,o}" "{parser_name,tokid,alias,description}" _null_ _null_ ts_token_type_byname _null_ _null_ _null_ )); -DESCR("get parser's token types"); -DATA(insert OID = 3715 ( ts_parse PGNSP PGUID 12 1 1000 0 0 f f f t t i s 2 0 2249 "26 25" "{26,25,23,25}" "{i,i,o,o}" "{parser_oid,txt,tokid,token}" _null_ _null_ ts_parse_byid _null_ _null_ _null_ )); -DESCR("parse text to tokens"); -DATA(insert OID = 3716 ( ts_parse PGNSP PGUID 12 1 1000 0 0 f f f t t s s 2 0 2249 "25 25" "{25,25,23,25}" "{i,i,o,o}" "{parser_name,txt,tokid,token}" _null_ _null_ ts_parse_byname _null_ _null_ _null_ )); -DESCR("parse text to tokens"); - -DATA(insert OID = 3717 ( prsd_start PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "2281 23" _null_ _null_ _null_ _null_ _null_ prsd_start _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3718 ( prsd_nexttoken PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ prsd_nexttoken _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3719 ( prsd_end PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2278 "2281" _null_ _null_ _null_ _null_ _null_ prsd_end _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3720 ( prsd_headline PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "2281 2281 3615" _null_ _null_ _null_ _null_ _null_ prsd_headline _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3721 ( prsd_lextype PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ prsd_lextype _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 3723 ( ts_lexize PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 1009 "3769 25" _null_ _null_ _null_ _null_ _null_ ts_lexize _null_ _null_ _null_ )); -DESCR("normalize one word by dictionary"); - -DATA(insert OID = 3725 ( dsimple_init PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ dsimple_init _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3726 ( dsimple_lexize PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ dsimple_lexize _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 3728 ( dsynonym_init PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ dsynonym_init _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3729 ( dsynonym_lexize PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ dsynonym_lexize _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 3731 ( dispell_init PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ dispell_init _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3732 ( dispell_lexize PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ dispell_lexize _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 3740 ( thesaurus_init PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2281 "2281" _null_ _null_ _null_ _null_ _null_ thesaurus_init _null_ _null_ _null_ )); -DESCR("(internal)"); -DATA(insert OID = 3741 ( thesaurus_lexize PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 2281 "2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ thesaurus_lexize _null_ _null_ _null_ )); -DESCR("(internal)"); - -DATA(insert OID = 3743 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f i s 4 0 25 "3734 25 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_byid_opt _null_ _null_ _null_ )); -DESCR("generate headline"); -DATA(insert OID = 3744 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f i s 3 0 25 "3734 25 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_byid _null_ _null_ _null_ )); -DESCR("generate headline"); -DATA(insert OID = 3754 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f s s 3 0 25 "25 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_opt _null_ _null_ _null_ )); -DESCR("generate headline"); -DATA(insert OID = 3755 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f s s 2 0 25 "25 3615" _null_ _null_ _null_ _null_ _null_ ts_headline _null_ _null_ _null_ )); -DESCR("generate headline"); - -DATA(insert OID = 4201 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f i s 4 0 3802 "3734 3802 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_jsonb_byid_opt _null_ _null_ _null_ )); -DESCR("generate headline from jsonb"); -DATA(insert OID = 4202 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f i s 3 0 3802 "3734 3802 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_jsonb_byid _null_ _null_ _null_ )); -DESCR("generate headline from jsonb"); -DATA(insert OID = 4203 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f s s 3 0 3802 "3802 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_jsonb_opt _null_ _null_ _null_ )); -DESCR("generate headline from jsonb"); -DATA(insert OID = 4204 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f s s 2 0 3802 "3802 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_jsonb _null_ _null_ _null_ )); -DESCR("generate headline from jsonb"); - -DATA(insert OID = 4205 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f i s 4 0 114 "3734 114 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_json_byid_opt _null_ _null_ _null_ )); -DESCR("generate headline from json"); -DATA(insert OID = 4206 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f i s 3 0 114 "3734 114 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_json_byid _null_ _null_ _null_ )); -DESCR("generate headline from json"); -DATA(insert OID = 4207 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f s s 3 0 114 "114 3615 25" _null_ _null_ _null_ _null_ _null_ ts_headline_json_opt _null_ _null_ _null_ )); -DESCR("generate headline from json"); -DATA(insert OID = 4208 ( ts_headline PGNSP PGUID 12 100 0 0 0 f f f t f s s 2 0 114 "114 3615" _null_ _null_ _null_ _null_ _null_ ts_headline_json _null_ _null_ _null_ )); -DESCR("generate headline from json"); - -DATA(insert OID = 3745 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f t f i s 2 0 3614 "3734 25" _null_ _null_ _null_ _null_ _null_ to_tsvector_byid _null_ _null_ _null_ )); -DESCR("transform to tsvector"); -DATA(insert OID = 3746 ( to_tsquery PGNSP PGUID 12 100 0 0 0 f f f t f i s 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ _null_ to_tsquery_byid _null_ _null_ _null_ )); -DESCR("make tsquery"); -DATA(insert OID = 3747 ( plainto_tsquery PGNSP PGUID 12 100 0 0 0 f f f t f i s 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ _null_ plainto_tsquery_byid _null_ _null_ _null_ )); -DESCR("transform to tsquery"); -DATA(insert OID = 5006 ( phraseto_tsquery PGNSP PGUID 12 100 0 0 0 f f f t f i s 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ _null_ phraseto_tsquery_byid _null_ _null_ _null_ )); -DESCR("transform to tsquery"); -DATA(insert OID = 8889 ( websearch_to_tsquery PGNSP PGUID 12 100 0 0 0 f f f t f i s 2 0 3615 "3734 25" _null_ _null_ _null_ _null_ _null_ websearch_to_tsquery_byid _null_ _null_ _null_ )); -DESCR("transform to tsquery"); -DATA(insert OID = 3749 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f t f s s 1 0 3614 "25" _null_ _null_ _null_ _null_ _null_ to_tsvector _null_ _null_ _null_ )); -DESCR("transform to tsvector"); -DATA(insert OID = 3750 ( to_tsquery PGNSP PGUID 12 100 0 0 0 f f f t f s s 1 0 3615 "25" _null_ _null_ _null_ _null_ _null_ to_tsquery _null_ _null_ _null_ )); -DESCR("make tsquery"); -DATA(insert OID = 3751 ( plainto_tsquery PGNSP PGUID 12 100 0 0 0 f f f t f s s 1 0 3615 "25" _null_ _null_ _null_ _null_ _null_ plainto_tsquery _null_ _null_ _null_ )); -DESCR("transform to tsquery"); -DATA(insert OID = 5001 ( phraseto_tsquery PGNSP PGUID 12 100 0 0 0 f f f t f s s 1 0 3615 "25" _null_ _null_ _null_ _null_ _null_ phraseto_tsquery _null_ _null_ _null_ )); -DESCR("transform to tsquery"); -DATA(insert OID = 8890 ( websearch_to_tsquery PGNSP PGUID 12 100 0 0 0 f f f t f s s 1 0 3615 "25" _null_ _null_ _null_ _null_ _null_ websearch_to_tsquery _null_ _null_ _null_ )); -DESCR("transform to tsquery"); -DATA(insert OID = 4209 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f t f s s 1 0 3614 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_string_to_tsvector _null_ _null_ _null_ )); -DESCR("transform string values from jsonb to tsvector"); -DATA(insert OID = 4213 ( jsonb_to_tsvector PGNSP PGUID 12 100 0 0 0 f f f t f s s 2 0 3614 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_to_tsvector _null_ _null_ _null_ )); -DESCR("transform specified values from jsonb to tsvector"); -DATA(insert OID = 4210 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f t f s s 1 0 3614 "114" _null_ _null_ _null_ _null_ _null_ json_string_to_tsvector _null_ _null_ _null_ )); -DESCR("transform string values from json to tsvector"); -DATA(insert OID = 4215 ( json_to_tsvector PGNSP PGUID 12 100 0 0 0 f f f t f s s 2 0 3614 "114 3802" _null_ _null_ _null_ _null_ _null_ json_to_tsvector _null_ _null_ _null_ )); -DESCR("transform specified values from json to tsvector"); -DATA(insert OID = 4211 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f t f i s 2 0 3614 "3734 3802" _null_ _null_ _null_ _null_ _null_ jsonb_string_to_tsvector_byid _null_ _null_ _null_ )); -DESCR("transform string values from jsonb to tsvector"); -DATA(insert OID = 4214 ( jsonb_to_tsvector PGNSP PGUID 12 100 0 0 0 f f f t f i s 3 0 3614 "3734 3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_to_tsvector_byid _null_ _null_ _null_ )); -DESCR("transform specified values from jsonb to tsvector"); -DATA(insert OID = 4212 ( to_tsvector PGNSP PGUID 12 100 0 0 0 f f f t f i s 2 0 3614 "3734 114" _null_ _null_ _null_ _null_ _null_ json_string_to_tsvector_byid _null_ _null_ _null_ )); -DESCR("transform string values from json to tsvector"); -DATA(insert OID = 4216 ( json_to_tsvector PGNSP PGUID 12 100 0 0 0 f f f t f i s 3 0 3614 "3734 114 3802" _null_ _null_ _null_ _null_ _null_ json_to_tsvector_byid _null_ _null_ _null_ )); -DESCR("transform specified values from json to tsvector"); - -DATA(insert OID = 3752 ( tsvector_update_trigger PGNSP PGUID 12 1 0 0 0 f f f f f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ tsvector_update_trigger_byid _null_ _null_ _null_ )); -DESCR("trigger for automatic update of tsvector column"); -DATA(insert OID = 3753 ( tsvector_update_trigger_column PGNSP PGUID 12 1 0 0 0 f f f f f v s 0 0 2279 "" _null_ _null_ _null_ _null_ _null_ tsvector_update_trigger_bycolumn _null_ _null_ _null_ )); -DESCR("trigger for automatic update of tsvector column"); - -DATA(insert OID = 3759 ( get_current_ts_config PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 3734 "" _null_ _null_ _null_ _null_ _null_ get_current_ts_config _null_ _null_ _null_ )); -DESCR("get current tsearch configuration"); - -DATA(insert OID = 3736 ( regconfigin PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 3734 "2275" _null_ _null_ _null_ _null_ _null_ regconfigin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3737 ( regconfigout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "3734" _null_ _null_ _null_ _null_ _null_ regconfigout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3738 ( regconfigrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3734 "2281" _null_ _null_ _null_ _null_ _null_ regconfigrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3739 ( regconfigsend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "3734" _null_ _null_ _null_ _null_ _null_ regconfigsend _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 3771 ( regdictionaryin PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 3769 "2275" _null_ _null_ _null_ _null_ _null_ regdictionaryin _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3772 ( regdictionaryout PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "3769" _null_ _null_ _null_ _null_ _null_ regdictionaryout _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3773 ( regdictionaryrecv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3769 "2281" _null_ _null_ _null_ _null_ _null_ regdictionaryrecv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3774 ( regdictionarysend PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "3769" _null_ _null_ _null_ _null_ _null_ regdictionarysend _null_ _null_ _null_ )); -DESCR("I/O"); - -/* jsonb */ -DATA(insert OID = 3806 ( jsonb_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3802 "2275" _null_ _null_ _null_ _null_ _null_ jsonb_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3805 ( jsonb_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3802 "2281" _null_ _null_ _null_ _null_ _null_ jsonb_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3804 ( jsonb_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3803 ( jsonb_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_send _null_ _null_ _null_ )); -DESCR("I/O"); - -DATA(insert OID = 3263 ( jsonb_object PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3802 "1009" _null_ _null_ _null_ _null_ _null_ jsonb_object _null_ _null_ _null_ )); -DESCR("map text array of key value pairs to jsonb object"); -DATA(insert OID = 3264 ( jsonb_object PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3802 "1009 1009" _null_ _null_ _null_ _null_ _null_ jsonb_object_two_arg _null_ _null_ _null_ )); -DESCR("map text array of key value pairs to jsonb object"); -DATA(insert OID = 3787 ( to_jsonb PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 3802 "2283" _null_ _null_ _null_ _null_ _null_ to_jsonb _null_ _null_ _null_ )); -DESCR("map input to jsonb"); -DATA(insert OID = 3265 ( jsonb_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f s s 2 0 2281 "2281 2283" _null_ _null_ _null_ _null_ _null_ jsonb_agg_transfn _null_ _null_ _null_ )); -DESCR("jsonb aggregate transition function"); -DATA(insert OID = 3266 ( jsonb_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f s s 1 0 3802 "2281" _null_ _null_ _null_ _null_ _null_ jsonb_agg_finalfn _null_ _null_ _null_ )); -DESCR("jsonb aggregate final function"); -DATA(insert OID = 3267 ( jsonb_agg PGNSP PGUID 12 1 0 0 0 a f f f f s s 1 0 3802 "2283" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("aggregate input into jsonb"); -DATA(insert OID = 3268 ( jsonb_object_agg_transfn PGNSP PGUID 12 1 0 0 0 f f f f f s s 3 0 2281 "2281 2276 2276" _null_ _null_ _null_ _null_ _null_ jsonb_object_agg_transfn _null_ _null_ _null_ )); -DESCR("jsonb object aggregate transition function"); -DATA(insert OID = 3269 ( jsonb_object_agg_finalfn PGNSP PGUID 12 1 0 0 0 f f f f f s s 1 0 3802 "2281" _null_ _null_ _null_ _null_ _null_ jsonb_object_agg_finalfn _null_ _null_ _null_ )); -DESCR("jsonb object aggregate final function"); -DATA(insert OID = 3270 ( jsonb_object_agg PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 3802 "2276 2276" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("aggregate inputs into jsonb object"); -DATA(insert OID = 3271 ( jsonb_build_array PGNSP PGUID 12 1 0 2276 0 f f f f f s s 1 0 3802 "2276" "{2276}" "{v}" _null_ _null_ _null_ jsonb_build_array _null_ _null_ _null_ )); -DESCR("build a jsonb array from any inputs"); -DATA(insert OID = 3272 ( jsonb_build_array PGNSP PGUID 12 1 0 0 0 f f f f f s s 0 0 3802 "" _null_ _null_ _null_ _null_ _null_ jsonb_build_array_noargs _null_ _null_ _null_ )); -DESCR("build an empty jsonb array"); -DATA(insert OID = 3273 ( jsonb_build_object PGNSP PGUID 12 1 0 2276 0 f f f f f s s 1 0 3802 "2276" "{2276}" "{v}" _null_ _null_ _null_ jsonb_build_object _null_ _null_ _null_ )); -DESCR("build a jsonb object from pairwise key/value inputs"); -DATA(insert OID = 3274 ( jsonb_build_object PGNSP PGUID 12 1 0 0 0 f f f f f s s 0 0 3802 "" _null_ _null_ _null_ _null_ _null_ jsonb_build_object_noargs _null_ _null_ _null_ )); -DESCR("build an empty jsonb object"); -DATA(insert OID = 3262 ( jsonb_strip_nulls PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3802 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_strip_nulls _null_ _null_ _null_ )); -DESCR("remove object fields with null values from jsonb"); - -DATA(insert OID = 3478 ( jsonb_object_field PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3802 "3802 25" _null_ _null_ "{from_json, field_name}" _null_ _null_ jsonb_object_field _null_ _null_ _null_ )); -DATA(insert OID = 3214 ( jsonb_object_field_text PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "3802 25" _null_ _null_ "{from_json, field_name}" _null_ _null_ jsonb_object_field_text _null_ _null_ _null_ )); -DATA(insert OID = 3215 ( jsonb_array_element PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3802 "3802 23" _null_ _null_ "{from_json, element_index}" _null_ _null_ jsonb_array_element _null_ _null_ _null_ )); -DATA(insert OID = 3216 ( jsonb_array_element_text PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 25 "3802 23" _null_ _null_ "{from_json, element_index}" _null_ _null_ jsonb_array_element_text _null_ _null_ _null_ )); -DATA(insert OID = 3217 ( jsonb_extract_path PGNSP PGUID 12 1 0 25 0 f f f t f i s 2 0 3802 "3802 1009" "{3802,1009}" "{i,v}" "{from_json,path_elems}" _null_ _null_ jsonb_extract_path _null_ _null_ _null_ )); -DESCR("get value from jsonb with path elements"); -DATA(insert OID = 3940 ( jsonb_extract_path_text PGNSP PGUID 12 1 0 25 0 f f f t f i s 2 0 25 "3802 1009" "{3802,1009}" "{i,v}" "{from_json,path_elems}" _null_ _null_ jsonb_extract_path_text _null_ _null_ _null_ )); -DESCR("get value from jsonb as text with path elements"); -DATA(insert OID = 3219 ( jsonb_array_elements PGNSP PGUID 12 1 100 0 0 f f f t t i s 1 0 3802 "3802" "{3802,3802}" "{i,o}" "{from_json,value}" _null_ _null_ jsonb_array_elements _null_ _null_ _null_ )); -DESCR("elements of a jsonb array"); -DATA(insert OID = 3465 ( jsonb_array_elements_text PGNSP PGUID 12 1 100 0 0 f f f t t i s 1 0 25 "3802" "{3802,25}" "{i,o}" "{from_json,value}" _null_ _null_ jsonb_array_elements_text _null_ _null_ _null_ )); -DESCR("elements of jsonb array"); -DATA(insert OID = 3207 ( jsonb_array_length PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_array_length _null_ _null_ _null_ )); -DESCR("length of jsonb array"); -DATA(insert OID = 3931 ( jsonb_object_keys PGNSP PGUID 12 1 100 0 0 f f f t t i s 1 0 25 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_object_keys _null_ _null_ _null_ )); -DESCR("get jsonb object keys"); -DATA(insert OID = 3208 ( jsonb_each PGNSP PGUID 12 1 100 0 0 f f f t t i s 1 0 2249 "3802" "{3802,25,3802}" "{i,o,o}" "{from_json,key,value}" _null_ _null_ jsonb_each _null_ _null_ _null_ )); -DESCR("key value pairs of a jsonb object"); -DATA(insert OID = 3932 ( jsonb_each_text PGNSP PGUID 12 1 100 0 0 f f f t t i s 1 0 2249 "3802" "{3802,25,25}" "{i,o,o}" "{from_json,key,value}" _null_ _null_ jsonb_each_text _null_ _null_ _null_ )); -DESCR("key value pairs of a jsonb object"); -DATA(insert OID = 3209 ( jsonb_populate_record PGNSP PGUID 12 1 0 0 0 f f f f f s s 2 0 2283 "2283 3802" _null_ _null_ _null_ _null_ _null_ jsonb_populate_record _null_ _null_ _null_ )); -DESCR("get record fields from a jsonb object"); -DATA(insert OID = 3475 ( jsonb_populate_recordset PGNSP PGUID 12 1 100 0 0 f f f f t s s 2 0 2283 "2283 3802" _null_ _null_ _null_ _null_ _null_ jsonb_populate_recordset _null_ _null_ _null_ )); -DESCR("get set of records with fields from a jsonb array of objects"); -DATA(insert OID = 3490 ( jsonb_to_record PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2249 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_to_record _null_ _null_ _null_ )); -DESCR("get record fields from a jsonb object"); -DATA(insert OID = 3491 ( jsonb_to_recordset PGNSP PGUID 12 1 100 0 0 f f f f t s s 1 0 2249 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_to_recordset _null_ _null_ _null_ )); -DESCR("get set of records with fields from a jsonb array of objects"); -DATA(insert OID = 3210 ( jsonb_typeof PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_typeof _null_ _null_ _null_ )); -DESCR("get the type of a jsonb value"); -DATA(insert OID = 4038 ( jsonb_ne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_ne _null_ _null_ _null_ )); -DATA(insert OID = 4039 ( jsonb_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_lt _null_ _null_ _null_ )); -DATA(insert OID = 4040 ( jsonb_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_gt _null_ _null_ _null_ )); -DATA(insert OID = 4041 ( jsonb_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_le _null_ _null_ _null_ )); -DATA(insert OID = 4042 ( jsonb_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_ge _null_ _null_ _null_ )); -DATA(insert OID = 4043 ( jsonb_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_eq _null_ _null_ _null_ )); -DATA(insert OID = 4044 ( jsonb_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 4045 ( jsonb_hash PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_hash _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 3416 ( jsonb_hash_extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "3802 20" _null_ _null_ _null_ _null_ _null_ jsonb_hash_extended _null_ _null_ _null_ )); -DESCR("hash"); -DATA(insert OID = 4046 ( jsonb_contains PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_contains _null_ _null_ _null_ )); -DATA(insert OID = 4047 ( jsonb_exists PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3802 25" _null_ _null_ _null_ _null_ _null_ jsonb_exists _null_ _null_ _null_ )); -DATA(insert OID = 4048 ( jsonb_exists_any PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3802 1009" _null_ _null_ _null_ _null_ _null_ jsonb_exists_any _null_ _null_ _null_ )); -DATA(insert OID = 4049 ( jsonb_exists_all PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3802 1009" _null_ _null_ _null_ _null_ _null_ jsonb_exists_all _null_ _null_ _null_ )); -DATA(insert OID = 4050 ( jsonb_contained PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_contained _null_ _null_ _null_ )); -DATA(insert OID = 3480 ( gin_compare_jsonb PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "25 25" _null_ _null_ _null_ _null_ _null_ gin_compare_jsonb _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3482 ( gin_extract_jsonb PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "3802 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_jsonb _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3483 ( gin_extract_jsonb_query PGNSP PGUID 12 1 0 0 0 f f f t f i s 7 0 2281 "3802 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_jsonb_query _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3484 ( gin_consistent_jsonb PGNSP PGUID 12 1 0 0 0 f f f t f i s 8 0 16 "2281 21 3802 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_consistent_jsonb _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3488 ( gin_triconsistent_jsonb PGNSP PGUID 12 1 0 0 0 f f f t f i s 7 0 18 "2281 21 3802 23 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_triconsistent_jsonb _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3485 ( gin_extract_jsonb_path PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "3802 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_jsonb_path _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3486 ( gin_extract_jsonb_query_path PGNSP PGUID 12 1 0 0 0 f f f t f i s 7 0 2281 "3802 2281 21 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_extract_jsonb_query_path _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3487 ( gin_consistent_jsonb_path PGNSP PGUID 12 1 0 0 0 f f f t f i s 8 0 16 "2281 21 3802 23 2281 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_consistent_jsonb_path _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3489 ( gin_triconsistent_jsonb_path PGNSP PGUID 12 1 0 0 0 f f f t f i s 7 0 18 "2281 21 3802 23 2281 2281 2281" _null_ _null_ _null_ _null_ _null_ gin_triconsistent_jsonb_path _null_ _null_ _null_ )); -DESCR("GIN support"); -DATA(insert OID = 3301 ( jsonb_concat PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3802 "3802 3802" _null_ _null_ _null_ _null_ _null_ jsonb_concat _null_ _null_ _null_ )); -DATA(insert OID = 3302 ( jsonb_delete PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3802 "3802 25" _null_ _null_ _null_ _null_ _null_ jsonb_delete _null_ _null_ _null_ )); -DATA(insert OID = 3303 ( jsonb_delete PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3802 "3802 23" _null_ _null_ _null_ _null_ _null_ jsonb_delete_idx _null_ _null_ _null_ )); -DATA(insert OID = 3343 ( jsonb_delete PGNSP PGUID 12 1 0 25 0 f f f t f i s 2 0 3802 "3802 1009" "{3802,1009}" "{i,v}" "{from_json,path_elems}" _null_ _null_ jsonb_delete_array _null_ _null_ _null_ )); -DATA(insert OID = 3304 ( jsonb_delete_path PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3802 "3802 1009" _null_ _null_ _null_ _null_ _null_ jsonb_delete_path _null_ _null_ _null_ )); -DATA(insert OID = 3305 ( jsonb_set PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 3802 "3802 1009 3802 16" _null_ _null_ _null_ _null_ _null_ jsonb_set _null_ _null_ _null_ )); -DESCR("Set part of a jsonb"); -DATA(insert OID = 3306 ( jsonb_pretty PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 25 "3802" _null_ _null_ _null_ _null_ _null_ jsonb_pretty _null_ _null_ _null_ )); -DESCR("Indented text from jsonb"); -DATA(insert OID = 3579 ( jsonb_insert PGNSP PGUID 12 1 0 0 0 f f f t f i s 4 0 3802 "3802 1009 3802 16" _null_ _null_ _null_ _null_ _null_ jsonb_insert _null_ _null_ _null_ )); -DESCR("Insert value into a jsonb"); -/* txid */ -DATA(insert OID = 2939 ( txid_snapshot_in PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2970 "2275" _null_ _null_ _null_ _null_ _null_ txid_snapshot_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2940 ( txid_snapshot_out PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2275 "2970" _null_ _null_ _null_ _null_ _null_ txid_snapshot_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2941 ( txid_snapshot_recv PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2970 "2281" _null_ _null_ _null_ _null_ _null_ txid_snapshot_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2942 ( txid_snapshot_send PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 17 "2970" _null_ _null_ _null_ _null_ _null_ txid_snapshot_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 2943 ( txid_current PGNSP PGUID 12 1 0 0 0 f f f t f s u 0 0 20 "" _null_ _null_ _null_ _null_ _null_ txid_current _null_ _null_ _null_ )); -DESCR("get current transaction ID"); -DATA(insert OID = 3348 ( txid_current_if_assigned PGNSP PGUID 12 1 0 0 0 f f f t f s u 0 0 20 "" _null_ _null_ _null_ _null_ _null_ txid_current_if_assigned _null_ _null_ _null_ )); -DESCR("get current transaction ID"); -DATA(insert OID = 2944 ( txid_current_snapshot PGNSP PGUID 12 1 0 0 0 f f f t f s s 0 0 2970 "" _null_ _null_ _null_ _null_ _null_ txid_current_snapshot _null_ _null_ _null_ )); -DESCR("get current snapshot"); -DATA(insert OID = 2945 ( txid_snapshot_xmin PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "2970" _null_ _null_ _null_ _null_ _null_ txid_snapshot_xmin _null_ _null_ _null_ )); -DESCR("get xmin of snapshot"); -DATA(insert OID = 2946 ( txid_snapshot_xmax PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 20 "2970" _null_ _null_ _null_ _null_ _null_ txid_snapshot_xmax _null_ _null_ _null_ )); -DESCR("get xmax of snapshot"); -DATA(insert OID = 2947 ( txid_snapshot_xip PGNSP PGUID 12 1 50 0 0 f f f t t i s 1 0 20 "2970" _null_ _null_ _null_ _null_ _null_ txid_snapshot_xip _null_ _null_ _null_ )); -DESCR("get set of in-progress txids in snapshot"); -DATA(insert OID = 2948 ( txid_visible_in_snapshot PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "20 2970" _null_ _null_ _null_ _null_ _null_ txid_visible_in_snapshot _null_ _null_ _null_ )); -DESCR("is txid visible in snapshot?"); -DATA(insert OID = 3360 ( txid_status PGNSP PGUID 12 1 0 0 0 f f f t f v s 1 0 25 "20" _null_ _null_ _null_ _null_ _null_ txid_status _null_ _null_ _null_ )); -DESCR("commit status of transaction"); - -/* record comparison using normal comparison rules */ -DATA(insert OID = 2981 ( record_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_eq _null_ _null_ _null_ )); -DATA(insert OID = 2982 ( record_ne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_ne _null_ _null_ _null_ )); -DATA(insert OID = 2983 ( record_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_lt _null_ _null_ _null_ )); -DATA(insert OID = 2984 ( record_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_gt _null_ _null_ _null_ )); -DATA(insert OID = 2985 ( record_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_le _null_ _null_ _null_ )); -DATA(insert OID = 2986 ( record_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_ge _null_ _null_ _null_ )); -DATA(insert OID = 2987 ( btrecordcmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "2249 2249" _null_ _null_ _null_ _null_ _null_ btrecordcmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); - -/* record comparison using raw byte images */ -DATA(insert OID = 3181 ( record_image_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_eq _null_ _null_ _null_ )); -DATA(insert OID = 3182 ( record_image_ne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_ne _null_ _null_ _null_ )); -DATA(insert OID = 3183 ( record_image_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_lt _null_ _null_ _null_ )); -DATA(insert OID = 3184 ( record_image_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_gt _null_ _null_ _null_ )); -DATA(insert OID = 3185 ( record_image_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_le _null_ _null_ _null_ )); -DATA(insert OID = 3186 ( record_image_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2249 2249" _null_ _null_ _null_ _null_ _null_ record_image_ge _null_ _null_ _null_ )); -DATA(insert OID = 3187 ( btrecordimagecmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "2249 2249" _null_ _null_ _null_ _null_ _null_ btrecordimagecmp _null_ _null_ _null_ )); -DESCR("less-equal-greater based on byte images"); - -/* Extensions */ -DATA(insert OID = 3082 ( pg_available_extensions PGNSP PGUID 12 10 100 0 0 f f f t t s s 0 0 2249 "" "{19,25,25}" "{o,o,o}" "{name,default_version,comment}" _null_ _null_ pg_available_extensions _null_ _null_ _null_ )); -DESCR("list available extensions"); -DATA(insert OID = 3083 ( pg_available_extension_versions PGNSP PGUID 12 10 100 0 0 f f f t t s s 0 0 2249 "" "{19,25,16,16,19,1003,25}" "{o,o,o,o,o,o,o}" "{name,version,superuser,relocatable,schema,requires,comment}" _null_ _null_ pg_available_extension_versions _null_ _null_ _null_ )); -DESCR("list available extension versions"); -DATA(insert OID = 3084 ( pg_extension_update_paths PGNSP PGUID 12 10 100 0 0 f f f t t s s 1 0 2249 "19" "{19,25,25,25}" "{i,o,o,o}" "{name,source,target,path}" _null_ _null_ pg_extension_update_paths _null_ _null_ _null_ )); -DESCR("list an extension's version update paths"); -DATA(insert OID = 3086 ( pg_extension_config_dump PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 2278 "2205 25" _null_ _null_ _null_ _null_ _null_ pg_extension_config_dump _null_ _null_ _null_ )); -DESCR("flag an extension's table contents to be emitted by pg_dump"); - -/* SQL-spec window functions */ -DATA(insert OID = 3100 ( row_number PGNSP PGUID 12 1 0 0 0 w f f f f i s 0 0 20 "" _null_ _null_ _null_ _null_ _null_ window_row_number _null_ _null_ _null_ )); -DESCR("row number within partition"); -DATA(insert OID = 3101 ( rank PGNSP PGUID 12 1 0 0 0 w f f f f i s 0 0 20 "" _null_ _null_ _null_ _null_ _null_ window_rank _null_ _null_ _null_ )); -DESCR("integer rank with gaps"); -DATA(insert OID = 3102 ( dense_rank PGNSP PGUID 12 1 0 0 0 w f f f f i s 0 0 20 "" _null_ _null_ _null_ _null_ _null_ window_dense_rank _null_ _null_ _null_ )); -DESCR("integer rank without gaps"); -DATA(insert OID = 3103 ( percent_rank PGNSP PGUID 12 1 0 0 0 w f f f f i s 0 0 701 "" _null_ _null_ _null_ _null_ _null_ window_percent_rank _null_ _null_ _null_ )); -DESCR("fractional rank within partition"); -DATA(insert OID = 3104 ( cume_dist PGNSP PGUID 12 1 0 0 0 w f f f f i s 0 0 701 "" _null_ _null_ _null_ _null_ _null_ window_cume_dist _null_ _null_ _null_ )); -DESCR("fractional row number within partition"); -DATA(insert OID = 3105 ( ntile PGNSP PGUID 12 1 0 0 0 w f f t f i s 1 0 23 "23" _null_ _null_ _null_ _null_ _null_ window_ntile _null_ _null_ _null_ )); -DESCR("split rows into N groups"); -DATA(insert OID = 3106 ( lag PGNSP PGUID 12 1 0 0 0 w f f t f i s 1 0 2283 "2283" _null_ _null_ _null_ _null_ _null_ window_lag _null_ _null_ _null_ )); -DESCR("fetch the preceding row value"); -DATA(insert OID = 3107 ( lag PGNSP PGUID 12 1 0 0 0 w f f t f i s 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ _null_ window_lag_with_offset _null_ _null_ _null_ )); -DESCR("fetch the Nth preceding row value"); -DATA(insert OID = 3108 ( lag PGNSP PGUID 12 1 0 0 0 w f f t f i s 3 0 2283 "2283 23 2283" _null_ _null_ _null_ _null_ _null_ window_lag_with_offset_and_default _null_ _null_ _null_ )); -DESCR("fetch the Nth preceding row value with default"); -DATA(insert OID = 3109 ( lead PGNSP PGUID 12 1 0 0 0 w f f t f i s 1 0 2283 "2283" _null_ _null_ _null_ _null_ _null_ window_lead _null_ _null_ _null_ )); -DESCR("fetch the following row value"); -DATA(insert OID = 3110 ( lead PGNSP PGUID 12 1 0 0 0 w f f t f i s 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ _null_ window_lead_with_offset _null_ _null_ _null_ )); -DESCR("fetch the Nth following row value"); -DATA(insert OID = 3111 ( lead PGNSP PGUID 12 1 0 0 0 w f f t f i s 3 0 2283 "2283 23 2283" _null_ _null_ _null_ _null_ _null_ window_lead_with_offset_and_default _null_ _null_ _null_ )); -DESCR("fetch the Nth following row value with default"); -DATA(insert OID = 3112 ( first_value PGNSP PGUID 12 1 0 0 0 w f f t f i s 1 0 2283 "2283" _null_ _null_ _null_ _null_ _null_ window_first_value _null_ _null_ _null_ )); -DESCR("fetch the first row value"); -DATA(insert OID = 3113 ( last_value PGNSP PGUID 12 1 0 0 0 w f f t f i s 1 0 2283 "2283" _null_ _null_ _null_ _null_ _null_ window_last_value _null_ _null_ _null_ )); -DESCR("fetch the last row value"); -DATA(insert OID = 3114 ( nth_value PGNSP PGUID 12 1 0 0 0 w f f t f i s 2 0 2283 "2283 23" _null_ _null_ _null_ _null_ _null_ window_nth_value _null_ _null_ _null_ )); -DESCR("fetch the Nth row value"); - -/* functions for range types */ -DATA(insert OID = 3832 ( anyrange_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 3831 "2275 26 23" _null_ _null_ _null_ _null_ _null_ anyrange_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3833 ( anyrange_out PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "3831" _null_ _null_ _null_ _null_ _null_ anyrange_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3834 ( range_in PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 3831 "2275 26 23" _null_ _null_ _null_ _null_ _null_ range_in _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3835 ( range_out PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 2275 "3831" _null_ _null_ _null_ _null_ _null_ range_out _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3836 ( range_recv PGNSP PGUID 12 1 0 0 0 f f f t f s s 3 0 3831 "2281 26 23" _null_ _null_ _null_ _null_ _null_ range_recv _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3837 ( range_send PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 17 "3831" _null_ _null_ _null_ _null_ _null_ range_send _null_ _null_ _null_ )); -DESCR("I/O"); -DATA(insert OID = 3848 ( lower PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2283 "3831" _null_ _null_ _null_ _null_ _null_ range_lower _null_ _null_ _null_ )); -DESCR("lower bound of range"); -DATA(insert OID = 3849 ( upper PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 2283 "3831" _null_ _null_ _null_ _null_ _null_ range_upper _null_ _null_ _null_ )); -DESCR("upper bound of range"); -DATA(insert OID = 3850 ( isempty PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "3831" _null_ _null_ _null_ _null_ _null_ range_empty _null_ _null_ _null_ )); -DESCR("is the range empty?"); -DATA(insert OID = 3851 ( lower_inc PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "3831" _null_ _null_ _null_ _null_ _null_ range_lower_inc _null_ _null_ _null_ )); -DESCR("is the range's lower bound inclusive?"); -DATA(insert OID = 3852 ( upper_inc PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "3831" _null_ _null_ _null_ _null_ _null_ range_upper_inc _null_ _null_ _null_ )); -DESCR("is the range's upper bound inclusive?"); -DATA(insert OID = 3853 ( lower_inf PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "3831" _null_ _null_ _null_ _null_ _null_ range_lower_inf _null_ _null_ _null_ )); -DESCR("is the range's lower bound infinite?"); -DATA(insert OID = 3854 ( upper_inf PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 16 "3831" _null_ _null_ _null_ _null_ _null_ range_upper_inf _null_ _null_ _null_ )); -DESCR("is the range's upper bound infinite?"); -DATA(insert OID = 3855 ( range_eq PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_eq _null_ _null_ _null_ )); -DATA(insert OID = 3856 ( range_ne PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_ne _null_ _null_ _null_ )); -DATA(insert OID = 3857 ( range_overlaps PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_overlaps _null_ _null_ _null_ )); -DATA(insert OID = 3858 ( range_contains_elem PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 2283" _null_ _null_ _null_ _null_ _null_ range_contains_elem _null_ _null_ _null_ )); -DATA(insert OID = 3859 ( range_contains PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_contains _null_ _null_ _null_ )); -DATA(insert OID = 3860 ( elem_contained_by_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2283 3831" _null_ _null_ _null_ _null_ _null_ elem_contained_by_range _null_ _null_ _null_ )); -DATA(insert OID = 3861 ( range_contained_by PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_contained_by _null_ _null_ _null_ )); -DATA(insert OID = 3862 ( range_adjacent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_adjacent _null_ _null_ _null_ )); -DATA(insert OID = 3863 ( range_before PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_before _null_ _null_ _null_ )); -DATA(insert OID = 3864 ( range_after PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_after _null_ _null_ _null_ )); -DATA(insert OID = 3865 ( range_overleft PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_overleft _null_ _null_ _null_ )); -DATA(insert OID = 3866 ( range_overright PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_overright _null_ _null_ _null_ )); -DATA(insert OID = 3867 ( range_union PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3831 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_union _null_ _null_ _null_ )); -DATA(insert OID = 4057 ( range_merge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3831 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_merge _null_ _null_ _null_ )); -DESCR("the smallest range which includes both of the given ranges"); -DATA(insert OID = 3868 ( range_intersect PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3831 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_intersect _null_ _null_ _null_ )); -DATA(insert OID = 3869 ( range_minus PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3831 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_minus _null_ _null_ _null_ )); -DATA(insert OID = 3870 ( range_cmp PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 23 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_cmp _null_ _null_ _null_ )); -DESCR("less-equal-greater"); -DATA(insert OID = 3871 ( range_lt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_lt _null_ _null_ _null_ )); -DATA(insert OID = 3872 ( range_le PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_le _null_ _null_ _null_ )); -DATA(insert OID = 3873 ( range_ge PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_ge _null_ _null_ _null_ )); -DATA(insert OID = 3874 ( range_gt PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "3831 3831" _null_ _null_ _null_ _null_ _null_ range_gt _null_ _null_ _null_ )); -DATA(insert OID = 3875 ( range_gist_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 5 0 16 "2281 3831 21 26 2281" _null_ _null_ _null_ _null_ _null_ range_gist_consistent _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3876 ( range_gist_union PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 3831 "2281 2281" _null_ _null_ _null_ _null_ _null_ range_gist_union _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3879 ( range_gist_penalty PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "2281 2281 2281" _null_ _null_ _null_ _null_ _null_ range_gist_penalty _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3880 ( range_gist_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2281 "2281 2281" _null_ _null_ _null_ _null_ _null_ range_gist_picksplit _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3881 ( range_gist_same PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 2281 "3831 3831 2281" _null_ _null_ _null_ _null_ _null_ range_gist_same _null_ _null_ _null_ )); -DESCR("GiST support"); -DATA(insert OID = 3902 ( hash_range PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 23 "3831" _null_ _null_ _null_ _null_ _null_ hash_range _null_ _null_ _null_ )); -DESCR("hash a range"); -DATA(insert OID = 3417 ( hash_range_extended PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 20 "3831 20" _null_ _null_ _null_ _null_ _null_ hash_range_extended _null_ _null_ _null_ )); -DESCR("hash a range"); -DATA(insert OID = 3916 ( range_typanalyze PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 16 "2281" _null_ _null_ _null_ _null_ _null_ range_typanalyze _null_ _null_ _null_ )); -DESCR("range typanalyze"); -DATA(insert OID = 3169 ( rangesel PGNSP PGUID 12 1 0 0 0 f f f t f s s 4 0 701 "2281 26 2281 23" _null_ _null_ _null_ _null_ _null_ rangesel _null_ _null_ _null_ )); -DESCR("restriction selectivity for range operators"); - -DATA(insert OID = 3914 ( int4range_canonical PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3904 "3904" _null_ _null_ _null_ _null_ _null_ int4range_canonical _null_ _null_ _null_ )); -DESCR("convert an int4 range to canonical form"); -DATA(insert OID = 3928 ( int8range_canonical PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3926 "3926" _null_ _null_ _null_ _null_ _null_ int8range_canonical _null_ _null_ _null_ )); -DESCR("convert an int8 range to canonical form"); -DATA(insert OID = 3915 ( daterange_canonical PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 3912 "3912" _null_ _null_ _null_ _null_ _null_ daterange_canonical _null_ _null_ _null_ )); -DESCR("convert a date range to canonical form"); -DATA(insert OID = 3922 ( int4range_subdiff PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "23 23" _null_ _null_ _null_ _null_ _null_ int4range_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two int4 values"); -DATA(insert OID = 3923 ( int8range_subdiff PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "20 20" _null_ _null_ _null_ _null_ _null_ int8range_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two int8 values"); -DATA(insert OID = 3924 ( numrange_subdiff PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "1700 1700" _null_ _null_ _null_ _null_ _null_ numrange_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two numeric values"); -DATA(insert OID = 3925 ( daterange_subdiff PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "1082 1082" _null_ _null_ _null_ _null_ _null_ daterange_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two date values"); -DATA(insert OID = 3929 ( tsrange_subdiff PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "1114 1114" _null_ _null_ _null_ _null_ _null_ tsrange_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two timestamp values"); -DATA(insert OID = 3930 ( tstzrange_subdiff PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 701 "1184 1184" _null_ _null_ _null_ _null_ _null_ tstzrange_subdiff _null_ _null_ _null_ )); -DESCR("float8 difference of two timestamp with time zone values"); - -DATA(insert OID = 3840 ( int4range PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 3904 "23 23" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("int4range constructor"); -DATA(insert OID = 3841 ( int4range PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 3904 "23 23 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("int4range constructor"); -DATA(insert OID = 3844 ( numrange PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 3906 "1700 1700" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("numrange constructor"); -DATA(insert OID = 3845 ( numrange PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 3906 "1700 1700 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("numrange constructor"); -DATA(insert OID = 3933 ( tsrange PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 3908 "1114 1114" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("tsrange constructor"); -DATA(insert OID = 3934 ( tsrange PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 3908 "1114 1114 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("tsrange constructor"); -DATA(insert OID = 3937 ( tstzrange PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 3910 "1184 1184" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("tstzrange constructor"); -DATA(insert OID = 3938 ( tstzrange PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 3910 "1184 1184 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("tstzrange constructor"); -DATA(insert OID = 3941 ( daterange PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 3912 "1082 1082" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("daterange constructor"); -DATA(insert OID = 3942 ( daterange PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 3912 "1082 1082 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("daterange constructor"); -DATA(insert OID = 3945 ( int8range PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 3926 "20 20" _null_ _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); -DESCR("int8range constructor"); -DATA(insert OID = 3946 ( int8range PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 3926 "20 20 25" _null_ _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); -DESCR("int8range constructor"); - -/* date, time, timestamp constructors */ -DATA(insert OID = 3846 ( make_date PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1082 "23 23 23" _null_ _null_ "{year,month,day}" _null_ _null_ make_date _null_ _null_ _null_ )); -DESCR("construct date"); -DATA(insert OID = 3847 ( make_time PGNSP PGUID 12 1 0 0 0 f f f t f i s 3 0 1083 "23 23 701" _null_ _null_ "{hour,min,sec}" _null_ _null_ make_time _null_ _null_ _null_ )); -DESCR("construct time"); -DATA(insert OID = 3461 ( make_timestamp PGNSP PGUID 12 1 0 0 0 f f f t f i s 6 0 1114 "23 23 23 23 23 701" _null_ _null_ "{year,month,mday,hour,min,sec}" _null_ _null_ make_timestamp _null_ _null_ _null_ )); -DESCR("construct timestamp"); -DATA(insert OID = 3462 ( make_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 6 0 1184 "23 23 23 23 23 701" _null_ _null_ "{year,month,mday,hour,min,sec}" _null_ _null_ make_timestamptz _null_ _null_ _null_ )); -DESCR("construct timestamp with time zone"); -DATA(insert OID = 3463 ( make_timestamptz PGNSP PGUID 12 1 0 0 0 f f f t f s s 7 0 1184 "23 23 23 23 23 701 25" _null_ _null_ "{year,month,mday,hour,min,sec,timezone}" _null_ _null_ make_timestamptz_at_timezone _null_ _null_ _null_ )); -DESCR("construct timestamp with time zone"); -DATA(insert OID = 3464 ( make_interval PGNSP PGUID 12 1 0 0 0 f f f t f i s 7 0 1186 "23 23 23 23 23 23 701" _null_ _null_ "{years,months,weeks,days,hours,mins,secs}" _null_ _null_ make_interval _null_ _null_ _null_ )); -DESCR("construct interval"); - -/* spgist opclasses */ -DATA(insert OID = 4018 ( spg_quad_config PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_quad_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over point"); -DATA(insert OID = 4019 ( spg_quad_choose PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_quad_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over point"); -DATA(insert OID = 4020 ( spg_quad_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_quad_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over point"); -DATA(insert OID = 4021 ( spg_quad_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_quad_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over point"); -DATA(insert OID = 4022 ( spg_quad_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_quad_leaf_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree and k-d tree over point"); - -DATA(insert OID = 4023 ( spg_kd_config PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_kd_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for k-d tree over point"); -DATA(insert OID = 4024 ( spg_kd_choose PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_kd_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support for k-d tree over point"); -DATA(insert OID = 4025 ( spg_kd_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_kd_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support for k-d tree over point"); -DATA(insert OID = 4026 ( spg_kd_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_kd_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for k-d tree over point"); - -DATA(insert OID = 4027 ( spg_text_config PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_text_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for radix tree over text"); -DATA(insert OID = 4028 ( spg_text_choose PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_text_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support for radix tree over text"); -DATA(insert OID = 4029 ( spg_text_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_text_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support for radix tree over text"); -DATA(insert OID = 4030 ( spg_text_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_text_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for radix tree over text"); -DATA(insert OID = 4031 ( spg_text_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_text_leaf_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for radix tree over text"); - -DATA(insert OID = 3469 ( spg_range_quad_config PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_range_quad_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over range"); -DATA(insert OID = 3470 ( spg_range_quad_choose PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_range_quad_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over range"); -DATA(insert OID = 3471 ( spg_range_quad_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_range_quad_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over range"); -DATA(insert OID = 3472 ( spg_range_quad_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_range_quad_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over range"); -DATA(insert OID = 3473 ( spg_range_quad_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_range_quad_leaf_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over range"); - -DATA(insert OID = 5012 ( spg_box_quad_config PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_box_quad_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over box"); -DATA(insert OID = 5013 ( spg_box_quad_choose PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_box_quad_choose _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over box"); -DATA(insert OID = 5014 ( spg_box_quad_picksplit PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_box_quad_picksplit _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over box"); -DATA(insert OID = 5015 ( spg_box_quad_inner_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_box_quad_inner_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over box"); -DATA(insert OID = 5016 ( spg_box_quad_leaf_consistent PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 16 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_box_quad_leaf_consistent _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over box"); - -DATA(insert OID = 5010 ( spg_bbox_quad_config PGNSP PGUID 12 1 0 0 0 f f f t f i s 2 0 2278 "2281 2281" _null_ _null_ _null_ _null_ _null_ spg_bbox_quad_config _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over 2-D types represented by their bounding boxes"); -DATA(insert OID = 5011 ( spg_poly_quad_compress PGNSP PGUID 12 1 0 0 0 f f f t f i s 1 0 603 "604" _null_ _null_ _null_ _null_ _null_ spg_poly_quad_compress _null_ _null_ _null_ )); -DESCR("SP-GiST support for quad tree over polygons"); - -/* replication slots */ -DATA(insert OID = 3779 ( pg_create_physical_replication_slot PGNSP PGUID 12 1 0 0 0 f f f t f v u 3 0 2249 "19 16 16" "{19,16,16,19,3220}" "{i,i,i,o,o}" "{slot_name,immediately_reserve,temporary,slot_name,lsn}" _null_ _null_ pg_create_physical_replication_slot _null_ _null_ _null_ )); -DESCR("create a physical replication slot"); -DATA(insert OID = 3780 ( pg_drop_replication_slot PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 2278 "19" _null_ _null_ _null_ _null_ _null_ pg_drop_replication_slot _null_ _null_ _null_ )); -DESCR("drop a replication slot"); -DATA(insert OID = 3781 ( pg_get_replication_slots PGNSP PGUID 12 1 10 0 0 f f f f t s s 0 0 2249 "" "{19,19,25,26,16,16,23,28,28,3220,3220}" "{o,o,o,o,o,o,o,o,o,o,o}" "{slot_name,plugin,slot_type,datoid,temporary,active,active_pid,xmin,catalog_xmin,restart_lsn,confirmed_flush_lsn}" _null_ _null_ pg_get_replication_slots _null_ _null_ _null_ )); -DESCR("information about replication slots currently in use"); -DATA(insert OID = 3786 ( pg_create_logical_replication_slot PGNSP PGUID 12 1 0 0 0 f f f t f v u 3 0 2249 "19 19 16" "{19,19,16,25,3220}" "{i,i,i,o,o}" "{slot_name,plugin,temporary,slot_name,lsn}" _null_ _null_ pg_create_logical_replication_slot _null_ _null_ _null_ )); -DESCR("set up a logical replication slot"); -DATA(insert OID = 3782 ( pg_logical_slot_get_changes PGNSP PGUID 12 1000 1000 25 0 f f f f t v u 4 0 2249 "19 3220 23 1009" "{19,3220,23,1009,3220,28,25}" "{i,i,i,v,o,o,o}" "{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}" _null_ _null_ pg_logical_slot_get_changes _null_ _null_ _null_ )); -DESCR("get changes from replication slot"); -DATA(insert OID = 3783 ( pg_logical_slot_get_binary_changes PGNSP PGUID 12 1000 1000 25 0 f f f f t v u 4 0 2249 "19 3220 23 1009" "{19,3220,23,1009,3220,28,17}" "{i,i,i,v,o,o,o}" "{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}" _null_ _null_ pg_logical_slot_get_binary_changes _null_ _null_ _null_ )); -DESCR("get binary changes from replication slot"); -DATA(insert OID = 3784 ( pg_logical_slot_peek_changes PGNSP PGUID 12 1000 1000 25 0 f f f f t v u 4 0 2249 "19 3220 23 1009" "{19,3220,23,1009,3220,28,25}" "{i,i,i,v,o,o,o}" "{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}" _null_ _null_ pg_logical_slot_peek_changes _null_ _null_ _null_ )); -DESCR("peek at changes from replication slot"); -DATA(insert OID = 3785 ( pg_logical_slot_peek_binary_changes PGNSP PGUID 12 1000 1000 25 0 f f f f t v u 4 0 2249 "19 3220 23 1009" "{19,3220,23,1009,3220,28,17}" "{i,i,i,v,o,o,o}" "{slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data}" _null_ _null_ pg_logical_slot_peek_binary_changes _null_ _null_ _null_ )); -DESCR("peek at binary changes from replication slot"); -DATA(insert OID = 3878 ( pg_replication_slot_advance PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 2249 "19 3220" "{19,3220,19,3220}" "{i,i,o,o}" "{slot_name,upto_lsn,slot_name,end_lsn}" _null_ _null_ pg_replication_slot_advance _null_ _null_ _null_ )); -DESCR("advance logical replication slot"); -DATA(insert OID = 3577 ( pg_logical_emit_message PGNSP PGUID 12 1 0 0 0 f f f t f v u 3 0 3220 "16 25 25" _null_ _null_ _null_ _null_ _null_ pg_logical_emit_message_text _null_ _null_ _null_ )); -DESCR("emit a textual logical decoding message"); -DATA(insert OID = 3578 ( pg_logical_emit_message PGNSP PGUID 12 1 0 0 0 f f f t f v u 3 0 3220 "16 25 17" _null_ _null_ _null_ _null_ _null_ pg_logical_emit_message_bytea _null_ _null_ _null_ )); -DESCR("emit a binary logical decoding message"); - -/* event triggers */ -DATA(insert OID = 3566 ( pg_event_trigger_dropped_objects PGNSP PGUID 12 10 100 0 0 f f f t t s r 0 0 2249 "" "{26,26,23,16,16,16,25,25,25,25,1009,1009}" "{o,o,o,o,o,o,o,o,o,o,o,o}" "{classid, objid, objsubid, original, normal, is_temporary, object_type, schema_name, object_name, object_identity, address_names, address_args}" _null_ _null_ pg_event_trigger_dropped_objects _null_ _null_ _null_ )); -DESCR("list objects dropped by the current command"); -DATA(insert OID = 4566 ( pg_event_trigger_table_rewrite_oid PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 26 "" "{26}" "{o}" "{oid}" _null_ _null_ pg_event_trigger_table_rewrite_oid _null_ _null_ _null_ )); -DESCR("return Oid of the table getting rewritten"); -DATA(insert OID = 4567 ( pg_event_trigger_table_rewrite_reason PGNSP PGUID 12 1 0 0 0 f f f t f s r 0 0 23 "" _null_ _null_ _null_ _null_ _null_ pg_event_trigger_table_rewrite_reason _null_ _null_ _null_ )); -DESCR("return reason code for table getting rewritten"); -DATA(insert OID = 4568 ( pg_event_trigger_ddl_commands PGNSP PGUID 12 10 100 0 0 f f f t t s r 0 0 2249 "" "{26,26,23,25,25,25,25,16,32}" "{o,o,o,o,o,o,o,o,o}" "{classid, objid, objsubid, command_tag, object_type, schema_name, object_identity, in_extension, command}" _null_ _null_ pg_event_trigger_ddl_commands _null_ _null_ _null_ )); -DESCR("list DDL actions being executed by the current command"); - -/* generic transition functions for ordered-set aggregates */ -DATA(insert OID = 3970 ( ordered_set_transition PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2281 "2281 2276" _null_ _null_ _null_ _null_ _null_ ordered_set_transition _null_ _null_ _null_ )); -DESCR("aggregate transition function"); -DATA(insert OID = 3971 ( ordered_set_transition_multi PGNSP PGUID 12 1 0 2276 0 f f f f f i s 2 0 2281 "2281 2276" "{2281,2276}" "{i,v}" _null_ _null_ _null_ ordered_set_transition_multi _null_ _null_ _null_ )); -DESCR("aggregate transition function"); - -/* inverse distribution aggregates (and their support functions) */ -DATA(insert OID = 3972 ( percentile_disc PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 2283 "701 2283" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("discrete percentile"); -DATA(insert OID = 3973 ( percentile_disc_final PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 2283 "2281 701 2283" _null_ _null_ _null_ _null_ _null_ percentile_disc_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3974 ( percentile_cont PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 701 "701 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("continuous distribution percentile"); -DATA(insert OID = 3975 ( percentile_cont_float8_final PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 701 "2281 701" _null_ _null_ _null_ _null_ _null_ percentile_cont_float8_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3976 ( percentile_cont PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 1186 "701 1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("continuous distribution percentile"); -DATA(insert OID = 3977 ( percentile_cont_interval_final PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 1186 "2281 701" _null_ _null_ _null_ _null_ _null_ percentile_cont_interval_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3978 ( percentile_disc PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 2277 "1022 2283" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("multiple discrete percentiles"); -DATA(insert OID = 3979 ( percentile_disc_multi_final PGNSP PGUID 12 1 0 0 0 f f f f f i s 3 0 2277 "2281 1022 2283" _null_ _null_ _null_ _null_ _null_ percentile_disc_multi_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3980 ( percentile_cont PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 1022 "1022 701" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("multiple continuous percentiles"); -DATA(insert OID = 3981 ( percentile_cont_float8_multi_final PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 1022 "2281 1022" _null_ _null_ _null_ _null_ _null_ percentile_cont_float8_multi_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3982 ( percentile_cont PGNSP PGUID 12 1 0 0 0 a f f f f i s 2 0 1187 "1022 1186" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("multiple continuous percentiles"); -DATA(insert OID = 3983 ( percentile_cont_interval_multi_final PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 1187 "2281 1022" _null_ _null_ _null_ _null_ _null_ percentile_cont_interval_multi_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3984 ( mode PGNSP PGUID 12 1 0 0 0 a f f f f i s 1 0 2283 "2283" _null_ _null_ _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("most common value"); -DATA(insert OID = 3985 ( mode_final PGNSP PGUID 12 1 0 0 0 f f f f f i s 2 0 2283 "2281 2283" _null_ _null_ _null_ _null_ _null_ mode_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); - -/* hypothetical-set aggregates (and their support functions) */ -DATA(insert OID = 3986 ( rank PGNSP PGUID 12 1 0 2276 0 a f f f f i s 1 0 20 "2276" "{2276}" "{v}" _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("rank of hypothetical row"); -DATA(insert OID = 3987 ( rank_final PGNSP PGUID 12 1 0 2276 0 f f f f f i s 2 0 20 "2281 2276" "{2281,2276}" "{i,v}" _null_ _null_ _null_ hypothetical_rank_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3988 ( percent_rank PGNSP PGUID 12 1 0 2276 0 a f f f f i s 1 0 701 "2276" "{2276}" "{v}" _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("fractional rank of hypothetical row"); -DATA(insert OID = 3989 ( percent_rank_final PGNSP PGUID 12 1 0 2276 0 f f f f f i s 2 0 701 "2281 2276" "{2281,2276}" "{i,v}" _null_ _null_ _null_ hypothetical_percent_rank_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3990 ( cume_dist PGNSP PGUID 12 1 0 2276 0 a f f f f i s 1 0 701 "2276" "{2276}" "{v}" _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("cumulative distribution of hypothetical row"); -DATA(insert OID = 3991 ( cume_dist_final PGNSP PGUID 12 1 0 2276 0 f f f f f i s 2 0 701 "2281 2276" "{2281,2276}" "{i,v}" _null_ _null_ _null_ hypothetical_cume_dist_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); -DATA(insert OID = 3992 ( dense_rank PGNSP PGUID 12 1 0 2276 0 a f f f f i s 1 0 20 "2276" "{2276}" "{v}" _null_ _null_ _null_ aggregate_dummy _null_ _null_ _null_ )); -DESCR("rank of hypothetical row without gaps"); -DATA(insert OID = 3993 ( dense_rank_final PGNSP PGUID 12 1 0 2276 0 f f f f f i s 2 0 20 "2281 2276" "{2281,2276}" "{i,v}" _null_ _null_ _null_ hypothetical_dense_rank_final _null_ _null_ _null_ )); -DESCR("aggregate final function"); - -/* pg_upgrade support */ -DATA(insert OID = 3582 ( binary_upgrade_set_next_pg_type_oid PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_pg_type_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3584 ( binary_upgrade_set_next_array_pg_type_oid PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_array_pg_type_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3585 ( binary_upgrade_set_next_toast_pg_type_oid PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_toast_pg_type_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3586 ( binary_upgrade_set_next_heap_pg_class_oid PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_heap_pg_class_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3587 ( binary_upgrade_set_next_index_pg_class_oid PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_index_pg_class_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3588 ( binary_upgrade_set_next_toast_pg_class_oid PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_toast_pg_class_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3589 ( binary_upgrade_set_next_pg_enum_oid PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_pg_enum_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3590 ( binary_upgrade_set_next_pg_authid_oid PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 2278 "26" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_next_pg_authid_oid _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 3591 ( binary_upgrade_create_empty_extension PGNSP PGUID 12 1 0 0 0 f f f f f v u 7 0 2278 "25 25 16 25 1028 1009 1009" _null_ _null_ _null_ _null_ _null_ binary_upgrade_create_empty_extension _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); -DATA(insert OID = 4083 ( binary_upgrade_set_record_init_privs PGNSP PGUID 12 1 0 0 0 f f f t f v r 1 0 2278 "16" _null_ _null_ _null_ _null_ _null_ binary_upgrade_set_record_init_privs _null_ _null_ _null_ )); -DESCR("for use by pg_upgrade"); - -/* replication/origin.h */ -DATA(insert OID = 6003 ( pg_replication_origin_create PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 26 "25" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_create _null_ _null_ _null_ )); -DESCR("create a replication origin"); - -DATA(insert OID = 6004 ( pg_replication_origin_drop PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 2278 "25" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_drop _null_ _null_ _null_ )); -DESCR("drop replication origin identified by its name"); - -DATA(insert OID = 6005 ( pg_replication_origin_oid PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 26 "25" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_oid _null_ _null_ _null_ )); -DESCR("translate the replication origin's name to its id"); - -DATA(insert OID = 6006 ( pg_replication_origin_session_setup PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 2278 "25" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_session_setup _null_ _null_ _null_ )); -DESCR("configure session to maintain replication progress tracking for the passed in origin"); - -DATA(insert OID = 6007 ( pg_replication_origin_session_reset PGNSP PGUID 12 1 0 0 0 f f f t f v u 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_session_reset _null_ _null_ _null_ )); -DESCR("teardown configured replication progress tracking"); - -DATA(insert OID = 6008 ( pg_replication_origin_session_is_setup PGNSP PGUID 12 1 0 0 0 f f f t f v r 0 0 16 "" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_session_is_setup _null_ _null_ _null_ )); -DESCR("is a replication origin configured in this session"); - -DATA(insert OID = 6009 ( pg_replication_origin_session_progress PGNSP PGUID 12 1 0 0 0 f f f t f v u 1 0 3220 "16" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_session_progress _null_ _null_ _null_ )); -DESCR("get the replication progress of the current session"); - -DATA(insert OID = 6010 ( pg_replication_origin_xact_setup PGNSP PGUID 12 1 0 0 0 f f f t f v r 2 0 2278 "3220 1184" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_xact_setup _null_ _null_ _null_ )); -DESCR("setup the transaction's origin lsn and timestamp"); - -DATA(insert OID = 6011 ( pg_replication_origin_xact_reset PGNSP PGUID 12 1 0 0 0 f f f t f v r 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_xact_reset _null_ _null_ _null_ )); -DESCR("reset the transaction's origin lsn and timestamp"); - -DATA(insert OID = 6012 ( pg_replication_origin_advance PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 2278 "25 3220" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_advance _null_ _null_ _null_ )); -DESCR("advance replication identifier to specific location"); - -DATA(insert OID = 6013 ( pg_replication_origin_progress PGNSP PGUID 12 1 0 0 0 f f f t f v u 2 0 3220 "25 16" _null_ _null_ _null_ _null_ _null_ pg_replication_origin_progress _null_ _null_ _null_ )); -DESCR("get an individual replication origin's replication progress"); - -DATA(insert OID = 6014 ( pg_show_replication_origin_status PGNSP PGUID 12 1 100 0 0 f f f f t v r 0 0 2249 "" "{26,25,3220,3220}" "{o,o,o,o}" "{local_id, external_id, remote_lsn, local_lsn}" _null_ _null_ pg_show_replication_origin_status _null_ _null_ _null_ )); -DESCR("get progress for all replication origins"); - -/* publications */ -DATA(insert OID = 6119 ( pg_get_publication_tables PGNSP PGUID 12 1 1000 0 0 f f f t t s s 1 0 26 "25" "{25,26}" "{i,o}" "{pubname,relid}" _null_ _null_ pg_get_publication_tables _null_ _null_ _null_ )); -DESCR("get OIDs of tables in a publication"); -DATA(insert OID = 6121 ( pg_relation_is_publishable PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 16 "2205" _null_ _null_ _null_ _null_ _null_ pg_relation_is_publishable _null_ _null_ _null_ )); -DESCR("returns whether a relation can be part of a publication"); - -/* rls */ -DATA(insert OID = 3298 ( row_security_active PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 16 "26" _null_ _null_ _null_ _null_ _null_ row_security_active _null_ _null_ _null_ )); -DESCR("row security for current context active on table by table oid"); -DATA(insert OID = 3299 ( row_security_active PGNSP PGUID 12 1 0 0 0 f f f t f s s 1 0 16 "25" _null_ _null_ _null_ _null_ _null_ row_security_active_name _null_ _null_ _null_ )); -DESCR("row security for current context active on table by table name"); - -/* pg_config */ -DATA(insert OID = 3400 ( pg_config PGNSP PGUID 12 1 23 0 0 f f f t t i r 0 0 2249 "" "{25,25}" "{o,o}" "{name,setting}" _null_ _null_ pg_config _null_ _null_ _null_ )); -DESCR("pg_config binary as a function"); - -/* pg_controldata related functions */ -DATA(insert OID = 3441 ( pg_control_system PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2249 "" "{23,23,20,1184}" "{o,o,o,o}" "{pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified}" _null_ _null_ pg_control_system _null_ _null_ _null_ )); -DESCR("pg_controldata general state information as a function"); - -DATA(insert OID = 3442 ( pg_control_checkpoint PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2249 "" "{3220,3220,25,23,23,16,25,26,28,28,28,26,28,28,26,28,28,1184}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time}" _null_ _null_ pg_control_checkpoint _null_ _null_ _null_ )); -DESCR("pg_controldata checkpoint state information as a function"); - -DATA(insert OID = 3443 ( pg_control_recovery PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2249 "" "{3220,23,3220,3220,16}" "{o,o,o,o,o}" "{min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required}" _null_ _null_ pg_control_recovery _null_ _null_ _null_ )); -DESCR("pg_controldata recovery state information as a function"); - -DATA(insert OID = 3444 ( pg_control_init PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2249 "" "{23,23,23,23,23,23,23,23,23,16,16,23}" "{o,o,o,o,o,o,o,o,o,o,o,o}" "{max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float4_pass_by_value,float8_pass_by_value,data_page_checksum_version}" _null_ _null_ pg_control_init _null_ _null_ _null_ )); -DESCR("pg_controldata init state information as a function"); - -DATA(insert OID = 3996 ( pg_disable_data_checksums PGNSP PGUID 12 1 0 0 0 f f f t f v s 0 0 2278 "" _null_ _null_ _null_ _null_ _null_ disable_data_checksums _null_ _null_ _null_ )); -DESCR("disable data checksums"); -DATA(insert OID = 3998 ( pg_enable_data_checksums PGNSP PGUID 12 1 0 0 0 f f f t f v s 2 0 2278 "23 23" _null_ _null_ "{cost_delay,cost_limit}" _null_ _null_ enable_data_checksums _null_ _null_ _null_ )); -DESCR("enable data checksums"); - -/* collation management functions */ -DATA(insert OID = 3445 ( pg_import_system_collations PGNSP PGUID 12 100 0 0 0 f f f t f v u 1 0 23 "4089" _null_ _null_ _null_ _null_ _null_ pg_import_system_collations _null_ _null_ _null_ )); -DESCR("import collations from operating system"); - -DATA(insert OID = 3448 ( pg_collation_actual_version PGNSP PGUID 12 100 0 0 0 f f f t f v s 1 0 25 "26" _null_ _null_ _null_ _null_ _null_ pg_collation_actual_version _null_ _null_ _null_ )); -DESCR("get actual version of collation from operating system"); - -/* system management/monitoring related functions */ -DATA(insert OID = 3353 ( pg_ls_logdir PGNSP PGUID 12 10 20 0 0 f f f t t v s 0 0 2249 "" "{25,20,1184}" "{o,o,o}" "{name,size,modification}" _null_ _null_ pg_ls_logdir _null_ _null_ _null_ )); -DESCR("list files in the log directory"); -DATA(insert OID = 3354 ( pg_ls_waldir PGNSP PGUID 12 10 20 0 0 f f f t t v s 0 0 2249 "" "{25,20,1184}" "{o,o,o}" "{name,size,modification}" _null_ _null_ pg_ls_waldir _null_ _null_ _null_ )); -DESCR("list of files in the WAL directory"); - -/* hash partitioning constraint function */ -DATA(insert OID = 5028 ( satisfies_hash_partition PGNSP PGUID 12 1 0 2276 0 f f f f f i s 4 0 16 "26 23 23 2276" _null_ "{i,i,i,v}" _null_ _null_ _null_ satisfies_hash_partition _null_ _null_ _null_ )); -DESCR("hash partition CHECK constraint"); +#ifdef EXPOSE_TO_CLIENT_CODE /* * Symbolic values for prokind column @@ -5657,4 +170,6 @@ DESCR("hash partition CHECK constraint"); #define PROARGMODE_VARIADIC 'v' #define PROARGMODE_TABLE 't' +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_PROC_H */ diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h index b643c489cd..9652d34528 100644 --- a/src/include/catalog/pg_publication.h +++ b/src/include/catalog/pg_publication.h @@ -9,8 +9,8 @@ * src/include/catalog/pg_publication.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -18,17 +18,15 @@ #define PG_PUBLICATION_H #include "catalog/genbki.h" +#include "catalog/pg_publication_d.h" #include "catalog/objectaddress.h" /* ---------------- * pg_publication definition. cpp turns this into * typedef struct FormData_pg_publication - * * ---------------- */ -#define PublicationRelationId 6104 - -CATALOG(pg_publication,6104) +CATALOG(pg_publication,6104,PublicationRelationId) { NameData pubname; /* name of the publication */ @@ -61,20 +59,6 @@ CATALOG(pg_publication,6104) */ typedef FormData_pg_publication *Form_pg_publication; -/* ---------------- - * compiler constants for pg_publication - * ---------------- - */ - -#define Natts_pg_publication 7 -#define Anum_pg_publication_pubname 1 -#define Anum_pg_publication_pubowner 2 -#define Anum_pg_publication_puballtables 3 -#define Anum_pg_publication_pubinsert 4 -#define Anum_pg_publication_pubupdate 5 -#define Anum_pg_publication_pubdelete 6 -#define Anum_pg_publication_pubtruncate 7 - typedef struct PublicationActions { bool pubinsert; diff --git a/src/include/catalog/pg_publication_rel.h b/src/include/catalog/pg_publication_rel.h index 033b600cee..2208e424f4 100644 --- a/src/include/catalog/pg_publication_rel.h +++ b/src/include/catalog/pg_publication_rel.h @@ -9,8 +9,8 @@ * src/include/catalog/pg_publication_rel.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -18,16 +18,14 @@ #define PG_PUBLICATION_REL_H #include "catalog/genbki.h" +#include "catalog/pg_publication_rel_d.h" /* ---------------- * pg_publication_rel definition. cpp turns this into * typedef struct FormData_pg_publication_rel - * * ---------------- */ -#define PublicationRelRelationId 6106 - -CATALOG(pg_publication_rel,6106) +CATALOG(pg_publication_rel,6106,PublicationRelRelationId) { Oid prpubid; /* Oid of the publication */ Oid prrelid; /* Oid of the relation */ @@ -40,13 +38,4 @@ CATALOG(pg_publication_rel,6106) */ typedef FormData_pg_publication_rel *Form_pg_publication_rel; -/* ---------------- - * compiler constants for pg_publication_rel - * ---------------- - */ - -#define Natts_pg_publication_rel 2 -#define Anum_pg_publication_rel_prpubid 1 -#define Anum_pg_publication_rel_prrelid 2 - #endif /* PG_PUBLICATION_REL_H */ diff --git a/src/include/catalog/pg_range.dat b/src/include/catalog/pg_range.dat new file mode 100644 index 0000000000..4781ea9d36 --- /dev/null +++ b/src/include/catalog/pg_range.dat @@ -0,0 +1,31 @@ +#---------------------------------------------------------------------- +# +# pg_range.dat +# Initial contents of the pg_range system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_range.dat +# +#---------------------------------------------------------------------- + +[ + +{ rngtypid => 'int4range', rngsubtype => 'int4', rngsubopc => 'btree/int4_ops', + rngcanonical => 'int4range_canonical', rngsubdiff => 'int4range_subdiff' }, +{ rngtypid => 'numrange', rngsubtype => 'numeric', + rngsubopc => 'btree/numeric_ops', rngcanonical => '-', + rngsubdiff => 'numrange_subdiff' }, +{ rngtypid => 'tsrange', rngsubtype => 'timestamp', + rngsubopc => 'btree/timestamp_ops', rngcanonical => '-', + rngsubdiff => 'tsrange_subdiff' }, +{ rngtypid => 'tstzrange', rngsubtype => 'timestamptz', + rngsubopc => 'btree/timestamptz_ops', rngcanonical => '-', + rngsubdiff => 'tstzrange_subdiff' }, +{ rngtypid => 'daterange', rngsubtype => 'date', rngsubopc => 'btree/date_ops', + rngcanonical => 'daterange_canonical', rngsubdiff => 'daterange_subdiff' }, +{ rngtypid => 'int8range', rngsubtype => 'int8', rngsubopc => 'btree/int8_ops', + rngcanonical => 'int8range_canonical', rngsubdiff => 'int8range_subdiff' }, + +] diff --git a/src/include/catalog/pg_range.h b/src/include/catalog/pg_range.h index 00d02d1712..d8e16ccee7 100644 --- a/src/include/catalog/pg_range.h +++ b/src/include/catalog/pg_range.h @@ -2,7 +2,6 @@ * * pg_range.h * definition of the system "range" relation (pg_range) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,11 +10,8 @@ * src/include/catalog/pg_range.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -23,22 +19,32 @@ #define PG_RANGE_H #include "catalog/genbki.h" +#include "catalog/pg_range_d.h" /* ---------------- * pg_range definition. cpp turns this into * typedef struct FormData_pg_range * ---------------- */ -#define RangeRelationId 3541 - -CATALOG(pg_range,3541) BKI_WITHOUT_OIDS +CATALOG(pg_range,3541,RangeRelationId) BKI_WITHOUT_OIDS { - Oid rngtypid; /* OID of owning range type */ - Oid rngsubtype; /* OID of range's element type (subtype) */ - Oid rngcollation; /* collation for this range type, or 0 */ - Oid rngsubopc; /* subtype's btree opclass */ - regproc rngcanonical; /* canonicalize range, or 0 */ - regproc rngsubdiff; /* subtype difference as a float8, or 0 */ + /* OID of owning range type */ + Oid rngtypid BKI_LOOKUP(pg_type); + + /* OID of range's element type (subtype) */ + Oid rngsubtype BKI_LOOKUP(pg_type); + + /* collation for this range type, or 0 */ + Oid rngcollation BKI_DEFAULT(0); + + /* subtype's btree opclass */ + Oid rngsubopc BKI_LOOKUP(pg_opclass); + + /* canonicalize range, or 0 */ + regproc rngcanonical BKI_LOOKUP(pg_proc); + + /* subtype difference as a float8, or 0 */ + regproc rngsubdiff BKI_LOOKUP(pg_proc); } FormData_pg_range; /* ---------------- @@ -48,31 +54,6 @@ CATALOG(pg_range,3541) BKI_WITHOUT_OIDS */ typedef FormData_pg_range *Form_pg_range; -/* ---------------- - * compiler constants for pg_range - * ---------------- - */ -#define Natts_pg_range 6 -#define Anum_pg_range_rngtypid 1 -#define Anum_pg_range_rngsubtype 2 -#define Anum_pg_range_rngcollation 3 -#define Anum_pg_range_rngsubopc 4 -#define Anum_pg_range_rngcanonical 5 -#define Anum_pg_range_rngsubdiff 6 - - -/* ---------------- - * initial contents of pg_range - * ---------------- - */ -DATA(insert ( 3904 23 0 1978 int4range_canonical int4range_subdiff)); -DATA(insert ( 3906 1700 0 3125 - numrange_subdiff)); -DATA(insert ( 3908 1114 0 3128 - tsrange_subdiff)); -DATA(insert ( 3910 1184 0 3127 - tstzrange_subdiff)); -DATA(insert ( 3912 1082 0 3122 daterange_canonical daterange_subdiff)); -DATA(insert ( 3926 20 0 3124 int8range_canonical int8range_subdiff)); - - /* * prototypes for functions in pg_range.c */ diff --git a/src/include/catalog/pg_replication_origin.h b/src/include/catalog/pg_replication_origin.h index 9656179ad4..1adc3f729a 100644 --- a/src/include/catalog/pg_replication_origin.h +++ b/src/include/catalog/pg_replication_origin.h @@ -9,8 +9,8 @@ * src/include/catalog/pg_replication_origin.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -18,6 +18,7 @@ #define PG_REPLICATION_ORIGIN_H #include "catalog/genbki.h" +#include "catalog/pg_replication_origin_d.h" #include "access/xlogdefs.h" /* ---------------- @@ -25,9 +26,7 @@ * typedef struct FormData_pg_replication_origin * ---------------- */ -#define ReplicationOriginRelationId 6000 - -CATALOG(pg_replication_origin,6000) BKI_SHARED_RELATION BKI_WITHOUT_OIDS +CATALOG(pg_replication_origin,6000,ReplicationOriginRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS { /* * Locally known id that get included into WAL. @@ -54,17 +53,4 @@ CATALOG(pg_replication_origin,6000) BKI_SHARED_RELATION BKI_WITHOUT_OIDS typedef FormData_pg_replication_origin *Form_pg_replication_origin; -/* ---------------- - * compiler constants for pg_replication_origin - * ---------------- - */ -#define Natts_pg_replication_origin 2 -#define Anum_pg_replication_origin_roident 1 -#define Anum_pg_replication_origin_roname 2 - -/* ---------------- - * pg_replication_origin has no initial contents - * ---------------- - */ - #endif /* PG_REPLICATION_ORIGIN_H */ diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h index 81f2b19a74..77125867b3 100644 --- a/src/include/catalog/pg_rewrite.h +++ b/src/include/catalog/pg_rewrite.h @@ -2,7 +2,6 @@ * * pg_rewrite.h * definition of the system "rewrite-rule" relation (pg_rewrite) - * along with the relation's initial contents. * * As of Postgres 7.3, the primary key for this table is * --- ie, rule names are only unique among the rules of a given table. @@ -14,8 +13,8 @@ * src/include/catalog/pg_rewrite.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -23,15 +22,14 @@ #define PG_REWRITE_H #include "catalog/genbki.h" +#include "catalog/pg_rewrite_d.h" /* ---------------- * pg_rewrite definition. cpp turns this into * typedef struct FormData_pg_rewrite * ---------------- */ -#define RewriteRelationId 2618 - -CATALOG(pg_rewrite,2618) +CATALOG(pg_rewrite,2618,RewriteRelationId) { NameData rulename; Oid ev_class; @@ -52,17 +50,4 @@ CATALOG(pg_rewrite,2618) */ typedef FormData_pg_rewrite *Form_pg_rewrite; -/* ---------------- - * compiler constants for pg_rewrite - * ---------------- - */ -#define Natts_pg_rewrite 7 -#define Anum_pg_rewrite_rulename 1 -#define Anum_pg_rewrite_ev_class 2 -#define Anum_pg_rewrite_ev_type 3 -#define Anum_pg_rewrite_ev_enabled 4 -#define Anum_pg_rewrite_is_instead 5 -#define Anum_pg_rewrite_ev_qual 6 -#define Anum_pg_rewrite_ev_action 7 - #endif /* PG_REWRITE_H */ diff --git a/src/include/catalog/pg_seclabel.h b/src/include/catalog/pg_seclabel.h index 70dc01ebfc..48d454897c 100644 --- a/src/include/catalog/pg_seclabel.h +++ b/src/include/catalog/pg_seclabel.h @@ -12,15 +12,14 @@ #define PG_SECLABEL_H #include "catalog/genbki.h" +#include "catalog/pg_seclabel_d.h" /* ---------------- * pg_seclabel definition. cpp turns this into * typedef struct FormData_pg_seclabel * ---------------- */ -#define SecLabelRelationId 3596 - -CATALOG(pg_seclabel,3596) BKI_WITHOUT_OIDS +CATALOG(pg_seclabel,3596,SecLabelRelationId) BKI_WITHOUT_OIDS { Oid objoid; /* OID of the object itself */ Oid classoid; /* OID of table containing the object */ @@ -32,15 +31,4 @@ CATALOG(pg_seclabel,3596) BKI_WITHOUT_OIDS #endif } FormData_pg_seclabel; -/* ---------------- - * compiler constants for pg_seclabel - * ---------------- - */ -#define Natts_pg_seclabel 5 -#define Anum_pg_seclabel_objoid 1 -#define Anum_pg_seclabel_classoid 2 -#define Anum_pg_seclabel_objsubid 3 -#define Anum_pg_seclabel_provider 4 -#define Anum_pg_seclabel_label 5 - #endif /* PG_SECLABEL_H */ diff --git a/src/include/catalog/pg_sequence.h b/src/include/catalog/pg_sequence.h index a78417eaeb..a13b05e800 100644 --- a/src/include/catalog/pg_sequence.h +++ b/src/include/catalog/pg_sequence.h @@ -12,10 +12,9 @@ #define PG_SEQUENCE_H #include "catalog/genbki.h" +#include "catalog/pg_sequence_d.h" -#define SequenceRelationId 2224 - -CATALOG(pg_sequence,2224) BKI_WITHOUT_OIDS +CATALOG(pg_sequence,2224,SequenceRelationId) BKI_WITHOUT_OIDS { Oid seqrelid; Oid seqtypid; @@ -27,16 +26,11 @@ CATALOG(pg_sequence,2224) BKI_WITHOUT_OIDS bool seqcycle; } FormData_pg_sequence; +/* ---------------- + * Form_pg_sequence corresponds to a pointer to a tuple with + * the format of pg_sequence relation. + * ---------------- + */ typedef FormData_pg_sequence *Form_pg_sequence; -#define Natts_pg_sequence 8 -#define Anum_pg_sequence_seqrelid 1 -#define Anum_pg_sequence_seqtypid 2 -#define Anum_pg_sequence_seqstart 3 -#define Anum_pg_sequence_seqincrement 4 -#define Anum_pg_sequence_seqmax 5 -#define Anum_pg_sequence_seqmin 6 -#define Anum_pg_sequence_seqcache 7 -#define Anum_pg_sequence_seqcycle 8 - #endif /* PG_SEQUENCE_H */ diff --git a/src/include/catalog/pg_shdepend.h b/src/include/catalog/pg_shdepend.h index ae40377e4e..0f8508cf26 100644 --- a/src/include/catalog/pg_shdepend.h +++ b/src/include/catalog/pg_shdepend.h @@ -2,8 +2,15 @@ * * pg_shdepend.h * definition of the system "shared dependency" relation (pg_shdepend) - * along with the relation's initial contents. * + * pg_shdepend has no preloaded contents, so there is no pg_shdepend.dat + * file; system-defined dependencies are loaded into it during a late stage + * of the initdb process. + * + * NOTE: we do not represent all possible dependency pairs in pg_shdepend; + * for example, there's not much value in creating an explicit dependency + * from a relation to its database. Currently, only dependencies on roles + * are explicitly stored in pg_shdepend. * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -11,8 +18,8 @@ * src/include/catalog/pg_shdepend.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +27,14 @@ #define PG_SHDEPEND_H #include "catalog/genbki.h" +#include "catalog/pg_shdepend_d.h" /* ---------------- * pg_shdepend definition. cpp turns this into * typedef struct FormData_pg_shdepend * ---------------- */ -#define SharedDependRelationId 1214 - -CATALOG(pg_shdepend,1214) BKI_SHARED_RELATION BKI_WITHOUT_OIDS +CATALOG(pg_shdepend,1214,SharedDependRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS { /* * Identification of the dependent (referencing) object. @@ -63,28 +69,4 @@ CATALOG(pg_shdepend,1214) BKI_SHARED_RELATION BKI_WITHOUT_OIDS */ typedef FormData_pg_shdepend *Form_pg_shdepend; -/* ---------------- - * compiler constants for pg_shdepend - * ---------------- - */ -#define Natts_pg_shdepend 7 -#define Anum_pg_shdepend_dbid 1 -#define Anum_pg_shdepend_classid 2 -#define Anum_pg_shdepend_objid 3 -#define Anum_pg_shdepend_objsubid 4 -#define Anum_pg_shdepend_refclassid 5 -#define Anum_pg_shdepend_refobjid 6 -#define Anum_pg_shdepend_deptype 7 - - -/* - * pg_shdepend has no preloaded contents; system-defined dependencies are - * loaded into it during a late stage of the initdb process. - * - * NOTE: we do not represent all possible dependency pairs in pg_shdepend; - * for example, there's not much value in creating an explicit dependency - * from a relation to its database. Currently, only dependencies on roles - * are explicitly stored in pg_shdepend. - */ - #endif /* PG_SHDEPEND_H */ diff --git a/src/include/catalog/pg_shdescription.h b/src/include/catalog/pg_shdescription.h index d4ec616f3b..00fd0e0e54 100644 --- a/src/include/catalog/pg_shdescription.h +++ b/src/include/catalog/pg_shdescription.h @@ -4,6 +4,10 @@ * definition of the system "shared description" relation * (pg_shdescription) * + * Because the contents of this table are taken from the *.dat files + * of other catalogs, there is no pg_shdescription.dat file. The initial + * contents are assembled by genbki.pl and loaded during initdb. + * * NOTE: an object is identified by the OID of the row that primarily * defines the object, plus the OID of the table that that row appears in. * For example, a database is identified by the OID of its pg_database row @@ -18,11 +22,8 @@ * src/include/catalog/pg_shdescription.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -30,15 +31,14 @@ #define PG_SHDESCRIPTION_H #include "catalog/genbki.h" +#include "catalog/pg_shdescription_d.h" /* ---------------- * pg_shdescription definition. cpp turns this into * typedef struct FormData_pg_shdescription * ---------------- */ -#define SharedDescriptionRelationId 2396 - -CATALOG(pg_shdescription,2396) BKI_SHARED_RELATION BKI_WITHOUT_OIDS +CATALOG(pg_shdescription,2396,SharedDescriptionRelationId) BKI_SHARED_RELATION BKI_WITHOUT_OIDS { Oid objoid; /* OID of object itself */ Oid classoid; /* OID of table containing object */ @@ -55,24 +55,4 @@ CATALOG(pg_shdescription,2396) BKI_SHARED_RELATION BKI_WITHOUT_OIDS */ typedef FormData_pg_shdescription * Form_pg_shdescription; -/* ---------------- - * compiler constants for pg_shdescription - * ---------------- - */ -#define Natts_pg_shdescription 3 -#define Anum_pg_shdescription_objoid 1 -#define Anum_pg_shdescription_classoid 2 -#define Anum_pg_shdescription_description 3 - -/* ---------------- - * initial contents of pg_shdescription - * ---------------- - */ - -/* - * Because the contents of this table are taken from the other *.h files, - * there is no initialization here. The initial contents are extracted - * by genbki.pl and loaded during initdb. - */ - #endif /* PG_SHDESCRIPTION_H */ diff --git a/src/include/catalog/pg_shseclabel.h b/src/include/catalog/pg_shseclabel.h index 57b854c217..22ecf98168 100644 --- a/src/include/catalog/pg_shseclabel.h +++ b/src/include/catalog/pg_shseclabel.h @@ -1,7 +1,7 @@ /* ------------------------------------------------------------------------- * * pg_shseclabel.h - * definition of the system "security label" relation (pg_shseclabel) + * definition of the system "shared security label" relation (pg_shseclabel) * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -12,16 +12,14 @@ #define PG_SHSECLABEL_H #include "catalog/genbki.h" +#include "catalog/pg_shseclabel_d.h" /* ---------------- * pg_shseclabel definition. cpp turns this into * typedef struct FormData_pg_shseclabel * ---------------- */ -#define SharedSecLabelRelationId 3592 -#define SharedSecLabelRelation_Rowtype_Id 4066 - -CATALOG(pg_shseclabel,3592) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO +CATALOG(pg_shseclabel,3592,SharedSecLabelRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066,SharedSecLabelRelation_Rowtype_Id) BKI_WITHOUT_OIDS BKI_SCHEMA_MACRO { Oid objoid; /* OID of the shared object itself */ Oid classoid; /* OID of table containing the shared object */ @@ -34,14 +32,4 @@ CATALOG(pg_shseclabel,3592) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066) BKI_WITHOU typedef FormData_pg_shseclabel * Form_pg_shseclabel; -/* ---------------- - * compiler constants for pg_shseclabel - * ---------------- - */ -#define Natts_pg_shseclabel 4 -#define Anum_pg_shseclabel_objoid 1 -#define Anum_pg_shseclabel_classoid 2 -#define Anum_pg_shseclabel_provider 3 -#define Anum_pg_shseclabel_label 4 - #endif /* PG_SHSECLABEL_H */ diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h index a5c85feffe..d654d3db26 100644 --- a/src/include/catalog/pg_statistic.h +++ b/src/include/catalog/pg_statistic.h @@ -2,7 +2,6 @@ * * pg_statistic.h * definition of the system "statistic" relation (pg_statistic) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_statistic.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_STATISTIC_H #include "catalog/genbki.h" +#include "catalog/pg_statistic_d.h" /* ---------------- * pg_statistic definition. cpp turns this into * typedef struct FormData_pg_statistic * ---------------- */ -#define StatisticRelationId 2619 - -CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS +CATALOG(pg_statistic,2619,StatisticRelationId) BKI_WITHOUT_OIDS { /* These fields form the unique key for the entry: */ Oid starelid; /* relation containing attribute */ @@ -128,37 +126,7 @@ CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS */ typedef FormData_pg_statistic *Form_pg_statistic; -/* ---------------- - * compiler constants for pg_statistic - * ---------------- - */ -#define Natts_pg_statistic 26 -#define Anum_pg_statistic_starelid 1 -#define Anum_pg_statistic_staattnum 2 -#define Anum_pg_statistic_stainherit 3 -#define Anum_pg_statistic_stanullfrac 4 -#define Anum_pg_statistic_stawidth 5 -#define Anum_pg_statistic_stadistinct 6 -#define Anum_pg_statistic_stakind1 7 -#define Anum_pg_statistic_stakind2 8 -#define Anum_pg_statistic_stakind3 9 -#define Anum_pg_statistic_stakind4 10 -#define Anum_pg_statistic_stakind5 11 -#define Anum_pg_statistic_staop1 12 -#define Anum_pg_statistic_staop2 13 -#define Anum_pg_statistic_staop3 14 -#define Anum_pg_statistic_staop4 15 -#define Anum_pg_statistic_staop5 16 -#define Anum_pg_statistic_stanumbers1 17 -#define Anum_pg_statistic_stanumbers2 18 -#define Anum_pg_statistic_stanumbers3 19 -#define Anum_pg_statistic_stanumbers4 20 -#define Anum_pg_statistic_stanumbers5 21 -#define Anum_pg_statistic_stavalues1 22 -#define Anum_pg_statistic_stavalues2 23 -#define Anum_pg_statistic_stavalues3 24 -#define Anum_pg_statistic_stavalues4 25 -#define Anum_pg_statistic_stavalues5 26 +#ifdef EXPOSE_TO_CLIENT_CODE /* * Several statistical slot "kinds" are defined by core PostgreSQL, as @@ -289,4 +257,6 @@ typedef FormData_pg_statistic *Form_pg_statistic; */ #define STATISTIC_KIND_BOUNDS_HISTOGRAM 7 +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_STATISTIC_H */ diff --git a/src/include/catalog/pg_statistic_ext.h b/src/include/catalog/pg_statistic_ext.h index 2f5ef78c6c..9ccfce7c72 100644 --- a/src/include/catalog/pg_statistic_ext.h +++ b/src/include/catalog/pg_statistic_ext.h @@ -2,7 +2,6 @@ * * pg_statistic_ext.h * definition of the system "extended statistic" relation (pg_statistic_ext) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_statistic_ext.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_STATISTIC_EXT_H #include "catalog/genbki.h" +#include "catalog/pg_statistic_ext_d.h" /* ---------------- * pg_statistic_ext definition. cpp turns this into * typedef struct FormData_pg_statistic_ext * ---------------- */ -#define StatisticExtRelationId 3381 - -CATALOG(pg_statistic_ext,3381) +CATALOG(pg_statistic_ext,3381,StatisticExtRelationId) { Oid stxrelid; /* relation containing attributes */ @@ -60,21 +58,11 @@ CATALOG(pg_statistic_ext,3381) */ typedef FormData_pg_statistic_ext *Form_pg_statistic_ext; -/* ---------------- - * compiler constants for pg_statistic_ext - * ---------------- - */ -#define Natts_pg_statistic_ext 8 -#define Anum_pg_statistic_ext_stxrelid 1 -#define Anum_pg_statistic_ext_stxname 2 -#define Anum_pg_statistic_ext_stxnamespace 3 -#define Anum_pg_statistic_ext_stxowner 4 -#define Anum_pg_statistic_ext_stxkeys 5 -#define Anum_pg_statistic_ext_stxkind 6 -#define Anum_pg_statistic_ext_stxndistinct 7 -#define Anum_pg_statistic_ext_stxdependencies 8 +#ifdef EXPOSE_TO_CLIENT_CODE #define STATS_EXT_NDISTINCT 'd' #define STATS_EXT_DEPENDENCIES 'f' +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_STATISTIC_EXT_H */ diff --git a/src/include/catalog/pg_subscription.h b/src/include/catalog/pg_subscription.h index 46d0b48232..93b249fc1d 100644 --- a/src/include/catalog/pg_subscription.h +++ b/src/include/catalog/pg_subscription.h @@ -12,6 +12,7 @@ #define PG_SUBSCRIPTION_H #include "catalog/genbki.h" +#include "catalog/pg_subscription_d.h" #include "nodes/pg_list.h" /* ---------------- @@ -19,8 +20,6 @@ * typedef struct FormData_pg_subscription * ---------------- */ -#define SubscriptionRelationId 6100 -#define SubscriptionRelation_Rowtype_Id 6101 /* * Technically, the subscriptions live inside the database, so a shared catalog @@ -30,7 +29,7 @@ * * NOTE: When adding a column, also update system_views.sql. */ -CATALOG(pg_subscription,6100) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101) BKI_SCHEMA_MACRO +CATALOG(pg_subscription,6100,SubscriptionRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101,SubscriptionRelation_Rowtype_Id) BKI_SCHEMA_MACRO { Oid subdbid; /* Database the subscription is in. */ NameData subname; /* Name of the subscription */ @@ -57,21 +56,6 @@ CATALOG(pg_subscription,6100) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101) BKI_SCHE typedef FormData_pg_subscription *Form_pg_subscription; -/* ---------------- - * compiler constants for pg_subscription - * ---------------- - */ -#define Natts_pg_subscription 8 -#define Anum_pg_subscription_subdbid 1 -#define Anum_pg_subscription_subname 2 -#define Anum_pg_subscription_subowner 3 -#define Anum_pg_subscription_subenabled 4 -#define Anum_pg_subscription_subconninfo 5 -#define Anum_pg_subscription_subslotname 6 -#define Anum_pg_subscription_subsynccommit 7 -#define Anum_pg_subscription_subpublications 8 - - typedef struct Subscription { Oid oid; /* Oid of the subscription */ diff --git a/src/include/catalog/pg_subscription_rel.h b/src/include/catalog/pg_subscription_rel.h index 5cf268f181..0543c0eee6 100644 --- a/src/include/catalog/pg_subscription_rel.h +++ b/src/include/catalog/pg_subscription_rel.h @@ -12,8 +12,9 @@ #ifndef PG_SUBSCRIPTION_REL_H #define PG_SUBSCRIPTION_REL_H -#include "access/xlogdefs.h" #include "catalog/genbki.h" +#include "catalog/pg_subscription_rel_d.h" +#include "access/xlogdefs.h" #include "nodes/pg_list.h" /* ---------------- @@ -21,9 +22,7 @@ * typedef struct FormData_pg_subscription_rel * ---------------- */ -#define SubscriptionRelRelationId 6102 - -CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS +CATALOG(pg_subscription_rel,6102,SubscriptionRelRelationId) BKI_WITHOUT_OIDS { Oid srsubid; /* Oid of subscription */ Oid srrelid; /* Oid of relation */ @@ -34,15 +33,7 @@ CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS typedef FormData_pg_subscription_rel *Form_pg_subscription_rel; -/* ---------------- - * compiler constants for pg_subscription_rel - * ---------------- - */ -#define Natts_pg_subscription_rel 4 -#define Anum_pg_subscription_rel_srsubid 1 -#define Anum_pg_subscription_rel_srrelid 2 -#define Anum_pg_subscription_rel_srsubstate 3 -#define Anum_pg_subscription_rel_srsublsn 4 +#ifdef EXPOSE_TO_CLIENT_CODE /* ---------------- * substate constants @@ -60,6 +51,8 @@ typedef FormData_pg_subscription_rel *Form_pg_subscription_rel; #define SUBREL_STATE_SYNCWAIT 'w' /* waiting for sync */ #define SUBREL_STATE_CATCHUP 'c' /* catching up with apply */ +#endif /* EXPOSE_TO_CLIENT_CODE */ + typedef struct SubscriptionRelState { Oid relid; diff --git a/src/include/catalog/pg_tablespace.dat b/src/include/catalog/pg_tablespace.dat new file mode 100644 index 0000000000..b623a2d39c --- /dev/null +++ b/src/include/catalog/pg_tablespace.dat @@ -0,0 +1,22 @@ +#---------------------------------------------------------------------- +# +# pg_tablespace.dat +# Initial contents of the pg_tablespace system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_tablespace.dat +# +#---------------------------------------------------------------------- + +[ + +{ oid => '1663', oid_symbol => 'DEFAULTTABLESPACE_OID', + spcname => 'pg_default', spcowner => 'PGUID', spcacl => '_null_', + spcoptions => '_null_' }, +{ oid => '1664', oid_symbol => 'GLOBALTABLESPACE_OID', + spcname => 'pg_global', spcowner => 'PGUID', spcacl => '_null_', + spcoptions => '_null_' }, + +] diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h index 360fc4c0cc..4782e78e6b 100644 --- a/src/include/catalog/pg_tablespace.h +++ b/src/include/catalog/pg_tablespace.h @@ -2,7 +2,6 @@ * * pg_tablespace.h * definition of the system "tablespace" relation (pg_tablespace) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_tablespace.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,15 +19,14 @@ #define PG_TABLESPACE_H #include "catalog/genbki.h" +#include "catalog/pg_tablespace_d.h" /* ---------------- * pg_tablespace definition. cpp turns this into * typedef struct FormData_pg_tablespace * ---------------- */ -#define TableSpaceRelationId 1213 - -CATALOG(pg_tablespace,1213) BKI_SHARED_RELATION +CATALOG(pg_tablespace,1213,TableSpaceRelationId) BKI_SHARED_RELATION { NameData spcname; /* tablespace name */ Oid spcowner; /* owner of tablespace */ @@ -46,20 +44,4 @@ CATALOG(pg_tablespace,1213) BKI_SHARED_RELATION */ typedef FormData_pg_tablespace *Form_pg_tablespace; -/* ---------------- - * compiler constants for pg_tablespace - * ---------------- - */ - -#define Natts_pg_tablespace 4 -#define Anum_pg_tablespace_spcname 1 -#define Anum_pg_tablespace_spcowner 2 -#define Anum_pg_tablespace_spcacl 3 -#define Anum_pg_tablespace_spcoptions 4 - -DATA(insert OID = 1663 ( pg_default PGUID _null_ _null_ )); -#define DEFAULTTABLESPACE_OID 1663 -DATA(insert OID = 1664 ( pg_global PGUID _null_ _null_ )); -#define GLOBALTABLESPACE_OID 1664 - #endif /* PG_TABLESPACE_H */ diff --git a/src/include/catalog/pg_transform.h b/src/include/catalog/pg_transform.h index d4fc4649d5..6059b897c6 100644 --- a/src/include/catalog/pg_transform.h +++ b/src/include/catalog/pg_transform.h @@ -1,14 +1,17 @@ /*------------------------------------------------------------------------- * * pg_transform.h + * definition of the system "transform" relation (pg_transform) * - * Copyright (c) 2012-2018, PostgreSQL Global Development Group + * + * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_transform.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -16,15 +19,14 @@ #define PG_TRANSFORM_H #include "catalog/genbki.h" +#include "catalog/pg_transform_d.h" /* ---------------- * pg_transform definition. cpp turns this into * typedef struct FormData_pg_transform * ---------------- */ -#define TransformRelationId 3576 - -CATALOG(pg_transform,3576) +CATALOG(pg_transform,3576,TransformRelationId) { Oid trftype; Oid trflang; @@ -32,16 +34,11 @@ CATALOG(pg_transform,3576) regproc trftosql; } FormData_pg_transform; -typedef FormData_pg_transform *Form_pg_transform; - /* ---------------- - * compiler constants for pg_transform + * Form_pg_transform corresponds to a pointer to a tuple with + * the format of pg_transform relation. * ---------------- */ -#define Natts_pg_transform 4 -#define Anum_pg_transform_trftype 1 -#define Anum_pg_transform_trflang 2 -#define Anum_pg_transform_trffromsql 3 -#define Anum_pg_transform_trftosql 4 +typedef FormData_pg_transform *Form_pg_transform; #endif /* PG_TRANSFORM_H */ diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h index c80a3aa54d..9955e62d3a 100644 --- a/src/include/catalog/pg_trigger.h +++ b/src/include/catalog/pg_trigger.h @@ -2,7 +2,6 @@ * * pg_trigger.h * definition of the system "trigger" relation (pg_trigger) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_trigger.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,6 +19,7 @@ #define PG_TRIGGER_H #include "catalog/genbki.h" +#include "catalog/pg_trigger_d.h" /* ---------------- * pg_trigger definition. cpp turns this into @@ -31,9 +31,7 @@ * to be associated with a deferrable constraint. * ---------------- */ -#define TriggerRelationId 2620 - -CATALOG(pg_trigger,2620) +CATALOG(pg_trigger,2620,TriggerRelationId) { Oid tgrelid; /* relation trigger is attached to */ NameData tgname; /* trigger's name */ @@ -71,28 +69,7 @@ CATALOG(pg_trigger,2620) */ typedef FormData_pg_trigger *Form_pg_trigger; -/* ---------------- - * compiler constants for pg_trigger - * ---------------- - */ -#define Natts_pg_trigger 17 -#define Anum_pg_trigger_tgrelid 1 -#define Anum_pg_trigger_tgname 2 -#define Anum_pg_trigger_tgfoid 3 -#define Anum_pg_trigger_tgtype 4 -#define Anum_pg_trigger_tgenabled 5 -#define Anum_pg_trigger_tgisinternal 6 -#define Anum_pg_trigger_tgconstrrelid 7 -#define Anum_pg_trigger_tgconstrindid 8 -#define Anum_pg_trigger_tgconstraint 9 -#define Anum_pg_trigger_tgdeferrable 10 -#define Anum_pg_trigger_tginitdeferred 11 -#define Anum_pg_trigger_tgnargs 12 -#define Anum_pg_trigger_tgattr 13 -#define Anum_pg_trigger_tgargs 14 -#define Anum_pg_trigger_tgqual 15 -#define Anum_pg_trigger_tgoldtable 16 -#define Anum_pg_trigger_tgnewtable 17 +#ifdef EXPOSE_TO_CLIENT_CODE /* Bits within tgtype */ #define TRIGGER_TYPE_ROW (1 << 0) @@ -153,4 +130,6 @@ typedef FormData_pg_trigger *Form_pg_trigger; #define TRIGGER_USES_TRANSITION_TABLE(namepointer) \ ((namepointer) != (char *) NULL) +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_TRIGGER_H */ diff --git a/src/include/catalog/pg_ts_config.dat b/src/include/catalog/pg_ts_config.dat new file mode 100644 index 0000000000..b57db6787d --- /dev/null +++ b/src/include/catalog/pg_ts_config.dat @@ -0,0 +1,19 @@ +#---------------------------------------------------------------------- +# +# pg_ts_config.dat +# Initial contents of the pg_ts_config system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_ts_config.dat +# +#---------------------------------------------------------------------- + +[ + +{ oid => '3748', descr => 'simple configuration', + cfgname => 'simple', cfgnamespace => 'PGNSP', cfgowner => 'PGUID', + cfgparser => '3722' }, + +] diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h index 26d0843f90..d344bb76de 100644 --- a/src/include/catalog/pg_ts_config.h +++ b/src/include/catalog/pg_ts_config.h @@ -10,11 +10,8 @@ * src/include/catalog/pg_ts_config.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,15 +19,14 @@ #define PG_TS_CONFIG_H #include "catalog/genbki.h" +#include "catalog/pg_ts_config_d.h" /* ---------------- * pg_ts_config definition. cpp turns this into * typedef struct FormData_pg_ts_config * ---------------- */ -#define TSConfigRelationId 3602 - -CATALOG(pg_ts_config,3602) +CATALOG(pg_ts_config,3602,TSConfigRelationId) { NameData cfgname; /* name of configuration */ Oid cfgnamespace; /* name space */ @@ -40,21 +36,4 @@ CATALOG(pg_ts_config,3602) typedef FormData_pg_ts_config *Form_pg_ts_config; -/* ---------------- - * compiler constants for pg_ts_config - * ---------------- - */ -#define Natts_pg_ts_config 4 -#define Anum_pg_ts_config_cfgname 1 -#define Anum_pg_ts_config_cfgnamespace 2 -#define Anum_pg_ts_config_cfgowner 3 -#define Anum_pg_ts_config_cfgparser 4 - -/* ---------------- - * initial contents of pg_ts_config - * ---------------- - */ -DATA(insert OID = 3748 ( simple PGNSP PGUID 3722 )); -DESCR("simple configuration"); - #endif /* PG_TS_CONFIG_H */ diff --git a/src/include/catalog/pg_ts_config_map.dat b/src/include/catalog/pg_ts_config_map.dat new file mode 100644 index 0000000000..090a1ca1e9 --- /dev/null +++ b/src/include/catalog/pg_ts_config_map.dat @@ -0,0 +1,35 @@ +#---------------------------------------------------------------------- +# +# pg_ts_config_map.dat +# Initial contents of the pg_ts_config_map system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_ts_config_map.dat +# +#---------------------------------------------------------------------- + +[ + +{ mapcfg => '3748', maptokentype => '1', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '2', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '3', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '4', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '5', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '6', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '7', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '8', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '9', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '10', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '11', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '15', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '16', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '17', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '18', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '19', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '20', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '21', mapseqno => '1', mapdict => '3765' }, +{ mapcfg => '3748', maptokentype => '22', mapseqno => '1', mapdict => '3765' }, + +] diff --git a/src/include/catalog/pg_ts_config_map.h b/src/include/catalog/pg_ts_config_map.h index a3d9e3f21f..21200215c4 100644 --- a/src/include/catalog/pg_ts_config_map.h +++ b/src/include/catalog/pg_ts_config_map.h @@ -10,11 +10,8 @@ * src/include/catalog/pg_ts_config_map.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,15 +19,14 @@ #define PG_TS_CONFIG_MAP_H #include "catalog/genbki.h" +#include "catalog/pg_ts_config_map_d.h" /* ---------------- * pg_ts_config_map definition. cpp turns this into * typedef struct FormData_pg_ts_config_map * ---------------- */ -#define TSConfigMapRelationId 3603 - -CATALOG(pg_ts_config_map,3603) BKI_WITHOUT_OIDS +CATALOG(pg_ts_config_map,3603,TSConfigMapRelationId) BKI_WITHOUT_OIDS { Oid mapcfg; /* OID of configuration owning this entry */ int32 maptokentype; /* token type from parser */ @@ -40,39 +36,4 @@ CATALOG(pg_ts_config_map,3603) BKI_WITHOUT_OIDS typedef FormData_pg_ts_config_map *Form_pg_ts_config_map; -/* ---------------- - * compiler constants for pg_ts_config_map - * ---------------- - */ -#define Natts_pg_ts_config_map 4 -#define Anum_pg_ts_config_map_mapcfg 1 -#define Anum_pg_ts_config_map_maptokentype 2 -#define Anum_pg_ts_config_map_mapseqno 3 -#define Anum_pg_ts_config_map_mapdict 4 - -/* ---------------- - * initial contents of pg_ts_config_map - * ---------------- - */ - -DATA(insert ( 3748 1 1 3765 )); -DATA(insert ( 3748 2 1 3765 )); -DATA(insert ( 3748 3 1 3765 )); -DATA(insert ( 3748 4 1 3765 )); -DATA(insert ( 3748 5 1 3765 )); -DATA(insert ( 3748 6 1 3765 )); -DATA(insert ( 3748 7 1 3765 )); -DATA(insert ( 3748 8 1 3765 )); -DATA(insert ( 3748 9 1 3765 )); -DATA(insert ( 3748 10 1 3765 )); -DATA(insert ( 3748 11 1 3765 )); -DATA(insert ( 3748 15 1 3765 )); -DATA(insert ( 3748 16 1 3765 )); -DATA(insert ( 3748 17 1 3765 )); -DATA(insert ( 3748 18 1 3765 )); -DATA(insert ( 3748 19 1 3765 )); -DATA(insert ( 3748 20 1 3765 )); -DATA(insert ( 3748 21 1 3765 )); -DATA(insert ( 3748 22 1 3765 )); - #endif /* PG_TS_CONFIG_MAP_H */ diff --git a/src/include/catalog/pg_ts_dict.dat b/src/include/catalog/pg_ts_dict.dat new file mode 100644 index 0000000000..6852303604 --- /dev/null +++ b/src/include/catalog/pg_ts_dict.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_ts_dict.dat +# Initial contents of the pg_ts_dict system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_ts_dict.dat +# +#---------------------------------------------------------------------- + +[ + +{ oid => '3765', + descr => 'simple dictionary: just lower case and check for stopword', + dictname => 'simple', dictnamespace => 'PGNSP', dictowner => 'PGUID', + dicttemplate => '3727', dictinitoption => '_null_' }, + +] diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h index 1e9d10cbd4..1e285adcec 100644 --- a/src/include/catalog/pg_ts_dict.h +++ b/src/include/catalog/pg_ts_dict.h @@ -10,11 +10,8 @@ * src/include/catalog/pg_ts_dict.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,15 +19,14 @@ #define PG_TS_DICT_H #include "catalog/genbki.h" +#include "catalog/pg_ts_dict_d.h" /* ---------------- * pg_ts_dict definition. cpp turns this into * typedef struct FormData_pg_ts_dict * ---------------- */ -#define TSDictionaryRelationId 3600 - -CATALOG(pg_ts_dict,3600) +CATALOG(pg_ts_dict,3600,TSDictionaryRelationId) { NameData dictname; /* dictionary name */ Oid dictnamespace; /* name space */ @@ -44,23 +40,4 @@ CATALOG(pg_ts_dict,3600) typedef FormData_pg_ts_dict *Form_pg_ts_dict; -/* ---------------- - * compiler constants for pg_ts_dict - * ---------------- - */ -#define Natts_pg_ts_dict 5 -#define Anum_pg_ts_dict_dictname 1 -#define Anum_pg_ts_dict_dictnamespace 2 -#define Anum_pg_ts_dict_dictowner 3 -#define Anum_pg_ts_dict_dicttemplate 4 -#define Anum_pg_ts_dict_dictinitoption 5 - -/* ---------------- - * initial contents of pg_ts_dict - * ---------------- - */ - -DATA(insert OID = 3765 ( simple PGNSP PGUID 3727 _null_)); -DESCR("simple dictionary: just lower case and check for stopword"); - #endif /* PG_TS_DICT_H */ diff --git a/src/include/catalog/pg_ts_parser.dat b/src/include/catalog/pg_ts_parser.dat new file mode 100644 index 0000000000..8c50770596 --- /dev/null +++ b/src/include/catalog/pg_ts_parser.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_ts_parser.dat +# Initial contents of the pg_ts_parser system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_ts_parser.dat +# +#---------------------------------------------------------------------- + +[ + +{ oid => '3722', descr => 'default word parser', + prsname => 'default', prsstart => 'prsd_start', prstoken => 'prsd_nexttoken', + prsend => 'prsd_end', prsheadline => 'prsd_headline', + prslextype => 'prsd_lextype' }, + +] diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h index 7199916d36..ccaf40bbb4 100644 --- a/src/include/catalog/pg_ts_parser.h +++ b/src/include/catalog/pg_ts_parser.h @@ -10,11 +10,8 @@ * src/include/catalog/pg_ts_parser.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,46 +19,37 @@ #define PG_TS_PARSER_H #include "catalog/genbki.h" +#include "catalog/pg_ts_parser_d.h" /* ---------------- * pg_ts_parser definition. cpp turns this into * typedef struct FormData_pg_ts_parser * ---------------- */ -#define TSParserRelationId 3601 - -CATALOG(pg_ts_parser,3601) +CATALOG(pg_ts_parser,3601,TSParserRelationId) { - NameData prsname; /* parser's name */ - Oid prsnamespace; /* name space */ - regproc prsstart; /* init parsing session */ - regproc prstoken; /* return next token */ - regproc prsend; /* finalize parsing session */ - regproc prsheadline; /* return data for headline creation */ - regproc prslextype; /* return descriptions of lexeme's types */ + /* parser's name */ + NameData prsname; + + /* name space */ + Oid prsnamespace BKI_DEFAULT(PGNSP); + + /* init parsing session */ + regproc prsstart BKI_LOOKUP(pg_proc); + + /* return next token */ + regproc prstoken BKI_LOOKUP(pg_proc); + + /* finalize parsing session */ + regproc prsend BKI_LOOKUP(pg_proc); + + /* return data for headline creation */ + regproc prsheadline BKI_LOOKUP(pg_proc); + + /* return descriptions of lexeme's types */ + regproc prslextype BKI_LOOKUP(pg_proc); } FormData_pg_ts_parser; typedef FormData_pg_ts_parser *Form_pg_ts_parser; -/* ---------------- - * compiler constants for pg_ts_parser - * ---------------- - */ -#define Natts_pg_ts_parser 7 -#define Anum_pg_ts_parser_prsname 1 -#define Anum_pg_ts_parser_prsnamespace 2 -#define Anum_pg_ts_parser_prsstart 3 -#define Anum_pg_ts_parser_prstoken 4 -#define Anum_pg_ts_parser_prsend 5 -#define Anum_pg_ts_parser_prsheadline 6 -#define Anum_pg_ts_parser_prslextype 7 - -/* ---------------- - * initial contents of pg_ts_parser - * ---------------- - */ - -DATA(insert OID = 3722 ( default PGNSP prsd_start prsd_nexttoken prsd_end prsd_headline prsd_lextype )); -DESCR("default word parser"); - #endif /* PG_TS_PARSER_H */ diff --git a/src/include/catalog/pg_ts_template.dat b/src/include/catalog/pg_ts_template.dat new file mode 100644 index 0000000000..1322c39022 --- /dev/null +++ b/src/include/catalog/pg_ts_template.dat @@ -0,0 +1,30 @@ +#---------------------------------------------------------------------- +# +# pg_ts_template.dat +# Initial contents of the pg_ts_template system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_ts_template.dat +# +#---------------------------------------------------------------------- + +[ + +{ oid => '3727', + descr => 'simple dictionary: just lower case and check for stopword', + tmplname => 'simple', tmplinit => 'dsimple_init', + tmpllexize => 'dsimple_lexize' }, +{ oid => '3730', descr => 'synonym dictionary: replace word by its synonym', + tmplname => 'synonym', tmplinit => 'dsynonym_init', + tmpllexize => 'dsynonym_lexize' }, +{ oid => '3733', descr => 'ispell dictionary', + tmplname => 'ispell', tmplinit => 'dispell_init', + tmpllexize => 'dispell_lexize' }, +{ oid => '3742', + descr => 'thesaurus dictionary: phrase by phrase substitution', + tmplname => 'thesaurus', tmplinit => 'thesaurus_init', + tmpllexize => 'thesaurus_lexize' }, + +] diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h index a23c04e936..5e66e02bef 100644 --- a/src/include/catalog/pg_ts_template.h +++ b/src/include/catalog/pg_ts_template.h @@ -10,11 +10,8 @@ * src/include/catalog/pg_ts_template.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. - * - * XXX do NOT break up DATA() statements into multiple lines! - * the scripts are not as smart as you might think... + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -22,46 +19,28 @@ #define PG_TS_TEMPLATE_H #include "catalog/genbki.h" +#include "catalog/pg_ts_template_d.h" /* ---------------- * pg_ts_template definition. cpp turns this into * typedef struct FormData_pg_ts_template * ---------------- */ -#define TSTemplateRelationId 3764 - -CATALOG(pg_ts_template,3764) +CATALOG(pg_ts_template,3764,TSTemplateRelationId) { - NameData tmplname; /* template name */ - Oid tmplnamespace; /* name space */ - regproc tmplinit; /* initialization method of dict (may be 0) */ - regproc tmpllexize; /* base method of dictionary */ + /* template name */ + NameData tmplname; + + /* name space */ + Oid tmplnamespace BKI_DEFAULT(PGNSP); + + /* initialization method of dict (may be 0) */ + regproc tmplinit BKI_LOOKUP(pg_proc); + + /* base method of dictionary */ + regproc tmpllexize BKI_LOOKUP(pg_proc); } FormData_pg_ts_template; typedef FormData_pg_ts_template *Form_pg_ts_template; -/* ---------------- - * compiler constants for pg_ts_template - * ---------------- - */ -#define Natts_pg_ts_template 4 -#define Anum_pg_ts_template_tmplname 1 -#define Anum_pg_ts_template_tmplnamespace 2 -#define Anum_pg_ts_template_tmplinit 3 -#define Anum_pg_ts_template_tmpllexize 4 - -/* ---------------- - * initial contents of pg_ts_template - * ---------------- - */ - -DATA(insert OID = 3727 ( simple PGNSP dsimple_init dsimple_lexize )); -DESCR("simple dictionary: just lower case and check for stopword"); -DATA(insert OID = 3730 ( synonym PGNSP dsynonym_init dsynonym_lexize )); -DESCR("synonym dictionary: replace word by its synonym"); -DATA(insert OID = 3733 ( ispell PGNSP dispell_init dispell_lexize )); -DESCR("ispell dictionary"); -DATA(insert OID = 3742 ( thesaurus PGNSP thesaurus_init thesaurus_lexize )); -DESCR("thesaurus dictionary: phrase by phrase substitution"); - #endif /* PG_TS_TEMPLATE_H */ diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat new file mode 100644 index 0000000000..3c2c813756 --- /dev/null +++ b/src/include/catalog/pg_type.dat @@ -0,0 +1,942 @@ +#---------------------------------------------------------------------- +# +# pg_type.dat +# Initial contents of the pg_type system relation. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_type.dat +# +#---------------------------------------------------------------------- + +[ + +# For types used in the system catalogs, make sure the values here match +# TypInfo[] in bootstrap.c. + +# OID symbol macro names for pg_type OIDs are generated by genbki.pl +# according to the following rule, so you don't need to specify them +# here: +# foo_bar -> FOO_BAROID +# _foo_bar -> FOO_BARARRAYOID +# +# The only oid_symbol entries in this file are for names that don't match +# this rule, and are grandfathered in. + +# Once upon a time these entries were ordered by OID. Lately it's often +# been the custom to insert new entries adjacent to related older entries. +# Try to do one or the other though, don't just insert entries at random. + +# OIDS 1 - 99 + +{ oid => '16', descr => 'boolean, \'true\'/\'false\'', + typname => 'bool', typlen => '1', typbyval => 't', typcategory => 'B', + typispreferred => 't', typarray => '_bool', typinput => 'boolin', + typoutput => 'boolout', typreceive => 'boolrecv', typsend => 'boolsend', + typalign => 'c' }, +{ oid => '17', descr => 'variable-length string, binary values escaped', + typname => 'bytea', typlen => '-1', typbyval => 'f', typcategory => 'U', + typarray => '_bytea', typinput => 'byteain', typoutput => 'byteaout', + typreceive => 'bytearecv', typsend => 'byteasend', typalign => 'i', + typstorage => 'x' }, +{ oid => '18', descr => 'single character', + typname => 'char', typlen => '1', typbyval => 't', typcategory => 'S', + typarray => '_char', typinput => 'charin', typoutput => 'charout', + typreceive => 'charrecv', typsend => 'charsend', typalign => 'c' }, +{ oid => '19', descr => '63-byte type for storing system identifiers', + typname => 'name', typlen => 'NAMEDATALEN', typbyval => 'f', + typcategory => 'S', typelem => 'char', typarray => '_name', + typinput => 'namein', typoutput => 'nameout', typreceive => 'namerecv', + typsend => 'namesend', typalign => 'c' }, +{ oid => '20', descr => '~18 digit integer, 8-byte storage', + typname => 'int8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', + typcategory => 'N', typarray => '_int8', typinput => 'int8in', + typoutput => 'int8out', typreceive => 'int8recv', typsend => 'int8send', + typalign => 'd' }, +{ oid => '21', descr => '-32 thousand to 32 thousand, 2-byte storage', + typname => 'int2', typlen => '2', typbyval => 't', typcategory => 'N', + typarray => '_int2', typinput => 'int2in', typoutput => 'int2out', + typreceive => 'int2recv', typsend => 'int2send', typalign => 's' }, +{ oid => '22', descr => 'array of int2, used in system tables', + typname => 'int2vector', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'int2', typarray => '_int2vector', typinput => 'int2vectorin', + typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', + typsend => 'int2vectorsend', typalign => 'i' }, +{ oid => '23', descr => '-2 billion to 2 billion integer, 4-byte storage', + typname => 'int4', typlen => '4', typbyval => 't', typcategory => 'N', + typarray => '_int4', typinput => 'int4in', typoutput => 'int4out', + typreceive => 'int4recv', typsend => 'int4send', typalign => 'i' }, +{ oid => '24', descr => 'registered procedure', + typname => 'regproc', typlen => '4', typbyval => 't', typcategory => 'N', + typarray => '_regproc', typinput => 'regprocin', typoutput => 'regprocout', + typreceive => 'regprocrecv', typsend => 'regprocsend', typalign => 'i' }, +{ oid => '25', descr => 'variable-length string, no limit specified', + typname => 'text', typlen => '-1', typbyval => 'f', typcategory => 'S', + typispreferred => 't', typarray => '_text', typinput => 'textin', + typoutput => 'textout', typreceive => 'textrecv', typsend => 'textsend', + typalign => 'i', typstorage => 'x', typcollation => '100' }, +{ oid => '26', descr => 'object identifier(oid), maximum 4 billion', + typname => 'oid', typlen => '4', typbyval => 't', typcategory => 'N', + typispreferred => 't', typarray => '_oid', typinput => 'oidin', + typoutput => 'oidout', typreceive => 'oidrecv', typsend => 'oidsend', + typalign => 'i' }, +{ oid => '27', descr => '(block, offset), physical location of tuple', + typname => 'tid', typlen => '6', typbyval => 'f', typcategory => 'U', + typarray => '_tid', typinput => 'tidin', typoutput => 'tidout', + typreceive => 'tidrecv', typsend => 'tidsend', typalign => 's' }, +{ oid => '28', descr => 'transaction id', + typname => 'xid', typlen => '4', typbyval => 't', typcategory => 'U', + typarray => '_xid', typinput => 'xidin', typoutput => 'xidout', + typreceive => 'xidrecv', typsend => 'xidsend', typalign => 'i' }, +{ oid => '29', descr => 'command identifier type, sequence in transaction id', + typname => 'cid', typlen => '4', typbyval => 't', typcategory => 'U', + typarray => '_cid', typinput => 'cidin', typoutput => 'cidout', + typreceive => 'cidrecv', typsend => 'cidsend', typalign => 'i' }, +{ oid => '30', descr => 'array of oids, used in system tables', + typname => 'oidvector', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'oid', typarray => '_oidvector', typinput => 'oidvectorin', + typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', + typsend => 'oidvectorsend', typalign => 'i' }, + +# hand-built rowtype entries for bootstrapped catalogs +# NB: OIDs assigned here must match the BKI_ROWTYPE_OID declarations +{ oid => '71', + typname => 'pg_type', typlen => '-1', typbyval => 'f', typtype => 'c', + typcategory => 'C', typrelid => '1247', typinput => 'record_in', + typoutput => 'record_out', typreceive => 'record_recv', + typsend => 'record_send', typalign => 'd', typstorage => 'x' }, +{ oid => '75', + typname => 'pg_attribute', typlen => '-1', typbyval => 'f', typtype => 'c', + typcategory => 'C', typrelid => '1249', typinput => 'record_in', + typoutput => 'record_out', typreceive => 'record_recv', + typsend => 'record_send', typalign => 'd', typstorage => 'x' }, +{ oid => '81', + typname => 'pg_proc', typlen => '-1', typbyval => 'f', typtype => 'c', + typcategory => 'C', typrelid => '1255', typinput => 'record_in', + typoutput => 'record_out', typreceive => 'record_recv', + typsend => 'record_send', typalign => 'd', typstorage => 'x' }, +{ oid => '83', + typname => 'pg_class', typlen => '-1', typbyval => 'f', typtype => 'c', + typcategory => 'C', typrelid => '1259', typinput => 'record_in', + typoutput => 'record_out', typreceive => 'record_recv', + typsend => 'record_send', typalign => 'd', typstorage => 'x' }, + +# OIDS 100 - 199 + +{ oid => '114', + typname => 'json', typlen => '-1', typbyval => 'f', typcategory => 'U', + typarray => '_json', typinput => 'json_in', typoutput => 'json_out', + typreceive => 'json_recv', typsend => 'json_send', typalign => 'i', + typstorage => 'x' }, +{ oid => '142', descr => 'XML content', + typname => 'xml', typlen => '-1', typbyval => 'f', typcategory => 'U', + typarray => '_xml', typinput => 'xml_in', typoutput => 'xml_out', + typreceive => 'xml_recv', typsend => 'xml_send', typalign => 'i', + typstorage => 'x' }, +{ oid => '143', + typname => '_xml', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'xml', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '199', + typname => '_json', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'json', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '194', oid_symbol => 'PGNODETREEOID', + descr => 'string representing an internal node tree', + typname => 'pg_node_tree', typlen => '-1', typbyval => 'f', + typcategory => 'S', typinput => 'pg_node_tree_in', + typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', + typsend => 'pg_node_tree_send', typalign => 'i', typstorage => 'x', + typcollation => '100' }, +{ oid => '3361', oid_symbol => 'PGNDISTINCTOID', + descr => 'multivariate ndistinct coefficients', + typname => 'pg_ndistinct', typlen => '-1', typbyval => 'f', + typcategory => 'S', typinput => 'pg_ndistinct_in', + typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', + typsend => 'pg_ndistinct_send', typalign => 'i', typstorage => 'x', + typcollation => '100' }, +{ oid => '3402', oid_symbol => 'PGDEPENDENCIESOID', + descr => 'multivariate dependencies', + typname => 'pg_dependencies', typlen => '-1', typbyval => 'f', + typcategory => 'S', typinput => 'pg_dependencies_in', + typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', + typsend => 'pg_dependencies_send', typalign => 'i', typstorage => 'x', + typcollation => '100' }, +{ oid => '32', oid_symbol => 'PGDDLCOMMANDOID', + descr => 'internal type for passing CollectedCommand', + typname => 'pg_ddl_command', typlen => 'SIZEOF_POINTER', typbyval => 't', + typtype => 'p', typcategory => 'P', typinput => 'pg_ddl_command_in', + typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', + typsend => 'pg_ddl_command_send', typalign => 'ALIGNOF_POINTER' }, + +# OIDS 200 - 299 + +{ oid => '210', descr => 'storage manager', + typname => 'smgr', typlen => '2', typbyval => 't', typcategory => 'U', + typinput => 'smgrin', typoutput => 'smgrout', typreceive => '-', + typsend => '-', typalign => 's' }, + +# OIDS 600 - 699 + +{ oid => '600', descr => 'geometric point \'(x, y)\'', + typname => 'point', typlen => '16', typbyval => 'f', typcategory => 'G', + typelem => 'float8', typarray => '_point', typinput => 'point_in', + typoutput => 'point_out', typreceive => 'point_recv', typsend => 'point_send', + typalign => 'd' }, +{ oid => '601', descr => 'geometric line segment \'(pt1,pt2)\'', + typname => 'lseg', typlen => '32', typbyval => 'f', typcategory => 'G', + typelem => 'point', typarray => '_lseg', typinput => 'lseg_in', + typoutput => 'lseg_out', typreceive => 'lseg_recv', typsend => 'lseg_send', + typalign => 'd' }, +{ oid => '602', descr => 'geometric path \'(pt1,...)\'', + typname => 'path', typlen => '-1', typbyval => 'f', typcategory => 'G', + typarray => '_path', typinput => 'path_in', typoutput => 'path_out', + typreceive => 'path_recv', typsend => 'path_send', typalign => 'd', + typstorage => 'x' }, +{ oid => '603', descr => 'geometric box \'(lower left,upper right)\'', + typname => 'box', typlen => '32', typbyval => 'f', typcategory => 'G', + typdelim => '\073', typelem => 'point', typarray => '_box', + typinput => 'box_in', typoutput => 'box_out', typreceive => 'box_recv', + typsend => 'box_send', typalign => 'd' }, +{ oid => '604', descr => 'geometric polygon \'(pt1,...)\'', + typname => 'polygon', typlen => '-1', typbyval => 'f', typcategory => 'G', + typarray => '_polygon', typinput => 'poly_in', typoutput => 'poly_out', + typreceive => 'poly_recv', typsend => 'poly_send', typalign => 'd', + typstorage => 'x' }, +{ oid => '628', descr => 'geometric line', + typname => 'line', typlen => '24', typbyval => 'f', typcategory => 'G', + typelem => 'float8', typarray => '_line', typinput => 'line_in', + typoutput => 'line_out', typreceive => 'line_recv', typsend => 'line_send', + typalign => 'd' }, +{ oid => '629', + typname => '_line', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'line', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, + +# OIDS 700 - 799 + +{ oid => '700', + descr => 'single-precision floating point number, 4-byte storage', + typname => 'float4', typlen => '4', typbyval => 'FLOAT4PASSBYVAL', + typcategory => 'N', typarray => '_float4', typinput => 'float4in', + typoutput => 'float4out', typreceive => 'float4recv', typsend => 'float4send', + typalign => 'i' }, +{ oid => '701', + descr => 'double-precision floating point number, 8-byte storage', + typname => 'float8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', + typcategory => 'N', typispreferred => 't', typarray => '_float8', + typinput => 'float8in', typoutput => 'float8out', typreceive => 'float8recv', + typsend => 'float8send', typalign => 'd' }, +{ oid => '702', + descr => 'absolute, limited-range date and time (Unix system time)', + typname => 'abstime', typlen => '4', typbyval => 't', typcategory => 'D', + typarray => '_abstime', typinput => 'abstimein', typoutput => 'abstimeout', + typreceive => 'abstimerecv', typsend => 'abstimesend', typalign => 'i' }, +{ oid => '703', + descr => 'relative, limited-range time interval (Unix delta time)', + typname => 'reltime', typlen => '4', typbyval => 't', typcategory => 'T', + typarray => '_reltime', typinput => 'reltimein', typoutput => 'reltimeout', + typreceive => 'reltimerecv', typsend => 'reltimesend', typalign => 'i' }, +{ oid => '704', descr => '(abstime,abstime), time interval', + typname => 'tinterval', typlen => '12', typbyval => 'f', typcategory => 'T', + typarray => '_tinterval', typinput => 'tintervalin', + typoutput => 'tintervalout', typreceive => 'tintervalrecv', + typsend => 'tintervalsend', typalign => 'i' }, +{ oid => '705', + typname => 'unknown', typlen => '-2', typbyval => 'f', typtype => 'p', + typcategory => 'X', typinput => 'unknownin', typoutput => 'unknownout', + typreceive => 'unknownrecv', typsend => 'unknownsend', typalign => 'c' }, +{ oid => '718', descr => 'geometric circle \'(center,radius)\'', + typname => 'circle', typlen => '24', typbyval => 'f', typcategory => 'G', + typarray => '_circle', typinput => 'circle_in', typoutput => 'circle_out', + typreceive => 'circle_recv', typsend => 'circle_send', typalign => 'd' }, +{ oid => '719', + typname => '_circle', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'circle', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '790', oid_symbol => 'CASHOID', + descr => 'monetary amounts, $d,ddd.cc', + typname => 'money', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', + typcategory => 'N', typarray => '_money', typinput => 'cash_in', + typoutput => 'cash_out', typreceive => 'cash_recv', typsend => 'cash_send', + typalign => 'd' }, +{ oid => '791', + typname => '_money', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'money', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, + +# OIDS 800 - 899 + +{ oid => '829', descr => 'XX:XX:XX:XX:XX:XX, MAC address', + typname => 'macaddr', typlen => '6', typbyval => 'f', typcategory => 'U', + typarray => '_macaddr', typinput => 'macaddr_in', typoutput => 'macaddr_out', + typreceive => 'macaddr_recv', typsend => 'macaddr_send', typalign => 'i' }, +{ oid => '869', descr => 'IP address/netmask, host address, netmask optional', + typname => 'inet', typlen => '-1', typbyval => 'f', typcategory => 'I', + typispreferred => 't', typarray => '_inet', typinput => 'inet_in', + typoutput => 'inet_out', typreceive => 'inet_recv', typsend => 'inet_send', + typalign => 'i', typstorage => 'm' }, +{ oid => '650', descr => 'network IP address/netmask, network address', + typname => 'cidr', typlen => '-1', typbyval => 'f', typcategory => 'I', + typarray => '_cidr', typinput => 'cidr_in', typoutput => 'cidr_out', + typreceive => 'cidr_recv', typsend => 'cidr_send', typalign => 'i', + typstorage => 'm' }, +{ oid => '774', descr => 'XX:XX:XX:XX:XX:XX:XX:XX, MAC address', + typname => 'macaddr8', typlen => '8', typbyval => 'f', typcategory => 'U', + typarray => '_macaddr8', typinput => 'macaddr8_in', + typoutput => 'macaddr8_out', typreceive => 'macaddr8_recv', + typsend => 'macaddr8_send', typalign => 'i' }, + +# OIDS 1000 - 1099 + +{ oid => '1000', + typname => '_bool', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'bool', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1001', + typname => '_bytea', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'bytea', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1002', + typname => '_char', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'char', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1003', + typname => '_name', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'name', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1005', + typname => '_int2', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'int2', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1006', + typname => '_int2vector', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'int2vector', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1007', + typname => '_int4', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'int4', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1008', + typname => '_regproc', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'regproc', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1009', + typname => '_text', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'text', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', + typcollation => '100' }, +{ oid => '1028', + typname => '_oid', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'oid', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1010', + typname => '_tid', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'tid', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1011', + typname => '_xid', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'xid', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1012', + typname => '_cid', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'cid', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1013', + typname => '_oidvector', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'oidvector', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1014', + typname => '_bpchar', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'bpchar', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typmodin => 'bpchartypmodin', typmodout => 'bpchartypmodout', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', + typcollation => '100' }, +{ oid => '1015', + typname => '_varchar', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'varchar', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typmodin => 'varchartypmodin', typmodout => 'varchartypmodout', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x', + typcollation => '100' }, +{ oid => '1016', + typname => '_int8', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'int8', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '1017', + typname => '_point', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'point', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '1018', + typname => '_lseg', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'lseg', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '1019', + typname => '_path', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'path', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '1020', + typname => '_box', typlen => '-1', typbyval => 'f', typcategory => 'A', + typdelim => '\073', typelem => 'box', typinput => 'array_in', + typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '1021', + typname => '_float4', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'float4', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1022', + typname => '_float8', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'float8', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '1023', + typname => '_abstime', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'abstime', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1024', + typname => '_reltime', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'reltime', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1025', + typname => '_tinterval', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'tinterval', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1027', + typname => '_polygon', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'polygon', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '1033', descr => 'access control list', + typname => 'aclitem', typlen => '12', typbyval => 'f', typcategory => 'U', + typarray => '_aclitem', typinput => 'aclitemin', typoutput => 'aclitemout', + typreceive => '-', typsend => '-', typalign => 'i' }, +{ oid => '1034', + typname => '_aclitem', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'aclitem', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1040', + typname => '_macaddr', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'macaddr', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '775', + typname => '_macaddr8', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'macaddr8', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1041', + typname => '_inet', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'inet', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '651', + typname => '_cidr', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'cidr', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1263', + typname => '_cstring', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'cstring', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1042', + descr => 'char(length), blank-padded string, fixed storage length', + typname => 'bpchar', typlen => '-1', typbyval => 'f', typcategory => 'S', + typarray => '_bpchar', typinput => 'bpcharin', typoutput => 'bpcharout', + typreceive => 'bpcharrecv', typsend => 'bpcharsend', + typmodin => 'bpchartypmodin', typmodout => 'bpchartypmodout', typalign => 'i', + typstorage => 'x', typcollation => '100' }, +{ oid => '1043', + descr => 'varchar(length), non-blank-padded string, variable storage length', + typname => 'varchar', typlen => '-1', typbyval => 'f', typcategory => 'S', + typarray => '_varchar', typinput => 'varcharin', typoutput => 'varcharout', + typreceive => 'varcharrecv', typsend => 'varcharsend', + typmodin => 'varchartypmodin', typmodout => 'varchartypmodout', + typalign => 'i', typstorage => 'x', typcollation => '100' }, +{ oid => '1082', descr => 'date', + typname => 'date', typlen => '4', typbyval => 't', typcategory => 'D', + typarray => '_date', typinput => 'date_in', typoutput => 'date_out', + typreceive => 'date_recv', typsend => 'date_send', typalign => 'i' }, +{ oid => '1083', descr => 'time of day', + typname => 'time', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', + typcategory => 'D', typarray => '_time', typinput => 'time_in', + typoutput => 'time_out', typreceive => 'time_recv', typsend => 'time_send', + typmodin => 'timetypmodin', typmodout => 'timetypmodout', typalign => 'd' }, + +# OIDS 1100 - 1199 + +{ oid => '1114', descr => 'date and time', + typname => 'timestamp', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', + typcategory => 'D', typarray => '_timestamp', typinput => 'timestamp_in', + typoutput => 'timestamp_out', typreceive => 'timestamp_recv', + typsend => 'timestamp_send', typmodin => 'timestamptypmodin', + typmodout => 'timestamptypmodout', typalign => 'd' }, +{ oid => '1115', + typname => '_timestamp', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'timestamp', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typmodin => 'timestamptypmodin', typmodout => 'timestamptypmodout', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '1182', + typname => '_date', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'date', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1183', + typname => '_time', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'time', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typmodin => 'timetypmodin', typmodout => 'timetypmodout', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '1184', descr => 'date and time with time zone', + typname => 'timestamptz', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', + typcategory => 'D', typispreferred => 't', typarray => '_timestamptz', + typinput => 'timestamptz_in', typoutput => 'timestamptz_out', + typreceive => 'timestamptz_recv', typsend => 'timestamptz_send', + typmodin => 'timestamptztypmodin', typmodout => 'timestamptztypmodout', + typalign => 'd' }, +{ oid => '1185', + typname => '_timestamptz', typlen => '-1', typbyval => 'f', + typcategory => 'A', typelem => 'timestamptz', typinput => 'array_in', + typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', + typmodin => 'timestamptztypmodin', typmodout => 'timestamptztypmodout', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '1186', descr => '@ , time interval', + typname => 'interval', typlen => '16', typbyval => 'f', typcategory => 'T', + typispreferred => 't', typarray => '_interval', typinput => 'interval_in', + typoutput => 'interval_out', typreceive => 'interval_recv', + typsend => 'interval_send', typmodin => 'intervaltypmodin', + typmodout => 'intervaltypmodout', typalign => 'd' }, +{ oid => '1187', + typname => '_interval', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'interval', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typmodin => 'intervaltypmodin', typmodout => 'intervaltypmodout', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, + +# OIDS 1200 - 1299 + +{ oid => '1231', + typname => '_numeric', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'numeric', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1266', descr => 'time of day with time zone', + typname => 'timetz', typlen => '12', typbyval => 'f', typcategory => 'D', + typarray => '_timetz', typinput => 'timetz_in', typoutput => 'timetz_out', + typreceive => 'timetz_recv', typsend => 'timetz_send', + typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', + typalign => 'd' }, +{ oid => '1270', + typname => '_timetz', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'timetz', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typmodin => 'timetztypmodin', typmodout => 'timetztypmodout', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, + +# OIDS 1500 - 1599 + +{ oid => '1560', descr => 'fixed-length bit string', + typname => 'bit', typlen => '-1', typbyval => 'f', typcategory => 'V', + typarray => '_bit', typinput => 'bit_in', typoutput => 'bit_out', + typreceive => 'bit_recv', typsend => 'bit_send', typmodin => 'bittypmodin', + typmodout => 'bittypmodout', typalign => 'i', typstorage => 'x' }, +{ oid => '1561', + typname => '_bit', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'bit', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typmodin => 'bittypmodin', typmodout => 'bittypmodout', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '1562', descr => 'variable-length bit string', + typname => 'varbit', typlen => '-1', typbyval => 'f', typcategory => 'V', + typispreferred => 't', typarray => '_varbit', typinput => 'varbit_in', + typoutput => 'varbit_out', typreceive => 'varbit_recv', + typsend => 'varbit_send', typmodin => 'varbittypmodin', + typmodout => 'varbittypmodout', typalign => 'i', typstorage => 'x' }, +{ oid => '1563', + typname => '_varbit', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'varbit', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typmodin => 'varbittypmodin', typmodout => 'varbittypmodout', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, + +# OIDS 1700 - 1799 + +{ oid => '1700', + descr => 'numeric(precision, decimal), arbitrary precision number', + typname => 'numeric', typlen => '-1', typbyval => 'f', typcategory => 'N', + typarray => '_numeric', typinput => 'numeric_in', typoutput => 'numeric_out', + typreceive => 'numeric_recv', typsend => 'numeric_send', + typmodin => 'numerictypmodin', typmodout => 'numerictypmodout', + typalign => 'i', typstorage => 'm' }, + +{ oid => '1790', descr => 'reference to cursor (portal name)', + typname => 'refcursor', typlen => '-1', typbyval => 'f', typcategory => 'U', + typarray => '_refcursor', typinput => 'textin', typoutput => 'textout', + typreceive => 'textrecv', typsend => 'textsend', typalign => 'i', + typstorage => 'x' }, + +# OIDS 2200 - 2299 + +{ oid => '2201', + typname => '_refcursor', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'refcursor', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, + +{ oid => '2202', descr => 'registered procedure (with args)', + typname => 'regprocedure', typlen => '4', typbyval => 't', typcategory => 'N', + typarray => '_regprocedure', typinput => 'regprocedurein', + typoutput => 'regprocedureout', typreceive => 'regprocedurerecv', + typsend => 'regproceduresend', typalign => 'i' }, +{ oid => '2203', descr => 'registered operator', + typname => 'regoper', typlen => '4', typbyval => 't', typcategory => 'N', + typarray => '_regoper', typinput => 'regoperin', typoutput => 'regoperout', + typreceive => 'regoperrecv', typsend => 'regopersend', typalign => 'i' }, +{ oid => '2204', descr => 'registered operator (with args)', + typname => 'regoperator', typlen => '4', typbyval => 't', typcategory => 'N', + typarray => '_regoperator', typinput => 'regoperatorin', + typoutput => 'regoperatorout', typreceive => 'regoperatorrecv', + typsend => 'regoperatorsend', typalign => 'i' }, +{ oid => '2205', descr => 'registered class', + typname => 'regclass', typlen => '4', typbyval => 't', typcategory => 'N', + typarray => '_regclass', typinput => 'regclassin', typoutput => 'regclassout', + typreceive => 'regclassrecv', typsend => 'regclasssend', typalign => 'i' }, +{ oid => '2206', descr => 'registered type', + typname => 'regtype', typlen => '4', typbyval => 't', typcategory => 'N', + typarray => '_regtype', typinput => 'regtypein', typoutput => 'regtypeout', + typreceive => 'regtyperecv', typsend => 'regtypesend', typalign => 'i' }, +{ oid => '4096', descr => 'registered role', + typname => 'regrole', typlen => '4', typbyval => 't', typcategory => 'N', + typarray => '_regrole', typinput => 'regrolein', typoutput => 'regroleout', + typreceive => 'regrolerecv', typsend => 'regrolesend', typalign => 'i' }, +{ oid => '4089', descr => 'registered namespace', + typname => 'regnamespace', typlen => '4', typbyval => 't', typcategory => 'N', + typarray => '_regnamespace', typinput => 'regnamespacein', + typoutput => 'regnamespaceout', typreceive => 'regnamespacerecv', + typsend => 'regnamespacesend', typalign => 'i' }, +{ oid => '2207', + typname => '_regprocedure', typlen => '-1', typbyval => 'f', + typcategory => 'A', typelem => 'regprocedure', typinput => 'array_in', + typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '2208', + typname => '_regoper', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'regoper', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '2209', + typname => '_regoperator', typlen => '-1', typbyval => 'f', + typcategory => 'A', typelem => 'regoperator', typinput => 'array_in', + typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '2210', + typname => '_regclass', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'regclass', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '2211', + typname => '_regtype', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'regtype', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '4097', + typname => '_regrole', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'regrole', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '4090', + typname => '_regnamespace', typlen => '-1', typbyval => 'f', + typcategory => 'A', typelem => 'regnamespace', typinput => 'array_in', + typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, + +# uuid +{ oid => '2950', descr => 'UUID datatype', + typname => 'uuid', typlen => '16', typbyval => 'f', typcategory => 'U', + typarray => '_uuid', typinput => 'uuid_in', typoutput => 'uuid_out', + typreceive => 'uuid_recv', typsend => 'uuid_send', typalign => 'c' }, +{ oid => '2951', + typname => '_uuid', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'uuid', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, + +# pg_lsn +{ oid => '3220', oid_symbol => 'LSNOID', descr => 'PostgreSQL LSN datatype', + typname => 'pg_lsn', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', + typcategory => 'U', typarray => '_pg_lsn', typinput => 'pg_lsn_in', + typoutput => 'pg_lsn_out', typreceive => 'pg_lsn_recv', + typsend => 'pg_lsn_send', typalign => 'd' }, +{ oid => '3221', + typname => '_pg_lsn', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'pg_lsn', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, + +# text search +{ oid => '3614', descr => 'text representation for text search', + typname => 'tsvector', typlen => '-1', typbyval => 'f', typcategory => 'U', + typarray => '_tsvector', typinput => 'tsvectorin', typoutput => 'tsvectorout', + typreceive => 'tsvectorrecv', typsend => 'tsvectorsend', + typanalyze => 'ts_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '3642', + descr => 'GiST index internal text representation for text search', + typname => 'gtsvector', typlen => '-1', typbyval => 'f', typcategory => 'U', + typarray => '_gtsvector', typinput => 'gtsvectorin', + typoutput => 'gtsvectorout', typreceive => '-', typsend => '-', + typalign => 'i' }, +{ oid => '3615', descr => 'query representation for text search', + typname => 'tsquery', typlen => '-1', typbyval => 'f', typcategory => 'U', + typarray => '_tsquery', typinput => 'tsqueryin', typoutput => 'tsqueryout', + typreceive => 'tsqueryrecv', typsend => 'tsquerysend', typalign => 'i' }, +{ oid => '3734', descr => 'registered text search configuration', + typname => 'regconfig', typlen => '4', typbyval => 't', typcategory => 'N', + typarray => '_regconfig', typinput => 'regconfigin', + typoutput => 'regconfigout', typreceive => 'regconfigrecv', + typsend => 'regconfigsend', typalign => 'i' }, +{ oid => '3769', descr => 'registered text search dictionary', + typname => 'regdictionary', typlen => '4', typbyval => 't', + typcategory => 'N', typarray => '_regdictionary', + typinput => 'regdictionaryin', typoutput => 'regdictionaryout', + typreceive => 'regdictionaryrecv', typsend => 'regdictionarysend', + typalign => 'i' }, + +{ oid => '3643', + typname => '_tsvector', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'tsvector', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '3644', + typname => '_gtsvector', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'gtsvector', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '3645', + typname => '_tsquery', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'tsquery', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '3735', + typname => '_regconfig', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'regconfig', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '3770', + typname => '_regdictionary', typlen => '-1', typbyval => 'f', + typcategory => 'A', typelem => 'regdictionary', typinput => 'array_in', + typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, + +# jsonb +{ oid => '3802', descr => 'Binary JSON', + typname => 'jsonb', typlen => '-1', typbyval => 'f', typcategory => 'U', + typarray => '_jsonb', typinput => 'jsonb_in', typoutput => 'jsonb_out', + typreceive => 'jsonb_recv', typsend => 'jsonb_send', typalign => 'i', + typstorage => 'x' }, +{ oid => '3807', + typname => '_jsonb', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'jsonb', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, + +{ oid => '2970', descr => 'txid snapshot', + typname => 'txid_snapshot', typlen => '-1', typbyval => 'f', + typcategory => 'U', typarray => '_txid_snapshot', + typinput => 'txid_snapshot_in', typoutput => 'txid_snapshot_out', + typreceive => 'txid_snapshot_recv', typsend => 'txid_snapshot_send', + typalign => 'd', typstorage => 'x' }, +{ oid => '2949', + typname => '_txid_snapshot', typlen => '-1', typbyval => 'f', + typcategory => 'A', typelem => 'txid_snapshot', typinput => 'array_in', + typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, + +# range types +{ oid => '3904', descr => 'range of integers', + typname => 'int4range', typlen => '-1', typbyval => 'f', typtype => 'r', + typcategory => 'R', typarray => '_int4range', typinput => 'range_in', + typoutput => 'range_out', typreceive => 'range_recv', typsend => 'range_send', + typanalyze => 'range_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '3905', + typname => '_int4range', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'int4range', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '3906', descr => 'range of numerics', + typname => 'numrange', typlen => '-1', typbyval => 'f', typtype => 'r', + typcategory => 'R', typarray => '_numrange', typinput => 'range_in', + typoutput => 'range_out', typreceive => 'range_recv', typsend => 'range_send', + typanalyze => 'range_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '3907', + typname => '_numrange', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'numrange', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '3908', descr => 'range of timestamps without time zone', + typname => 'tsrange', typlen => '-1', typbyval => 'f', typtype => 'r', + typcategory => 'R', typarray => '_tsrange', typinput => 'range_in', + typoutput => 'range_out', typreceive => 'range_recv', typsend => 'range_send', + typanalyze => 'range_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '3909', + typname => '_tsrange', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'tsrange', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '3910', descr => 'range of timestamps with time zone', + typname => 'tstzrange', typlen => '-1', typbyval => 'f', typtype => 'r', + typcategory => 'R', typarray => '_tstzrange', typinput => 'range_in', + typoutput => 'range_out', typreceive => 'range_recv', typsend => 'range_send', + typanalyze => 'range_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '3911', + typname => '_tstzrange', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'tstzrange', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '3912', descr => 'range of dates', + typname => 'daterange', typlen => '-1', typbyval => 'f', typtype => 'r', + typcategory => 'R', typarray => '_daterange', typinput => 'range_in', + typoutput => 'range_out', typreceive => 'range_recv', typsend => 'range_send', + typanalyze => 'range_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '3913', + typname => '_daterange', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'daterange', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'i', typstorage => 'x' }, +{ oid => '3926', descr => 'range of bigints', + typname => 'int8range', typlen => '-1', typbyval => 'f', typtype => 'r', + typcategory => 'R', typarray => '_int8range', typinput => 'range_in', + typoutput => 'range_out', typreceive => 'range_recv', typsend => 'range_send', + typanalyze => 'range_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '3927', + typname => '_int8range', typlen => '-1', typbyval => 'f', typcategory => 'A', + typelem => 'int8range', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, + +# pseudo-types +# types with typtype='p' represent various special cases in the type system. +# These cannot be used to define table columns, but are valid as function +# argument and result types (if supported by the function's implementation +# language). +# Note: cstring is a borderline case; it is still considered a pseudo-type, +# but there is now support for it in records and arrays. Perhaps we should +# just treat it as a regular base type? + +{ oid => '2249', + typname => 'record', typlen => '-1', typbyval => 'f', typtype => 'p', + typcategory => 'P', typarray => '_record', typinput => 'record_in', + typoutput => 'record_out', typreceive => 'record_recv', + typsend => 'record_send', typalign => 'd', typstorage => 'x' }, +{ oid => '2287', + typname => '_record', typlen => '-1', typbyval => 'f', typtype => 'p', + typcategory => 'P', typelem => 'record', typinput => 'array_in', + typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', + typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, +{ oid => '2275', + typname => 'cstring', typlen => '-2', typbyval => 'f', typtype => 'p', + typcategory => 'P', typarray => '_cstring', typinput => 'cstring_in', + typoutput => 'cstring_out', typreceive => 'cstring_recv', + typsend => 'cstring_send', typalign => 'c' }, +{ oid => '2276', + typname => 'any', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'any_in', typoutput => 'any_out', + typreceive => '-', typsend => '-', typalign => 'i' }, +{ oid => '2277', + typname => 'anyarray', typlen => '-1', typbyval => 'f', typtype => 'p', + typcategory => 'P', typinput => 'anyarray_in', typoutput => 'anyarray_out', + typreceive => 'anyarray_recv', typsend => 'anyarray_send', typalign => 'd', + typstorage => 'x' }, +{ oid => '2278', + typname => 'void', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'void_in', typoutput => 'void_out', + typreceive => 'void_recv', typsend => 'void_send', typalign => 'i' }, +{ oid => '2279', + typname => 'trigger', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'trigger_in', typoutput => 'trigger_out', + typreceive => '-', typsend => '-', typalign => 'i' }, +{ oid => '3838', oid_symbol => 'EVTTRIGGEROID', + typname => 'event_trigger', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'event_trigger_in', + typoutput => 'event_trigger_out', typreceive => '-', typsend => '-', + typalign => 'i' }, +{ oid => '2280', + typname => 'language_handler', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'language_handler_in', + typoutput => 'language_handler_out', typreceive => '-', typsend => '-', + typalign => 'i' }, +{ oid => '2281', + typname => 'internal', typlen => 'SIZEOF_POINTER', typbyval => 't', + typtype => 'p', typcategory => 'P', typinput => 'internal_in', + typoutput => 'internal_out', typreceive => '-', typsend => '-', + typalign => 'ALIGNOF_POINTER' }, +{ oid => '2282', + typname => 'opaque', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'opaque_in', typoutput => 'opaque_out', + typreceive => '-', typsend => '-', typalign => 'i' }, +{ oid => '2283', + typname => 'anyelement', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'anyelement_in', + typoutput => 'anyelement_out', typreceive => '-', typsend => '-', + typalign => 'i' }, +{ oid => '2776', + typname => 'anynonarray', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'anynonarray_in', + typoutput => 'anynonarray_out', typreceive => '-', typsend => '-', + typalign => 'i' }, +{ oid => '3500', + typname => 'anyenum', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'anyenum_in', typoutput => 'anyenum_out', + typreceive => '-', typsend => '-', typalign => 'i' }, +{ oid => '3115', + typname => 'fdw_handler', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'fdw_handler_in', + typoutput => 'fdw_handler_out', typreceive => '-', typsend => '-', + typalign => 'i' }, +{ oid => '325', + typname => 'index_am_handler', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'index_am_handler_in', + typoutput => 'index_am_handler_out', typreceive => '-', typsend => '-', + typalign => 'i' }, +{ oid => '3310', + typname => 'tsm_handler', typlen => '4', typbyval => 't', typtype => 'p', + typcategory => 'P', typinput => 'tsm_handler_in', + typoutput => 'tsm_handler_out', typreceive => '-', typsend => '-', + typalign => 'i' }, +{ oid => '3831', + typname => 'anyrange', typlen => '-1', typbyval => 'f', typtype => 'p', + typcategory => 'P', typinput => 'anyrange_in', typoutput => 'anyrange_out', + typreceive => '-', typsend => '-', typalign => 'd', typstorage => 'x' }, + +] diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h index 5b5b1218de..cf068dc7d5 100644 --- a/src/include/catalog/pg_type.h +++ b/src/include/catalog/pg_type.h @@ -2,7 +2,6 @@ * * pg_type.h * definition of the system "type" relation (pg_type) - * along with the relation's initial contents. * * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group @@ -11,8 +10,8 @@ * src/include/catalog/pg_type.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -20,6 +19,7 @@ #define PG_TYPE_H #include "catalog/genbki.h" +#include "catalog/pg_type_d.h" /* ---------------- * pg_type definition. cpp turns this into @@ -31,14 +31,16 @@ * See struct FormData_pg_attribute for details. * ---------------- */ -#define TypeRelationId 1247 -#define TypeRelation_Rowtype_Id 71 - -CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO +CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelation_Rowtype_Id) BKI_SCHEMA_MACRO { - NameData typname; /* type name */ - Oid typnamespace; /* OID of namespace containing this type */ - Oid typowner; /* type owner */ + /* type name */ + NameData typname; + + /* OID of namespace containing this type */ + Oid typnamespace BKI_DEFAULT(PGNSP); + + /* type owner */ + Oid typowner BKI_DEFAULT(PGUID); /* * For a fixed-size type, typlen is the number of bytes we use to @@ -66,7 +68,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * * If typtype is 'c', typrelid is the OID of the class' entry in pg_class. */ - char typtype; + char typtype BKI_DEFAULT(b); /* * typcategory and typispreferred help the parser distinguish preferred @@ -74,19 +76,24 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * character (but not \0). The categories used for built-in types are * identified by the TYPCATEGORY macros below. */ - char typcategory; /* arbitrary type classification */ - bool typispreferred; /* is type "preferred" within its category? */ + /* arbitrary type classification */ + char typcategory; + + /* is type "preferred" within its category? */ + bool typispreferred BKI_DEFAULT(f); /* * If typisdefined is false, the entry is only a placeholder (forward * reference). We know the type name, but not yet anything else about it. */ - bool typisdefined; + bool typisdefined BKI_DEFAULT(t); - char typdelim; /* delimiter for arrays of this type */ + /* delimiter for arrays of this type */ + char typdelim BKI_DEFAULT("\054"); - Oid typrelid; /* 0 if not a composite type */ + /* associated pg_class OID if a composite type, else 0 */ + Oid typrelid BKI_DEFAULT(0); /* * If typelem is not 0 then it identifies another row in pg_type. The @@ -99,32 +106,36 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * * typelem != 0 and typlen == -1. */ - Oid typelem; + Oid typelem BKI_DEFAULT(0) BKI_LOOKUP(pg_type); /* * If there is a "true" array type having this type as element type, * typarray links to it. Zero if no associated "true" array type. */ - Oid typarray; + Oid typarray BKI_DEFAULT(0) BKI_LOOKUP(pg_type); /* * I/O conversion procedures for the datatype. */ - regproc typinput; /* text format (required) */ - regproc typoutput; - regproc typreceive; /* binary format (optional) */ - regproc typsend; + + /* text format (required) */ + regproc typinput BKI_LOOKUP(pg_proc); + regproc typoutput BKI_LOOKUP(pg_proc); + + /* binary format (optional) */ + regproc typreceive BKI_LOOKUP(pg_proc); + regproc typsend BKI_LOOKUP(pg_proc); /* * I/O functions for optional type modifiers. */ - regproc typmodin; - regproc typmodout; + regproc typmodin BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); + regproc typmodout BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* * Custom ANALYZE procedure for the datatype (0 selects the default). */ - regproc typanalyze; + regproc typanalyze BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* ---------------- * typalign is the alignment required when storing a value of this @@ -162,7 +173,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * 'm' MAIN like 'x' but try to keep in main tuple * ---------------- */ - char typstorage; + char typstorage BKI_DEFAULT(p); /* * This flag represents a "NOT NULL" constraint against this datatype. @@ -172,32 +183,32 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * * Used primarily for domain types. */ - bool typnotnull; + bool typnotnull BKI_DEFAULT(f); /* * Domains use typbasetype to show the base (or domain) type that the * domain is based on. Zero if the type is not a domain. */ - Oid typbasetype; + Oid typbasetype BKI_DEFAULT(0); /* * Domains use typtypmod to record the typmod to be applied to their base * type (-1 if base type does not use a typmod). -1 if this type is not a * domain. */ - int32 typtypmod; + int32 typtypmod BKI_DEFAULT(-1); /* * typndims is the declared number of dimensions for an array domain type * (i.e., typbasetype is an array type). Otherwise zero. */ - int32 typndims; + int32 typndims BKI_DEFAULT(0); /* * Collation: 0 if type cannot use collations, DEFAULT_COLLATION_OID for * collatable base types, possibly other OID for domains */ - Oid typcollation; + Oid typcollation BKI_DEFAULT(0); #ifdef CATALOG_VARLEN /* variable-length fields start here */ @@ -206,7 +217,7 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * a default expression for the type. Currently this is only used for * domains. */ - pg_node_tree typdefaultbin; + pg_node_tree typdefaultbin BKI_DEFAULT(_null_); /* * typdefault is NULL if the type has no associated default value. If @@ -216,12 +227,12 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO * external representation of the type's default value, which may be fed * to the type's input converter to produce a constant. */ - text typdefault; + text typdefault BKI_DEFAULT(_null_); /* * Access permissions */ - aclitem typacl[1]; + aclitem typacl[1] BKI_DEFAULT(_null_); #endif } FormData_pg_type; @@ -232,490 +243,10 @@ CATALOG(pg_type,1247) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71) BKI_SCHEMA_MACRO */ typedef FormData_pg_type *Form_pg_type; -/* ---------------- - * compiler constants for pg_type - * ---------------- - */ -#define Natts_pg_type 30 -#define Anum_pg_type_typname 1 -#define Anum_pg_type_typnamespace 2 -#define Anum_pg_type_typowner 3 -#define Anum_pg_type_typlen 4 -#define Anum_pg_type_typbyval 5 -#define Anum_pg_type_typtype 6 -#define Anum_pg_type_typcategory 7 -#define Anum_pg_type_typispreferred 8 -#define Anum_pg_type_typisdefined 9 -#define Anum_pg_type_typdelim 10 -#define Anum_pg_type_typrelid 11 -#define Anum_pg_type_typelem 12 -#define Anum_pg_type_typarray 13 -#define Anum_pg_type_typinput 14 -#define Anum_pg_type_typoutput 15 -#define Anum_pg_type_typreceive 16 -#define Anum_pg_type_typsend 17 -#define Anum_pg_type_typmodin 18 -#define Anum_pg_type_typmodout 19 -#define Anum_pg_type_typanalyze 20 -#define Anum_pg_type_typalign 21 -#define Anum_pg_type_typstorage 22 -#define Anum_pg_type_typnotnull 23 -#define Anum_pg_type_typbasetype 24 -#define Anum_pg_type_typtypmod 25 -#define Anum_pg_type_typndims 26 -#define Anum_pg_type_typcollation 27 -#define Anum_pg_type_typdefaultbin 28 -#define Anum_pg_type_typdefault 29 -#define Anum_pg_type_typacl 30 - - -/* ---------------- - * initial contents of pg_type - * ---------------- - */ +#ifdef EXPOSE_TO_CLIENT_CODE /* - * Keep the following ordered by OID so that later changes can be made more - * easily. - * - * For types used in the system catalogs, make sure the values here match - * TypInfo[] in bootstrap.c. - */ - -/* OIDS 1 - 99 */ -DATA(insert OID = 16 ( bool PGNSP PGUID 1 t b B t t \054 0 0 1000 boolin boolout boolrecv boolsend - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("boolean, 'true'/'false'"); -#define BOOLOID 16 - -DATA(insert OID = 17 ( bytea PGNSP PGUID -1 f b U f t \054 0 0 1001 byteain byteaout bytearecv byteasend - - - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("variable-length string, binary values escaped"); -#define BYTEAOID 17 - -DATA(insert OID = 18 ( char PGNSP PGUID 1 t b S f t \054 0 0 1002 charin charout charrecv charsend - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("single character"); -#define CHAROID 18 - -DATA(insert OID = 19 ( name PGNSP PGUID NAMEDATALEN f b S f t \054 0 18 1003 namein nameout namerecv namesend - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("63-byte type for storing system identifiers"); -#define NAMEOID 19 - -DATA(insert OID = 20 ( int8 PGNSP PGUID 8 FLOAT8PASSBYVAL b N f t \054 0 0 1016 int8in int8out int8recv int8send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("~18 digit integer, 8-byte storage"); -#define INT8OID 20 - -DATA(insert OID = 21 ( int2 PGNSP PGUID 2 t b N f t \054 0 0 1005 int2in int2out int2recv int2send - - - s p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("-32 thousand to 32 thousand, 2-byte storage"); -#define INT2OID 21 - -DATA(insert OID = 22 ( int2vector PGNSP PGUID -1 f b A f t \054 0 21 1006 int2vectorin int2vectorout int2vectorrecv int2vectorsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("array of int2, used in system tables"); -#define INT2VECTOROID 22 - -DATA(insert OID = 23 ( int4 PGNSP PGUID 4 t b N f t \054 0 0 1007 int4in int4out int4recv int4send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("-2 billion to 2 billion integer, 4-byte storage"); -#define INT4OID 23 - -DATA(insert OID = 24 ( regproc PGNSP PGUID 4 t b N f t \054 0 0 1008 regprocin regprocout regprocrecv regprocsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered procedure"); -#define REGPROCOID 24 - -DATA(insert OID = 25 ( text PGNSP PGUID -1 f b S t t \054 0 0 1009 textin textout textrecv textsend - - - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("variable-length string, no limit specified"); -#define TEXTOID 25 - -DATA(insert OID = 26 ( oid PGNSP PGUID 4 t b N t t \054 0 0 1028 oidin oidout oidrecv oidsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("object identifier(oid), maximum 4 billion"); -#define OIDOID 26 - -DATA(insert OID = 27 ( tid PGNSP PGUID 6 f b U f t \054 0 0 1010 tidin tidout tidrecv tidsend - - - s p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("(block, offset), physical location of tuple"); -#define TIDOID 27 - -DATA(insert OID = 28 ( xid PGNSP PGUID 4 t b U f t \054 0 0 1011 xidin xidout xidrecv xidsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("transaction id"); -#define XIDOID 28 - -DATA(insert OID = 29 ( cid PGNSP PGUID 4 t b U f t \054 0 0 1012 cidin cidout cidrecv cidsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("command identifier type, sequence in transaction id"); -#define CIDOID 29 - -DATA(insert OID = 30 ( oidvector PGNSP PGUID -1 f b A f t \054 0 26 1013 oidvectorin oidvectorout oidvectorrecv oidvectorsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("array of oids, used in system tables"); -#define OIDVECTOROID 30 - -/* hand-built rowtype entries for bootstrapped catalogs */ -/* NB: OIDs assigned here must match the BKI_ROWTYPE_OID declarations */ - -DATA(insert OID = 71 ( pg_type PGNSP PGUID -1 f c C f t \054 1247 0 0 record_in record_out record_recv record_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 75 ( pg_attribute PGNSP PGUID -1 f c C f t \054 1249 0 0 record_in record_out record_recv record_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 81 ( pg_proc PGNSP PGUID -1 f c C f t \054 1255 0 0 record_in record_out record_recv record_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 83 ( pg_class PGNSP PGUID -1 f c C f t \054 1259 0 0 record_in record_out record_recv record_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 100 - 199 */ -DATA(insert OID = 114 ( json PGNSP PGUID -1 f b U f t \054 0 0 199 json_in json_out json_recv json_send - - - i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define JSONOID 114 -DATA(insert OID = 142 ( xml PGNSP PGUID -1 f b U f t \054 0 0 143 xml_in xml_out xml_recv xml_send - - - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("XML content"); -#define XMLOID 142 -DATA(insert OID = 143 ( _xml PGNSP PGUID -1 f b A f t \054 0 142 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 199 ( _json PGNSP PGUID -1 f b A f t \054 0 114 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -DATA(insert OID = 194 ( pg_node_tree PGNSP PGUID -1 f b S f t \054 0 0 0 pg_node_tree_in pg_node_tree_out pg_node_tree_recv pg_node_tree_send - - - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("string representing an internal node tree"); -#define PGNODETREEOID 194 - -DATA(insert OID = 3361 ( pg_ndistinct PGNSP PGUID -1 f b S f t \054 0 0 0 pg_ndistinct_in pg_ndistinct_out pg_ndistinct_recv pg_ndistinct_send - - - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("multivariate ndistinct coefficients"); -#define PGNDISTINCTOID 3361 - -DATA(insert OID = 3402 ( pg_dependencies PGNSP PGUID -1 f b S f t \054 0 0 0 pg_dependencies_in pg_dependencies_out pg_dependencies_recv pg_dependencies_send - - - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("multivariate dependencies"); -#define PGDEPENDENCIESOID 3402 - -DATA(insert OID = 32 ( pg_ddl_command PGNSP PGUID SIZEOF_POINTER t p P f t \054 0 0 0 pg_ddl_command_in pg_ddl_command_out pg_ddl_command_recv pg_ddl_command_send - - - ALIGNOF_POINTER p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("internal type for passing CollectedCommand"); -#define PGDDLCOMMANDOID 32 - -/* OIDS 200 - 299 */ - -DATA(insert OID = 210 ( smgr PGNSP PGUID 2 t b U f t \054 0 0 0 smgrin smgrout - - - - - s p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("storage manager"); - -/* OIDS 300 - 399 */ - -/* OIDS 400 - 499 */ - -/* OIDS 500 - 599 */ - -/* OIDS 600 - 699 */ -DATA(insert OID = 600 ( point PGNSP PGUID 16 f b G f t \054 0 701 1017 point_in point_out point_recv point_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric point '(x, y)'"); -#define POINTOID 600 -DATA(insert OID = 601 ( lseg PGNSP PGUID 32 f b G f t \054 0 600 1018 lseg_in lseg_out lseg_recv lseg_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric line segment '(pt1,pt2)'"); -#define LSEGOID 601 -DATA(insert OID = 602 ( path PGNSP PGUID -1 f b G f t \054 0 0 1019 path_in path_out path_recv path_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric path '(pt1,...)'"); -#define PATHOID 602 -DATA(insert OID = 603 ( box PGNSP PGUID 32 f b G f t \073 0 600 1020 box_in box_out box_recv box_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric box '(lower left,upper right)'"); -#define BOXOID 603 -DATA(insert OID = 604 ( polygon PGNSP PGUID -1 f b G f t \054 0 0 1027 poly_in poly_out poly_recv poly_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric polygon '(pt1,...)'"); -#define POLYGONOID 604 - -DATA(insert OID = 628 ( line PGNSP PGUID 24 f b G f t \054 0 701 629 line_in line_out line_recv line_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric line"); -#define LINEOID 628 -DATA(insert OID = 629 ( _line PGNSP PGUID -1 f b A f t \054 0 628 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 700 - 799 */ - -DATA(insert OID = 700 ( float4 PGNSP PGUID 4 FLOAT4PASSBYVAL b N f t \054 0 0 1021 float4in float4out float4recv float4send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("single-precision floating point number, 4-byte storage"); -#define FLOAT4OID 700 -DATA(insert OID = 701 ( float8 PGNSP PGUID 8 FLOAT8PASSBYVAL b N t t \054 0 0 1022 float8in float8out float8recv float8send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("double-precision floating point number, 8-byte storage"); -#define FLOAT8OID 701 -DATA(insert OID = 702 ( abstime PGNSP PGUID 4 t b D f t \054 0 0 1023 abstimein abstimeout abstimerecv abstimesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("absolute, limited-range date and time (Unix system time)"); -#define ABSTIMEOID 702 -DATA(insert OID = 703 ( reltime PGNSP PGUID 4 t b T f t \054 0 0 1024 reltimein reltimeout reltimerecv reltimesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("relative, limited-range time interval (Unix delta time)"); -#define RELTIMEOID 703 -DATA(insert OID = 704 ( tinterval PGNSP PGUID 12 f b T f t \054 0 0 1025 tintervalin tintervalout tintervalrecv tintervalsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("(abstime,abstime), time interval"); -#define TINTERVALOID 704 -DATA(insert OID = 705 ( unknown PGNSP PGUID -2 f p X f t \054 0 0 0 unknownin unknownout unknownrecv unknownsend - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR(""); -#define UNKNOWNOID 705 - -DATA(insert OID = 718 ( circle PGNSP PGUID 24 f b G f t \054 0 0 719 circle_in circle_out circle_recv circle_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("geometric circle '(center,radius)'"); -#define CIRCLEOID 718 -DATA(insert OID = 719 ( _circle PGNSP PGUID -1 f b A f t \054 0 718 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 790 ( money PGNSP PGUID 8 FLOAT8PASSBYVAL b N f t \054 0 0 791 cash_in cash_out cash_recv cash_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("monetary amounts, $d,ddd.cc"); -#define CASHOID 790 -DATA(insert OID = 791 ( _money PGNSP PGUID -1 f b A f t \054 0 790 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 800 - 899 */ -DATA(insert OID = 829 ( macaddr PGNSP PGUID 6 f b U f t \054 0 0 1040 macaddr_in macaddr_out macaddr_recv macaddr_send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("XX:XX:XX:XX:XX:XX, MAC address"); -#define MACADDROID 829 -DATA(insert OID = 869 ( inet PGNSP PGUID -1 f b I t t \054 0 0 1041 inet_in inet_out inet_recv inet_send - - - i m f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("IP address/netmask, host address, netmask optional"); -#define INETOID 869 -DATA(insert OID = 650 ( cidr PGNSP PGUID -1 f b I f t \054 0 0 651 cidr_in cidr_out cidr_recv cidr_send - - - i m f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("network IP address/netmask, network address"); -#define CIDROID 650 -DATA(insert OID = 774 ( macaddr8 PGNSP PGUID 8 f b U f t \054 0 0 775 macaddr8_in macaddr8_out macaddr8_recv macaddr8_send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("XX:XX:XX:XX:XX:XX:XX:XX, MAC address"); -#define MACADDR8OID 774 - -/* OIDS 900 - 999 */ - -/* OIDS 1000 - 1099 */ -DATA(insert OID = 1000 ( _bool PGNSP PGUID -1 f b A f t \054 0 16 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1001 ( _bytea PGNSP PGUID -1 f b A f t \054 0 17 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1002 ( _char PGNSP PGUID -1 f b A f t \054 0 18 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1003 ( _name PGNSP PGUID -1 f b A f t \054 0 19 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1005 ( _int2 PGNSP PGUID -1 f b A f t \054 0 21 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define INT2ARRAYOID 1005 -DATA(insert OID = 1006 ( _int2vector PGNSP PGUID -1 f b A f t \054 0 22 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1007 ( _int4 PGNSP PGUID -1 f b A f t \054 0 23 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define INT4ARRAYOID 1007 -DATA(insert OID = 1008 ( _regproc PGNSP PGUID -1 f b A f t \054 0 24 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1009 ( _text PGNSP PGUID -1 f b A f t \054 0 25 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 100 _null_ _null_ _null_ )); -#define TEXTARRAYOID 1009 -DATA(insert OID = 1028 ( _oid PGNSP PGUID -1 f b A f t \054 0 26 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define OIDARRAYOID 1028 -DATA(insert OID = 1010 ( _tid PGNSP PGUID -1 f b A f t \054 0 27 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1011 ( _xid PGNSP PGUID -1 f b A f t \054 0 28 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1012 ( _cid PGNSP PGUID -1 f b A f t \054 0 29 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1013 ( _oidvector PGNSP PGUID -1 f b A f t \054 0 30 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1014 ( _bpchar PGNSP PGUID -1 f b A f t \054 0 1042 0 array_in array_out array_recv array_send bpchartypmodin bpchartypmodout array_typanalyze i x f 0 -1 0 100 _null_ _null_ _null_ )); -DATA(insert OID = 1015 ( _varchar PGNSP PGUID -1 f b A f t \054 0 1043 0 array_in array_out array_recv array_send varchartypmodin varchartypmodout array_typanalyze i x f 0 -1 0 100 _null_ _null_ _null_ )); -DATA(insert OID = 1016 ( _int8 PGNSP PGUID -1 f b A f t \054 0 20 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1017 ( _point PGNSP PGUID -1 f b A f t \054 0 600 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1018 ( _lseg PGNSP PGUID -1 f b A f t \054 0 601 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1019 ( _path PGNSP PGUID -1 f b A f t \054 0 602 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1020 ( _box PGNSP PGUID -1 f b A f t \073 0 603 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1021 ( _float4 PGNSP PGUID -1 f b A f t \054 0 700 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define FLOAT4ARRAYOID 1021 -DATA(insert OID = 1022 ( _float8 PGNSP PGUID -1 f b A f t \054 0 701 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1023 ( _abstime PGNSP PGUID -1 f b A f t \054 0 702 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1024 ( _reltime PGNSP PGUID -1 f b A f t \054 0 703 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1025 ( _tinterval PGNSP PGUID -1 f b A f t \054 0 704 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1027 ( _polygon PGNSP PGUID -1 f b A f t \054 0 604 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1033 ( aclitem PGNSP PGUID 12 f b U f t \054 0 0 1034 aclitemin aclitemout - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("access control list"); -#define ACLITEMOID 1033 -DATA(insert OID = 1034 ( _aclitem PGNSP PGUID -1 f b A f t \054 0 1033 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1040 ( _macaddr PGNSP PGUID -1 f b A f t \054 0 829 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 775 ( _macaddr8 PGNSP PGUID -1 f b A f t \054 0 774 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1041 ( _inet PGNSP PGUID -1 f b A f t \054 0 869 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 651 ( _cidr PGNSP PGUID -1 f b A f t \054 0 650 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1263 ( _cstring PGNSP PGUID -1 f b A f t \054 0 2275 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define CSTRINGARRAYOID 1263 - -DATA(insert OID = 1042 ( bpchar PGNSP PGUID -1 f b S f t \054 0 0 1014 bpcharin bpcharout bpcharrecv bpcharsend bpchartypmodin bpchartypmodout - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("char(length), blank-padded string, fixed storage length"); -#define BPCHAROID 1042 -DATA(insert OID = 1043 ( varchar PGNSP PGUID -1 f b S f t \054 0 0 1015 varcharin varcharout varcharrecv varcharsend varchartypmodin varchartypmodout - i x f 0 -1 0 100 _null_ _null_ _null_ )); -DESCR("varchar(length), non-blank-padded string, variable storage length"); -#define VARCHAROID 1043 - -DATA(insert OID = 1082 ( date PGNSP PGUID 4 t b D f t \054 0 0 1182 date_in date_out date_recv date_send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("date"); -#define DATEOID 1082 -DATA(insert OID = 1083 ( time PGNSP PGUID 8 FLOAT8PASSBYVAL b D f t \054 0 0 1183 time_in time_out time_recv time_send timetypmodin timetypmodout - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("time of day"); -#define TIMEOID 1083 - -/* OIDS 1100 - 1199 */ -DATA(insert OID = 1114 ( timestamp PGNSP PGUID 8 FLOAT8PASSBYVAL b D f t \054 0 0 1115 timestamp_in timestamp_out timestamp_recv timestamp_send timestamptypmodin timestamptypmodout - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("date and time"); -#define TIMESTAMPOID 1114 -DATA(insert OID = 1115 ( _timestamp PGNSP PGUID -1 f b A f t \054 0 1114 0 array_in array_out array_recv array_send timestamptypmodin timestamptypmodout array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1182 ( _date PGNSP PGUID -1 f b A f t \054 0 1082 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1183 ( _time PGNSP PGUID -1 f b A f t \054 0 1083 0 array_in array_out array_recv array_send timetypmodin timetypmodout array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1184 ( timestamptz PGNSP PGUID 8 FLOAT8PASSBYVAL b D t t \054 0 0 1185 timestamptz_in timestamptz_out timestamptz_recv timestamptz_send timestamptztypmodin timestamptztypmodout - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("date and time with time zone"); -#define TIMESTAMPTZOID 1184 -DATA(insert OID = 1185 ( _timestamptz PGNSP PGUID -1 f b A f t \054 0 1184 0 array_in array_out array_recv array_send timestamptztypmodin timestamptztypmodout array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1186 ( interval PGNSP PGUID 16 f b T t t \054 0 0 1187 interval_in interval_out interval_recv interval_send intervaltypmodin intervaltypmodout - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("@ , time interval"); -#define INTERVALOID 1186 -DATA(insert OID = 1187 ( _interval PGNSP PGUID -1 f b A f t \054 0 1186 0 array_in array_out array_recv array_send intervaltypmodin intervaltypmodout array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 1200 - 1299 */ -DATA(insert OID = 1231 ( _numeric PGNSP PGUID -1 f b A f t \054 0 1700 0 array_in array_out array_recv array_send numerictypmodin numerictypmodout array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1266 ( timetz PGNSP PGUID 12 f b D f t \054 0 0 1270 timetz_in timetz_out timetz_recv timetz_send timetztypmodin timetztypmodout - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("time of day with time zone"); -#define TIMETZOID 1266 -DATA(insert OID = 1270 ( _timetz PGNSP PGUID -1 f b A f t \054 0 1266 0 array_in array_out array_recv array_send timetztypmodin timetztypmodout array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 1500 - 1599 */ -DATA(insert OID = 1560 ( bit PGNSP PGUID -1 f b V f t \054 0 0 1561 bit_in bit_out bit_recv bit_send bittypmodin bittypmodout - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("fixed-length bit string"); -#define BITOID 1560 -DATA(insert OID = 1561 ( _bit PGNSP PGUID -1 f b A f t \054 0 1560 0 array_in array_out array_recv array_send bittypmodin bittypmodout array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 1562 ( varbit PGNSP PGUID -1 f b V t t \054 0 0 1563 varbit_in varbit_out varbit_recv varbit_send varbittypmodin varbittypmodout - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("variable-length bit string"); -#define VARBITOID 1562 -DATA(insert OID = 1563 ( _varbit PGNSP PGUID -1 f b A f t \054 0 1562 0 array_in array_out array_recv array_send varbittypmodin varbittypmodout array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* OIDS 1600 - 1699 */ - -/* OIDS 1700 - 1799 */ -DATA(insert OID = 1700 ( numeric PGNSP PGUID -1 f b N f t \054 0 0 1231 numeric_in numeric_out numeric_recv numeric_send numerictypmodin numerictypmodout - i m f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("numeric(precision, decimal), arbitrary precision number"); -#define NUMERICOID 1700 - -DATA(insert OID = 1790 ( refcursor PGNSP PGUID -1 f b U f t \054 0 0 2201 textin textout textrecv textsend - - - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("reference to cursor (portal name)"); -#define REFCURSOROID 1790 - -/* OIDS 2200 - 2299 */ -DATA(insert OID = 2201 ( _refcursor PGNSP PGUID -1 f b A f t \054 0 1790 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -DATA(insert OID = 2202 ( regprocedure PGNSP PGUID 4 t b N f t \054 0 0 2207 regprocedurein regprocedureout regprocedurerecv regproceduresend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered procedure (with args)"); -#define REGPROCEDUREOID 2202 - -DATA(insert OID = 2203 ( regoper PGNSP PGUID 4 t b N f t \054 0 0 2208 regoperin regoperout regoperrecv regopersend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered operator"); -#define REGOPEROID 2203 - -DATA(insert OID = 2204 ( regoperator PGNSP PGUID 4 t b N f t \054 0 0 2209 regoperatorin regoperatorout regoperatorrecv regoperatorsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered operator (with args)"); -#define REGOPERATOROID 2204 - -DATA(insert OID = 2205 ( regclass PGNSP PGUID 4 t b N f t \054 0 0 2210 regclassin regclassout regclassrecv regclasssend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered class"); -#define REGCLASSOID 2205 - -DATA(insert OID = 2206 ( regtype PGNSP PGUID 4 t b N f t \054 0 0 2211 regtypein regtypeout regtyperecv regtypesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered type"); -#define REGTYPEOID 2206 - -DATA(insert OID = 4096 ( regrole PGNSP PGUID 4 t b N f t \054 0 0 4097 regrolein regroleout regrolerecv regrolesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered role"); -#define REGROLEOID 4096 - -DATA(insert OID = 4089 ( regnamespace PGNSP PGUID 4 t b N f t \054 0 0 4090 regnamespacein regnamespaceout regnamespacerecv regnamespacesend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered namespace"); -#define REGNAMESPACEOID 4089 - -DATA(insert OID = 2207 ( _regprocedure PGNSP PGUID -1 f b A f t \054 0 2202 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 2208 ( _regoper PGNSP PGUID -1 f b A f t \054 0 2203 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 2209 ( _regoperator PGNSP PGUID -1 f b A f t \054 0 2204 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 2210 ( _regclass PGNSP PGUID -1 f b A f t \054 0 2205 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 2211 ( _regtype PGNSP PGUID -1 f b A f t \054 0 2206 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -#define REGTYPEARRAYOID 2211 -DATA(insert OID = 4097 ( _regrole PGNSP PGUID -1 f b A f t \054 0 4096 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 4090 ( _regnamespace PGNSP PGUID -1 f b A f t \054 0 4089 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* uuid */ -DATA(insert OID = 2950 ( uuid PGNSP PGUID 16 f b U f t \054 0 0 2951 uuid_in uuid_out uuid_recv uuid_send - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("UUID datatype"); -#define UUIDOID 2950 -DATA(insert OID = 2951 ( _uuid PGNSP PGUID -1 f b A f t \054 0 2950 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* pg_lsn */ -DATA(insert OID = 3220 ( pg_lsn PGNSP PGUID 8 FLOAT8PASSBYVAL b U f t \054 0 0 3221 pg_lsn_in pg_lsn_out pg_lsn_recv pg_lsn_send - - - d p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("PostgreSQL LSN datatype"); -#define LSNOID 3220 -DATA(insert OID = 3221 ( _pg_lsn PGNSP PGUID -1 f b A f t \054 0 3220 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* text search */ -DATA(insert OID = 3614 ( tsvector PGNSP PGUID -1 f b U f t \054 0 0 3643 tsvectorin tsvectorout tsvectorrecv tsvectorsend - - ts_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("text representation for text search"); -#define TSVECTOROID 3614 -DATA(insert OID = 3642 ( gtsvector PGNSP PGUID -1 f b U f t \054 0 0 3644 gtsvectorin gtsvectorout - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("GiST index internal text representation for text search"); -#define GTSVECTOROID 3642 -DATA(insert OID = 3615 ( tsquery PGNSP PGUID -1 f b U f t \054 0 0 3645 tsqueryin tsqueryout tsqueryrecv tsquerysend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("query representation for text search"); -#define TSQUERYOID 3615 -DATA(insert OID = 3734 ( regconfig PGNSP PGUID 4 t b N f t \054 0 0 3735 regconfigin regconfigout regconfigrecv regconfigsend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered text search configuration"); -#define REGCONFIGOID 3734 -DATA(insert OID = 3769 ( regdictionary PGNSP PGUID 4 t b N f t \054 0 0 3770 regdictionaryin regdictionaryout regdictionaryrecv regdictionarysend - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("registered text search dictionary"); -#define REGDICTIONARYOID 3769 - -DATA(insert OID = 3643 ( _tsvector PGNSP PGUID -1 f b A f t \054 0 3614 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3644 ( _gtsvector PGNSP PGUID -1 f b A f t \054 0 3642 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3645 ( _tsquery PGNSP PGUID -1 f b A f t \054 0 3615 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3735 ( _regconfig PGNSP PGUID -1 f b A f t \054 0 3734 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3770 ( _regdictionary PGNSP PGUID -1 f b A f t \054 0 3769 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* jsonb */ -DATA(insert OID = 3802 ( jsonb PGNSP PGUID -1 f b U f t \054 0 0 3807 jsonb_in jsonb_out jsonb_recv jsonb_send - - - i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("Binary JSON"); -#define JSONBOID 3802 -DATA(insert OID = 3807 ( _jsonb PGNSP PGUID -1 f b A f t \054 0 3802 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); - -DATA(insert OID = 2970 ( txid_snapshot PGNSP PGUID -1 f b U f t \054 0 0 2949 txid_snapshot_in txid_snapshot_out txid_snapshot_recv txid_snapshot_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("txid snapshot"); -DATA(insert OID = 2949 ( _txid_snapshot PGNSP PGUID -1 f b A f t \054 0 2970 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* range types */ -DATA(insert OID = 3904 ( int4range PGNSP PGUID -1 f r R f t \054 0 0 3905 range_in range_out range_recv range_send - - range_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of integers"); -#define INT4RANGEOID 3904 -DATA(insert OID = 3905 ( _int4range PGNSP PGUID -1 f b A f t \054 0 3904 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3906 ( numrange PGNSP PGUID -1 f r R f t \054 0 0 3907 range_in range_out range_recv range_send - - range_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of numerics"); -DATA(insert OID = 3907 ( _numrange PGNSP PGUID -1 f b A f t \054 0 3906 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3908 ( tsrange PGNSP PGUID -1 f r R f t \054 0 0 3909 range_in range_out range_recv range_send - - range_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of timestamps without time zone"); -DATA(insert OID = 3909 ( _tsrange PGNSP PGUID -1 f b A f t \054 0 3908 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3910 ( tstzrange PGNSP PGUID -1 f r R f t \054 0 0 3911 range_in range_out range_recv range_send - - range_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of timestamps with time zone"); -DATA(insert OID = 3911 ( _tstzrange PGNSP PGUID -1 f b A f t \054 0 3910 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3912 ( daterange PGNSP PGUID -1 f r R f t \054 0 0 3913 range_in range_out range_recv range_send - - range_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of dates"); -DATA(insert OID = 3913 ( _daterange PGNSP PGUID -1 f b A f t \054 0 3912 0 array_in array_out array_recv array_send - - array_typanalyze i x f 0 -1 0 0 _null_ _null_ _null_ )); -DATA(insert OID = 3926 ( int8range PGNSP PGUID -1 f r R f t \054 0 0 3927 range_in range_out range_recv range_send - - range_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -DESCR("range of bigints"); -DATA(insert OID = 3927 ( _int8range PGNSP PGUID -1 f b A f t \054 0 3926 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); - -/* - * pseudo-types - * - * types with typtype='p' represent various special cases in the type system. - * - * These cannot be used to define table columns, but are valid as function - * argument and result types (if supported by the function's implementation - * language). - * - * Note: cstring is a borderline case; it is still considered a pseudo-type, - * but there is now support for it in records and arrays. Perhaps we should - * just treat it as a regular base type? - */ -DATA(insert OID = 2249 ( record PGNSP PGUID -1 f p P f t \054 0 0 2287 record_in record_out record_recv record_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -#define RECORDOID 2249 -DATA(insert OID = 2287 ( _record PGNSP PGUID -1 f p P f t \054 0 2249 0 array_in array_out array_recv array_send - - array_typanalyze d x f 0 -1 0 0 _null_ _null_ _null_ )); -#define RECORDARRAYOID 2287 -DATA(insert OID = 2275 ( cstring PGNSP PGUID -2 f p P f t \054 0 0 1263 cstring_in cstring_out cstring_recv cstring_send - - - c p f 0 -1 0 0 _null_ _null_ _null_ )); -#define CSTRINGOID 2275 -DATA(insert OID = 2276 ( any PGNSP PGUID 4 t p P f t \054 0 0 0 any_in any_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYOID 2276 -DATA(insert OID = 2277 ( anyarray PGNSP PGUID -1 f p P f t \054 0 0 0 anyarray_in anyarray_out anyarray_recv anyarray_send - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYARRAYOID 2277 -DATA(insert OID = 2278 ( void PGNSP PGUID 4 t p P f t \054 0 0 0 void_in void_out void_recv void_send - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define VOIDOID 2278 -DATA(insert OID = 2279 ( trigger PGNSP PGUID 4 t p P f t \054 0 0 0 trigger_in trigger_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define TRIGGEROID 2279 -DATA(insert OID = 3838 ( event_trigger PGNSP PGUID 4 t p P f t \054 0 0 0 event_trigger_in event_trigger_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define EVTTRIGGEROID 3838 -DATA(insert OID = 2280 ( language_handler PGNSP PGUID 4 t p P f t \054 0 0 0 language_handler_in language_handler_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define LANGUAGE_HANDLEROID 2280 -DATA(insert OID = 2281 ( internal PGNSP PGUID SIZEOF_POINTER t p P f t \054 0 0 0 internal_in internal_out - - - - - ALIGNOF_POINTER p f 0 -1 0 0 _null_ _null_ _null_ )); -#define INTERNALOID 2281 -DATA(insert OID = 2282 ( opaque PGNSP PGUID 4 t p P f t \054 0 0 0 opaque_in opaque_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define OPAQUEOID 2282 -DATA(insert OID = 2283 ( anyelement PGNSP PGUID 4 t p P f t \054 0 0 0 anyelement_in anyelement_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYELEMENTOID 2283 -DATA(insert OID = 2776 ( anynonarray PGNSP PGUID 4 t p P f t \054 0 0 0 anynonarray_in anynonarray_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYNONARRAYOID 2776 -DATA(insert OID = 3500 ( anyenum PGNSP PGUID 4 t p P f t \054 0 0 0 anyenum_in anyenum_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYENUMOID 3500 -DATA(insert OID = 3115 ( fdw_handler PGNSP PGUID 4 t p P f t \054 0 0 0 fdw_handler_in fdw_handler_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define FDW_HANDLEROID 3115 -DATA(insert OID = 325 ( index_am_handler PGNSP PGUID 4 t p P f t \054 0 0 0 index_am_handler_in index_am_handler_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define INDEX_AM_HANDLEROID 325 -DATA(insert OID = 3310 ( tsm_handler PGNSP PGUID 4 t p P f t \054 0 0 0 tsm_handler_in tsm_handler_out - - - - - i p f 0 -1 0 0 _null_ _null_ _null_ )); -#define TSM_HANDLEROID 3310 -DATA(insert OID = 3831 ( anyrange PGNSP PGUID -1 f p P f t \054 0 0 0 anyrange_in anyrange_out - - - - - d x f 0 -1 0 0 _null_ _null_ _null_ )); -#define ANYRANGEOID 3831 - - -/* - * macros + * macros for values of poor-mans-enumerated-type columns */ #define TYPTYPE_BASE 'b' /* base type (ordinary scalar type) */ #define TYPTYPE_COMPOSITE 'c' /* composite (e.g., table's rowtype) */ @@ -749,4 +280,6 @@ DATA(insert OID = 3831 ( anyrange PGNSP PGUID -1 f p P f t \054 0 0 0 anyrange (typid) == ANYENUMOID || \ (typid) == ANYRANGEOID) +#endif /* EXPOSE_TO_CLIENT_CODE */ + #endif /* PG_TYPE_H */ diff --git a/src/include/catalog/pg_user_mapping.h b/src/include/catalog/pg_user_mapping.h index 686562a4d2..6efbed0a9d 100644 --- a/src/include/catalog/pg_user_mapping.h +++ b/src/include/catalog/pg_user_mapping.h @@ -9,8 +9,8 @@ * src/include/catalog/pg_user_mapping.h * * NOTES - * the genbki.pl script reads this file and generates .bki - * information from the DATA() statements. + * The Catalog.pm module reads this file and derives schema + * information. * *------------------------------------------------------------------------- */ @@ -18,15 +18,14 @@ #define PG_USER_MAPPING_H #include "catalog/genbki.h" +#include "catalog/pg_user_mapping_d.h" /* ---------------- * pg_user_mapping definition. cpp turns this into * typedef struct FormData_pg_user_mapping * ---------------- */ -#define UserMappingRelationId 1418 - -CATALOG(pg_user_mapping,1418) +CATALOG(pg_user_mapping,1418,UserMappingRelationId) { Oid umuser; /* Id of the user, InvalidOid if PUBLIC is * wanted */ @@ -44,14 +43,4 @@ CATALOG(pg_user_mapping,1418) */ typedef FormData_pg_user_mapping *Form_pg_user_mapping; -/* ---------------- - * compiler constants for pg_user_mapping - * ---------------- - */ - -#define Natts_pg_user_mapping 3 -#define Anum_pg_user_mapping_umuser 1 -#define Anum_pg_user_mapping_umserver 2 -#define Anum_pg_user_mapping_umoptions 3 - #endif /* PG_USER_MAPPING_H */ diff --git a/src/include/catalog/reformat_dat_file.pl b/src/include/catalog/reformat_dat_file.pl new file mode 100644 index 0000000000..bbceb16b65 --- /dev/null +++ b/src/include/catalog/reformat_dat_file.pl @@ -0,0 +1,311 @@ +#!/usr/bin/perl -w +#---------------------------------------------------------------------- +# +# reformat_dat_file.pl +# Perl script that reads in a catalog data file and writes out +# a functionally equivalent file in a standard format. +# +# Metadata entries (if any) come first, with normal attributes +# starting on the following line, in the same order they would be in +# the corresponding table. Comments and non-consecutive blank lines +# are preserved. +# +# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/reformat_dat_file.pl +# +#---------------------------------------------------------------------- + +use Catalog; + +use strict; +use warnings; + +my @input_files; +my $output_path = ''; +my $full_tuples = 0; + +# Process command line switches. +while (@ARGV) +{ + my $arg = shift @ARGV; + if ($arg !~ /^-/) + { + push @input_files, $arg; + } + elsif ($arg =~ /^-o/) + { + $output_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV; + } + elsif ($arg eq '--full-tuples') + { + $full_tuples = 1; + } + else + { + usage(); + } +} + +# Sanity check arguments. +die "No input files.\n" + if !@input_files; + +# Make sure output_path ends in a slash. +if ($output_path ne '' && substr($output_path, -1) ne '/') +{ + $output_path .= '/'; +} + +# Metadata of a catalog entry +my @METADATA = ('oid', 'oid_symbol', 'descr'); + +# Read all the input files into internal data structures. +# We pass data file names as arguments and then look for matching +# headers to parse the schema from. +my %catalogs; +my %catalog_data; +my @catnames; +foreach my $datfile (@input_files) +{ + $datfile =~ /(.+)\.dat$/ + or die "Input files need to be data (.dat) files.\n"; + + my $header = "$1.h"; + die "There in no header file corresponding to $datfile" + if ! -e $header; + + my $catalog = Catalog::ParseHeader($header); + my $catname = $catalog->{catname}; + my $schema = $catalog->{columns}; + + push @catnames, $catname; + $catalogs{$catname} = $catalog; + + $catalog_data{$catname} = Catalog::ParseData($datfile, $schema, 1); +} + +######################################################################## +# At this point, we have read all the data. If you are modifying this +# script for bulk editing, this is a good place to build lookup tables, +# if you need to. In the following example, the "next if !ref $row" +# check below is a hack to filter out non-hash objects. This is because +# we build the lookup tables from data that we read using the +# "preserve_formatting" parameter. +# +##Index access method lookup. +#my %amnames; +#foreach my $row (@{ $catalog_data{pg_am} }) +#{ +# next if !ref $row; +# $amnames{$row->{oid}} = $row->{amname}; +#} +######################################################################## + +# Write the data. +foreach my $catname (@catnames) +{ + my $catalog = $catalogs{$catname}; + my @attnames; + my $schema = $catalog->{columns}; + my $prev_blank = 0; + + foreach my $column (@$schema) + { + my $attname = $column->{name}; + push @attnames, $attname; + } + + # Overwrite .dat files in place, since they are under version control. + my $datfile = "$output_path$catname.dat"; + open my $dat, '>', $datfile + or die "can't open $datfile: $!"; + + # Write the data. + foreach my $data (@{ $catalog_data{$catname} }) + { + + # Hash ref representing a data entry. + if (ref $data eq 'HASH') + { + my %values = %$data; + + ############################################################ + # At this point we have the full tuple in memory as a hash + # and can do any operations we want. As written, it only + # removes default values, but this script can be adapted to + # do one-off bulk-editing. + ############################################################ + + if (!$full_tuples) + { + strip_default_values(\%values, $schema, $catname); + } + + print $dat "{"; + + # Separate out metadata fields for readability. + my $metadata_str = format_hash(\%values, @METADATA); + if ($metadata_str) + { + print $dat $metadata_str; + + # User attributes start on next line. + print $dat ",\n "; + } + + my $data_str = format_hash(\%values, @attnames); + print $dat $data_str; + print $dat " },\n"; + $prev_blank = 0; + } + + # Strings -- handle accordingly or ignore. It was necessary to + # ignore bare commas during the initial data conversion. This + # should be a no-op now, but we may as well keep that behavior. + # Note: We don't update $prev_blank if we ignore a string. + + # Preserve non-consecutive blank lines. + elsif ($data =~ /^\s*$/) + { + next if $prev_blank; + print $dat "\n"; + $prev_blank = 1; + } + + # Preserve comments or brackets that are on their own line. + elsif ($data =~ /^\s*(\[|\]|#.*?)\s*$/) + { + print $dat "$1\n"; + $prev_blank = 0; + } + } + close $dat; +} + +# Leave values out if there is a matching default. +sub strip_default_values +{ + my ($row, $schema, $catname) = @_; + + foreach my $column (@$schema) + { + my $attname = $column->{name}; + die "strip_default_values: $catname.$attname undefined\n" + if ! defined $row->{$attname}; + + # Delete values that match defaults. + if (defined $column->{default} + and ($row->{$attname} eq $column->{default})) + { + delete $row->{$attname}; + } + + # Also delete pg_proc.pronargs, since that can be recomputed. + if ($catname eq 'pg_proc' && $attname eq 'pronargs' && + defined($row->{proargtypes})) + { + delete $row->{$attname}; + } + } +} + +# Format the individual elements of a Perl hash into a valid string +# representation. We do this ourselves, rather than use native Perl +# facilities, so we can keep control over the exact formatting of the +# data files. +sub format_hash +{ + my $data = shift; + my @orig_attnames = @_; + + # Copy attname to new array if it has a value, so we can determine + # the last populated element. We do this because we may have default + # values or empty metadata fields. + my @attnames; + foreach my $orig_attname (@orig_attnames) + { + push @attnames, $orig_attname + if defined $data->{$orig_attname}; + } + + # When calling this function, we ether have an open-bracket or a + # leading space already. + my $char_count = 1; + + my $threshold; + my $hash_str = ''; + my $element_count = 0; + + foreach my $attname (@attnames) + { + $element_count++; + + # To limit the line to 80 chars, we need to account for the + # trailing characters. + if ($element_count == $#attnames + 1) + { + # Last element, so allow space for ' },' + $threshold = 77; + } + else + { + # Just need space for trailing comma + $threshold = 79; + } + + if ($element_count > 1) + { + $hash_str .= ','; + $char_count++; + } + + my $value = $data->{$attname}; + + # Escape single quotes. + $value =~ s/'/\\'/g; + + # Include a leading space in the key-value pair, since this will + # always go after either a comma or an additional padding space on + # the next line. + my $element = " $attname => '$value'"; + my $element_length = length($element); + + # If adding the element to the current line would expand the line + # beyond 80 chars, put it on the next line. We don't do this for + # the first element, since that would create a blank line. + if ($element_count > 1 and $char_count + $element_length > $threshold) + { + + # Put on next line with an additional space preceding. There + # are now two spaces in front of the key-value pair, lining + # it up with the line above it. + $hash_str .= "\n $element"; + $char_count = $element_length + 1; + } + else + { + $hash_str .= $element; + $char_count += $element_length; + } + } + return $hash_str; +} + +sub usage +{ + die < *'\''\([0-9][0-9]*\)'\''.*$/\1/p' \ + -e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\),.*$/\1,\2/p' \ -e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \ -e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \ -e 's/^DECLARE_UNIQUE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \ diff --git a/src/interfaces/ecpg/ecpglib/pg_type.h b/src/interfaces/ecpg/ecpglib/pg_type.h index f75c887888..79a6cf8daa 100644 --- a/src/interfaces/ecpg/ecpglib/pg_type.h +++ b/src/interfaces/ecpg/ecpglib/pg_type.h @@ -1,9 +1,7 @@ /*------------------------------------------------------------------------- * * pg_type.h - * Hard-wired knowledge about some standard type OIDs. - * - * XXX keep this in sync with src/include/catalog/pg_type.h + * Interface to generated type OID symbols. * * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -15,65 +13,6 @@ #ifndef PG_TYPE_H #define PG_TYPE_H -#define BOOLOID 16 -#define BYTEAOID 17 -#define CHAROID 18 -#define NAMEOID 19 -#define INT8OID 20 -#define INT2OID 21 -#define INT2VECTOROID 22 -#define INT4OID 23 -#define REGPROCOID 24 -#define TEXTOID 25 -#define OIDOID 26 -#define TIDOID 27 -#define XIDOID 28 -#define CIDOID 29 -#define OIDVECTOROID 30 -#define POINTOID 600 -#define LSEGOID 601 -#define PATHOID 602 -#define BOXOID 603 -#define POLYGONOID 604 -#define LINEOID 628 -#define FLOAT4OID 700 -#define FLOAT8OID 701 -#define ABSTIMEOID 702 -#define RELTIMEOID 703 -#define TINTERVALOID 704 -#define UNKNOWNOID 705 -#define CIRCLEOID 718 -#define CASHOID 790 -#define INETOID 869 -#define CIDROID 650 -#define BPCHAROID 1042 -#define VARCHAROID 1043 -#define DATEOID 1082 -#define TIMEOID 1083 -#define TIMESTAMPOID 1114 -#define TIMESTAMPTZOID 1184 -#define INTERVALOID 1186 -#define TIMETZOID 1266 -#define BITOID 1560 -#define VARBITOID 1562 -#define NUMERICOID 1700 -#define REFCURSOROID 1790 -#define REGPROCEDUREOID 2202 -#define REGOPEROID 2203 -#define REGOPERATOROID 2204 -#define REGCLASSOID 2205 -#define REGTYPEOID 2206 -#define REGROLEOID 4096 -#define REGNAMESPACEOID 4089 -#define REGTYPEARRAYOID 2211 -#define UUIDOID 2950 -#define LSNOID 3220 -#define TSVECTOROID 3614 -#define GTSVECTOROID 3642 -#define TSQUERYOID 3615 -#define REGCONFIGOID 3734 -#define REGDICTIONARYOID 3769 -#define JSONBOID 3802 -#define INT4RANGEOID 3904 +#include "catalog/pg_type_d.h" #endif /* PG_TYPE_H */ diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm index 36e9fd70d3..b267c19438 100644 --- a/src/tools/msvc/Solution.pm +++ b/src/tools/msvc/Solution.pm @@ -264,15 +264,23 @@ s{PG_VERSION_STR "[^"]+"}{PG_VERSION_STR "PostgreSQL $self->{strver}$extraver, c "src/interfaces/ecpg/pgtypeslib/exports.txt", "LIBPGTYPES"); + chdir('src/backend/utils'); + my $pg_language_dat = '../../../src/include/catalog/pg_language.dat'; + my $pg_proc_dat = '../../../src/include/catalog/pg_proc.dat'; if (IsNewer( - 'src/backend/utils/fmgrtab.c', 'src/include/catalog/pg_proc.h')) + 'fmgrtab.c', $pg_language_dat) + || IsNewer( + 'fmgrtab.c', $pg_proc_dat) + || IsNewer( + 'fmgrtab.c', '../../../src/include/access/transam.h') + ) { print "Generating fmgrtab.c, fmgroids.h, fmgrprotos.h...\n"; - chdir('src/backend/utils'); system( -"perl -I ../catalog Gen_fmgrtab.pl -I../../../src/include/ ../../../src/include/catalog/pg_proc.h"); - chdir('../../..'); +"perl -I ../catalog Gen_fmgrtab.pl -I../../../src/include/ $pg_language_dat $pg_proc_dat"); } + chdir('../../..'); + if (IsNewer( 'src/include/utils/fmgroids.h', 'src/backend/utils/fmgroids.h')) @@ -456,23 +464,38 @@ EOF my $mf = Project::read_file('src/backend/catalog/Makefile'); $mf =~ s{\\\r?\n}{}g; - $mf =~ /^POSTGRES_BKI_SRCS\s*:?=[^,]+,(.*)\)$/gm - || croak "Could not find POSTGRES_BKI_SRCS in Makefile\n"; - my @allbki = split /\s+/, $1; - foreach my $bki (@allbki) + $mf =~ /^CATALOG_HEADERS\s*:?=(.*)$/gm + || croak "Could not find CATALOG_HEADERS in Makefile\n"; + my @bki_srcs = split /\s+/, $1; + push @bki_srcs, 'toasting.h'; + push @bki_srcs, 'indexing.h'; + $mf =~ /^POSTGRES_BKI_DATA\s*:?=[^,]+,(.*)\)$/gm + || croak "Could not find POSTGRES_BKI_DATA in Makefile\n"; + my @bki_data = split /\s+/, $1; + foreach my $bki (@bki_srcs, @bki_data) { next if $bki eq ""; if (IsNewer( 'src/backend/catalog/postgres.bki', "src/include/catalog/$bki")) { - print "Generating postgres.bki and schemapg.h...\n"; + print "Generating BKI files and symbol definition headers...\n"; chdir('src/backend/catalog'); - my $bki_srcs = join(' ../../../src/include/catalog/', @allbki); - system( -"perl genbki.pl -I../../../src/include/catalog --set-version=$self->{majorver} $bki_srcs" - ); + my $bki_srcs = join(' ../../../src/include/catalog/', @bki_srcs); + system("perl genbki.pl --set-version=$self->{majorver} $bki_srcs"); chdir('../../..'); + + # Copy generated headers to include directory. + opendir(my $dh, 'src/backend/catalog/') + || die "Can't opendir src/backend/catalog/ $!"; + my @def_headers = grep { /pg_\w+_d\.h$/ } readdir($dh); + closedir $dh; + foreach my $def_header (@def_headers) + { + copyFile( + "src/backend/catalog/$def_header", + "src/include/catalog/$def_header"); + } copyFile( 'src/backend/catalog/schemapg.h', 'src/include/catalog/schemapg.h'); diff --git a/src/tools/msvc/clean.bat b/src/tools/msvc/clean.bat index 0a88b52536..b0524964fd 100755 --- a/src/tools/msvc/clean.bat +++ b/src/tools/msvc/clean.bat @@ -48,6 +48,7 @@ if exist src\include\utils\fmgrprotos.h del /q src\include\utils\fmgrprotos.h if exist src\include\storage\lwlocknames.h del /q src\include\storage\lwlocknames.h if exist src\include\utils\probes.h del /q src\include\utils\probes.h if exist src\include\catalog\schemapg.h del /q src\include\catalog\schemapg.h +if exist src\include\catalog\pg_*_d.h del /q src\include\catalog\pg_*_d.h if exist doc\src\sgml\version.sgml del /q doc\src\sgml\version.sgml if %DIST%==1 if exist src\backend\utils\fmgroids.h del /q src\backend\utils\fmgroids.h @@ -67,6 +68,7 @@ if %DIST%==1 if exist src\backend\catalog\postgres.bki del /q src\backend\catalo if %DIST%==1 if exist src\backend\catalog\postgres.description del /q src\backend\catalog\postgres.description if %DIST%==1 if exist src\backend\catalog\postgres.shdescription del /q src\backend\catalog\postgres.shdescription if %DIST%==1 if exist src\backend\catalog\schemapg.h del /q src\backend\catalog\schemapg.h +if %DIST%==1 if exist src\backend\catalog\pg_*_d.h del /q src\backend\catalog\pg_*_d.h if %DIST%==1 if exist src\backend\parser\scan.c del /q src\backend\parser\scan.c if %DIST%==1 if exist src\backend\parser\gram.c del /q src\backend\parser\gram.c if %DIST%==1 if exist src\backend\bootstrap\bootscanner.c del /q src\backend\bootstrap\bootscanner.c diff --git a/src/tools/pgindent/pgindent b/src/tools/pgindent/pgindent index 37dfccab6b..06a38261c6 100755 --- a/src/tools/pgindent/pgindent +++ b/src/tools/pgindent/pgindent @@ -213,8 +213,8 @@ sub pre_indent s!(^#ifdef[ \t]+__cplusplus.*\nextern[ \t]+"C"[ \t]*\n)\{[ \t]*$!$1$extern_c_start!gm; $source =~ s!(^#ifdef[ \t]+__cplusplus.*\n)\}[ \t]*$!$1$extern_c_stop!gm; - # Protect backslashes in DATA() and wrapping in CATALOG() - $source =~ s!^((DATA|CATALOG)\(.*)$!/*$1*/!gm; + # Protect wrapping in CATALOG() + $source =~ s!^(CATALOG\(.*)$!/*$1*/!gm; return $source; } @@ -225,8 +225,8 @@ sub post_indent my $source = shift; my $source_filename = shift; - # Restore DATA/CATALOG lines - $source =~ s!^/\*((DATA|CATALOG)\(.*)\*/$!$1!gm; + # Restore CATALOG lines + $source =~ s!^/\*(CATALOG\(.*)\*/$!$1!gm; # Put back braces for extern "C" $source =~ s!^/\* Open extern "C" \*/$!{!gm;