sources/tester/dbhelp.sql (65 lines of code) (raw):
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
-- This file generates dbhelp.c, dbhelp.c is licensed per the below.
-- ------ cql-verify db helpers
@echo c, "\n";
@echo c, "\n";
@echo c, "//\n";
@echo c, "// This file is auto-generated by dbhelp.sql, it is checked in just\n";
@echo c, "// in case CQL is broken by a change. The Last Known Good Verifier\n";
@echo c, "// can be used to verify the tests pass again, or report failures\n";
@echo c, "// while things are still otherwise broken. Rebuild with 'regen.sh'\n";
@echo c, "//\n";
@echo c, "\n";
declare proc printf no check;
-- setup the table and the index
create procedure dbhelp_setup()
begin
create table test_output(
line integer not null,
data text not null
);
create index __idx__test_lines on test_output (line);
create table source_input(
line integer not null,
data text not null
);
create index __idx__source_lines on source_input (line);
end;
create procedure dbhelp_prev_line(line_ integer not null, out prev integer not null)
begin
begin try
set prev := (select ifnull(max(line),-1) from test_output where line < line_);
end try;
begin catch
set prev := 0;
end catch;
end;
-- add a row to the results table
create procedure dbhelp_add(line integer not null, data text not null)
begin
insert into test_output values (line, data);
end;
create procedure dbhelp_add_source(line integer not null, data text not null)
begin
insert into source_input values (line, data);
end;
create procedure dbhelp_dump_line(line_ integer not null)
begin
declare C cursor for select * from test_output where line = line_;
loop fetch C
begin
call printf('%s', C.data);
end;
end;
-- find the statement that came after line_
-- search the results of that statement for the indicated pattern
create proc dbhelp_find(line_ integer not null, pattern text not null, out search_line integer not null, out found integer not null)
begin
set search_line := (select line from test_output where line >= line_ limit 1);
set found := (select count(*) from test_output where line = search_line and data like pattern);
end;
create procedure dbhelp_dump_source(line1 integer not null, line2 integer not null)
begin
declare C cursor for select * from source_input where line > line1 and line <= line2;
loop fetch C
begin
call printf('%s', C.data);
end;
end;
create procedure dbhelp_source()
begin
select * from source_input;
end;