Skip to content

Commit c610b7a

Browse files
authored
chord: upload 0.3.0 schema scripts (#97)
Signed-off-by: usamoi <[email protected]>
1 parent 9d3014e commit c610b7a

File tree

4 files changed

+284
-0
lines changed

4 files changed

+284
-0
lines changed

sql/install/vchord_bm25--0.3.0.sql

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
/* <begin connected objects> */
2+
/*
3+
This file is auto generated by pgrx.
4+
5+
The ordering of items is not stable, it is driven by a dependency graph.
6+
*/
7+
/* </end connected objects> */
8+
9+
/* <begin connected objects> */
10+
-- src/lib.rs:16
11+
-- bootstrap
12+
CREATE TYPE bm25vector;
13+
CREATE TYPE bm25query;
14+
/* </end connected objects> */
15+
16+
/* <begin connected objects> */
17+
-- src/index/am.rs:11
18+
-- vchord_bm25::index::am::_bm25_amhandler
19+
CREATE FUNCTION _bm25_amhandler(internal) RETURNS index_am_handler
20+
IMMUTABLE STRICT PARALLEL SAFE LANGUAGE c AS 'MODULE_PATHNAME', '_bm25_amhandler_wrapper';
21+
/* </end connected objects> */
22+
23+
/* <begin connected objects> */
24+
-- src/datatype/text_bm25vector.rs:136
25+
-- vchord_bm25::datatype::text_bm25vector::_bm25catalog_bm25vector_in
26+
CREATE FUNCTION "_bm25catalog_bm25vector_in"(
27+
"input" cstring, /* &core::ffi::c_str::CStr */
28+
"_oid" oid, /* pgrx_pg_sys::submodules::oids::Oid */
29+
"_typmod" INT /* i32 */
30+
) RETURNS bm25vector /* vchord_bm25::datatype::memory_bm25vector::Bm25VectorOutput */
31+
IMMUTABLE STRICT PARALLEL SAFE
32+
LANGUAGE c /* Rust */
33+
AS 'MODULE_PATHNAME', '_bm25catalog_bm25vector_in_wrapper';
34+
/* </end connected objects> */
35+
36+
/* <begin connected objects> */
37+
-- src/datatype/operator_bm25vector.rs:3
38+
-- vchord_bm25::datatype::operator_bm25vector::_bm25catalog_bm25vector_operator_eq
39+
CREATE FUNCTION "_bm25catalog_bm25vector_operator_eq"(
40+
"lhs" bm25vector, /* vchord_bm25::datatype::memory_bm25vector::Bm25VectorInput<'_> */
41+
"rhs" bm25vector /* vchord_bm25::datatype::memory_bm25vector::Bm25VectorInput<'_> */
42+
) RETURNS bool /* bool */
43+
IMMUTABLE STRICT PARALLEL SAFE
44+
LANGUAGE c /* Rust */
45+
AS 'MODULE_PATHNAME', '_bm25catalog_bm25vector_operator_eq_wrapper';
46+
/* </end connected objects> */
47+
48+
/* <begin connected objects> */
49+
-- src/datatype/operator_bm25vector.rs:8
50+
-- vchord_bm25::datatype::operator_bm25vector::_bm25catalog_bm25vector_operator_neq
51+
CREATE FUNCTION "_bm25catalog_bm25vector_operator_neq"(
52+
"lhs" bm25vector, /* vchord_bm25::datatype::memory_bm25vector::Bm25VectorInput<'_> */
53+
"rhs" bm25vector /* vchord_bm25::datatype::memory_bm25vector::Bm25VectorInput<'_> */
54+
) RETURNS bool /* bool */
55+
IMMUTABLE STRICT PARALLEL SAFE
56+
LANGUAGE c /* Rust */
57+
AS 'MODULE_PATHNAME', '_bm25catalog_bm25vector_operator_neq_wrapper';
58+
/* </end connected objects> */
59+
60+
/* <begin connected objects> */
61+
-- src/datatype/text_bm25vector.rs:145
62+
-- vchord_bm25::datatype::text_bm25vector::_bm25catalog_bm25vector_out
63+
CREATE FUNCTION "_bm25catalog_bm25vector_out"(
64+
"vector" bm25vector /* vchord_bm25::datatype::memory_bm25vector::Bm25VectorInput<'_> */
65+
) RETURNS cstring /* alloc::ffi::c_str::CString */
66+
IMMUTABLE STRICT PARALLEL SAFE
67+
LANGUAGE c /* Rust */
68+
AS 'MODULE_PATHNAME', '_bm25catalog_bm25vector_out_wrapper';
69+
/* </end connected objects> */
70+
71+
/* <begin connected objects> */
72+
-- src/datatype/binary_bm25vector.rs:30
73+
-- vchord_bm25::datatype::binary_bm25vector::_bm25catalog_bm25vector_recv
74+
CREATE FUNCTION "_bm25catalog_bm25vector_recv"(
75+
"internal" internal, /* pgrx::datum::internal::Internal */
76+
"_oid" oid, /* pgrx_pg_sys::submodules::oids::Oid */
77+
"_typmod" INT /* i32 */
78+
) RETURNS bm25vector /* vchord_bm25::datatype::memory_bm25vector::Bm25VectorOutput */
79+
IMMUTABLE STRICT PARALLEL SAFE
80+
LANGUAGE c /* Rust */
81+
AS 'MODULE_PATHNAME', '_bm25catalog_bm25vector_recv_wrapper';
82+
/* </end connected objects> */
83+
84+
/* <begin connected objects> */
85+
-- src/datatype/binary_bm25vector.rs:12
86+
-- vchord_bm25::datatype::binary_bm25vector::_bm25catalog_bm25vector_send
87+
CREATE FUNCTION "_bm25catalog_bm25vector_send"(
88+
"vector" bm25vector /* vchord_bm25::datatype::memory_bm25vector::Bm25VectorInput<'_> */
89+
) RETURNS bytea /* vchord_bm25::datatype::bytea::Bytea */
90+
IMMUTABLE STRICT PARALLEL SAFE
91+
LANGUAGE c /* Rust */
92+
AS 'MODULE_PATHNAME', '_bm25catalog_bm25vector_send_wrapper';
93+
/* </end connected objects> */
94+
95+
/* <begin connected objects> */
96+
-- src/datatype/cast.rs:3
97+
-- vchord_bm25::datatype::cast::_vchord_bm25_cast_array_to_bm25vector
98+
CREATE FUNCTION "_vchord_bm25_cast_array_to_bm25vector"(
99+
"array" INT[], /* pgrx::datum::array::Array<'_, i32> */
100+
"_typmod" INT, /* i32 */
101+
"_explicit" bool /* bool */
102+
) RETURNS bm25vector /* vchord_bm25::datatype::memory_bm25vector::Bm25VectorOutput */
103+
IMMUTABLE STRICT PARALLEL SAFE
104+
LANGUAGE c /* Rust */
105+
AS 'MODULE_PATHNAME', '_vchord_bm25_cast_array_to_bm25vector_wrapper';
106+
/* </end connected objects> */
107+
108+
/* <begin connected objects> */
109+
-- src/page/inspector.rs:8
110+
-- vchord_bm25::page::inspector::bm25_page_inspect
111+
CREATE FUNCTION "bm25_page_inspect"(
112+
"index" regclass, /* pgrx::rel::PgRelation */
113+
"blkno" INT /* i32 */
114+
) RETURNS TEXT /* alloc::string::String */
115+
STRICT
116+
LANGUAGE c /* Rust */
117+
AS 'MODULE_PATHNAME', 'bm25_page_inspect_wrapper';
118+
/* </end connected objects> */
119+
120+
/* <begin connected objects> */
121+
-- src/datatype/functions.rs:11
122+
-- vchord_bm25::datatype::functions::search_bm25query
123+
CREATE FUNCTION "search_bm25query"(
124+
"target_vector" bm25vector, /* vchord_bm25::datatype::memory_bm25vector::Bm25VectorInput<'_> */
125+
"query" bm25query /* pgrx::heap_tuple::PgHeapTuple<'_, pgrx::pgbox::AllocatedByRust> */
126+
) RETURNS real /* f32 */
127+
STRICT STABLE PARALLEL SAFE
128+
LANGUAGE c /* Rust */
129+
AS 'MODULE_PATHNAME', 'search_bm25query_wrapper';
130+
/* </end connected objects> */
131+
132+
/* <begin connected objects> */
133+
-- src/lib.rs:17
134+
-- finalize
135+
CREATE TYPE bm25vector (
136+
INPUT = _bm25catalog_bm25vector_in,
137+
OUTPUT = _bm25catalog_bm25vector_out,
138+
RECEIVE = _bm25catalog_bm25vector_recv,
139+
SEND = _bm25catalog_bm25vector_send,
140+
STORAGE = EXTERNAL,
141+
INTERNALLENGTH = VARIABLE,
142+
ALIGNMENT = double
143+
);
144+
145+
CREATE OPERATOR = (
146+
PROCEDURE = _bm25catalog_bm25vector_operator_eq,
147+
LEFTARG = bm25vector,
148+
RIGHTARG = bm25vector,
149+
COMMUTATOR = =,
150+
NEGATOR = <>,
151+
RESTRICT = eqsel,
152+
JOIN = eqjoinsel
153+
);
154+
155+
CREATE OPERATOR <> (
156+
PROCEDURE = _bm25catalog_bm25vector_operator_neq,
157+
LEFTARG = bm25vector,
158+
RIGHTARG = bm25vector,
159+
COMMUTATOR = <>,
160+
NEGATOR = =,
161+
RESTRICT = eqsel,
162+
JOIN = eqjoinsel
163+
);
164+
165+
CREATE CAST (int[] AS bm25vector)
166+
WITH FUNCTION _vchord_bm25_cast_array_to_bm25vector(int[], integer, boolean) AS IMPLICIT;
167+
168+
CREATE TYPE bm25query AS (
169+
index_oid regclass,
170+
query_vector bm25vector
171+
);
172+
173+
CREATE FUNCTION to_bm25query(index_oid regclass, query_vector bm25vector) RETURNS bm25query
174+
IMMUTABLE STRICT PARALLEL SAFE LANGUAGE sql AS $$
175+
SELECT index_oid, query_vector;
176+
$$;
177+
178+
CREATE ACCESS METHOD bm25 TYPE INDEX HANDLER _bm25_amhandler;
179+
COMMENT ON ACCESS METHOD bm25 IS 'vchord bm25 index access method';
180+
181+
CREATE OPERATOR pg_catalog.<&> (
182+
PROCEDURE = search_bm25query,
183+
LEFTARG = bm25vector,
184+
RIGHTARG = bm25query
185+
);
186+
187+
CREATE OPERATOR FAMILY bm25_ops USING bm25;
188+
189+
CREATE OPERATOR CLASS bm25_ops FOR TYPE bm25vector USING bm25 FAMILY bm25_ops AS
190+
OPERATOR 1 pg_catalog.<&>(bm25vector, bm25query) FOR ORDER BY float_ops;
191+
/* </end connected objects> */
192+

sql/vchord_bm25--0.2.2--0.3.0.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-- vchord_bm25--0.2.2--0.3.0.sql
2+
3+
CREATE FUNCTION "bm25_page_inspect"("index" regclass, "blkno" INT) RETURNS TEXT
4+
STRICT LANGUAGE c AS 'MODULE_PATHNAME', 'bm25_page_inspect_wrapper';

tools/dump-codegen.sh

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env bash
2+
set -e
3+
4+
cat << EOF
5+
#include "postgres.h"
6+
7+
#include "access/amapi.h"
8+
#include "fmgr.h"
9+
10+
#include <stdlib.h>
11+
12+
#define DECLARE(funcname) \
13+
extern Datum funcname() { exit(1); } \
14+
extern const Pg_finfo_record *pg_finfo_##funcname(void); \
15+
const Pg_finfo_record *pg_finfo_##funcname(void) { return &my_finfo; } \
16+
extern int no_such_variable
17+
18+
#define DECLARE_AMHANDLER(funcname) \
19+
extern Datum funcname() { return amhandler(); } \
20+
extern const Pg_finfo_record *pg_finfo_##funcname(void); \
21+
const Pg_finfo_record *pg_finfo_##funcname(void) { return &my_finfo; } \
22+
extern int no_such_variable
23+
24+
static const Pg_finfo_record my_finfo = {1};
25+
26+
PG_MODULE_MAGIC;
27+
28+
Datum amhandler() {
29+
IndexAmRoutine *amroutine = makeNode(IndexAmRoutine);
30+
amroutine->amcanorderbyop = true;
31+
return (Datum) amroutine;
32+
}
33+
EOF
34+
35+
printf "\n"
36+
37+
while read -r line; do
38+
if [[ $line == *"amhandler"* ]]; then
39+
echo "DECLARE_AMHANDLER($line);"
40+
else
41+
echo "DECLARE($line);"
42+
fi
43+
done <<< $(grep -ohr "'\w\+_wrapper'" $(dirname "$0")/../sql | sort | uniq | sed "s/'//g")

tools/dump.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/usr/bin/env bash
2+
set -e
3+
4+
mkdir -p $(dirname "$0")/../target/tools
5+
6+
if [ $# -eq 0 ] ; then
7+
echo "Usage: $0 INITIAL_VERSION VERSIONS.."
8+
echo "Dump the extension members. Install INITIAL_VERSION first and upgrade to every version in VERSIONS."
9+
echo "The extension members are installed in database \"vchord_bm25\", so use \"createdb vchord_bm25\" to setup."
10+
echo "Examples:"
11+
echo " ./tools/dump.sh 0.1.11 0.2.0 > ./dump_upgrade.sql"
12+
echo " ./tools/dump.sh 0.2.0 > ./dump_install.sql"
13+
echo " diff ./dump_upgrade.sql ./dump_install.sql"
14+
exit 0
15+
fi
16+
17+
f=()
18+
prev_arg=""
19+
for arg in "$@"; do
20+
if [ "$prev_arg" = "" ]; then
21+
x=$(realpath "$(dirname "$0")/../sql/install/vchord_bm25--${arg}.sql")
22+
else
23+
x=$(realpath "$(dirname "$0")/../sql/vchord_bm25--${prev_arg}--${arg}.sql")
24+
fi
25+
prev_arg=$arg
26+
f+=("$x")
27+
done
28+
29+
so=$(realpath $(dirname "$0")/../target/tools/vchord_bm25.so)
30+
$(dirname "$0")/dump-codegen.sh | gcc -I $(pg_config --includedir-server) -fPIC -shared -o $so -x c -
31+
32+
sql=$(mktemp)
33+
echo "BEGIN;" >> $sql
34+
echo "CREATE SCHEMA vchord_bm25;" >> $sql
35+
echo "SET LOCAL search_path TO vchord_bm25,public;" >> $sql
36+
cat ${f[@]} \
37+
| grep -v '^\\' \
38+
| sed "s|@extschema@|vchord_bm25|g" \
39+
| sed "s|MODULE_PATHNAME|$so|g" \
40+
>> $sql
41+
echo "END;" >> $sql
42+
43+
psql -d vchord_bm25 -f $sql 1>&2
44+
pg_dump -s -d vchord_bm25
45+
psql -d vchord_bm25 -c "DROP SCHEMA IF EXISTS vchord_bm25 CASCADE;" 1>&2

0 commit comments

Comments
 (0)