-- keywords
* except;
* replace;
all;
and;
any;
array;
as;
asc;
assert_rows_modified;
at;
between;
by;
cast;
collate;
contains;
create;
cross;
cube;
current;
declare;
default;
define;
desc;
distinct;
enum;
escape;
except;
exclude;
exists;
extract;
false;
fetch;
following;
for;
from;
full;
group;
grouping;
groups;
hash;
having;
if();
ignore;
in;
inner;
intersect;
interval;
into;
is;
join;
lateral;
left;
like;
limit;
lookup;
merge;
natural;
new;
no;
not;
null;
nulls;
of;
on;
or;
order;
outer;
over;
partition;
preceding;
proto;
raise using message;
raise;
range;
recursive;
replace;
respect;
right;
rollup;
rows;
select;
set;
some;
struct;
tablesample;
to;
treat;
true;
unbounded;
union;
unnest;
using;
where;
window;
with;
within;
-- newline keywords
create or replace;
create;
returns;
language;
and;
between;
or;
xor;
-- scripting keywords
create or replace procedure
begin
end;
create procedure if not exists
begin
end;
create procedure
begin
exception when error then
end;
if
then
elseif
then
else
end if;
while
do
end while;
loop
end loop;
case
when
then
else
end;
begin transaction;
commit transaction;
commit;
rollback transaction;
rollback;
-- top level keywords
alter table if exists;
alter table;
cluster by;
create or replace table;
create or replace view;
create table if not exists;
create view if not exists;
create temp table;
create table;
create view;
drop table;
drop view;
options;
delete from;
delete;
insert into;
insert;
merge into;
merge;
update;
break;
continue;
iterate;
leave;
cross join;
except distinct;
intersect distinct;
from;
full join;
full outer join;
group by;
having;
inner join;
intersect;
join;
left join;
left outer join;
limit;
on;
order by;
outer join;
partition by;
right join;
right outer join;
rollup;
rows between;
rows;
select as struct;
select as value;
select;
union all;
union distinct;
union;
using;
values;
where;
with;
window;
