@@ -6,15 +6,74 @@ if (typeof exports === 'object') {
66}
77
88describe ( 'Test 286 CREATE UNIQUE INDEX' , function ( ) {
9- it ( '1. CREATE TABLE and FIRST INSERT' , function ( done ) {
9+ function test ( M ) {
10+ alasql ( 'DELETE FROM one;' ) ;
11+ alasql ( 'DELETE FROM two;' ) ;
12+ alasql ( 'DELETE FROM three;' ) ;
13+ alasql ( 'DELETE FROM four;' ) ;
14+
15+ for ( var i = 0 ; i < M [ 0 ] ; i ++ ) {
16+ for ( var j = 0 ; j < M [ 1 ] ; j ++ ) {
17+ alasql ( 'INSERT INTO one VALUES ?' , [ { a : i , b : j } ] ) ;
18+ }
19+ for ( var j = 0 ; j < M [ 2 ] ; j ++ ) {
20+ alasql ( 'INSERT INTO two VALUES ?' , [ { b : i , c : j } ] ) ;
21+ }
22+ for ( var j = 0 ; j < M [ 3 ] ; j ++ ) {
23+ alasql ( 'INSERT INTO three VALUES ?' , [ { c : i , d : j } ] ) ;
24+ }
25+ for ( var j = 0 ; j < M [ 4 ] ; j ++ ) {
26+ alasql ( 'INSERT INTO four VALUES ?' , [ { d : i , e : j } ] ) ;
27+ }
28+ }
29+
30+ alasql . databases [ alasql . useid ] . resetSqlCache ( ) ;
31+ alasql . databases [ alasql . useid ] . dbversion ++ ;
32+
33+ var tm1 = Date . now ( ) ;
34+
35+ var res1 = alasql (
36+ 'SELECT * FROM one \
37+ INNER JOIN two ON one.b = two.b \
38+ INNER JOIN three ON two.c = three.c \
39+ INNER JOIN four ON three.d = four.d \
40+ '
41+ ) ;
42+
43+ var tm1 = Date . now ( ) - tm1 ;
44+
45+ alasql . databases [ alasql . useid ] . resetSqlCache ( ) ;
46+ alasql . databases [ alasql . useid ] . dbversion ++ ;
47+
48+ var tm2 = Date . now ( ) ;
49+
50+ var res2 = alasql (
51+ 'SELECT * \
52+ FROM four \
53+ INNER JOIN three ON three.d = four.d \
54+ INNER JOIN two ON two.c = three.c \
55+ INNER JOIN one ON one.b = two.b \
56+ '
57+ ) ;
58+
59+ var tm2 = Date . now ( ) - tm2 ;
60+
61+ if ( res1 . length !== res2 . length ) {
62+ throw new Error ( 'Different results' ) ;
63+ }
64+
65+ return [ tm1 , tm2 ] ;
66+ }
67+
68+ it ( '1. CREATE TABLE and FIRST INSERT' , ( ) => {
1069 alasql ( 'CREATE DATABASE test286;USE test286' ) ;
1170 alasql ( 'CREATE TABLE one (a int, b int)' ) ;
1271 alasql ( 'CREATE TABLE two (b int, c int)' ) ;
1372 alasql ( 'CREATE TABLE three (c int, d int)' ) ;
1473 alasql ( 'CREATE TABLE four (e int, e int)' ) ;
15- done ( ) ;
1674 } ) ;
17- it ( '2. Fill tables with data' , function ( done ) {
75+
76+ it ( '2. Fill tables with data' , ( ) => {
1877 this . timeout ( 100000 ) ;
1978
2079 var K = 10 ; // Number of runs
@@ -30,69 +89,15 @@ describe('Test 286 CREATE UNIQUE INDEX', function () {
3089 ( Math . random ( ) * P + 1 ) | 0 ,
3190 ] ;
3291 var R = test ( M ) ;
33- //console.log(M,R, (M[1]*M[2]>M[3]*M[4])==(R[0]>R[1]));
92+ // console.log(M,R, (M[1]*M[2]>M[3]*M[4])==(R[0]>R[1]));
3493
3594 // Hypothesis
3695 if ( M [ 1 ] * M [ 2 ] > M [ 3 ] * M [ 4 ] == R [ 0 ] > R [ 1 ] ) L ++ ;
3796 }
38- /// console.log(L/K); // Probablity
39- done ( ) ;
97+ // console.log(L/K); // Probablity
4098 } ) ;
41- it ( '3. DROP DATABASE' , function ( done ) {
42- var res = alasql ( ' DROP DATABASE test286' ) ;
43- done ( ) ;
99+
100+ it ( '3. DROP DATABASE' , ( ) => {
101+ alasql ( 'DROP DATABASE test286' ) ;
44102 } ) ;
45103} ) ;
46-
47- function test ( M ) {
48- alasql ( 'DELETE FROM one;' ) ;
49- alasql ( 'DELETE FROM two;' ) ;
50- alasql ( 'DELETE FROM three;' ) ;
51- alasql ( 'DELETE FROM four;' ) ;
52-
53- for ( var i = 0 ; i < M [ 0 ] ; i ++ ) {
54- for ( var j = 0 ; j < M [ 1 ] ; j ++ ) {
55- alasql ( 'INSERT INTO one VALUES ?' , [ { a : i , b : j } ] ) ;
56- }
57- for ( var j = 0 ; j < M [ 2 ] ; j ++ ) {
58- alasql ( 'INSERT INTO two VALUES ?' , [ { b : i , c : j } ] ) ;
59- }
60- for ( var j = 0 ; j < M [ 3 ] ; j ++ ) {
61- alasql ( 'INSERT INTO three VALUES ?' , [ { c : i , d : j } ] ) ;
62- }
63- for ( var j = 0 ; j < M [ 4 ] ; j ++ ) {
64- alasql ( 'INSERT INTO four VALUES ?' , [ { d : i , e : j } ] ) ;
65- }
66- }
67-
68- alasql . databases [ alasql . useid ] . resetSqlCache ( ) ;
69- alasql . databases [ alasql . useid ] . dbversion ++ ;
70- var tm1 = Date . now ( ) ;
71- var res1 = alasql (
72- 'SELECT * FROM one \
73- INNER JOIN two ON one.b = two.b \
74- INNER JOIN three ON two.c = three.c \
75- INNER JOIN four ON three.d = four.d \
76- '
77- ) ;
78- var tm1 = Date . now ( ) - tm1 ;
79-
80- alasql . databases [ alasql . useid ] . resetSqlCache ( ) ;
81- alasql . databases [ alasql . useid ] . dbversion ++ ;
82-
83- var tm2 = Date . now ( ) ;
84- var res2 = alasql (
85- 'SELECT * \
86- FROM four \
87- INNER JOIN three ON three.d = four.d \
88- INNER JOIN two ON two.c = three.c \
89- INNER JOIN one ON one.b = two.b \
90- '
91- ) ;
92- var tm2 = Date . now ( ) - tm2 ;
93- if ( res1 . length != res2 . length ) {
94- /// console.log(M,res1.length,res2.length);
95- throw new Error ( 'Different results' ) ;
96- }
97- return [ tm1 , tm2 ] ;
98- }
0 commit comments