--- parser3/tests/388-sql.html 2019/10/25 13:10:20 1.11
+++ parser3/tests/388-sql.html 2024/12/12 20:30:36 1.20
@@ -1,16 +1,33 @@
-@main[]
+@auto[]
+
+$path[^os[Release/;.libs/lib]]
+$ext[^os[dll;so]]
$SQL[
$.drivers[^table::create{protocol driver client connect
-sqlite ../../sql/sqlite/.libs/libparser3sqlite.so libsqlite3.so sqlite://:memory:?multi_statements=1
-mysql ../../sql/mysql/.libs/libparser3mysql.so libmariadbclient.so mysql://@/?config_group=parser3&multi_statements=1
-pgsql ../../sql/pgsql/.libs/libparser3pgsql.so libpq.so pgsql://test@localhost/test
+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;libmariadb.so.3] mysql://@/?config_group=parser3&multi_statements=1
+pgsql ../../sql/pgsql/${path}parser3pgsql.$ext libpq.$ext pgsql://test@localhost/test
}]
]
$sql[sqlite]
$ignore[^SQL.drivers.locate[protocol;$sql]]
+@prepare-data[]
+ $ignore[^try-catch{ ^void:sql{drop table pets} }]
+
+ ^void:sql{create table pets (pet varchar(128), food varchar(128), aggressive varchar(128), weigth varchar(128))}
+
+ ^void:sql{insert into pets values
+ ('cat', 'milk', '^taint['very']', 5),
+ ('dog', 'bone', '^taint["never"]', 10),
+ ('hamster', 'grain', null, 1),
+ ('parrot', 'grain', 'alwayws', 1)
+ }
+
+@main[]
+
^connect[$SQL.drivers.connect]{
1. 2 + 2 = ^string:sql{select 2+2}
@@ -18,15 +35,7 @@ $ignore[^SQL.drivers.locate[protocol;$sq
2. void
- 2.0 $ignore[^try-catch{ ^void:sql{drop table pets} }]
-
- 2.1 ^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
- ('cat', 'milk', '^taint['very']', 5),
- ('dog', 'bone', '^taint["never"]', 10),
- ('parrot', 'grain', 'alwayws', 1)
- }
+ 2.1 ^prepare-data[]
2.3 ^try-catch{ ^void:sql{select * from pets} }
2.4 ^try-catch{ ^void:sql{query}[ $.unknown[yes] ] }
@@ -47,7 +56,7 @@ $ignore[^SQL.drivers.locate[protocol;$sq
3.5 ^try-catch{ ^double:sql{select -2}[ $.limit(0) ] }
3.6 ^double:sql{select -2}[ $.limit(0) $.default[1] ]
- 3.7 Multiple queries, data in first query: ^if($sql ne 'mysql'){ ^try-catch{ ^int:sql{select 2+2 ^; delete from pets where pet=''} } }
+ 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 } }
@@ -66,6 +75,14 @@ $ignore[^SQL.drivers.locate[protocol;$sq
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 id, pet from pets; $.type[table] $.distinct(true) ]
+
+ 4.9 ^h[select food as id, pet from pets; $.type[string] $.distinct(true) ]
+
5. table
@@ -88,7 +105,7 @@ $ignore[^SQL.drivers.locate[protocol;$sq
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) ] }
6.6 ^try-catch{ ^f[select 1,2 from pets] }
@@ -122,3 +139,6 @@ $ignore[^SQL.drivers.locate[protocol;$sq
@s[query;options]
$s[^string:sql{$query}[$options]]
"$s"
+
+@postprocess[text]
+ $result[^taint[as-is;$text]]