mirror of https://github.com/postgres/postgres
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 Eisentrautpull/1/head
parent
3e6b305d9e
commit
1c51c7d5ff
@ -0,0 +1,56 @@ |
||||
-- 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); |
||||
quote |
||||
----------- |
||||
'abc' |
||||
'a''bc' |
||||
'''abc''' |
||||
'' |
||||
'''' |
||||
'xyzv' |
||||
(6 rows) |
||||
|
||||
SELECT quote(t, 'nullable') FROM (VALUES |
||||
('abc'), |
||||
('a''bc'), |
||||
('''abc'''), |
||||
(''), |
||||
(''''), |
||||
(NULL)) AS v(t); |
||||
quote |
||||
----------- |
||||
'abc' |
||||
'a''bc' |
||||
'''abc''' |
||||
'' |
||||
'''' |
||||
NULL |
||||
(6 rows) |
||||
|
||||
SELECT quote(t, 'ident') FROM (VALUES |
||||
('abc'), |
||||
('a b c'), |
||||
('a " ''abc''')) AS v(t); |
||||
quote |
||||
-------------- |
||||
abc |
||||
"a b c" |
||||
"a "" 'abc'" |
||||
(3 rows) |
||||
|
||||
@ -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); |
||||
Loading…
Reference in new issue