diff --git a/contrib/hstore/expected/hstore.out b/contrib/hstore/expected/hstore.out index 9f15a9be6c4347309d89f07fa04403899585ef1b..e78264d12bc5402e27e72621dae4a7c822b2a896 100644 --- a/contrib/hstore/expected/hstore.out +++ b/contrib/hstore/expected/hstore.out @@ -4,7 +4,7 @@ -- SET client_min_messages = warning; \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. RESET client_min_messages; set escape_string_warning=off; @@ -759,39 +759,39 @@ select pg_column_size('a=>g, b=>c'::hstore || ('b'=>'gf')) t (1 row) --- % -select hstore 'aa=>1, b=>2, c=>3' % ARRAY['g','h','i']; - ?column? ----------- +-- slice() +select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['g','h','i']); + slice +------- (1 row) -select hstore 'aa=>1, b=>2, c=>3' % ARRAY['c','b']; - ?column? +select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['c','b']); + slice -------------------- "b"=>"2", "c"=>"3" (1 row) -select hstore 'aa=>1, b=>2, c=>3' % ARRAY['aa','b']; - ?column? +select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['aa','b']); + slice --------------------- "b"=>"2", "aa"=>"1" (1 row) -select hstore 'aa=>1, b=>2, c=>3' % ARRAY['c','b','aa']; - ?column? +select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['c','b','aa']); + slice ------------------------------- "b"=>"2", "c"=>"3", "aa"=>"1" (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); ?column? ---------- t (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); ?column? ---------- diff --git a/contrib/hstore/hstore.sql.in b/contrib/hstore/hstore.sql.in index 3cf4178afbd986b89aa1973b6de4483fa744c4cf..c7a5e8e556249802459095b9cd0699be44c7a53a 100644 --- a/contrib/hstore/hstore.sql.in +++ b/contrib/hstore/hstore.sql.in @@ -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. SET search_path = public; @@ -61,17 +61,11 @@ CREATE OPERATOR -> ( PROCEDURE = slice_array ); -CREATE OR REPLACE FUNCTION slice_hstore(hstore,text[]) +CREATE OR REPLACE FUNCTION slice(hstore,text[]) RETURNS hstore AS 'MODULE_PATHNAME','hstore_slice_to_hstore' LANGUAGE C STRICT IMMUTABLE; -CREATE OPERATOR % ( - LEFTARG = hstore, - RIGHTARG = text[], - PROCEDURE = slice_hstore -); - CREATE OR REPLACE FUNCTION isexists(hstore,text) RETURNS bool AS 'MODULE_PATHNAME','hstore_exists' diff --git a/contrib/hstore/sql/hstore.sql b/contrib/hstore/sql/hstore.sql index a066f11b2bbfea9845f3530d53ee60b7e4bdf485..8fefcbba93a623fa6a1b1087e0e80de907ec3811 100644 --- a/contrib/hstore/sql/hstore.sql +++ b/contrib/hstore/sql/hstore.sql @@ -171,14 +171,14 @@ select pg_column_size(('b'=>'gf')) select pg_column_size('a=>g, b=>c'::hstore || ('b'=>'gf')) = pg_column_size('a=>g, b=>gf'::hstore); --- % -select hstore 'aa=>1, b=>2, c=>3' % ARRAY['g','h','i']; -select hstore 'aa=>1, b=>2, c=>3' % ARRAY['c','b']; -select hstore 'aa=>1, b=>2, c=>3' % ARRAY['aa','b']; -select 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']) +-- slice() +select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['g','h','i']); +select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['c','b']); +select slice(hstore 'aa=>1, b=>2, c=>3', ARRAY['aa','b']); +select slice(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'])) = 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); -- array input diff --git a/contrib/hstore/uninstall_hstore.sql b/contrib/hstore/uninstall_hstore.sql index 468bfb3c964e3f960f6a3d6136d1b314e1b3c92e..ca2b05aa83570c21e6c991ccab757370e42d1c6b 100644 --- a/contrib/hstore/uninstall_hstore.sql +++ b/contrib/hstore/uninstall_hstore.sql @@ -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. SET search_path = public; @@ -22,7 +22,6 @@ DROP OPERATOR <@ ( hstore, hstore ); DROP OPERATOR @ ( hstore, hstore ); DROP OPERATOR ~ ( hstore, hstore ); DROP OPERATOR => ( text, text ); -DROP OPERATOR % ( hstore, text[] ); DROP OPERATOR #= ( anyelement, 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_hash(hstore); DROP FUNCTION slice_array(hstore,text[]); -DROP FUNCTION slice_hstore(hstore,text[]); +DROP FUNCTION slice(hstore,text[]); DROP FUNCTION fetchval(hstore,text); DROP FUNCTION isexists(hstore,text); DROP FUNCTION exist(hstore,text); diff --git a/doc/src/sgml/hstore.sgml b/doc/src/sgml/hstore.sgml index ef09a4ca869ad44b217c9ae3829fb031f0d09077..c5effb88e051d5d5c613fa2b964db7a8b2c4c2aa 100644 --- a/doc/src/sgml/hstore.sgml +++ b/doc/src/sgml/hstore.sgml @@ -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"> <title>hstore</title> @@ -120,13 +120,6 @@ <entry><literal>"a"=>"b"</literal></entry> </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> <entry><type>hstore</> <literal>||</> <type>hstore</></entry> <entry>concatenate <type>hstore</>s</entry> @@ -338,6 +331,14 @@ b <entry><literal>{{a,1},{b,2}}</literal></entry> </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> <entry><function>each(hstore)</function></entry> <entry><type>setof(key text, value text)</type></entry>