scylladb / gemini

Test data integrity by comparing against an Oracle running in parallel
Apache License 2.0
27 stars 16 forks source link

feat(cli): add statement-log-file option #413

Closed dkropachev closed 6 months ago

dkropachev commented 6 months ago

Fixes #409

Adds option to log statements flow Resulted file looks like:

DROP KEYSPACE IF EXISTS ks1;
CREATE KEYSPACE IF NOT EXISTS ks1 WITH REPLICATION = {'class':'SimpleStrategy','replication_factor':'1'};
CREATE TYPE IF NOT EXISTS ks1.udt_3644515473 (udt_3644515473_0 bigint,udt_3644515473_1 blob);
CREATE TYPE IF NOT EXISTS ks1.udt_62666315 (udt_62666315_0 inet,udt_62666315_1 boolean,udt_62666315_2 date,udt_62666315_3 float,udt_62666315_4 float,udt_62666315_5 text,udt_62666315_6 timeuuid);
CREATE TYPE IF NOT EXISTS ks1.udt_1679318000 (udt_1679318000_0 time,udt_1679318000_1 ascii,udt_1679318000_2 inet,udt_1679318000_3 smallint,udt_1679318000_4 bigint);
CREATE TABLE IF NOT EXISTS ks1.table1 (pk0 text,pk1 bigint,pk2 uuid,ck0 blob,ck1 smallint,ck2 varchar,col0 frozen<map<date,int>>,col1 tinyint,col2 frozen<udt_3644515473>,col3 blob,col4 frozen<set<uuid>>,col5 frozen<udt_62666315>,col6 frozen<udt_1679318000>,col7 float,col8 tuple<timestamp,int,varchar,time,timestamp,varchar,timestamp,uuid,timestamp,duration,timestamp,inet,double,float,tinyint,bigint,tinyint,uuid>,col9 blob,col10 frozen<tuple<float,tinyint,timestamp,duration,duration,int,timestamp,decimal,double,timeuuid,date,double,time,date,uuid,timestamp,timestamp>>, PRIMARY KEY ((pk0,pk1,pk2), ck0,ck1,ck2));
INSERT INTO ks1.table1 (pk0,pk1,pk2,ck0,ck1,ck2,col0,col1,col2,col3,col4,col5,col6,col7,col8,col9,col10) VALUES ('108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3dbcaa610c7fe108ce37c8261e227dcc3db',2662017675869867016,afa65365-0d8d-1fc9-a747-64d69a667ec0,textasblob('3962623630633064373561333864633039393361346238386563653432343964396262363063306437356133386463303939'),32384,'3627679c3b2905502be6a22bb04e97d93627679c3b2905502be6a22bb04e97d93627679c3b2905502be6a22bb04e97d93627679c3b2905502be6a22bb04e97d93627679c3b2905502be6a22bb04e97d93627679c3b290',{'5045-05-17':812309,'6636-11-09':848895449,'2015-08-25':259795404,'4542-11-25':1629586638,'4527-07-02':1592951831,'4336-01-13':754723079,'9914-10-02':2020371091},95,{udt_3644515473_0:58606650209978858,udt_3644515473_1:textasblob('3930303033653566633330623539616431663439626662383562353037383934393030303365356663333062353961643166')},textasblob('6233326132353630356165633763313832373734363234653138663330333662623332613235363035616563376331383237'),{355d9e9b-a685-1007-a7c9-64d69a667ec0,422b9c5c-43fc-15a0-a7ca-64d69a667ec0,322900a3-d24c-15e3-a7cc-64d69a667ec0},{udt_62666315_0:'117.23.254.111',udt_62666315_1:false,udt_62666315_2:'9324-09-28',udt_62666315_3:0.16,udt_62666315_4:0.18,udt_62666315_5:'374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520dc63c2ed54374f2311ca834cad01d520',udt_62666315_6:fc6f5016-0ccf-1763-a7d0-64d69a667ec0},{udt_1679318000_0:'06:22:51.768',udt_1679318000_1:'4b25189f6d202a5583201cf985ca8d1e4b25189f6d202a5583201cf985ca8d1e4b25189f6d202a5583201cf985ca8d1e4b25189f6d202a5583201cf985ca8d1e4b25189f6d202a5583201cf985ca8d1e4b25189f6d202a5583201cf985ca8d1e4b25189f6d202a5583201cf985ca8d1e4b25189f6d202a5583201cf985ca8d1e4b25189f6d202a5583201cf985ca8d1e4b25189f6d202a5583201cf985ca8d1e4b25189f6d202a5583201cf985ca8d1e4b25189f6d202a5583201cf985ca8d1e',udt_1679318000_2:'180.144.92.12',udt_1679318000_3:8870,udt_1679318000_4:1563823198671851002},0.04,('1976-03-25T10:10:55.832+0000',1173432118,'5d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703262aae243855d7d52fb0558875d31703','20:48:41.49','1971-07-25T21:36:58.024+0000','48753a734336db8f597985e4c7f56a4848753a734336db8f597985e4c7f56a4848753a734336db8f597985e4c7f','1976-04-11T08:22:33.559+0000',450ef95d-f01c-1754-a7d8-64d69a667ec0,'1971-08-20T23:54:52.721+0000',32m0s,'1970-09-27T11:35:00.258+0000','213.164.36.125',0.22,0.72,123,306283957986416746,39,833f8ecb-4b7a-1624-a7da-64d69a667ec0),textasblob('3438363263393637653439653463656234336238633963323766333638333538343836326339363765343965346365623433'),(0.48,-51,'1975-01-21T17:59:37.374+0000',1h25m0s,18m0s,424476374,'1973-01-28T19:56:22.084+0000',7508991256713081.973,0.71,259f28a2-0dae-17dd-a7e4-64d69a667ec0,'4795-04-25',0.12,'23:43:20.832','6660-07-17',d230ec50-f950-1199-a7e6-64d69a667ec0,'1972-12-02T18:53:19.223+0000','1970-03-06T14:17:07.658+0000'))  USING TIMESTAMP 1702961035403145;
dkropachev commented 6 months ago

@ptrsmrn , @bhalevy, please take a look, is that all you wanted ?

bhalevy commented 6 months ago

It'd be best to indicate USING TIMESTAMP with each query

bhalevy commented 6 months ago

For the data modification queries that is

nuivall commented 6 months ago

Why not use https://pkg.go.dev/github.com/gocql/gocql#Query.Observer ?

dkropachev commented 6 months ago

Why not use https://pkg.go.dev/github.com/gocql/gocql#Query.Observer ?

It does not solve anything, only add complications, we will still need filelogger since async file writing is not a thing. Please take a look for more details here