Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 2ae4a40

Browse files
committed
Add KNN patch
1 parent c43151f commit 2ae4a40

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+3083
-1181
lines changed

contrib/btree_gist/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ OBJS = btree_gist.o btree_utils_num.o btree_utils_var.o btree_int2.o \
99
btree_numeric.o $(WIN32RES)
1010

1111
EXTENSION = btree_gist
12-
DATA = btree_gist--1.2.sql btree_gist--1.1--1.2.sql btree_gist--1.0--1.1.sql \
12+
DATA = btree_gist--1.3.sql btree_gist--1.2--1.3.sql \
13+
btree_gist--1.1--1.2.sql btree_gist--1.0--1.1.sql \
1314
btree_gist--unpackaged--1.0.sql
1415
PGFILEDESC = "btree_gist - B-tree equivalent GiST operator classes"
1516

contrib/btree_gist/btree_cash.c

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -90,27 +90,6 @@ static const gbtree_ninfo tinfo =
9090
};
9191

9292

93-
PG_FUNCTION_INFO_V1(cash_dist);
94-
Datum
95-
cash_dist(PG_FUNCTION_ARGS)
96-
{
97-
Cash a = PG_GETARG_CASH(0);
98-
Cash b = PG_GETARG_CASH(1);
99-
Cash r;
100-
Cash ra;
101-
102-
r = a - b;
103-
ra = Abs(r);
104-
105-
/* Overflow check. */
106-
if (ra < 0 || (!SAMESIGN(a, b) && !SAMESIGN(r, a)))
107-
ereport(ERROR,
108-
(errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
109-
errmsg("money out of range")));
110-
111-
PG_RETURN_CASH(ra);
112-
}
113-
11493
/**************************************************
11594
* Cash ops
11695
**************************************************/

contrib/btree_gist/btree_date.c

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -108,19 +108,6 @@ static const gbtree_ninfo tinfo =
108108
};
109109

110110

111-
PG_FUNCTION_INFO_V1(date_dist);
112-
Datum
113-
date_dist(PG_FUNCTION_ARGS)
114-
{
115-
/* we assume the difference can't overflow */
116-
Datum diff = DirectFunctionCall2(date_mi,
117-
PG_GETARG_DATUM(0),
118-
PG_GETARG_DATUM(1));
119-
120-
PG_RETURN_INT32(Abs(DatumGetInt32(diff)));
121-
}
122-
123-
124111
/**************************************************
125112
* date ops
126113
**************************************************/

contrib/btree_gist/btree_float4.c

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -89,21 +89,6 @@ static const gbtree_ninfo tinfo =
8989
};
9090

9191

92-
PG_FUNCTION_INFO_V1(float4_dist);
93-
Datum
94-
float4_dist(PG_FUNCTION_ARGS)
95-
{
96-
float4 a = PG_GETARG_FLOAT4(0);
97-
float4 b = PG_GETARG_FLOAT4(1);
98-
float4 r;
99-
100-
r = a - b;
101-
CHECKFLOATVAL(r, isinf(a) || isinf(b), true);
102-
103-
PG_RETURN_FLOAT4(Abs(r));
104-
}
105-
106-
10792
/**************************************************
10893
* float4 ops
10994
**************************************************/

contrib/btree_gist/btree_float8.c

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -96,21 +96,6 @@ static const gbtree_ninfo tinfo =
9696
gbt_float8_dist
9797
};
9898

99-
100-
PG_FUNCTION_INFO_V1(float8_dist);
101-
Datum
102-
float8_dist(PG_FUNCTION_ARGS)
103-
{
104-
float8 a = PG_GETARG_FLOAT8(0);
105-
float8 b = PG_GETARG_FLOAT8(1);
106-
float8 r;
107-
108-
r = a - b;
109-
CHECKFLOATVAL(r, isinf(a) || isinf(b), true);
110-
111-
PG_RETURN_FLOAT8(Abs(r));
112-
}
113-
11499
/**************************************************
115100
* float8 ops
116101
**************************************************/
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
/* contrib/btree_gist/btree_gist--1.2--1.3.sql */
2+
3+
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
4+
\echo Use "ALTER EXTENSION btree_gist UPDATE TO '1.3'" to load this file. \quit
5+
6+
-- update references to distance operators in pg_amop and pg_depend
7+
8+
WITH
9+
btree_ops AS (
10+
SELECT
11+
amoplefttype, amoprighttype, amopopr
12+
FROM
13+
pg_amop
14+
JOIN pg_am ON pg_am.oid = amopmethod
15+
JOIN pg_opfamily ON pg_opfamily.oid = amopfamily
16+
JOIN pg_namespace ON pg_namespace.oid = opfnamespace
17+
WHERE
18+
nspname = 'pg_catalog'
19+
AND opfname IN (
20+
'integer_ops',
21+
'oid_ops',
22+
'money_ops',
23+
'float_ops',
24+
'datetime_ops',
25+
'time_ops',
26+
'interval_ops'
27+
)
28+
AND amname = 'btree'
29+
AND amoppurpose = 'o'
30+
AND amopstrategy = 6
31+
),
32+
gist_ops AS (
33+
SELECT
34+
pg_amop.oid AS oid, amoplefttype, amoprighttype, amopopr
35+
FROM
36+
pg_amop
37+
JOIN pg_am ON amopmethod = pg_am.oid
38+
JOIN pg_opfamily ON amopfamily = pg_opfamily.oid
39+
JOIN pg_namespace ON pg_namespace.oid = opfnamespace
40+
WHERE
41+
nspname = current_schema()
42+
AND opfname IN (
43+
'gist_oid_ops',
44+
'gist_int2_ops',
45+
'gist_int4_ops',
46+
'gist_int8_ops',
47+
'gist_float4_ops',
48+
'gist_float8_ops',
49+
'gist_timestamp_ops',
50+
'gist_timestamptz_ops',
51+
'gist_time_ops',
52+
'gist_date_ops',
53+
'gist_interval_ops',
54+
'gist_cash_ops'
55+
)
56+
AND amname = 'gist'
57+
AND amoppurpose = 'o'
58+
AND amopstrategy = 15
59+
),
60+
depend_update_data(gist_amop, gist_amopopr, btree_amopopr) AS (
61+
SELECT
62+
gist_ops.oid, gist_ops.amopopr, btree_ops.amopopr
63+
FROM
64+
btree_ops JOIN gist_ops USING (amoplefttype, amoprighttype)
65+
),
66+
amop_update_data AS (
67+
UPDATE
68+
pg_depend
69+
SET
70+
refobjid = btree_amopopr
71+
FROM
72+
depend_update_data
73+
WHERE
74+
objid = gist_amop AND refobjid = gist_amopopr
75+
RETURNING
76+
depend_update_data.*
77+
)
78+
UPDATE
79+
pg_amop
80+
SET
81+
amopopr = btree_amopopr
82+
FROM
83+
amop_update_data
84+
WHERE
85+
pg_amop.oid = gist_amop;
86+
87+
-- disable implicit pg_catalog search
88+
89+
DO
90+
$$
91+
BEGIN
92+
EXECUTE 'SET LOCAL search_path TO ' || current_schema() || ', pg_catalog';
93+
END
94+
$$;
95+
96+
-- drop distance operators
97+
98+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (int2, int2);
99+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (int4, int4);
100+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (int8, int8);
101+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (float4, float4);
102+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (float8, float8);
103+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (oid, oid);
104+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (money, money);
105+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (date, date);
106+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (time, time);
107+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (timestamp, timestamp);
108+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (timestamptz, timestamptz);
109+
ALTER EXTENSION btree_gist DROP OPERATOR <-> (interval, interval);
110+
111+
DROP OPERATOR <-> (int2, int2);
112+
DROP OPERATOR <-> (int4, int4);
113+
DROP OPERATOR <-> (int8, int8);
114+
DROP OPERATOR <-> (float4, float4);
115+
DROP OPERATOR <-> (float8, float8);
116+
DROP OPERATOR <-> (oid, oid);
117+
DROP OPERATOR <-> (money, money);
118+
DROP OPERATOR <-> (date, date);
119+
DROP OPERATOR <-> (time, time);
120+
DROP OPERATOR <-> (timestamp, timestamp);
121+
DROP OPERATOR <-> (timestamptz, timestamptz);
122+
DROP OPERATOR <-> (interval, interval);
123+
124+
-- drop distance functions
125+
126+
ALTER EXTENSION btree_gist DROP FUNCTION int2_dist(int2, int2);
127+
ALTER EXTENSION btree_gist DROP FUNCTION int4_dist(int4, int4);
128+
ALTER EXTENSION btree_gist DROP FUNCTION int8_dist(int8, int8);
129+
ALTER EXTENSION btree_gist DROP FUNCTION float4_dist(float4, float4);
130+
ALTER EXTENSION btree_gist DROP FUNCTION float8_dist(float8, float8);
131+
ALTER EXTENSION btree_gist DROP FUNCTION oid_dist(oid, oid);
132+
ALTER EXTENSION btree_gist DROP FUNCTION cash_dist(money, money);
133+
ALTER EXTENSION btree_gist DROP FUNCTION date_dist(date, date);
134+
ALTER EXTENSION btree_gist DROP FUNCTION time_dist(time, time);
135+
ALTER EXTENSION btree_gist DROP FUNCTION ts_dist(timestamp, timestamp);
136+
ALTER EXTENSION btree_gist DROP FUNCTION tstz_dist(timestamptz, timestamptz);
137+
ALTER EXTENSION btree_gist DROP FUNCTION interval_dist(interval, interval);
138+
139+
DROP FUNCTION int2_dist(int2, int2);
140+
DROP FUNCTION int4_dist(int4, int4);
141+
DROP FUNCTION int8_dist(int8, int8);
142+
DROP FUNCTION float4_dist(float4, float4);
143+
DROP FUNCTION float8_dist(float8, float8);
144+
DROP FUNCTION oid_dist(oid, oid);
145+
DROP FUNCTION cash_dist(money, money);
146+
DROP FUNCTION date_dist(date, date);
147+
DROP FUNCTION time_dist(time, time);
148+
DROP FUNCTION ts_dist(timestamp, timestamp);
149+
DROP FUNCTION tstz_dist(timestamptz, timestamptz);
150+
DROP FUNCTION interval_dist(interval, interval);

0 commit comments

Comments
 (0)