diff options
| author | Peter Eisentraut <peter_e@gmx.net> | 2011-02-22 23:33:44 +0200 |
|---|---|---|
| committer | Peter Eisentraut <peter_e@gmx.net> | 2011-02-22 23:41:23 +0200 |
| commit | 1c51c7d5ffd407426f314b2cd317ef77f14efb1f (patch) | |
| tree | 86ff75cfeb5801164eb4b3d4f5ce5dba20d8acad /src/pl/plpython/sql/plpython_quote.sql | |
| parent | 3e6b305d9e2a4616bf69e31b0b21ebbb844ba50e (diff) | |
| download | postgresql-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.sql | 33 |
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); |
