Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Add more hash string tests #857

Merged
merged 1 commit into from
Dec 11, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 52 additions & 11 deletions test/regress/tests/router/expected/hash_routing.out
Original file line number Diff line number Diff line change
@@ -26,29 +26,70 @@ CREATE KEY RANGE krid2 FROM 2147483648 ROUTE TO sh2 FOR DISTRIBUTION ds1;
(1 row)

-- the set of all unsigned 32-bit integers (0 to 4294967295)
ALTER DISTRIBUTION ds1 ATTACH RELATION xx DISTRIBUTION KEY col1 HASH FUNCTION MURMUR;
attach table
------------------------
relation name -> xx
ALTER DISTRIBUTION ds1 ATTACH RELATION xxhash DISTRIBUTION KEY col1 HASH FUNCTION MURMUR;
attach table
---------------------------
relation name -> xxhash
distribution id -> ds1
(2 rows)

-- TEST
\c regress
CREATE TABLE xx (col1 varchar);
CREATE TABLE xxhash (col1 varchar);
NOTICE: send query to shard(s) : sh1,sh2
INSERT INTO xx (col1) VALUES ('Hello, world!');
INSERT INTO xxhash (col1) VALUES ('Hello, world!');
NOTICE: send query to shard(s) : sh2
INSERT INTO xx (col1) VALUES ('test');
INSERT INTO xxhash (col1) VALUES ('test');
NOTICE: send query to shard(s) : sh2
INSERT INTO xx (col1) VALUES ('0');
INSERT INTO xxhash (col1) VALUES ('0');
NOTICE: send query to shard(s) : sh2
INSERT INTO xx (col1) VALUES ('The quick brown fox jumps over the lazy dog');
INSERT INTO xxhash (col1) VALUES ('The quick brown fox jumps over the lazy dog');
NOTICE: send query to shard(s) : sh1
INSERT INTO xxhash (col1) VALUES ('Армия — не просто доброе слово, а очень быстрое дело. Так мы выигрывали все войны. Пока противник рисует карты наступления, мы меняем ландшафты, причём вручную. Когда приходит время атаки, противник теряется на незнакомой местности и приходит в полную небоеготовность. В этом смысл, в этом наша стратегия.');
NOTICE: send query to shard(s) : sh1
INSERT INTO xx (col1) VALUES ('Армия — не просто доброе слово, а очень быстрое дело. Так мы выигрывали все войны. Пока противник рисует карты наступления, мы меняем ландшафты, причём вручную. Когда приходит время атаки, противник теряется на незнакомой местности и приходит в полную небоеготовность. В этом смысл, в этом наша стратегия.');
SELECT * FROM xxhash ORDER BY col1 /* __spqr__execute_on: sh1 */;
NOTICE: send query to shard(s) : sh1
col1
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The quick brown fox jumps over the lazy dog
Армия — не просто доброе слово, а очень быстрое дело. Так мы выигрывали все войны. Пока противник рисует карты наступления, мы меняем ландшафты, причём вручную. Когда приходит время атаки, противник теряется на незнакомой местности и приходит в полную небоеготовность. В этом смысл, в этом наша стратегия.
(2 rows)

SELECT * FROM xxhash ORDER BY col1 /* __spqr__execute_on: sh2 */;
NOTICE: send query to shard(s) : sh2
col1
---------------
0
Hello, world!
test
(3 rows)

COPY xxhash (col1) FROM STDIN /* __spqr__allow_multishard: true */;
NOTICE: send query to shard(s) : sh1,sh2
SELECT * FROM xxhash ORDER BY col1 /* __spqr__execute_on: sh1 */;
NOTICE: send query to shard(s) : sh1
col1
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog
Армия — не просто доброе слово, а очень быстрое дело. Так мы выигрывали все войны. Пока противник рисует карты наступления, мы меняем ландшафты, причём вручную. Когда приходит время атаки, противник теряется на незнакомой местности и приходит в полную небоеготовность. В этом смысл, в этом наша стратегия.
Армия — не просто доброе слово, а очень быстрое дело. Так мы выигрывали все войны. Пока противник рисует карты наступления, мы меняем ландшафты, причём вручную. Когда приходит время атаки, противник теряется на незнакомой местности и приходит в полную небоеготовность. В этом смысл, в этом наша стратегия.
(4 rows)

SELECT * FROM xxhash ORDER BY col1 /* __spqr__execute_on: sh2 */;
NOTICE: send query to shard(s) : sh2
col1
---------------
0
0
Hello, world!
Hello, world!
test
test
(6 rows)

--TEARDOWN
DROP TABLE xx;
DROP TABLE xxhash;
NOTICE: send query to shard(s) : sh1,sh2
\c spqr-console

32 changes: 23 additions & 9 deletions test/regress/tests/router/sql/hash_routing.sql
Original file line number Diff line number Diff line change
@@ -7,19 +7,33 @@ CREATE KEY RANGE krid1 FROM 0 ROUTE TO sh1 FOR DISTRIBUTION ds1;
CREATE KEY RANGE krid2 FROM 2147483648 ROUTE TO sh2 FOR DISTRIBUTION ds1;

-- the set of all unsigned 32-bit integers (0 to 4294967295)
ALTER DISTRIBUTION ds1 ATTACH RELATION xx DISTRIBUTION KEY col1 HASH FUNCTION MURMUR;
ALTER DISTRIBUTION ds1 ATTACH RELATION xxhash DISTRIBUTION KEY col1 HASH FUNCTION MURMUR;

-- TEST
\c regress
CREATE TABLE xx (col1 varchar);
INSERT INTO xx (col1) VALUES ('Hello, world!');
INSERT INTO xx (col1) VALUES ('test');
INSERT INTO xx (col1) VALUES ('0');
INSERT INTO xx (col1) VALUES ('The quick brown fox jumps over the lazy dog');
INSERT INTO xx (col1) VALUES ('Армия — не просто доброе слово, а очень быстрое дело. Так мы выигрывали все войны. Пока противник рисует карты наступления, мы меняем ландшафты, причём вручную. Когда приходит время атаки, противник теряется на незнакомой местности и приходит в полную небоеготовность. В этом смысл, в этом наша стратегия.');
CREATE TABLE xxhash (col1 varchar);
INSERT INTO xxhash (col1) VALUES ('Hello, world!');
INSERT INTO xxhash (col1) VALUES ('test');
INSERT INTO xxhash (col1) VALUES ('0');
INSERT INTO xxhash (col1) VALUES ('The quick brown fox jumps over the lazy dog');
INSERT INTO xxhash (col1) VALUES ('Армия — не просто доброе слово, а очень быстрое дело. Так мы выигрывали все войны. Пока противник рисует карты наступления, мы меняем ландшафты, причём вручную. Когда приходит время атаки, противник теряется на незнакомой местности и приходит в полную небоеготовность. В этом смысл, в этом наша стратегия.');

SELECT * FROM xxhash ORDER BY col1 /* __spqr__execute_on: sh1 */;
SELECT * FROM xxhash ORDER BY col1 /* __spqr__execute_on: sh2 */;

COPY xxhash (col1) FROM STDIN /* __spqr__allow_multishard: true */;
Hello, world!
test
0
The quick brown fox jumps over the lazy dog
Армия — не просто доброе слово, а очень быстрое дело. Так мы выигрывали все войны. Пока противник рисует карты наступления, мы меняем ландшафты, причём вручную. Когда приходит время атаки, противник теряется на незнакомой местности и приходит в полную небоеготовность. В этом смысл, в этом наша стратегия.
\.

SELECT * FROM xxhash ORDER BY col1 /* __spqr__execute_on: sh1 */;
SELECT * FROM xxhash ORDER BY col1 /* __spqr__execute_on: sh2 */;

--TEARDOWN
DROP TABLE xx;
DROP TABLE xxhash;
\c spqr-console
DROP DISTRIBUTION ALL CASCADE;
DROP KEY RANGE ALL;
DROP KEY RANGE ALL;
Loading