Re: [HACKERS] IS OF - Mailing list pgsql-patches
From | Joe Conway |
---|---|
Subject | Re: [HACKERS] IS OF |
Date | |
Msg-id | 3F333523.7070105@joeconway.com Whole thread Raw |
Responses |
Re: [HACKERS] IS OF
|
List | pgsql-patches |
Bruce Momjian wrote: > Can someone suggest where to document IS OF, and either document it's > non-standard behavior or supply patch? > Doc patch attached for IS OF. Please apply. Thanks, Joe > --------------------------------------------------------------------------- > > Joe Conway wrote: > >>Gavin Sherry wrote: >> >>>8.14 <type predicate> to be exact. >>> >> >>8.18 in SQL200x. I don't think the current implementation quite meets >>the spec however: >> >>regression=# select f2 is null, f2 is of(int) from bar; >> ?column? | ?column? >>----------+---------- >> f | t >> t | t >>(2 rows) >> >>If I read the spec correctly, the null value should return null, not 't' >>in the above. >> >>General Rules >>1) Let V be the result of evaluating the <row value predicand>. >>2) Let ST be the set consisting of every type that is either some >> exclusively specified type, or a subtype of some inclusively >> specified type. >>3) Let TPR be the result of evaluating the <type predicate>. >> >>Case: >>a) If V is the null value, then TPR is Unknown. >>b) If the most specific type of V is a member of ST, then TPR is True . >>c) Otherwise, TPR is False >> Index: doc/src/sgml/reference.sgml =================================================================== RCS file: /opt/src/cvs/pgsql-server/doc/src/sgml/reference.sgml,v retrieving revision 1.45 diff -c -r1.45 reference.sgml *** doc/src/sgml/reference.sgml 27 Jun 2003 14:45:25 -0000 1.45 --- doc/src/sgml/reference.sgml 8 Aug 2003 05:16:26 -0000 *************** *** 108,113 **** --- 108,114 ---- &fetch; &grant; &insert; + &isof; &listen; &load; &lock; Index: doc/src/sgml/ref/allfiles.sgml =================================================================== RCS file: /opt/src/cvs/pgsql-server/doc/src/sgml/ref/allfiles.sgml,v retrieving revision 1.54 diff -c -r1.54 allfiles.sgml *** doc/src/sgml/ref/allfiles.sgml 27 Jun 2003 14:45:25 -0000 1.54 --- doc/src/sgml/ref/allfiles.sgml 8 Aug 2003 04:45:35 -0000 *************** *** 76,81 **** --- 76,82 ---- <!entity fetch system "fetch.sgml"> <!entity grant system "grant.sgml"> <!entity insert system "insert.sgml"> + <!entity isof system "isof.sgml"> <!entity listen system "listen.sgml"> <!entity load system "load.sgml"> <!entity lock system "lock.sgml"> Index: doc/src/sgml/ref/isof.sgml =================================================================== RCS file: doc/src/sgml/ref/isof.sgml diff -N doc/src/sgml/ref/isof.sgml *** /dev/null 1 Jan 1970 00:00:00 -0000 --- doc/src/sgml/ref/isof.sgml 8 Aug 2003 05:20:46 -0000 *************** *** 0 **** --- 1,84 ---- + <refentry id="SQL-ISOF"> + <refmeta> + <refentrytitle id="SQL-ISOF-TITLE">IS OF</refentrytitle> + <refmiscinfo>SQL - Language Statements</refmiscinfo> + </refmeta> + + <refnamediv> + <refname>IS OF</refname> + <refpurpose>specify a type test</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <synopsis> + <replaceable class="parameter">expression</replaceable> IS [ NOT ] OF ( <replaceable class="PARAMETER">typename</replaceable>[,... ] ) + </synopsis> + </refsynopsisdiv> + + <refsect1 id="sql-isof-description"> + <title>Description</title> + + <para> + This command allows an expression to be checked against a list + of data types. It returns TRUE if any data type in the list matches + that of the <replaceable class="parameter">expression</replaceable>, + FALSE otherwise. + </para> + + </refsect1> + + <refsect1> + <title>Examples</title> + <programlisting> + regression=# SELECT 1::int4 IS OF (int4, int8); + ?column? + ---------- + t + (1 row) + + regression=# SELECT 1::int4 IS OF (text); + ?column? + ---------- + f + (1 row) + + regression=# SELECT ARRAY['a'] IS OF (text[]); + ?column? + ---------- + t + (1 row) + </programlisting> + </refsect1> + + <refsect1 id="sql-isof-compat"> + <title>Compatibility</title> + + <para> + The SQL standard specifies that <literal>IS OF</literal> + must result in <literal>UNKNOWN</literal> if + <replaceable class="parameter">expression</replaceable> is + <literal>NULL</literal>. The <productname>PostgreSQL</productname> + implementation results in <literal>TRUE</literal> or <literal>FALSE</literal> + as appropriate based on the data type assigned by the planner. + Otherwise, this command is fully conforming. + </para> + </refsect1> + + </refentry> + + <!-- Keep this comment at the end of the file + Local variables: + mode: sgml + sgml-omittag:nil + sgml-shorttag:t + sgml-minimize-attributes:nil + sgml-always-quote-attributes:t + sgml-indent-step:1 + sgml-indent-data:t + sgml-parent-document:nil + sgml-default-dtd-file:"../reference.ced" + sgml-exposed-tags:nil + sgml-local-catalogs:"/usr/lib/sgml/catalog" + sgml-local-ecat-files:nil + End: + -->
pgsql-patches by date: