David Wheeler, with one small correction by me.
--
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;
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?
----------
-/* $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;
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'
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
-/* $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;
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 );
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);
-<!-- $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>
<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>
<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>