Remove hstore % text[] operator; use slice() function instead.
David Wheeler, with one small correction by me.
This commit is contained in:
parent
bb0fe9feb9
commit
ce51747673
@ -4,7 +4,7 @@
|
|||||||
--
|
--
|
||||||
SET client_min_messages = warning;
|
SET client_min_messages = warning;
|
||||||
\set ECHO none
|
\set ECHO none
|
||||||
psql:hstore.sql:234: WARNING: => is deprecated as an operator name
|
psql:hstore.sql:228: WARNING: => is deprecated as an operator name
|
||||||
DETAIL: This name may be disallowed altogether in future versions of PostgreSQL.
|
DETAIL: This name may be disallowed altogether in future versions of PostgreSQL.
|
||||||
RESET client_min_messages;
|
RESET client_min_messages;
|
||||||
set escape_string_warning=off;
|
set escape_string_warning=off;
|
||||||
@ -759,39 +759,39 @@ select pg_column_size('a=>g, b=>c'::hstore || ('b'=>'gf'))
|
|||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
-- %
|
-- slice()
|
||||||
select hstore 'aa=>1, b=>2, c=>3' % ARRAY['g','h','i'];
|
select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['g','h','i']);
|
||||||
?column?
|
slice
|
||||||
----------
|
-------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
select hstore 'aa=>1, b=>2, c=>3' % ARRAY['c','b'];
|
select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['c','b']);
|
||||||
?column?
|
slice
|
||||||
--------------------
|
--------------------
|
||||||
"b"=>"2", "c"=>"3"
|
"b"=>"2", "c"=>"3"
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
select hstore 'aa=>1, b=>2, c=>3' % ARRAY['aa','b'];
|
select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['aa','b']);
|
||||||
?column?
|
slice
|
||||||
---------------------
|
---------------------
|
||||||
"b"=>"2", "aa"=>"1"
|
"b"=>"2", "aa"=>"1"
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
select hstore 'aa=>1, b=>2, c=>3' % ARRAY['c','b','aa'];
|
select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['c','b','aa']);
|
||||||
?column?
|
slice
|
||||||
-------------------------------
|
-------------------------------
|
||||||
"b"=>"2", "c"=>"3", "aa"=>"1"
|
"b"=>"2", "c"=>"3", "aa"=>"1"
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
select pg_column_size(hstore 'aa=>1, b=>2, c=>3' % ARRAY['c','b'])
|
select pg_column_size(slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['c','b']))
|
||||||
= pg_column_size('b=>2, c=>3'::hstore);
|
= pg_column_size('b=>2, c=>3'::hstore);
|
||||||
?column?
|
?column?
|
||||||
----------
|
----------
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
select pg_column_size(hstore 'aa=>1, b=>2, c=>3' % ARRAY['c','b','aa'])
|
select pg_column_size(slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['c','b','aa']))
|
||||||
= pg_column_size('aa=>1, b=>2, c=>3'::hstore);
|
= pg_column_size('aa=>1, b=>2, c=>3'::hstore);
|
||||||
?column?
|
?column?
|
||||||
----------
|
----------
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/contrib/hstore/hstore.sql.in,v 1.14 2010/06/18 03:52:02 rhaas Exp $ */
|
/* $PostgreSQL: pgsql/contrib/hstore/hstore.sql.in,v 1.15 2010/07/02 20:36:48 rhaas Exp $ */
|
||||||
|
|
||||||
-- Adjust this setting to control where the objects get created.
|
-- Adjust this setting to control where the objects get created.
|
||||||
SET search_path = public;
|
SET search_path = public;
|
||||||
@ -61,17 +61,11 @@ CREATE OPERATOR -> (
|
|||||||
PROCEDURE = slice_array
|
PROCEDURE = slice_array
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION slice_hstore(hstore,text[])
|
CREATE OR REPLACE FUNCTION slice(hstore,text[])
|
||||||
RETURNS hstore
|
RETURNS hstore
|
||||||
AS 'MODULE_PATHNAME','hstore_slice_to_hstore'
|
AS 'MODULE_PATHNAME','hstore_slice_to_hstore'
|
||||||
LANGUAGE C STRICT IMMUTABLE;
|
LANGUAGE C STRICT IMMUTABLE;
|
||||||
|
|
||||||
CREATE OPERATOR % (
|
|
||||||
LEFTARG = hstore,
|
|
||||||
RIGHTARG = text[],
|
|
||||||
PROCEDURE = slice_hstore
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION isexists(hstore,text)
|
CREATE OR REPLACE FUNCTION isexists(hstore,text)
|
||||||
RETURNS bool
|
RETURNS bool
|
||||||
AS 'MODULE_PATHNAME','hstore_exists'
|
AS 'MODULE_PATHNAME','hstore_exists'
|
||||||
|
@ -171,14 +171,14 @@ select pg_column_size(('b'=>'gf'))
|
|||||||
select pg_column_size('a=>g, b=>c'::hstore || ('b'=>'gf'))
|
select pg_column_size('a=>g, b=>c'::hstore || ('b'=>'gf'))
|
||||||
= pg_column_size('a=>g, b=>gf'::hstore);
|
= pg_column_size('a=>g, b=>gf'::hstore);
|
||||||
|
|
||||||
-- %
|
-- slice()
|
||||||
select hstore 'aa=>1, b=>2, c=>3' % ARRAY['g','h','i'];
|
select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['g','h','i']);
|
||||||
select hstore 'aa=>1, b=>2, c=>3' % ARRAY['c','b'];
|
select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['c','b']);
|
||||||
select hstore 'aa=>1, b=>2, c=>3' % ARRAY['aa','b'];
|
select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['aa','b']);
|
||||||
select hstore 'aa=>1, b=>2, c=>3' % ARRAY['c','b','aa'];
|
select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['c','b','aa']);
|
||||||
select pg_column_size(hstore 'aa=>1, b=>2, c=>3' % ARRAY['c','b'])
|
select pg_column_size(slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['c','b']))
|
||||||
= pg_column_size('b=>2, c=>3'::hstore);
|
= pg_column_size('b=>2, c=>3'::hstore);
|
||||||
select pg_column_size(hstore 'aa=>1, b=>2, c=>3' % ARRAY['c','b','aa'])
|
select pg_column_size(slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['c','b','aa']))
|
||||||
= pg_column_size('aa=>1, b=>2, c=>3'::hstore);
|
= pg_column_size('aa=>1, b=>2, c=>3'::hstore);
|
||||||
|
|
||||||
-- array input
|
-- array input
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/contrib/hstore/uninstall_hstore.sql,v 1.10 2010/06/18 03:52:02 rhaas Exp $ */
|
/* $PostgreSQL: pgsql/contrib/hstore/uninstall_hstore.sql,v 1.11 2010/07/02 20:36:48 rhaas Exp $ */
|
||||||
|
|
||||||
-- Adjust this setting to control where the objects get dropped.
|
-- Adjust this setting to control where the objects get dropped.
|
||||||
SET search_path = public;
|
SET search_path = public;
|
||||||
@ -22,7 +22,6 @@ DROP OPERATOR <@ ( hstore, hstore );
|
|||||||
DROP OPERATOR @ ( hstore, hstore );
|
DROP OPERATOR @ ( hstore, hstore );
|
||||||
DROP OPERATOR ~ ( hstore, hstore );
|
DROP OPERATOR ~ ( hstore, hstore );
|
||||||
DROP OPERATOR => ( text, text );
|
DROP OPERATOR => ( text, text );
|
||||||
DROP OPERATOR % ( hstore, text[] );
|
|
||||||
DROP OPERATOR #= ( anyelement, hstore );
|
DROP OPERATOR #= ( anyelement, hstore );
|
||||||
DROP OPERATOR %% ( NONE, hstore );
|
DROP OPERATOR %% ( NONE, hstore );
|
||||||
DROP OPERATOR %# ( NONE, hstore );
|
DROP OPERATOR %# ( NONE, hstore );
|
||||||
@ -44,7 +43,7 @@ DROP FUNCTION hstore_le(hstore,hstore);
|
|||||||
DROP FUNCTION hstore_cmp(hstore,hstore);
|
DROP FUNCTION hstore_cmp(hstore,hstore);
|
||||||
DROP FUNCTION hstore_hash(hstore);
|
DROP FUNCTION hstore_hash(hstore);
|
||||||
DROP FUNCTION slice_array(hstore,text[]);
|
DROP FUNCTION slice_array(hstore,text[]);
|
||||||
DROP FUNCTION slice_hstore(hstore,text[]);
|
DROP FUNCTION slice(hstore,text[]);
|
||||||
DROP FUNCTION fetchval(hstore,text);
|
DROP FUNCTION fetchval(hstore,text);
|
||||||
DROP FUNCTION isexists(hstore,text);
|
DROP FUNCTION isexists(hstore,text);
|
||||||
DROP FUNCTION exist(hstore,text);
|
DROP FUNCTION exist(hstore,text);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/hstore.sgml,v 1.11 2010/06/22 11:36:16 rhaas Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/hstore.sgml,v 1.12 2010/07/02 20:36:49 rhaas Exp $ -->
|
||||||
|
|
||||||
<sect1 id="hstore">
|
<sect1 id="hstore">
|
||||||
<title>hstore</title>
|
<title>hstore</title>
|
||||||
@ -120,13 +120,6 @@
|
|||||||
<entry><literal>"a"=>"b"</literal></entry>
|
<entry><literal>"a"=>"b"</literal></entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<row>
|
|
||||||
<entry><type>hstore</> <literal>%</> <type>text[]</></entry>
|
|
||||||
<entry>extract a subset of an <type>hstore</></entry>
|
|
||||||
<entry><literal>'a=>1,b=>2,c=>3'::hstore % ARRAY['b','c','x']</literal></entry>
|
|
||||||
<entry><literal>"b"=>"2", "c"=>"3"</literal></entry>
|
|
||||||
</row>
|
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry><type>hstore</> <literal>||</> <type>hstore</></entry>
|
<entry><type>hstore</> <literal>||</> <type>hstore</></entry>
|
||||||
<entry>concatenate <type>hstore</>s</entry>
|
<entry>concatenate <type>hstore</>s</entry>
|
||||||
@ -338,6 +331,14 @@ b
|
|||||||
<entry><literal>{{a,1},{b,2}}</literal></entry>
|
<entry><literal>{{a,1},{b,2}}</literal></entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
|
<row>
|
||||||
|
<entry><function>slice(hstore, text[])</function></entry>
|
||||||
|
<entry><type>hstore</type></entry>
|
||||||
|
<entry>extract a subset of an <type>hstore</></entry>
|
||||||
|
<entry><literal>slice('a=>1,b=>2,c=>3'::hstore, ARRAY['b','c','x'])</literal></entry>
|
||||||
|
<entry><literal>"b"=>"2", "c"=>"3"</literal></entry>
|
||||||
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry><function>each(hstore)</function></entry>
|
<entry><function>each(hstore)</function></entry>
|
||||||
<entry><type>setof(key text, value text)</type></entry>
|
<entry><type>setof(key text, value text)</type></entry>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user