Skip to content

Instantly share code, notes, and snippets.

@DQinYuan
Last active October 10, 2019 17:16
Show Gist options
  • Save DQinYuan/74513abafd72b3e5f8ce82a52ff08aeb to your computer and use it in GitHub Desktop.
Save DQinYuan/74513abafd72b3e5f8ce82a52ff08aeb to your computer and use it in GitHub Desktop.
CREATE TABLE t (field1 INT PRIMARY KEY, field2 INT AS (ABS(a)));
INSERT INTO t VALUES (26, default), (43, default);
ALTER TABLE t ADD COLUMN field3 INT AS (ABS(a));
INSERT INTO t VALUES (44, default, default), (26, default, default), (30, default, default);
INSERT INTO t VALUES (-43, default, default);
ALTER TABLE t ADD COLUMN field4 INT AS (ABS(a));
SELECT * FROM t;
SELECT * FROM t;
INSERT INTO t VALUES (-91, default, default, default), (-99, default, default, default), (41, default, default, default);
INSERT INTO t VALUES (85, default, default, default), (30, default, default, default);
SELECT * FROM t;
ALTER TABLE t ADD COLUMN field5 INT AS (ABS(a));
ALTER TABLE t ADD COLUMN field6 INT AS (ABS(a));
ALTER TABLE t ADD COLUMN field7 INT AS (ABS(a));
ALTER TABLE t ADD COLUMN field8 INT AS (EXP(a));
SELECT * FROM t;
ALTER TABLE t ADD COLUMN field9 INT AS (EXP(a));
ALTER TABLE t ADD COLUMN field10 INT AS (ABS(a));
SELECT * FROM t;
SELECT * FROM t;
SELECT * FROM t;
SELECT * FROM t;
INSERT INTO t VALUES (122, default, default, default, default, default, default, default, default, default);
ALTER TABLE t ADD COLUMN field11 INT AS (EXP(a));
SELECT * FROM t;
SELECT * FROM t;
ALTER TABLE t ADD COLUMN field12 INT AS (EXP(a));
DROP TABLE t;
CREATE TABLE t (field1 INT PRIMARY KEY, field2 INT AS (EXP(a)));
INSERT INTO t VALUES (57, default), (-33, default);
ALTER TABLE t ADD COLUMN field3 INT AS (ABS(a));
INSERT INTO t VALUES (-121, default, default), (-73, default, default), (-53, default, default);
ALTER TABLE t ADD COLUMN field4 INT AS (ABS(a));
SELECT * FROM t;
SELECT * FROM t;
INSERT INTO t VALUES (-126, default, default, default);
SELECT * FROM t;
INSERT INTO t VALUES (13, default, default, default), (-33, default, default, default), (94, default, default, default), (-35, default, default, default);
ALTER TABLE t ADD COLUMN field5 INT AS (ABS(a));
SELECT * FROM t;
INSERT INTO t VALUES (108, default, default, default, default);
SELECT * FROM t;
INSERT INTO t VALUES (5, default, default, default, default);
ALTER TABLE t ADD COLUMN field6 INT AS (ABS(a));
INSERT INTO t VALUES (92, default, default, default, default, default);
INSERT INTO t VALUES (121, default, default, default, default, default);
ALTER TABLE t ADD COLUMN field7 INT AS (EXP(a));
SELECT * FROM t;
SELECT * FROM t;
INSERT INTO t VALUES (45, default, default, default, default, default, default), (-98, default, default, default, default, default, default);
SELECT * FROM t;
ALTER TABLE t ADD COLUMN field8 INT AS (ABS(a));
ALTER TABLE t ADD COLUMN field9 INT AS (ABS(a));
DROP TABLE t;
CREATE TABLE t (field1 INT PRIMARY KEY, field2 INT AS (ABS(a)));
INSERT INTO t VALUES (70, default);
ALTER TABLE t ADD COLUMN field3 INT AS (EXP(a));
INSERT INTO t VALUES (-107, default, default);
ALTER TABLE t ADD COLUMN field4 INT AS (ABS(a));
ALTER TABLE t ADD COLUMN field5 INT AS (ABS(a));
ALTER TABLE t ADD COLUMN field6 INT AS (EXP(a));
ALTER TABLE t ADD COLUMN field7 INT AS (EXP(a));
ALTER TABLE t ADD COLUMN field8 INT AS (ABS(a));
DROP TABLE t;
CREATE TABLE t (field1 INT PRIMARY KEY, field2 INT AS (EXP(a)));
INSERT INTO t VALUES (-49, default), (73, default), (-1, default);
ALTER TABLE t ADD COLUMN field3 INT AS (EXP(a));
INSERT INTO t VALUES (89, default, default), (-44, default, default);
INSERT INTO t VALUES (-68, default, default), (32, default, default);
SELECT * FROM t;
ALTER TABLE t ADD COLUMN field4 INT AS (EXP(a));
INSERT INTO t VALUES (-67, default, default, default);
SELECT * FROM t;
ALTER TABLE t ADD COLUMN field5 INT AS (EXP(a));
INSERT INTO t VALUES (54, default, default, default, default);
INSERT INTO t VALUES (103, default, default, default, default);
INSERT INTO t VALUES (-13, default, default, default, default);
INSERT INTO t VALUES (74, default, default, default, default);
INSERT INTO t VALUES (23, default, default, default, default);
ALTER TABLE t ADD COLUMN field6 INT AS (ABS(a));
INSERT INTO t VALUES (3, default, default, default, default, default), (-97, default, default, default, default, default);
SELECT * FROM t;
INSERT INTO t VALUES (94, default, default, default, default, default);
ALTER TABLE t ADD COLUMN field7 INT AS (ABS(a));
ALTER TABLE t ADD COLUMN field8 INT AS (ABS(a));
DROP TABLE t;
CREATE TABLE t (field1 INT PRIMARY KEY, field2 INT AS (EXP(a)));
INSERT INTO t VALUES (40, default);
ALTER TABLE t ADD COLUMN field3 INT AS (ABS(a));
INSERT INTO t VALUES (85, default, default);
ALTER TABLE t ADD COLUMN field4 INT AS (EXP(a));
INSERT INTO t VALUES (126, default, default, default), (-125, default, default, default), (-115, default, default, default), (22, default, default, default);
SELECT * FROM t;
ALTER TABLE t ADD COLUMN field5 INT AS (EXP(a));
SELECT * FROM t;
ALTER TABLE t ADD COLUMN field6 INT AS (EXP(a));
SELECT * FROM t;
INSERT INTO t VALUES (6, default, default, default, default, default);
ALTER TABLE t ADD COLUMN field7 INT AS (ABS(a));
INSERT INTO t VALUES (-18, default, default, default, default, default, default);
# ./go-randgen gentest -B -Y examples/tengqiu.yy --maxrecur 100
{
function f(num)
print(string.format("field%d", num))
end
}
query:
create ; insert ; alter ; insert ; alter_insert_selects ; alter ; drop
create:{num = 2} # initially has 2 fields
CREATE TABLE t (field1 INT PRIMARY KEY, field2 INT AS (function(a)))
insert:
INSERT INTO t VALUES values
values:
value, values
| value
value: # value scale increase by field number
(_tinyint{print(string.rep(", default", num - 1))})
alter_insert_selects:
alter_insert_selects ; alter_insert_select
# repeat it for easy recursive
| alter_insert_selects ; alter_insert_select
| alter_insert_selects ; alter_insert_select
| alter_insert_selects ; alter_insert_select
| alter_insert_selects ; alter_insert_select
| alter_insert_selects ; alter_insert_select
| alter_insert_select
alter_insert_select:
alter | insert | select
alter: {num = num + 1}
ALTER TABLE t ADD COLUMN {f(num)} INT AS (function(a))
select:
SELECT * FROM t
function:
ABS
| EXP
drop:
DROP TABLE t
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment