|
1 | | -DROP EXTENSION IF EXISTS aqo CASCADE; |
2 | | -DROP SCHEMA IF EXISTS test CASCADE; |
3 | | -NOTICE: schema "test" does not exist, skipping |
| 1 | +DROP EXTENSION aqo CASCADE; |
4 | 2 | CREATE EXTENSION aqo; |
5 | 3 | SET aqo.join_threshold = 0; |
6 | | -SET aqo.mode = 'intelligent'; |
7 | | -CREATE TABLE test (id SERIAL, data TEXT); |
8 | | -INSERT INTO test (data) VALUES ('string'); |
9 | | -SELECT * FROM test; |
10 | | - id | data |
11 | | -----+-------- |
12 | | - 1 | string |
| 4 | +SET aqo.mode = 'learn'; -- use this mode for unconditional learning |
| 5 | +CREATE TABLE test AS (SELECT id, 'payload' || id FROM generate_series(1,100) id); |
| 6 | +ANALYZE test; |
| 7 | +-- Learn on a query |
| 8 | +SELECT count(*) FROM test; |
| 9 | + count |
| 10 | +------- |
| 11 | + 100 |
13 | 12 | (1 row) |
14 | 13 |
|
15 | | -SELECT query_text FROM aqo_query_texts; |
16 | | - query_text |
17 | | ---------------------------------------- |
18 | | - COMMON feature space (do not delete!) |
19 | | - SELECT * FROM test; |
20 | | -(2 rows) |
21 | | - |
22 | | -SELECT learn_aqo, use_aqo, auto_tuning FROM aqo_queries; |
23 | | - learn_aqo | use_aqo | auto_tuning |
24 | | ------------+---------+------------- |
25 | | - f | f | f |
26 | | - t | f | t |
| 14 | +SELECT query_text,learn_aqo, use_aqo, auto_tuning |
| 15 | +FROM aqo_query_texts JOIN aqo_queries USING (query_hash) |
| 16 | +; -- Check result. TODO: use aqo_status() |
| 17 | + query_text | learn_aqo | use_aqo | auto_tuning |
| 18 | +---------------------------------------+-----------+---------+------------- |
| 19 | + COMMON feature space (do not delete!) | f | f | f |
| 20 | + SELECT count(*) FROM test; | t | t | f |
27 | 21 | (2 rows) |
28 | 22 |
|
| 23 | +-- Create a schema and move AQO into it. |
29 | 24 | CREATE SCHEMA IF NOT EXISTS test; |
30 | 25 | ALTER EXTENSION aqo SET SCHEMA test; |
31 | | -SET aqo.mode = 'intelligent'; |
32 | | -CREATE TABLE test1 (id SERIAL, data TEXT); |
33 | | -INSERT INTO test1 (data) VALUES ('string'); |
34 | | -SELECT * FROM test1; |
35 | | - id | data |
36 | | -----+-------- |
37 | | - 1 | string |
| 26 | +-- Do something to be confident that AQO works |
| 27 | +SELECT count(*) FROM test; |
| 28 | + count |
| 29 | +------- |
| 30 | + 100 |
| 31 | +(1 row) |
| 32 | + |
| 33 | +SELECT count(*) FROM test WHERE id < 10; |
| 34 | + count |
| 35 | +------- |
| 36 | + 9 |
| 37 | +(1 row) |
| 38 | + |
| 39 | +SELECT query_text,learn_aqo, use_aqo, auto_tuning |
| 40 | +FROM test.aqo_query_texts JOIN test.aqo_queries USING (query_hash) |
| 41 | +; -- Check result. TODO: We want to find here both queries executed above |
| 42 | + query_text | learn_aqo | use_aqo | auto_tuning |
| 43 | +---------------------------------------+-----------+---------+------------- |
| 44 | + COMMON feature space (do not delete!) | f | f | f |
| 45 | + SELECT count(*) FROM test; | t | t | f |
| 46 | +(2 rows) |
| 47 | + |
| 48 | +-- Add schema which contains AQO to the end of search_path |
| 49 | +SELECT set_config('search_path', current_setting('search_path') || ', test', false); |
| 50 | + set_config |
| 51 | +----------------------- |
| 52 | + "$user", public, test |
| 53 | +(1 row) |
| 54 | + |
| 55 | +SELECT count(*) FROM test; |
| 56 | + count |
| 57 | +------- |
| 58 | + 100 |
| 59 | +(1 row) |
| 60 | + |
| 61 | +SELECT count(*) FROM test WHERE id < 10; |
| 62 | + count |
| 63 | +------- |
| 64 | + 9 |
38 | 65 | (1 row) |
39 | 66 |
|
40 | | -SELECT query_text FROM test.aqo_query_texts; |
41 | | - query_text |
42 | | ---------------------------------------- |
43 | | - COMMON feature space (do not delete!) |
44 | | - SELECT * FROM test; |
| 67 | +SELECT query_text,learn_aqo, use_aqo, auto_tuning |
| 68 | +FROM test.aqo_query_texts JOIN test.aqo_queries USING (query_hash) |
| 69 | +; -- Check result. |
| 70 | + query_text | learn_aqo | use_aqo | auto_tuning |
| 71 | +------------------------------------------+-----------+---------+------------- |
| 72 | + COMMON feature space (do not delete!) | f | f | f |
| 73 | + SELECT count(*) FROM test; | t | t | f |
| 74 | + SELECT count(*) FROM test WHERE id < 10; | t | t | f |
| 75 | +(3 rows) |
| 76 | + |
| 77 | +/* |
| 78 | + * Below, we should check each UI function |
| 79 | + */ |
| 80 | +SELECT aqo_disable_query(id) FROM ( |
| 81 | + SELECT query_hash AS id FROM aqo_queries WHERE query_hash <> 0) AS q1; |
| 82 | + aqo_disable_query |
| 83 | +------------------- |
| 84 | + |
| 85 | + |
45 | 86 | (2 rows) |
46 | 87 |
|
47 | 88 | SELECT learn_aqo, use_aqo, auto_tuning FROM test.aqo_queries; |
48 | 89 | learn_aqo | use_aqo | auto_tuning |
49 | 90 | -----------+---------+------------- |
50 | 91 | f | f | f |
51 | | - t | f | t |
52 | | -(2 rows) |
53 | | - |
54 | | -SET search_path TO test; |
55 | | -CREATE TABLE test2 (id SERIAL, data TEXT); |
56 | | -INSERT INTO test2 (data) VALUES ('string'); |
57 | | -SELECT * FROM test2; |
58 | | - id | data |
59 | | -----+-------- |
60 | | - 1 | string |
61 | | -(1 row) |
62 | | - |
63 | | -SELECT query_text FROM aqo_query_texts; |
64 | | - query_text |
65 | | ---------------------------------------- |
66 | | - COMMON feature space (do not delete!) |
67 | | - SELECT * FROM test; |
68 | | - SELECT * FROM test2; |
| 92 | + f | f | f |
| 93 | + f | f | f |
69 | 94 | (3 rows) |
70 | 95 |
|
71 | | -SELECT learn_aqo, use_aqo, auto_tuning FROM aqo_queries; |
| 96 | +SELECT aqo_enable_query(id) FROM ( |
| 97 | + SELECT query_hash AS id FROM aqo_queries WHERE query_hash <> 0) AS q1; |
| 98 | + aqo_enable_query |
| 99 | +------------------ |
| 100 | + |
| 101 | + |
| 102 | +(2 rows) |
| 103 | + |
| 104 | +SELECT learn_aqo, use_aqo, auto_tuning FROM test.aqo_queries; |
72 | 105 | learn_aqo | use_aqo | auto_tuning |
73 | 106 | -----------+---------+------------- |
74 | 107 | f | f | f |
75 | | - t | f | t |
76 | | - t | f | t |
| 108 | + t | t | f |
| 109 | + t | t | f |
77 | 110 | (3 rows) |
78 | 111 |
|
| 112 | +RESET search_path; |
| 113 | +DROP TABLE test CASCADE; |
79 | 114 | DROP SCHEMA IF EXISTS test CASCADE; |
80 | | -NOTICE: drop cascades to 2 other objects |
81 | | -DETAIL: drop cascades to extension aqo |
82 | | -drop cascades to table test2 |
| 115 | +NOTICE: drop cascades to extension aqo |
83 | 116 | DROP EXTENSION IF EXISTS aqo CASCADE; |
84 | 117 | NOTICE: extension "aqo" does not exist, skipping |
85 | | -SET search_path TO public; |
|
0 commit comments