FAQ
I can't get hstore value by key. i have very interesting error
DEMO SQL CODE:
------------------------------------------------------------------------------

ROLLBACK;
BEGIN;
-- VERSION INFO
SELECT VERSION();
-- RESULT:
-- PostgreSQL 8.3.4 on i686-redhat-linux-gnu, compiled by GCC gcc
(GCC) 4.1.2 20071124 (Red Hat 4.1.2-42)
-- TEST FOR HSTORE:
SELECT (('test' => 'testvalue')::hstore)->'test'; -- HSTORE WORKS!
-- HSTORE OK;


-- BUG REPRODUCTION FUNCTION
CREATE OR REPLACE FUNCTION "hstore_bug" () RETURNS pg_catalog.void AS
$body$
DECLARE
res HSTORE;
BEGIN
res := ('test' => NULL)::hstore;

IF res->'test' IS NULL THEN
RAISE EXCEPTION 'HSTORE IS OK';
END IF;

RAISE EXCEPTION 'HSTORE IS BUGGY';
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY DEFINER;


--- BUG REPRODUCTION:
SELECT hstore_bug();
-- ERROR MSG
-- ERROR: operator does not exist: hstore -> boolean
-- LINE 1: SELECT $1 ->'test' IS NULL
-- ^
-- HINT: No operator matches the given name and argument type(s). You
might need to add explicit type casts.
-- QUERY: SELECT $1 ->'test' IS NULL
-- CONTEXT: PL/pgSQL function "hstore_bug" line 6 at IF

Search Discussions

  • Hubert depesz lubaczewski at Oct 27, 2008 at 2:14 pm

    On Mon, Oct 27, 2008 at 05:08:35PM +0300, Oleg Serov wrote:
    I can't get hstore value by key. i have very interesting error
    the problem is that -> has very low priority, but you work with it
    anyway:
    # select tconvert('a', 'b')->'a' is null;
    ERROR: operator does not exist: hstore -> boolean
    LINE 1: select tconvert('a', 'b')->'a' is null;
    ^
    HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
    (depesz@[local]:5840) 15:14:03 [depesz]
    # select (tconvert('a', 'b')->'a') is null;
    ?column?
    ----------
    f
    (1 row)

    depesz

    --
    Linkedin: http://www.linkedin.com/in/depesz / blog: http://www.depesz.com/
    jid/gtalk: depesz@depesz.com / aim:depeszhdl / skype:depesz_hdl / gg:6749007
  • Oleg Serov at Oct 27, 2008 at 2:20 pm
    Ok, thanks... it is not a bug;

    2008/10/27 hubert depesz lubaczewski <depesz@depesz.com>:
    On Mon, Oct 27, 2008 at 05:08:35PM +0300, Oleg Serov wrote:
    I can't get hstore value by key. i have very interesting error
    the problem is that -> has very low priority, but you work with it
    anyway:
    # select tconvert('a', 'b')->'a' is null;
    ERROR: operator does not exist: hstore -> boolean
    LINE 1: select tconvert('a', 'b')->'a' is null;
    ^
    HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
    (depesz@[local]:5840) 15:14:03 [depesz]
    # select (tconvert('a', 'b')->'a') is null;
    ?column?
    ----------
    f
    (1 row)

    depesz

    --
    Linkedin: http://www.linkedin.com/in/depesz / blog: http://www.depesz.com/
    jid/gtalk: depesz@depesz.com / aim:depeszhdl / skype:depesz_hdl / gg:6749007

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppgsql-bugs @
categoriespostgresql
postedOct 27, '08 at 2:08p
activeOct 27, '08 at 2:20p
posts3
users2
websitepostgresql.org
irc#postgresql

People

Translate

site design / logo © 2021 Grokbase