-- 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)

