123 lines
5.0 KiB
PL/PgSQL
123 lines
5.0 KiB
PL/PgSQL
create schema force_vector_engine;
|
|
set current_schema=force_vector_engine;
|
|
create table force_vector_test(id int, val int);
|
|
insert into force_vector_test values(generate_series(1, 10000), generate_series(1, 1000));
|
|
create table force_vector_test1(id int, val int);
|
|
insert into force_vector_test1 select * from force_vector_test;
|
|
create index on force_vector_test1(id);
|
|
analyze force_vector_test;
|
|
analyze force_vector_test1;
|
|
create table force_vector_test2(id int, val int) with (orientation=column);
|
|
insert into force_vector_test2 select * from force_vector_test;
|
|
analyze force_vector_test2;
|
|
|
|
create function func_add_sql(a int, b int)
|
|
returns int
|
|
AS $$
|
|
declare
|
|
res int;
|
|
begin
|
|
select a+b into res;
|
|
return res;
|
|
end; $$
|
|
LANGUAGE plpgsql;
|
|
|
|
set try_vector_engine_strategy='force';
|
|
explain select count(*) from force_vector_test;
|
|
select count(*) from force_vector_test;
|
|
explain select count(*) from force_vector_test1 where id=2;
|
|
select count(*) from force_vector_test1 where id=2;
|
|
explain select count(*) from force_vector_test1 where id=2 and val=2;
|
|
select count(*) from force_vector_test1 where id=2 and val=2;
|
|
set enable_indexscan=off;
|
|
explain select count(*) from force_vector_test1 where id=2;
|
|
select count(*) from force_vector_test1 where id=2;
|
|
explain select count(*) from func_add_sql(1,2);
|
|
select count(*) from func_add_sql(1,2);
|
|
explain values (1, 'AAAAA', 'read'),(2, 'BBBBB', 'write') order by 1,2,3;
|
|
values (1, 'AAAAA', 'read'),(2, 'BBBBB', 'write') order by 1,2,3;
|
|
explain select * from force_vector_test where ctid='(0,1)' order by 2;
|
|
select * from force_vector_test where ctid='(0,1)' order by 2;
|
|
explain select * from force_vector_test t1, force_vector_test2 t2 where t1.id=t2.id order by t1.id limit 10;
|
|
select * from force_vector_test t1, force_vector_test2 t2 where t1.id=t2.id order by t1.id limit 10;
|
|
|
|
set query_dop=1004;
|
|
explain select count(*) from force_vector_test;
|
|
select count(*) from force_vector_test;
|
|
set query_dop=1;
|
|
|
|
create table force_vector_test3(id int, val int) with(storage_type=ustore);
|
|
select count(*) from force_vector_test3;
|
|
insert into force_vector_test3 select * from force_vector_test;
|
|
analyze force_vector_test3;
|
|
explain select count(*) from force_vector_test;
|
|
select count(*) from force_vector_test;
|
|
|
|
create table force_vector_test4(c1 int, c2 double precision, c3 double precision, c4 point);
|
|
insert into force_vector_test4(c1, c2, c3) values(20, 2.3, 2.3);
|
|
select point(c2, c3) from force_vector_test4 where c1 = 20;
|
|
-- Do not use vectorization engine
|
|
explain select point(c2, c3) from force_vector_test4 where c1 = 20;
|
|
|
|
create table force_vector_test5(id int, name varchar(1000));
|
|
insert into force_vector_test5 values(1, 'apple');
|
|
insert into force_vector_test5 values(2, 'pear');
|
|
insert into force_vector_test5 values(3, 'apple pear');
|
|
-- Using the Vectorization Engine
|
|
explain select count(*) from force_vector_test5 where id =1 or to_tsvector('ngram',name)@@to_tsquery('ngram','pear');
|
|
select count(*) from force_vector_test5 where id =1 or to_tsvector('ngram',name)@@to_tsquery('ngram','pear');
|
|
|
|
create table force_vector_test6(a int, b int, c int);
|
|
insert into force_vector_test6 values(1,2,3);
|
|
alter table force_vector_test6 drop column b;
|
|
insert into force_vector_test6 select * from force_vector_test6;
|
|
|
|
set try_vector_engine_strategy='off';
|
|
drop table force_vector_test;
|
|
drop table force_vector_test1;
|
|
drop table force_vector_test2;
|
|
drop table force_vector_test3;
|
|
drop table force_vector_test4;
|
|
drop table force_vector_test5;
|
|
drop table force_vector_test6;
|
|
drop function func_add_sql;
|
|
drop schema force_vector_engine cascade;
|
|
|
|
-- test bpcharlen in pg compatibility
|
|
create database pg_length_cmpt_db with dbcompatibility 'PG';
|
|
\c pg_length_cmpt_db
|
|
set try_vector_engine_strategy='force';
|
|
create table force_vt_tb1 (a char(10),b varchar(10));
|
|
insert into force_vt_tb1 values('零0','零1二3');
|
|
insert into force_vt_tb1 values('','');
|
|
insert into force_vt_tb1 values('0','0');
|
|
explain(costs off) select length(a),a from force_vt_tb1 order by 1;
|
|
select length(a),a,length(b),b from force_vt_tb1 order by 1;
|
|
|
|
set try_vector_engine_strategy='off';
|
|
explain(costs off) select length(a),a from force_vt_tb1 order by 1;
|
|
select length(a),a,length(b),b from force_vt_tb1 order by 1;
|
|
|
|
-- test with column table in codegen case
|
|
create table force_vt_tb1_col (a char(10),b varchar(10)) with (orientation=column);
|
|
insert into force_vt_tb1_col values('零0','零1二3');
|
|
insert into force_vt_tb1_col values('','');
|
|
insert into force_vt_tb1_col values('0','0');
|
|
select length(a),a,length(b),b from force_vt_tb1 order by 1;
|
|
set enable_codegen to true;
|
|
set codegen_cost_threshold to 0;
|
|
select length(a),a,length(b),b from force_vt_tb1 order by 1;
|
|
|
|
drop table force_vt_tb1;
|
|
drop table force_vt_tb1_col;
|
|
\c regression;
|
|
drop database pg_length_cmpt_db;
|
|
|
|
-- Do not use vectorization engine
|
|
create table force_vector_sysdomain(a information_schema.cardinal_number, b int);
|
|
insert into force_vector_sysdomain values(10, 20);
|
|
set try_vector_engine_strategy='force';
|
|
select a,b from force_vector_sysdomain;
|
|
drop table force_vector_sysdomain;
|
|
set try_vector_engine_strategy='off';
|