Commit ce517476 authored by Robert Haas's avatar Robert Haas

Remove hstore % text[] operator; use slice() function instead.

David Wheeler, with one small correction by me.
parent bb0fe9fe
...@@ -4,7 +4,7 @@ ...@@ -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')) ...@@ -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?
---------- ----------
......
/* $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 -> ( ...@@ -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')) ...@@ -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
......
/* $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 ); ...@@ -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); ...@@ -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);
......
<!-- $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 @@ ...@@ -120,13 +120,6 @@
<entry><literal>"a"=&gt;"b"</literal></entry> <entry><literal>"a"=&gt;"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=&gt;1,b=&gt;2,c=&gt;3'::hstore % ARRAY['b','c','x']</literal></entry>
<entry><literal>"b"=&gt;"2", "c"=&gt;"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 ...@@ -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=&gt;1,b=&gt;2,c=&gt;3'::hstore, ARRAY['b','c','x'])</literal></entry>
<entry><literal>"b"=&gt;"2", "c"=&gt;"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>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment