<!-- doc/src/sgml/bki.sgml -->
<chapter id="bki">
- <title><acronym>BKI</acronym> Backend Interface</title>
+ <title>System Catalog Declarations and Initial Contents</title>
<para>
- Backend Interface (<acronym>BKI</acronym>) files are scripts in a
- special language that is understood by the
- <productname>PostgreSQL</productname> backend when running in the
- <quote>bootstrap</quote> mode. The bootstrap mode allows system catalogs
- to be created and filled from scratch, whereas ordinary SQL commands
- require the catalogs to exist already.
- <acronym>BKI</acronym> files can therefore be used to create the
- database system in the first place. (And they are probably not
- useful for anything else.)
+ <productname>PostgreSQL</productname> 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.
</para>
<para>
- <application>initdb</application> uses a <acronym>BKI</acronym> file
- to do part of its job when creating a new database cluster. The
- input file used by <application>initdb</application> is created as
- part of building and installing <productname>PostgreSQL</productname>
- by a program named <filename>genbki.pl</filename>, which reads some
- specially formatted C header files in the <filename>src/include/catalog/</filename>
- directory of the source tree. The created <acronym>BKI</acronym> file
- is called <filename>postgres.bki</filename> and is
- normally installed in the
- <filename>share</filename> subdirectory of the installation tree.
+ The structures of the catalogs are declared in specially formatted C
+ header files in the <filename>src/include/catalog/</filename> directory of
+ the source tree. In particular, for each catalog there is a header file
+ named after the catalog (e.g., <filename>pg_class.h</filename>
+ for <structname>pg_class</structname>), 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 <filename>indexing.h</filename>, which defines the indexes present
+ on all the system catalogs, and <filename>toasting.h</filename>, which
+ defines TOAST tables for catalogs that need one.
</para>
<para>
- Related information can be found in the documentation for
- <application>initdb</application>.
+ Many of the catalogs have initial data that must be loaded into them
+ during the <quote>bootstrap</quote> phase
+ of <application>initdb</application>, to bring the system up to a point
+ where it is capable of executing SQL commands. (For
+ example, <filename>pg_class.h</filename> 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 <filename>src/include/catalog/</filename> directory. For example,
+ <filename>pg_proc.dat</filename> describes all the initial rows that must
+ be inserted into the <structname>pg_proc</structname> catalog.
</para>
+ <para>
+ To create the catalog files and load this initial data into them, a
+ backend running in bootstrap mode reads a <acronym>BKI</acronym>
+ (Backend Interface) file containing commands and initial data.
+ The <filename>postgres.bki</filename> file used in this mode is prepared
+ from the aforementioned header and data files, while building
+ a <productname>PostgreSQL</productname> distribution, by a Perl script
+ named <filename>genbki.pl</filename>.
+ Although it's specific to a particular <productname>PostgreSQL</productname>
+ release, <filename>postgres.bki</filename> is platform-independent and is
+ installed in the <filename>share</filename> subdirectory of the
+ installation tree.
+ </para>
+
+ <para>
+ <filename>genbki.pl</filename> also produces a derived header file for
+ each catalog, for example <filename>pg_class_d.h</filename> for
+ the <structname>pg_class</structname> 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.
+ </para>
+
+ <para>
+ Most Postgres developers don't need to be directly concerned with
+ the <acronym>BKI</acronym> 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 <acronym>BKI</acronym> file format.
+ </para>
+
+ <sect1 id="system-catalog-declarations">
+ <title>System Catalog Declaration Rules</title>
+
+ <para>
+ 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 <literal>CATALOG</literal> macro, which so far as the C compiler is
+ concerned is just shorthand for <literal>typedef struct
+ FormData_<replaceable>catalogname</replaceable></literal>.
+ Each field in the struct gives rise to a catalog column.
+ Fields can be annotated using the BKI property macros described
+ in <filename>genbki.h</filename>, for example to define a default value
+ for a field or mark it as nullable or not nullable.
+ The <literal>CATALOG</literal> line can also be annotated, with some
+ other BKI property macros described in <filename>genbki.h</filename>, to
+ define other properties of the catalog as a whole, such as whether
+ it has OIDs (by default, it does).
+ </para>
+
+ <para>
+ 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 <structname>pg_type</structname>.<structfield>typrelid</structfield>
+ to be NULL, it would fail when some piece of code tried to reference
+ <literal>typetup->typrelid</literal> (or worse,
+ <literal>typetup->typelem</literal>, because that follows
+ <structfield>typrelid</structfield>). This would result in
+ random errors or even segmentation violations.
+ </para>
+
+ <para>
+ 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 <literal>#ifdef
+ CATALOG_VARLEN</literal> ... <literal>#endif</literal> (where
+ <literal>CATALOG_VARLEN</literal> 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 <structname>pg_attribute</structname>. The bootstrap code will
+ automatically mark catalog columns as <literal>NOT NULL</literal>
+ 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
+ <literal>BKI_FORCE_NOT_NULL</literal>
+ and <literal>BKI_FORCE_NULL</literal> annotations as needed. But note
+ that <literal>NOT NULL</literal> 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.
+ </para>
+
+ <para>
+ Frontend code should not include any <structname>pg_xxx.h</structname>
+ 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 <filename>src/backend/catalog/</filename> files.)
+ Instead, frontend code may include the corresponding
+ generated <structname>pg_xxx_d.h</structname> header, which will contain
+ OID <literal>#define</literal>s 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 <literal>#ifdef
+ EXPOSE_TO_CLIENT_CODE</literal> ... <literal>#endif</literal> around that
+ section to instruct <filename>genbki.pl</filename> to copy that section
+ to the <structname>pg_xxx_d.h</structname> header.
+ </para>
+
+ <para>
+ A few of the catalogs are so fundamental that they can't even be created
+ by the <acronym>BKI</acronym> <literal>create</literal> 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 <firstterm>bootstrap</firstterm> 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 <structname>pg_class</structname>
+ and <structname>pg_type</structname>, and those entries will need to be
+ updated for subsequent changes to the catalog's structure.
+ (Bootstrap catalogs also need pre-loaded entries
+ in <structname>pg_attribute</structname>, but
+ fortunately <filename>genbki.pl</filename> handles that chore nowadays.)
+ Avoid making new catalogs be bootstrap catalogs if at all possible.
+ </para>
+ </sect1>
+
+ <sect1 id="system-catalog-initial-data">
+ <title>System Catalog Initial Data</title>
+
+ <para>
+ Each catalog that has any manually-created initial data (some do not)
+ has a corresponding <literal>.dat</literal> file that contains its
+ initial data in an editable format.
+ </para>
+
+ <sect2 id="system-catalog-initial-data-format">
+ <title>Data File Format</title>
+
+ <para>
+ Each <literal>.dat</literal> 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 <filename>pg_database.dat</filename>
+ will demonstrate the key features:
+ </para>
+
+<programlisting>
+[
+
+# 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_' },
+
+]
+</programlisting>
+
+ <para>
+ Points to note:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Within each catalog row, write comma-separated
+ <replaceable>key</replaceable> <literal>=></literal>
+ <replaceable>value</replaceable> pairs. The
+ allowed <replaceable>key</replaceable>s are the names of the catalog's
+ columns, plus the metadata keys <literal>oid</literal>,
+ <literal>oid_symbol</literal>, and <literal>descr</literal>.
+ (The use of <literal>oid</literal> and <literal>oid_symbol</literal>
+ is described in <xref linkend="system-catalog-oid-assignment"/>
+ below. <literal>descr</literal> supplies a description string for
+ the object, which will be inserted
+ into <structname>pg_description</structname>
+ or <structname>pg_shdescription</structname> as appropriate.)
+ While the metadata keys are optional, the catalog's defined columns
+ must all be provided, except when the catalog's <literal>.h</literal>
+ file specifies a default value for the column.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 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.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Null values are represented by <literal>_null_</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If a value is a macro to be expanded
+ by <application>initdb</application>, 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Comments are preceded by <literal>#</literal>, and must be on their
+ own lines.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 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 <xref linkend="system-catalog-oid-references"/>
+ below.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 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 <filename>reformat_dat_file.pl</filename>:
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Within each pair of curly braces, the metadata
+ fields <literal>oid</literal>, <literal>oid_symbol</literal>,
+ and <literal>descr</literal> (if present) come first, in that
+ order, then the catalog's own fields appear in their defined order.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 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.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If the catalog's <literal>.h</literal> file specifies a default
+ value for a column, and a data entry has that same
+ value, <filename>reformat_dat_file.pl</filename> will omit it from
+ the data file. This keeps the data representation compact.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <filename>reformat_dat_file.pl</filename> preserves blank lines
+ and comment lines as-is.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ It's recommended to run <filename>reformat_dat_file.pl</filename>
+ before submitting catalog data patches. For convenience, you can
+ simply change to <filename>src/include/catalog/</filename> and
+ run <literal>make reformat-dat-files</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ If you want to add a new method of making the data representation
+ smaller, you must implement it
+ in <filename>reformat_dat_file.pl</filename> and also
+ teach <function>Catalog::ParseData()</function> how to expand the
+ data back into the full representation.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="system-catalog-oid-assignment">
+ <title>OID Assignment</title>
+
+ <para>
+ A catalog row appearing in the initial data can be given a
+ manually-assigned OID by writing an <literal>oid
+ => <replaceable>nnnn</replaceable></literal> metadata field.
+ Furthermore, if an OID is assigned, a C macro for that OID can be
+ created by writing an <literal>oid_symbol
+ => <replaceable>name</replaceable></literal> metadata field.
+ </para>
+
+ <para>
+ 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 <literal>oid</literal> 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.
+ </para>
+
+ <para>
+ Writing the actual numeric value of any OID in C code is considered
+ very bad form; always use a macro, instead. Direct references
+ to <structname>pg_proc</structname> OIDs are common enough that there's
+ a special mechanism to create the necessary macros automatically;
+ see <filename>src/backend/utils/Gen_fmgrtab.pl</filename>. Similarly
+ — but, for historical reasons, not done the same way —
+ there's an automatic method for creating macros
+ for <structname>pg_type</structname>
+ OIDs. <literal>oid_symbol</literal> entries are therefore not
+ necessary in those two catalogs. Likewise, macros for
+ the <structname>pg_class</structname> 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 <literal>oid_symbol</literal> entries.
+ </para>
+
+ <para>
+ To find an available OID for a new pre-loaded row, run the
+ script <filename>src/include/catalog/unused_oids</filename>.
+ It prints inclusive ranges of unused OIDs (e.g., the output
+ line <quote>45-900</quote> means OIDs 45 through 900 have not been
+ allocated yet). Currently, OIDs 1-9999 are reserved for manual
+ assignment; the <filename>unused_oids</filename> script simply looks
+ through the catalog headers and <filename>.dat</filename> files
+ to see which ones do not appear. You can also use
+ the <filename>duplicate_oids</filename> script to check for mistakes.
+ (That script is run automatically at compile time, and will stop the
+ build if a duplicate is found.)
+ </para>
+
+ <para>
+ 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 <literal>oid</literal> field, then it will
+ receive an OID of 10000 or above.
+ </para>
+ </sect2>
+
+ <sect2 id="system-catalog-oid-references">
+ <title>OID Reference Lookup</title>
+
+ <para>
+ 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, <filename>genbki.pl</filename> 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:
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>
+ Use of symbolic references is enabled in a particular catalog column
+ by attaching <literal>BKI_LOOKUP(<replaceable>lookuprule</replaceable>)</literal>
+ to the column's definition, where <replaceable>lookuprule</replaceable>
+ is <structname>pg_am</structname>, <structname>pg_proc</structname>,
+ <structname>pg_operator</structname>,
+ <structname>pg_opclass</structname>,
+ <structname>pg_opfamily</structname>,
+ or <structname>pg_type</structname>.
+ <literal>BKI_LOOKUP</literal> can be attached to columns of
+ type <type>Oid</type>, <type>regproc</type>, <type>oidvector</type>,
+ or <type>Oid[]</type>; in the latter two cases it implies performing a
+ lookup on each element of the array.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ In such a column, all entries must use the symbolic format except
+ when writing <literal>0</literal> for InvalidOid. (If the column is
+ declared <type>regproc</type>, you can optionally
+ write <literal>-</literal> instead of <literal>0</literal>.)
+ <filename>genbki.pl</filename> will warn about unrecognized names.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Access methods are just represented by their names, as are types.
+ Type names must match the referenced <structname>pg_type</structname>
+ entry's <structfield>typname</structfield>; you do not get to use any
+ aliases such as <literal>integer</literal>
+ for <literal>int4</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A function can be represented by
+ its <structfield>proname</structfield>, if that is unique among
+ the <filename>pg_proc.dat</filename> entries (this works like regproc
+ input). Otherwise, write it
+ as <replaceable>proname(argtypename,argtypename,...)</replaceable>,
+ like regprocedure. The argument type names must be spelled exactly as
+ they are in the <filename>pg_proc.dat</filename> entry's
+ <structfield>proargtypes</structfield> field. Do not insert any
+ spaces.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Operators are represented
+ by <replaceable>oprname(lefttype,righttype)</replaceable>,
+ writing the type names exactly as they appear in
+ the <filename>pg_operator.dat</filename>
+ entry's <structfield>oprleft</structfield>
+ and <structfield>oprright</structfield> fields.
+ (Write <literal>0</literal> for the omitted operand of a unary
+ operator.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The names of opclasses and opfamilies are only unique within an
+ access method, so they are represented
+ by <replaceable>access_method_name</replaceable><literal>/</literal><replaceable>object_name</replaceable>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 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.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <filename>genbki.pl</filename> 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.
+ </para>
+ </sect2>
+
+ <sect2 id="system-catalog-recipes">
+ <title>Recipes for Editing Data Files</title>
+
+ <para>
+ Here are some suggestions about the easiest ways to perform common tasks
+ when updating catalog data files.
+ </para>
+
+ <formalpara>
+ <title>Add a new column with a default to a catalog:</title>
+ <para>
+ Add the column to the header file with
+ a <literal>BKI_DEFAULT(<replaceable>value</replaceable>)</literal>
+ annotation. The data file need only be adjusted by adding the field
+ in existing rows where a non-default value is needed.
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Add a default value to an existing column that doesn't have
+ one:</title>
+ <para>
+ Add a <literal>BKI_DEFAULT</literal> annotation to the header file,
+ then run <literal>make reformat-dat-files</literal> to remove
+ now-redundant field entries.
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Remove a column, whether it has a default or not:</title>
+ <para>
+ Remove the column from the header, then run <literal>make
+ reformat-dat-files</literal> to remove now-useless field entries.
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Change or remove an existing default value:</title>
+ <para>
+ You cannot simply change the header file, since that will cause the
+ current data to be interpreted incorrectly. First run <literal>make
+ expand-dat-files</literal> to rewrite the data files with all
+ default values inserted explicitly, then change or remove
+ the <literal>BKI_DEFAULT</literal> annotation, then run <literal>make
+ reformat-dat-files</literal> to remove superfluous fields again.
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Ad-hoc bulk editing:</title>
+ <para>
+ <filename>reformat_dat_file.pl</filename> 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 <structname>pg_proc</structname>
+ into a char field:
+
+ <orderedlist>
+ <listitem>
+ <para>
+ Add the new column, with a default,
+ to <filename>pg_proc.h</filename>:
+<programlisting>
++ /* see PROKIND_ categories below */
++ char prokind BKI_DEFAULT(f);
+</programlisting>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Create a new script based on <filename>reformat_dat_file.pl</filename>
+ to insert appropriate values on-the-fly:
+<programlisting>
+- # 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';
++ }
+</programlisting>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Run the new script:
+<programlisting>
+$ cd src/include/catalog
+$ perl -I ../../backend/catalog rewrite_dat_with_prokind.pl pg_proc.dat
+</programlisting>
+ At this point <filename>pg_proc.dat</filename> has all three
+ columns, <structfield>prokind</structfield>,
+ <structfield>proisagg</structfield>,
+ and <structfield>proiswindow</structfield>, though they will appear
+ only in rows where they have non-default values.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remove the old columns from <filename>pg_proc.h</filename>:
+<programlisting>
+- /* is it an aggregate? */
+- bool proisagg BKI_DEFAULT(f);
+-
+- /* is it a window function? */
+- bool proiswindow BKI_DEFAULT(f);
+</programlisting>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Finally, run <literal>make reformat-dat-files</literal> to remove
+ the useless old entries from <filename>pg_proc.dat</filename>.
+ </para>
+ </listitem>
+ </orderedlist>
+
+ For further examples of scripts used for bulk editing, see
+ <filename>convert_oid2name.pl</filename>
+ and <filename>remove_pg_type_oid_symbols.pl</filename> attached to this
+ message:
+ <ulink url="https://www.postgresql.org/message-id/CAJVSVGVX8gXnPm+Xa=DxR7kFYprcQ1tNcCT5D0O3ShfnM6jehA@mail.gmail.com"></ulink>
+ </para>
+ </formalpara>
+ </sect2>
+ </sect1>
+
<sect1 id="bki-format">
<title><acronym>BKI</acronym> File Format</title>
<optional><literal>rowtype_oid</literal> <replaceable>oid</replaceable></optional>
(<replaceable class="parameter">name1</replaceable> =
<replaceable class="parameter">type1</replaceable>
- <optional>FORCE NOT NULL | FORCE NULL </optional> <optional>,
+ <optional><literal>FORCE NOT NULL</literal> | <literal>FORCE NULL</literal> </optional> <optional>,
<replaceable class="parameter">name2</replaceable> =
<replaceable class="parameter">type2</replaceable>
- <optional>FORCE NOT NULL | FORCE NULL </optional>,
+ <optional><literal>FORCE NOT NULL</literal> | <literal>FORCE NULL</literal> </optional>,
...</optional>)
</term>
tables containing columns of other types, this cannot be done until
after <structname>pg_type</structname> 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.)
</para>
</sect1>
<sect1 id="bki-example">
- <title>Example</title>
+ <title>BKI Example</title>
<para>
The following sequence of commands will create the
You can query the system table <literal>pg_type</literal> to
obtain the names and properties of the various data types. The
<acronym>OID</acronym>s of the built-in data types are defined
- in the file <filename>src/include/catalog/pg_type.h</filename>
+ in the file <filename>src/include/catalog/pg_type_d.h</filename>
in the source tree.
</para>
</listitem>
$(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
##########################################################################
-all: submake-libpgport submake-schemapg postgres $(POSTGRES_IMP)
+all: submake-libpgport submake-catalog-headers postgres $(POSTGRES_IMP)
ifneq ($(PORTNAME), cygwin)
ifneq ($(PORTNAME), win32)
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
.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 $@) && \
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
##########################################################################
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
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 \
/postgres.description
/postgres.shdescription
/schemapg.h
+/pg_*_d.h
+/bki-stamp
#----------------------------------------------------------------------
#
# 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
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.
'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;/\*;)
- {
-
- # 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;
- }
-
- # Remember input line number for later.
- my $input_line_number = $.;
-
- # 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+)/)
- {
- $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\(\"(.*)\"\)$/)
+ # Set appropriate flag when we're in certain code sections.
+ if (/^#/)
{
- $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 '')
+ $is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
+ if (/^#ifdef\s+EXPOSE_TO_CLIENT_CODE/)
{
- $most_recent->{descr} = $1;
+ $is_client_code = 1;
+ next;
}
+ next if !$is_client_code;
}
- 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 '')
+ if (!$is_client_code)
+ {
+ # Strip C-style comments.
+ s;/\*(.|\n)*\*/;;g;
+ if (m;/\*;)
{
- $most_recent->{shdescr} = $1;
+
+ # 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;
}
- elsif (/^DECLARE_TOAST\(\s*(\w+),\s*(\d+),\s*(\d+)\)/)
+
+ # Push the data into the appropriate data structure.
+ if (/^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 ' : '',
}
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 ($declaring_attributes)
+ elsif ($is_client_code)
{
- next if (/^{|^$/);
- if (/^#/)
+ if (/^#endif/)
{
- $is_varlen = 1 if /^#ifdef\s+CATALOG_VARLEN/;
- next;
+ $is_client_code = 0;
+ }
+ else
+ {
+ push @{ $catalog{client_code} }, $_;
}
+ }
+ elsif ($declaring_attributes)
+ {
+ next if (/^{|^$/);
if (/^}/)
{
- undef $declaring_attributes;
+ $declaring_attributes = 0;
}
else
{
{
$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
}
}
}
- $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;
-
- # 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;
-
- return @result;
+ my ($input_file, $schema, $preserve_formatting) = @_;
+
+ 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 = [];
+
+ # 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)
{
{
$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.
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.
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.
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;
#
# 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
#
#-------------------------------------------------------------------------
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 \
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'
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)
+++ /dev/null
-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.
#
# 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
use warnings;
my @input_files;
-my @include_path;
my $output_path = '';
my $major_version;
{
$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;
}
# 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.
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');
+
+
+# Build lookup tables for OID macro substitutions and for pg_attribute
+# copies of pg_type values.
-# Read all the input header files into internal data structures
-my $catalogs = Catalog::Catalogs(@input_files);
+# index access method OID lookup
+my %amoids;
+foreach my $row (@{ $catalog_data{pg_am} })
+{
+ $amoids{ $row->{amname} } = $row->{oid};
+}
-# Generate postgres.bki, postgres.description, and postgres.shdescription
+# 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";
# 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 <<EOM, $catname, $catname, uc $catname, uc $catname;
+/*-------------------------------------------------------------------------
+ *
+ * %s_d.h
+ * Macro definitions for %s
+ *
+ * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * NOTES
+ * ******************************
+ * *** DO NOT EDIT THIS FILE! ***
+ * ******************************
+ *
+ * It has been GENERATED by src/backend/catalog/genbki.pl
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef %s_D_H
+#define %s_D_H
+
+EOM
+
+ # Emit OID macros for catalog's OID and rowtype OID, if wanted
+ printf $def "#define %s %s\n",
+ $catalog->{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";
{
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})
{
}
# 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)
$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;
}
}
# 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;
sub gen_pg_attribute
{
my $schema = shift;
- my @attnames = @_;
- foreach my $table_name (@{ $catalogs->{names} })
+ my @attnames;
+ foreach my $column (@$schema)
+ {
+ push @attnames, $column->{name};
+ }
+
+ foreach my $table_name (@catnames)
{
- my $table = $catalogs->{$table_name};
+ 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.
$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);
&& $attr->{name} eq 'oid';
morph_row_for_pgattr(\%row, $schema, $attr, 1);
- print_bki_insert(\%row, @attnames);
+ print_bki_insert(\%row, $schema);
}
}
}
$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
}
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});
}
}
}
+# 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 <<EOM;
Usage: genbki.pl [options] header...
Options:
- -I path to include files
-o output path
--set-version PostgreSQL version number for initdb cross-check
-genbki.pl generates BKI files from specially formatted
-header files. These BKI files are used to initialize the
+genbki.pl generates BKI files and symbol definition
+headers from specially formatted header files and .dat
+files. The BKI files are used to initialize the
postgres template database.
Report bugs to <pgsql-bugs\@postgresql.org>.
#
# 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
use warnings;
# Collect arguments
-my $infile; # pg_proc.h
+my @input_files;
my $output_path = '';
my @include_path;
my $arg = shift @ARGV;
if ($arg !~ /^-/)
{
- $infile = $arg;
+ push @input_files, $arg;
}
elsif ($arg =~ /^-o/)
{
}
# 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 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)
+{
+ $datfile =~ /(.+)\.dat$/
+ or die "Input files need to be data (.dat) files.\n";
-# Read all the data from the include/catalog files.
-my $catalogs = Catalog::Catalogs($infile);
+ my $header = "$1.h";
+ die "There in no header file corresponding to $datfile"
+ if ! -e $header;
-# Collect the raw data from pg_proc.h.
-my @fmgr = ();
-my @attnames;
-foreach my $column (@{ $catalogs->{pg_proc}->{columns} })
-{
- push @attnames, $column->{name};
+ 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');
+
+# Collect certain fields from pg_proc.dat.
+my @fmgr = ();
- # Split line into tokens without interpreting their meaning.
- my %bki_values;
- @bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
+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},
sub usage
{
die <<EOM;
-Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl [path to pg_proc.h]
+Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl -I [include path] [path to pg_proc.dat]
Gen_fmgrtab.pl generates fmgroids.h, fmgrprotos.h, and fmgrtab.c from
-pg_proc.h
+pg_proc.dat
Report bugs to <pgsql-bugs\@postgresql.org>.
EOM
+#-------------------------------------------------------------------------
#
-# 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 = ../../..
$(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 $@
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 $< > $@
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
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
/schemapg.h
+/pg_*_d.h
+/header-stamp
--- /dev/null
+#-------------------------------------------------------------------------
+#
+# 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
BEGIN
{
- @ARGV = (glob("pg_*.h"), qw(indexing.h toasting.h));
+ @ARGV = (glob("pg_*.h"), glob("pg_*.dat"), qw(indexing.h toasting.h));
}
my %oidcounts;
{
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+)/
* 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.)
#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
*/
#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 */
/*
* 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
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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;
*/
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
#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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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;
/* ----------------
*/
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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;
-
-/* allowed values of amoppurpose: */
-#define AMOP_SEARCH 's' /* operator is for search */
-#define AMOP_ORDER 'o' /* operator is for ordering */
-
-/* ----------------
- * Form_pg_amop corresponds to a pointer to a tuple with
- * the format of pg_amop relation.
- * ----------------
- */
-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
-
-/* ----------------
- * initial contents of pg_amop
- * ----------------
- */
-
-/*
- * 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 ));
+ /* the index opfamily this entry is for */
+ Oid amopfamily BKI_LOOKUP(pg_opfamily);
-/*
- * 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 ));
+ /* operator's left input data type */
+ Oid amoplefttype BKI_LOOKUP(pg_type);
-/*
- * GIN tsvector_ops
- */
-DATA(insert ( 3659 3614 3615 1 s 3636 2742 0 ));
-DATA(insert ( 3659 3614 3615 2 s 3660 2742 0 ));
+ /* operator's right input data type */
+ Oid amoprighttype BKI_LOOKUP(pg_type);
-/*
- * 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 ));
+ /* operator strategy number */
+ int16 amopstrategy;
-/*
- * GiST tsquery_ops
- */
-DATA(insert ( 3702 3615 3615 7 s 3693 783 0 ));
-DATA(insert ( 3702 3615 3615 8 s 3694 783 0 ));
+ /* is operator for 's'earch or 'o'rdering? */
+ char amoppurpose BKI_DEFAULT(s);
-/*
- * 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 ));
+ /* the operator's pg_operator OID */
+ Oid amopopr BKI_LOOKUP(pg_operator);
-/*
- * hash range_ops
- */
-DATA(insert ( 3903 3831 3831 1 s 3882 405 0 ));
+ /* the index access method this entry is for */
+ Oid amopmethod BKI_LOOKUP(pg_am);
-/*
- * 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 ));
+ /* ordering opfamily OID, or 0 if search op */
+ Oid amopsortfamily BKI_DEFAULT(0) BKI_LOOKUP(pg_opfamily);
+} FormData_pg_amop;
-/*
- * SP-GiST inet_ops
+/* ----------------
+ * Form_pg_amop corresponds to a pointer to a tuple with
+ * the format of pg_amop relation.
+ * ----------------
*/
-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 ));
+typedef FormData_pg_amop *Form_pg_amop;
-/* 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 ));
+#ifdef EXPOSE_TO_CLIENT_CODE
-/* 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 ));
+/* allowed values of amoppurpose: */
+#define AMOP_SEARCH 's' /* operator is for search */
+#define AMOP_ORDER 'o' /* operator is for ordering */
-/* 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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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;
/* ----------------
*/
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#define PG_ATTRIBUTE_H
#include "catalog/genbki.h"
+#include "catalog/pg_attribute_d.h"
/* ----------------
* pg_attribute definition. cpp turns this into
* 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 */
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);
*/
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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_' },
+
+]
*
* 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.
*
* 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.
*
*-------------------------------------------------------------------------
*/
#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! */
#endif
} FormData_pg_authid;
-#undef timestamptz
-
-
/* ----------------
* Form_pg_authid corresponds to a pointer to a tuple with
* the format of pg_authid relation.
*/
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
*
* 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.
* 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.
*
*-------------------------------------------------------------------------
*/
#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
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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_' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
*/
#define REPLICA_IDENTITY_INDEX 'i'
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
#endif /* PG_CLASS_H */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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_' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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
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];
*/
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'
* the FKCONSTR_MATCH_xxx constants defined in parsenodes.h.
*/
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
#endif /* PG_CONSTRAINT_H */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#define PG_CONVERSION_H
#include "catalog/genbki.h"
+#include "catalog/pg_conversion_d.h"
/* ----------------------------------------------------------------
* pg_conversion definition.
* condefault true if this is a default conversion
* ----------------------------------------------------------------
*/
-#define ConversionRelationId 2607
-
-CATALOG(pg_conversion,2607)
+CATALOG(pg_conversion,2607,ConversionRelationId)
{
NameData conname;
Oid connamespace;
*/
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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_' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
/*-------------------------------------------------------------------------
*
* 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
* 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"
* 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 */
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
*/
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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
#define DEFACLOBJ_TYPE 'T' /* type */
#define DEFACLOBJ_NAMESPACE 'n' /* namespace */
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
#endif /* PG_DEFAULT_ACL_H */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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.
*/
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 */
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#define PG_ENUM_H
#include "catalog/genbki.h"
+#include "catalog/pg_enum_d.h"
#include "nodes/pg_list.h"
/* ----------------
* 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 */
*/
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
*/
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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
#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
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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;
*/
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 */
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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_' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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) */
*/
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);
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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_' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#define PG_NAMESPACE_H
#include "catalog/genbki.h"
+#include "catalog/pg_namespace_d.h"
/* ----------------------------------------------------------------
* pg_namespace definition.
* nspacl access privilege list
* ----------------------------------------------------------------
*/
-#define NamespaceRelationId 2615
-
-CATALOG(pg_namespace,2615)
+CATALOG(pg_namespace,2615,NamespaceRelationId)
{
NameData nspname;
Oid nspowner;
*/
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
*/
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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
+
+]
*
* 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 <opcmethod, opcname, opcnamespace> ---
* that is, there is a row for each valid combination of opclass name and
* 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.
*
*-------------------------------------------------------------------------
*/
#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;
/* ----------------
*/
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
-} FormData_pg_operator;
-
-/* ----------------
- * Form_pg_operator corresponds to a pointer to a tuple with
- * the format of pg_operator relation.
- * ----------------
- */
-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");
+ /* name of operator */
+ NameData oprname;
-/* 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");
+ /* OID of namespace containing this oper */
+ Oid oprnamespace BKI_DEFAULT(PGNSP);
+ /* operator owner */
+ Oid oprowner BKI_DEFAULT(PGUID);
-/* 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");
+ /* 'l', 'r', or 'b' */
+ char oprkind BKI_DEFAULT(b);
-/* 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");
+ /* can be used in merge join? */
+ bool oprcanmerge BKI_DEFAULT(f);
-/* 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");
+ /* can be used in hash join? */
+ bool oprcanhash BKI_DEFAULT(f);
-/* 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");
+ /* left arg type, or 0 if 'l' oprkind */
+ Oid oprleft BKI_LOOKUP(pg_type);
-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");
+ /* right arg type, or 0 if 'r' oprkind */
+ Oid oprright BKI_LOOKUP(pg_type);
-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");
+ /* result datatype */
+ Oid oprresult BKI_LOOKUP(pg_type);
-DATA(insert OID = 1399 ( "-" PGNSP PGUID b f f 1083 1083 1186 0 0 time_mi_time - - ));
-DESCR("subtract");
+ /* OID of commutator oper, or 0 if none */
+ Oid oprcom BKI_DEFAULT(0) BKI_LOOKUP(pg_operator);
-/* 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");
+ /* OID of negator oper, or 0 if none */
+ Oid oprnegate BKI_DEFAULT(0) BKI_LOOKUP(pg_operator);
-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");
+ /* OID of underlying function */
+ regproc oprcode BKI_LOOKUP(pg_proc);
-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");
+ /* OID of restriction estimator, or 0 */
+ regproc oprrest BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
-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");
+ /* OID of join estimator, or 0 */
+ regproc oprjoin BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
+} FormData_pg_operator;
-/*
- * tsearch operations
+/* ----------------
+ * Form_pg_operator corresponds to a pointer to a tuple with
+ * the format of pg_operator relation.
+ * ----------------
*/
-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");
+typedef FormData_pg_operator *Form_pg_operator;
#endif /* PG_OPERATOR_H */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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;
/* ----------------
*/
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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_' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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? */
*/
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 */
-/*
+/*-------------------------------------------------------------------------
+ *
* 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. */
*/
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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 <E.Mergl@bawue.de>
+{ 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' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
-
- /*
- * variable-length fields start here, but we allow direct access to
- * proargtypes
- */
- oidvector proargtypes; /* parameter types (excludes OUT params) */
-
-#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 */
-#endif
-} FormData_pg_proc;
-
-/* ----------------
- * Form_pg_proc corresponds to a pointer to a tuple with
- * the format of pg_proc relation.
- * ----------------
- */
-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 */
+ /* procedure name */
+ NameData proname;
-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");
+ /* OID of namespace containing this proc */
+ Oid pronamespace BKI_DEFAULT(PGNSP);
-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");
+ /* procedure owner */
+ Oid proowner BKI_DEFAULT(PGUID);
-/* OIDS 1100 - 1199 */
+ /* OID of pg_language entry */
+ Oid prolang BKI_DEFAULT(12);
-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_ ));
+ /* estimated execution cost */
+ float4 procost BKI_DEFAULT(1);
-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_ ));
+ /* estimated # of rows out (if proretset) */
+ float4 prorows BKI_DEFAULT(0);
-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");
+ /* element type of variadic array, or 0 */
+ Oid provariadic BKI_DEFAULT(0) BKI_LOOKUP(pg_type);
-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");
+ /* transforms calls to it during planning */
+ regproc protransform BKI_DEFAULT(0) BKI_LOOKUP(pg_proc);
-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");
+ /* see PROKIND_ categories below */
+ char prokind BKI_DEFAULT(f);
-/* OIDS 1200 - 1299 */
+ /* security definer */
+ bool prosecdef BKI_DEFAULT(f);
-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");
+ /* is it a leak-proof function? */
+ bool proleakproof BKI_DEFAULT(f);
-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");
+ /* strict with respect to NULLs? */
+ bool proisstrict BKI_DEFAULT(t);
-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");
+ /* returns a set? */
+ bool proretset BKI_DEFAULT(f);
-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_ ));
+ /* see PROVOLATILE_ categories below */
+ char provolatile BKI_DEFAULT(i);
-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");
+ /* see PROPARALLEL_ categories below */
+ char proparallel BKI_DEFAULT(s);
-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_ ));
+ /* number of arguments */
+ /* Note: need not be given in pg_proc.dat; genbki.pl will compute it */
+ int16 pronargs;
-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_ ));
+ /* number of arguments with defaults */
+ int16 pronargdefaults BKI_DEFAULT(0);
-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_ ));
+ /* OID of result type */
+ Oid prorettype BKI_LOOKUP(pg_type);
-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");
+ /*
+ * variable-length fields start here, but we allow direct access to
+ * proargtypes
+ */
-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?");
+ /* parameter types (excludes OUT params) */
+ oidvector proargtypes BKI_LOOKUP(pg_type);
+#ifdef CATALOG_VARLEN
-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");
+ /* all param types (NULL if IN only) */
+ Oid proallargtypes[1] BKI_DEFAULT(_null_) BKI_LOOKUP(pg_type);
-/* OIDS 1400 - 1499 */
+ /* parameter modes (NULL if IN only) */
+ char proargmodes[1] BKI_DEFAULT(_null_);
-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");
+ /* parameter names (NULL if no names) */
+ text proargnames[1] BKI_DEFAULT(_null_);
-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");
+ /* list of expression trees for argument defaults (NULL if none) */
+ pg_node_tree proargdefaults BKI_DEFAULT(_null_);
-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");
+ /* types for which to apply transforms */
+ Oid protrftypes[1] BKI_DEFAULT(_null_);
-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");
+ /* procedure source text */
+ text prosrc BKI_FORCE_NOT_NULL;
-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");
+ /* secondary procedure info (can be NULL) */
+ text probin BKI_DEFAULT(_null_);
-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_ ));
+ /* procedure-local GUC settings */
+ text proconfig[1] BKI_DEFAULT(_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_ ));
+ /* access permissions */
+ aclitem proacl[1] BKI_DEFAULT(_null_);
+#endif
+} FormData_pg_proc;
-/* pclose and popen might better be named close and open, but that crashes initdb.
- * - thomas 97/04/20
+/* ----------------
+ * Form_pg_proc corresponds to a pointer to a tuple with
+ * the format of pg_proc relation.
+ * ----------------
*/
+typedef FormData_pg_proc *Form_pg_proc;
-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 <E.Mergl@bawue.de> */
-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
#define PROARGMODE_VARIADIC 'v'
#define PROARGMODE_TABLE 't'
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
#endif /* PG_PROC_H */
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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;
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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;
/* ----------------
*/
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
*/
* 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.
*
*-------------------------------------------------------------------------
*/
#define PG_REPLICATION_ORIGIN_H
#include "catalog/genbki.h"
+#include "catalog/pg_replication_origin_d.h"
#include "access/xlogdefs.h"
/* ----------------
* 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.
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 */
*
* 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 <ev_class, rulename>
* --- ie, rule names are only unique among the rules of a given table.
* 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.
*
*-------------------------------------------------------------------------
*/
#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;
*/
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 */
#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 */
#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 */
#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;
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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.
*/
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 */
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
/* -------------------------------------------------------------------------
*
* 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
#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 */
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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
*/
#define STATISTIC_KIND_BOUNDS_HISTOGRAM 7
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
#endif /* PG_STATISTIC_H */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
#define PG_SUBSCRIPTION_H
#include "catalog/genbki.h"
+#include "catalog/pg_subscription_d.h"
#include "nodes/pg_list.h"
/* ----------------
* typedef struct FormData_pg_subscription
* ----------------
*/
-#define SubscriptionRelationId 6100
-#define SubscriptionRelation_Rowtype_Id 6101
/*
* Technically, the subscriptions live inside the database, so a shared catalog
*
* 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 */
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 */
#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"
/* ----------------
* 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 */
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
#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;
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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_' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
/*-------------------------------------------------------------------------
*
* 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.
*
*-------------------------------------------------------------------------
*/
#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;
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 */
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#define PG_TRIGGER_H
#include "catalog/genbki.h"
+#include "catalog/pg_trigger_d.h"
/* ----------------
* pg_trigger definition. cpp turns this into
* 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 */
*/
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)
#define TRIGGER_USES_TRANSITION_TABLE(namepointer) \
((namepointer) != (char *) NULL)
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
#endif /* PG_TRIGGER_H */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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_' },
+
+]
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
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 */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
-} FormData_pg_ts_parser;
+ /* parser's name */
+ NameData prsname;
-typedef FormData_pg_ts_parser *Form_pg_ts_parser;
+ /* name space */
+ Oid prsnamespace BKI_DEFAULT(PGNSP);
-/* ----------------
- * 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
+ /* init parsing session */
+ regproc prsstart BKI_LOOKUP(pg_proc);
-/* ----------------
- * initial contents of pg_ts_parser
- * ----------------
- */
+ /* 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);
-DATA(insert OID = 3722 ( default PGNSP prsd_start prsd_nexttoken prsd_end prsd_headline prsd_lextype ));
-DESCR("default word parser");
+ /* 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;
#endif /* PG_TS_PARSER_H */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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' },
+
+]
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
-} FormData_pg_ts_template;
+ /* template name */
+ NameData tmplname;
-typedef FormData_pg_ts_template *Form_pg_ts_template;
+ /* name space */
+ Oid tmplnamespace BKI_DEFAULT(PGNSP);
-/* ----------------
- * 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
+ /* initialization method of dict (may be 0) */
+ regproc tmplinit BKI_LOOKUP(pg_proc);
-/* ----------------
- * initial contents of pg_ts_template
- * ----------------
- */
+ /* base method of dictionary */
+ regproc tmpllexize BKI_LOOKUP(pg_proc);
+} FormData_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");
+typedef FormData_pg_ts_template *Form_pg_ts_template;
#endif /* PG_TS_TEMPLATE_H */
--- /dev/null
+#----------------------------------------------------------------------
+#
+# 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 => '@ <number> <units>, 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' },
+
+]
*
* 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
* 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.
*
*-------------------------------------------------------------------------
*/
#define PG_TYPE_H
#include "catalog/genbki.h"
+#include "catalog/pg_type_d.h"
/* ----------------
* pg_type definition. cpp turns this into
* 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
*
* 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
* 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
*
* 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
* '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.
*
* 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 */
* 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
* 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;
*/
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
- * ----------------
- */
-
-/*
- * 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("@ <number> <units>, 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_ ));
+#ifdef EXPOSE_TO_CLIENT_CODE
/*
- * 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) */
(typid) == ANYENUMOID || \
(typid) == ANYRANGEOID)
+#endif /* EXPOSE_TO_CLIENT_CODE */
+
#endif /* PG_TYPE_H */
* 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.
*
*-------------------------------------------------------------------------
*/
#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 */
*/
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 */
--- /dev/null
+#!/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 <<EOM;
+Usage: reformat_dat_file.pl [options] datafile...
+
+Options:
+ -o output path
+ --full-tuples write out full tuples, including default values
+
+Expects a list of .dat files as arguments.
+
+Make sure location of Catalog.pm is passed to the perl interpreter:
+perl -I /path/to/Catalog.pm/ ...
+
+EOM
+}
/*
* This macro is just to keep the C compiler from spitting up on the
- * upcoming commands for genbki.pl.
+ * upcoming commands for Catalog.pm.
*/
#define DECLARE_TOAST(name,toastoid,indexoid) extern int no_such_variable
# this part (down to the uniq step) should match the duplicate_oids script
# note: we exclude BKI_BOOTSTRAP relations since they are expected to have
-# matching DATA lines in pg_class.h and pg_type.h
+# matching data entries in pg_class.dat and pg_type.dat
-cat pg_*.h toasting.h indexing.h | \
+cat pg_*.h pg_*.dat toasting.h indexing.h |
egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \
-sed -n -e 's/^DATA(insert *OID *= *\([0-9][0-9]*\).*$/\1/p' \
- -e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*BKI_ROWTYPE_OID(\([0-9][0-9]*\)).*$/\1,\2/p' \
+sed -n -e 's/.*\boid *=> *'\''\([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' \
/*-------------------------------------------------------------------------
*
* 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
#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 */
"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'))
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');
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
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
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;
}
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;