Add quote_literal(anyelement) to preserve (and, in fact, extend) a
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 27 Nov 2007 18:29:11 +0000 (18:29 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 27 Nov 2007 18:29:11 +0000 (18:29 +0000)
useful consequence of the former liberal implicit casting to text;
namely that you can feed non-string values to quote_literal() and get
unsurprising results.  Per discussion.

doc/src/sgml/func.sgml
src/include/catalog/catversion.h
src/include/catalog/pg_proc.h

index 861ff12e874e917da4798ca7a326be984f76d930..14ba5493c03fb31c263e76319cf9b4870b8071dc 100644 (file)
       </row>
 
       <row>
-       <entry><literal><function>quote_ident</function>(<parameter>string</parameter>)</literal></entry>
+       <entry><literal><function>quote_ident</function>(<parameter>string</parameter> <type>text</type>)</literal></entry>
        <entry><type>text</type></entry>
        <entry>
         Return the given string suitably quoted to be used as an identifier
       </row>
 
       <row>
-       <entry><literal><function>quote_literal</function>(<parameter>string</parameter>)</literal></entry>
+       <entry><literal><function>quote_literal</function>(<parameter>string</parameter> <type>text</type>)</literal></entry>
        <entry><type>text</type></entry>
        <entry>
         Return the given string suitably quoted to be used as a string literal
        <entry><literal>'O''Reilly'</literal></entry>
       </row>
 
+      <row>
+       <entry><literal><function>quote_literal</function>(<parameter>value</parameter> <type>anyelement</type>)</literal></entry>
+       <entry><type>text</type></entry>
+       <entry>
+        Coerce the given value to text and then quote it as a literal.
+        Embedded single-quotes and backslashes are properly doubled.
+       </entry>
+       <entry><literal>quote_literal(42.5)</literal></entry>
+       <entry><literal>'42.5'</literal></entry>
+      </row>
+
       <row>
        <entry><literal><function>regexp_matches</function>(<parameter>string</parameter> <type>text</type>, <parameter>pattern</parameter> <type>text</type> [, <parameter>flags</parameter> <type>text</type>])</literal></entry>
        <entry><type>setof text[]</type></entry>
index 6970f6ddb283ae305ab364a54ec39f923b8b4aa2..c571a315f5ba6444f4caf1362ebee4b634bdbb9a 100644 (file)
@@ -53,6 +53,6 @@
  */
 
 /*                                                     yyyymmddN */
-#define CATALOG_VERSION_NO     200711271
+#define CATALOG_VERSION_NO     200711272
 
 #endif
index 294ec736fe7c8848bfe44cb58d6937f11e7c87c0..5985cd5b3191b178604633d4eb16fd179ec011d4 100644 (file)
@@ -2631,6 +2631,8 @@ DATA(insert OID =  1282 ( quote_ident        PGNSP PGUID 12 1 0 f f t f i 1 25 "25"
 DESCR("quote an identifier for usage in a querystring");
 DATA(insert OID =  1283 ( quote_literal    PGNSP PGUID 12 1 0 f f t f i 1 25 "25" _null_ _null_ _null_ quote_literal - _null_ _null_ ));
 DESCR("quote a literal for usage in a querystring");
+DATA(insert OID =  1285 ( quote_literal    PGNSP PGUID 14 1 0 f f t f v 1 25 "2283" _null_ _null_ _null_ "select pg_catalog.quote_literal($1::pg_catalog.text)" - _null_ _null_ ));
+DESCR("quote a data value for usage in a querystring");
 
 DATA(insert OID = 1798 (  oidin                           PGNSP PGUID 12 1 0 f f t f i 1 26 "2275" _null_ _null_ _null_ oidin - _null_ _null_ ));
 DESCR("I/O");