Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit642194b

Browse files
committed
1 parentaf7d257 commit642194b

File tree

14 files changed

+3701
-1
lines changed

14 files changed

+3701
-1
lines changed

‎contrib/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $PostgreSQL: pgsql/contrib/Makefile,v 1.68 2006/09/0517:20:26 tgl Exp $
1+
# $PostgreSQL: pgsql/contrib/Makefile,v 1.69 2006/09/0518:00:57 teodor Exp $
22

33
subdir = contrib
44
top_builddir = ..
@@ -12,6 +12,7 @@ WANTED_DIRS = \
1212
dblink\
1313
earthdistance\
1414
fuzzystrmatch\
15+
hstore\
1516
intagg\
1617
intarray\
1718
isbn_issn\

‎contrib/README

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ fuzzystrmatch -
5252
Levenshtein, metaphone, and soundex fuzzy string matching
5353
by Joe Conway <mail@joeconway.com>, Joel Burton <jburton@scw.org>
5454

55+
hstore -
56+
Hstore - module for storing (key,value) pairs
57+
by Oleg Bartunov <oleg@sai.msu.su> and Teodor Sigaev <teodor@sigaev.ru>
58+
5559
intagg -
5660
Integer aggregator
5761
by mlw <markw@mohawksoft.com>

‎contrib/hstore/Makefile

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
subdir = contrib/hstore
2+
top_builddir = ../..
3+
include$(top_builddir)/src/Makefile.global
4+
5+
6+
overrideCPPFLAGS := -I.$(CPPFLAGS)
7+
8+
MODULE_big = hstore
9+
OBJS = hstore_io.o hstore_op.o hstore_gist.o crc32.o
10+
11+
DATA_built = hstore.sql
12+
DOCS = README.hstore
13+
REGRESS = hstore
14+
15+
include$(top_srcdir)/contrib/contrib-global.mk
16+
# DO NOT DELETE
17+

‎contrib/hstore/README.hstore

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
Hstore - contrib module for storing (key,value) pairs
2+
3+
[Online version] (http://www.sai.msu.su/~megera/oddmuse/index.cgi?Hstore)
4+
5+
Motivation
6+
7+
Many attributes rarely searched, semistructural data, lazy DBA
8+
9+
Authors
10+
11+
* Oleg Bartunov <oleg@sai.msu.su>, Moscow, Moscow University, Russia
12+
* Teodor Sigaev <teodor@sigaev.ru>, Moscow, Delta-Soft Ltd.,Russia
13+
14+
License
15+
16+
Stable version, included into PostgreSQL distribution, released under BSD license. Development version, available from this site, released under the GNU General Public License, version 2 (June 1991).
17+
18+
Operations
19+
20+
* hstore -> text - get value , perl analogy $h{key}
21+
22+
select 'a=>q, b=>g'->'a';
23+
?
24+
------
25+
q
26+
27+
* hstore || hstore - concatenation, perl analogy %a=( %b, %c );
28+
29+
regression=# select 'a=>b'::hstore || 'c=>d'::hstore;
30+
?column?
31+
--------------------
32+
"a"=>"b", "c"=>"d"
33+
(1 row)
34+
35+
but, notice
36+
37+
regression=# select 'a=>b'::hstore || 'a=>d'::hstore;
38+
?column?
39+
----------
40+
"a"=>"d"
41+
(1 row)
42+
43+
* text => text - creates hstore type from two text strings
44+
45+
select 'a'=>'b';
46+
?column?
47+
----------
48+
"a"=>"b"
49+
50+
* hstore @ hstore - contains operation, check if left operand contains right.
51+
52+
regression=# select 'a=>b, b=>1, c=>NULL'::hstore @ 'a=>c';
53+
?column?
54+
----------
55+
f
56+
(1 row)
57+
58+
regression=# select 'a=>b, b=>1, c=>NULL'::hstore @ 'b=>1';
59+
?column?
60+
----------
61+
t
62+
(1 row)
63+
64+
* hstore ~ hstore - contained operation, check if left operand is contained in right
65+
66+
Functions
67+
68+
* akeys(hstore) - returns all keys from hstore as array
69+
70+
regression=# select akeys('a=>1,b=>2');
71+
akeys
72+
-------
73+
{a,b}
74+
75+
* skeys(hstore) - returns all keys from hstore as strings
76+
77+
regression=# select skeys('a=>1,b=>2');
78+
skeys
79+
-------
80+
a
81+
b
82+
83+
* avals(hstore) - returns all values from hstore as array
84+
85+
regression=# select avals('a=>1,b=>2');
86+
avals
87+
-------
88+
{1,2}
89+
90+
* svals(hstore) - returns all values from hstore as strings
91+
92+
regression=# select svals('a=>1,b=>2');
93+
svals
94+
-------
95+
1
96+
2
97+
98+
* delete (hstore,text) - delete (key,value) from hstore if key matches argument.
99+
100+
regression=# select delete('a=>1,b=>2','b');
101+
delete
102+
----------
103+
"a"=>"1"
104+
105+
* each(hstore) return (key, value) pairs
106+
107+
regression=# select * from each('a=>1,b=>2');
108+
key | value
109+
-----+-------
110+
a | 1
111+
b | 2
112+
113+
* isexists (hstore,text) - returns 'true if key is exists in hstore and false otherwise.
114+
115+
regression=# select isexists('a=>1','a');
116+
isexists
117+
----------
118+
t
119+
120+
* isdefined (hstore,text) - returns true if key is exists in hstore and its value is not NULL.
121+
122+
regression=# select isdefined('a=>NULL','a');
123+
isdefined
124+
-----------
125+
f
126+
127+
Indices
128+
129+
Module provides index support for '@' and '~' operations.
130+
131+
create index hidx on testhstore using gist(h);
132+
133+
Note
134+
135+
Use parenthesis in select below, because priority of 'is' is higher than that of '->'
136+
137+
select id from entrants where (info->'education_period') is not null;
138+
139+
Examples
140+
141+
* add key
142+
143+
update tt set h=h||'c=>3';
144+
145+
* delete key
146+
147+
update tt set h=delete(h,'k1');
148+
149+
* Statistics
150+
151+
hstore type, because of its intrinsic liberality, could contain a lot of different keys. Checking for valid keys is the task of application. Examples below demonstrate several techniques how to check keys statistics.
152+
153+
o simple example
154+
155+
select * from each('aaa=>bq, b=>NULL, ""=>1 ');
156+
157+
o using table
158+
159+
select (each(h)).key, (each(h)).value into stat from testhstore ;
160+
161+
o online stat
162+
163+
select key, count(*) from (select (each(h)).key from testhstore) as stat group by key order by count desc, key;
164+
key | count
165+
-----------+-------
166+
line | 883
167+
query | 207
168+
pos | 203
169+
node | 202
170+
space | 197
171+
status | 195
172+
public | 194
173+
title | 190
174+
org | 189
175+
...................

‎contrib/hstore/crc32.c

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
/* Both POSIX and CRC32 checksums */
2+
3+
#include<sys/types.h>
4+
#include<stdio.h>
5+
#include<sys/types.h>
6+
7+
#include"crc32.h"
8+
9+
/*
10+
* This code implements the AUTODIN II polynomial
11+
* The variable corresponding to the macro argument "crc" should
12+
* be an unsigned long.
13+
* Oroginal code by Spencer Garrett <srg@quick.com>
14+
*/
15+
16+
#define_CRC32_(crc,ch) (crc = (crc >> 8) ^ crc32tab[(crc ^ (ch)) & 0xff])
17+
18+
/* generated using the AUTODIN II polynomial
19+
*x^32 + x^26 + x^23 + x^22 + x^16 +
20+
*x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + 1
21+
*/
22+
23+
staticconstunsignedintcrc32tab[256]= {
24+
0x00000000,0x77073096,0xee0e612c,0x990951ba,
25+
0x076dc419,0x706af48f,0xe963a535,0x9e6495a3,
26+
0x0edb8832,0x79dcb8a4,0xe0d5e91e,0x97d2d988,
27+
0x09b64c2b,0x7eb17cbd,0xe7b82d07,0x90bf1d91,
28+
0x1db71064,0x6ab020f2,0xf3b97148,0x84be41de,
29+
0x1adad47d,0x6ddde4eb,0xf4d4b551,0x83d385c7,
30+
0x136c9856,0x646ba8c0,0xfd62f97a,0x8a65c9ec,
31+
0x14015c4f,0x63066cd9,0xfa0f3d63,0x8d080df5,
32+
0x3b6e20c8,0x4c69105e,0xd56041e4,0xa2677172,
33+
0x3c03e4d1,0x4b04d447,0xd20d85fd,0xa50ab56b,
34+
0x35b5a8fa,0x42b2986c,0xdbbbc9d6,0xacbcf940,
35+
0x32d86ce3,0x45df5c75,0xdcd60dcf,0xabd13d59,
36+
0x26d930ac,0x51de003a,0xc8d75180,0xbfd06116,
37+
0x21b4f4b5,0x56b3c423,0xcfba9599,0xb8bda50f,
38+
0x2802b89e,0x5f058808,0xc60cd9b2,0xb10be924,
39+
0x2f6f7c87,0x58684c11,0xc1611dab,0xb6662d3d,
40+
0x76dc4190,0x01db7106,0x98d220bc,0xefd5102a,
41+
0x71b18589,0x06b6b51f,0x9fbfe4a5,0xe8b8d433,
42+
0x7807c9a2,0x0f00f934,0x9609a88e,0xe10e9818,
43+
0x7f6a0dbb,0x086d3d2d,0x91646c97,0xe6635c01,
44+
0x6b6b51f4,0x1c6c6162,0x856530d8,0xf262004e,
45+
0x6c0695ed,0x1b01a57b,0x8208f4c1,0xf50fc457,
46+
0x65b0d9c6,0x12b7e950,0x8bbeb8ea,0xfcb9887c,
47+
0x62dd1ddf,0x15da2d49,0x8cd37cf3,0xfbd44c65,
48+
0x4db26158,0x3ab551ce,0xa3bc0074,0xd4bb30e2,
49+
0x4adfa541,0x3dd895d7,0xa4d1c46d,0xd3d6f4fb,
50+
0x4369e96a,0x346ed9fc,0xad678846,0xda60b8d0,
51+
0x44042d73,0x33031de5,0xaa0a4c5f,0xdd0d7cc9,
52+
0x5005713c,0x270241aa,0xbe0b1010,0xc90c2086,
53+
0x5768b525,0x206f85b3,0xb966d409,0xce61e49f,
54+
0x5edef90e,0x29d9c998,0xb0d09822,0xc7d7a8b4,
55+
0x59b33d17,0x2eb40d81,0xb7bd5c3b,0xc0ba6cad,
56+
0xedb88320,0x9abfb3b6,0x03b6e20c,0x74b1d29a,
57+
0xead54739,0x9dd277af,0x04db2615,0x73dc1683,
58+
0xe3630b12,0x94643b84,0x0d6d6a3e,0x7a6a5aa8,
59+
0xe40ecf0b,0x9309ff9d,0x0a00ae27,0x7d079eb1,
60+
0xf00f9344,0x8708a3d2,0x1e01f268,0x6906c2fe,
61+
0xf762575d,0x806567cb,0x196c3671,0x6e6b06e7,
62+
0xfed41b76,0x89d32be0,0x10da7a5a,0x67dd4acc,
63+
0xf9b9df6f,0x8ebeeff9,0x17b7be43,0x60b08ed5,
64+
0xd6d6a3e8,0xa1d1937e,0x38d8c2c4,0x4fdff252,
65+
0xd1bb67f1,0xa6bc5767,0x3fb506dd,0x48b2364b,
66+
0xd80d2bda,0xaf0a1b4c,0x36034af6,0x41047a60,
67+
0xdf60efc3,0xa867df55,0x316e8eef,0x4669be79,
68+
0xcb61b38c,0xbc66831a,0x256fd2a0,0x5268e236,
69+
0xcc0c7795,0xbb0b4703,0x220216b9,0x5505262f,
70+
0xc5ba3bbe,0xb2bd0b28,0x2bb45a92,0x5cb36a04,
71+
0xc2d7ffa7,0xb5d0cf31,0x2cd99e8b,0x5bdeae1d,
72+
0x9b64c2b0,0xec63f226,0x756aa39c,0x026d930a,
73+
0x9c0906a9,0xeb0e363f,0x72076785,0x05005713,
74+
0x95bf4a82,0xe2b87a14,0x7bb12bae,0x0cb61b38,
75+
0x92d28e9b,0xe5d5be0d,0x7cdcefb7,0x0bdbdf21,
76+
0x86d3d2d4,0xf1d4e242,0x68ddb3f8,0x1fda836e,
77+
0x81be16cd,0xf6b9265b,0x6fb077e1,0x18b74777,
78+
0x88085ae6,0xff0f6a70,0x66063bca,0x11010b5c,
79+
0x8f659eff,0xf862ae69,0x616bffd3,0x166ccf45,
80+
0xa00ae278,0xd70dd2ee,0x4e048354,0x3903b3c2,
81+
0xa7672661,0xd06016f7,0x4969474d,0x3e6e77db,
82+
0xaed16a4a,0xd9d65adc,0x40df0b66,0x37d83bf0,
83+
0xa9bcae53,0xdebb9ec5,0x47b2cf7f,0x30b5ffe9,
84+
0xbdbdf21c,0xcabac28a,0x53b39330,0x24b4a3a6,
85+
0xbad03605,0xcdd70693,0x54de5729,0x23d967bf,
86+
0xb3667a2e,0xc4614ab8,0x5d681b02,0x2a6f2b94,
87+
0xb40bbe37,0xc30c8ea1,0x5a05df1b,0x2d02ef8d,
88+
};
89+
90+
unsignedint
91+
crc32_sz(char*buf,intsize)
92+
{
93+
unsignedintcrc= ~0;
94+
char*p;
95+
intlen,
96+
nr;
97+
98+
len=0;
99+
nr=size;
100+
for (len+=nr,p=buf;nr--;++p)
101+
_CRC32_(crc,*p);
102+
return ~crc;
103+
}

‎contrib/hstore/crc32.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#ifndef_CRC32_H
2+
#define_CRC32_H
3+
4+
/* Returns crc32 of data block */
5+
externunsignedintcrc32_sz(char*buf,intsize);
6+
7+
/* Returns crc32 of null-terminated string */
8+
#definecrc32(buf) crc32_sz((buf),strlen(buf))
9+
10+
#endif

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp