Search Postgresql Archives

Re: Escaping text / hstore

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/20/2015 07:00 AM, pinker wrote:
Maybe somebody have an idea how to escape text string for use in hstore
column? I have tried $$ and quote_literal in audit trigger function, but
still db won't let me pass values with // or ' to the hstore... INSERT
FROM trigger function:

     EXECUTE 'INSERT INTO history.' || TG_TABLE_SCHEMA || '_' || TG_TABLE_NAME || l_table_suffix ||
             '(operation, event_time, executed_by, new_value)
                  VALUES(''' || TG_OP || ''', ''' || CURRENT_TIMESTAMP || ''', ''' || SESSION_USER || ''', $$''' ||
             hstore(NEW) || '''$$)';

During insert occurs error:

INSERT INTO my_table ("some_id", "someother_id","description") VALUES (1751, 10907,'gdfddfg''gdfg');

The same occurs with backslash:

INSERT INTO my_table ("some_id", "someother_id","description") VALUES (1751, 10907,'gdfddfg//gdfg');

ERROR:  Syntax error near ''' at position 73
LINE 2: ..., '2015-10-20 15:41:08.534645+02', 'my_user', $$'"some...
                                                              ^
QUERY:  INSERT INTO history.public_my_table_2015_10(operation, event_time, executed_by, new_value)
                  VALUES('INSERT', '2015-10-20 15:41:08.534645+02', 'my_user', $$'"some_id"=>"1751", "someother_id"=>"10907", "description"=>"gdfddfg'gdfg"'$$)
CONTEXT:  PL/pgSQL function insert() line 6 at EXECUTE statement


Here is my very similar function:

CREATE OR REPLACE FUNCTION utility.archive_del_record() RETURNS trigger AS
$BODY$
DECLARE
    tbl_name text := TG_TABLE_NAME || '_delete' ;
    archive_row hstore := hstore(OLD.*);
    user_name text := session_user;
BEGIN
    EXECUTE 'INSERT INTO ' ||quote_ident(tbl_name) ||
        '(record_fld, del_ts, del_user)'
        || ' VALUES('||quote_literal(archive_row)||', now(),' ||
        quote_literal(user_name)||')';
RETURN OLD;
END;
$BODY$
LANGUAGE plpgsql SECURITY DEFINER;




------------------------------------------------------------------------
View this message in context: Escaping text / hstore
<http://postgresql.nabble.com/Escaping-text-hstore-tp5870728.html>
Sent from the PostgreSQL - general mailing list archive
<http://postgresql.nabble.com/PostgreSQL-general-f1843780.html> at
Nabble.com.


--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx


--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux