summaryrefslogtreecommitdiff
path: root/src/pl/plpython/sql/plpython_quote.sql
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2011-02-22 23:33:44 +0200
committerPeter Eisentraut <peter_e@gmx.net>2011-02-22 23:41:23 +0200
commit1c51c7d5ffd407426f314b2cd317ef77f14efb1f (patch)
tree86ff75cfeb5801164eb4b3d4f5ce5dba20d8acad /src/pl/plpython/sql/plpython_quote.sql
parent3e6b305d9e2a4616bf69e31b0b21ebbb844ba50e (diff)
downloadpostgresql-1c51c7d5ffd407426f314b2cd317ef77f14efb1f.tar.gz
Add PL/Python functions for quoting strings
Add functions plpy.quote_ident, plpy.quote_literal, plpy.quote_nullable, which wrap the equivalent SQL functions. To be able to propagate char * constness properly, make the argument of quote_literal_cstr() const char *. This also makes it more consistent with quote_identifier(). Jan UrbaƄski, reviewed by Hitoshi Harada, some refinements by Peter Eisentraut
Diffstat (limited to 'src/pl/plpython/sql/plpython_quote.sql')
-rw-r--r--src/pl/plpython/sql/plpython_quote.sql33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/pl/plpython/sql/plpython_quote.sql b/src/pl/plpython/sql/plpython_quote.sql
new file mode 100644
index 0000000000..346b5485da
--- /dev/null
+++ b/src/pl/plpython/sql/plpython_quote.sql
@@ -0,0 +1,33 @@
+-- test quoting functions
+
+CREATE FUNCTION quote(t text, how text) RETURNS text AS $$
+ if how == "literal":
+ return plpy.quote_literal(t)
+ elif how == "nullable":
+ return plpy.quote_nullable(t)
+ elif how == "ident":
+ return plpy.quote_ident(t)
+ else:
+ raise plpy.Error("unrecognized quote type %s" % how)
+$$ LANGUAGE plpythonu;
+
+SELECT quote(t, 'literal') FROM (VALUES
+ ('abc'),
+ ('a''bc'),
+ ('''abc'''),
+ (''),
+ (''''),
+ ('xyzv')) AS v(t);
+
+SELECT quote(t, 'nullable') FROM (VALUES
+ ('abc'),
+ ('a''bc'),
+ ('''abc'''),
+ (''),
+ (''''),
+ (NULL)) AS v(t);
+
+SELECT quote(t, 'ident') FROM (VALUES
+ ('abc'),
+ ('a b c'),
+ ('a " ''abc''')) AS v(t);