Diff for /parser3/tests/388-sql.html between versions 1.3 and 1.18

version 1.3, 2017/12/07 00:55:12 version 1.18, 2024/09/28 09:10:06
Line 1 Line 1
 @main[]  @auto[]
   
   $path[^os[Release/;.libs/lib]]
   $ext[^os[dll;so]]
   
 $SQL[  $SQL[
         $.drivers[^table::create{protocol       driver  client          $.drivers[^table::create{protocol       driver  client  connect
 sqlite  ../../sql/sqlite/.libs/libparser3sqlite.so      libsqlite3.so  sqlite  ../../sql/sqlite/${path}parser3sqlite.$ext      ^os[sqlite3.dll;libsqlite3.so]  sqlite://:memory:?multi_statements=1
   mysql   ../../sql/mysql/${path}parser3mysql.$ext        ^os[libmySQL.dll;libmariadbclient.so]   mysql://@/?config_group=parser3&multi_statements=1
   pgsql   ../../sql/pgsql/${path}parser3pgsql.$ext        libpq.$ext      pgsql://test@localhost/test
 }]  }]
 ]  ]
   
 ^connect[sqlite://:memory:]{  $sql[sqlite]
         1. 2 + 2 = ^string:sql{select 2+2}  $ignore[^SQL.drivers.locate[protocol;$sql]]
   
   
         2. void  @prepare-data[]
           $ignore[^try-catch{ ^void:sql{drop table pets} }]
   
         2.1 ^void:sql{create table pets (pet varchar, food varchar, aggressive varchar, weigth varchar)}          ^void:sql{create table pets (pet varchar(128), food varchar(128), aggressive varchar(128), weigth varchar(128))}
   
         2.2 ^void:sql{insert into pets values          ^void:sql{insert into pets values
                 ('cat', 'milk', '^taint['very']', 5),                  ('cat', 'milk', '^taint['very']', 5),
                 ('dog', 'bone', '^taint["never"]', 10),                  ('dog', 'bone', '^taint["never"]', 10),
                   ('hamster', 'grain', null, 1),
                 ('parrot', 'grain', 'alwayws', 1)                  ('parrot', 'grain', 'alwayws', 1)
            }          }
   
   @main[]
   
   ^connect[$SQL.drivers.connect]{
   
           1. 2 + 2 = ^string:sql{select 2+2}
   
   
           2. void
   
           2.1 ^prepare-data[]
   
         2.3 ^try-catch{ ^void:sql{select * from pets} }          2.3 ^try-catch{ ^void:sql{select * from pets} }
         2.4 ^try-catch{ ^void:sql{query}[ $.unknown[yes] ] }          2.4 ^try-catch{ ^void:sql{query}[ $.unknown[yes] ] }
         2.5 ^try-catch{ ^void:sql{query}[ $.bind[ $.name[value] ] ] }          2.5 ^try-catch{ ^void:sql{query}[ $.bind[ $.name[value] ] ] }
   
           2.6 Multiple queries: ^try-catch{ ^void:sql{delete from pets where pet='' ^; delete from pets where pet=''} }
           2.8 Multiple queries, data in first query: ^if($sql ne 'mysql'){ ^try-catch{ ^void:sql{select 2+2 ^; delete from pets where pet=''} } }
           2.9 Multiple queries, data in second query: ^try-catch{ ^void:sql{delete from pets where pet='' ^; select 2+2} }
   
   
         3. int/double          3. int/double
   
Line 35  sqlite ../../sql/sqlite/.libs/libparser3 Line 56  sqlite ../../sql/sqlite/.libs/libparser3
         3.5 ^try-catch{ ^double:sql{select -2}[ $.limit(0) ] }          3.5 ^try-catch{ ^double:sql{select -2}[ $.limit(0) ] }
         3.6 ^double:sql{select -2}[ $.limit(0) $.default[1] ]          3.6 ^double:sql{select -2}[ $.limit(0) $.default[1] ]
   
           3.7 Multiple queries, data in first query: ^try-catch{ ^int:sql{select 2+2 ^; delete from pets where pet=''} }
           3.8 Multiple queries, data in second query: ^try-catch{ ^int:sql{delete from pets where pet='' ^; select 2+2} }
           3.9 Multiple queries, data in both queries: ^try-catch{ ^int:sql{select 2+2 ^; select 3+3 } }
   
   
         4. hash          4. hash
   
Line 48  sqlite ../../sql/sqlite/.libs/libparser3 Line 73  sqlite ../../sql/sqlite/.libs/libparser3
   
         4.5. ^h[select * from pets; $.type[table] $.limit(1) $.offset(1) ]          4.5. ^h[select * from pets; $.type[table] $.limit(1) $.offset(1) ]
   
           4.6 ^try-catch{ ^h[select 'dup', pet from pets; $.type[string] ]}
   
           4.7 ^h[select pet from pets]
   
           4.7.1 ^h[select aggressive from pets; $.type[table] ]
   
           4.8 ^h[select food as key, pet from pets; $.type[table] $.distinct(true) ]
   
           4.9 ^h[select food as key, pet from pets; $.type[string] $.distinct(true) ]
   
   
         5. table          5. table
   
Line 55  sqlite ../../sql/sqlite/.libs/libparser3 Line 90  sqlite ../../sql/sqlite/.libs/libparser3
   
         5.2. ^t[select * from pets; $.limit(1) $.offset(1) ]          5.2. ^t[select * from pets; $.limit(1) $.offset(1) ]
   
           5.3 ^try-catch{ ^t[select * from pets; $.bind[ $.name[value] ] ] }
   
           5.4 ^try-catch{ ^t[select * from pets; $.no-such-option[] ] }
   
   
         6. file          6. file
   
Line 66  sqlite ../../sql/sqlite/.libs/libparser3 Line 105  sqlite ../../sql/sqlite/.libs/libparser3
   
         6.4 ^try-catch{ ^f[select aggressive from pets; $.limit(0) ] }          6.4 ^try-catch{ ^f[select aggressive from pets; $.limit(0) ] }
   
         6.5 ^try-catch{ ^f[select 1 from pets] } - bug!          6.5 ^try-catch{ ^f[select 1 from pets; $.limit(3) ] } - bug!
   
         6.6 ^try-catch{ ^f[select 1,2 from pets] }          6.6 ^try-catch{ ^f[select 1,2 from pets] }
   
Line 100  sqlite ../../sql/sqlite/.libs/libparser3 Line 139  sqlite ../../sql/sqlite/.libs/libparser3
 @s[query;options]  @s[query;options]
         $s[^string:sql{$query}[$options]]          $s[^string:sql{$query}[$options]]
         "$s"          "$s"
   
   @postprocess[text]
           $result[^taint[as-is;$text]]

Removed from v.1.3  
changed lines
  Added in v.1.18


E-mail: