|
|
| version 1.2, 2017/12/06 20:19:16 | version 1.9, 2019/10/24 15:29:59 |
|---|---|
| Line 1 | Line 1 |
| @main[] | @main[] |
| $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/.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 | |
| }] | }] |
| ] | ] |
| ^connect[sqlite://:memory:]{ | $ignore[^SQL.drivers.locate[protocol;pgsql]] |
| 1. 2 + 2 = ^string:sql{select 2+2} | |
| ^connect[$SQL.drivers.connect]{ | |
| 1. 2 + 2 = ^string:sql{select 2+2} | |
| 2. void | 2. void |
| 2.1 ^void:sql{create table pets (pet varchar, food varchar, aggressive varchar, weigth varchar)} | 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 | 2.2 ^void:sql{insert into pets values |
| ('cat', 'milk', '^taint['very']', 5), | ('cat', 'milk', '^taint['very']', 5), |
| Line 24 sqlite ../../sql/sqlite/.libs/libparser3 | Line 30 sqlite ../../sql/sqlite/.libs/libparser3 |
| 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.7 Exception in second query: ^try-catch{ ^void:sql{delete from pets where pet='' ^; select 2+2 } } | |
| 3. int/double | 3. int/double |
| Line 48 sqlite ../../sql/sqlite/.libs/libparser3 | Line 56 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] ]} | |
| 5. table | 5. table |
| Line 55 sqlite ../../sql/sqlite/.libs/libparser3 | Line 65 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 74 sqlite ../../sql/sqlite/.libs/libparser3 | Line 88 sqlite ../../sql/sqlite/.libs/libparser3 |
| 6.8 $f[^file::create["'test'"]] ^f.sql-string[] | 6.8 $f[^file::create["'test'"]] ^f.sql-string[] |
| 7. string | |
| 7.1 ^try-catch{ ^s[select * from pets; $.limit(1) $.offset(1) ] } | |
| 7.2 ^try-catch{ ^s[select pet from pets] } | |
| 7.3 ^try-catch{ ^s[select 2+2; $.bind[ $.name[$value] ] ] } | |
| 7.4 ^try-catch{ ^s[select 2+2; $.no-such-option[] ] } | |
| 7.5 ^try-catch{ ^s[select pet from pets; $.limit(0) ] } | |
| 7.6 ^s[select pet from pets; $.limit(0) $.default{default} ] | |
| } | } |
| Line 88 sqlite ../../sql/sqlite/.libs/libparser3 | Line 110 sqlite ../../sql/sqlite/.libs/libparser3 |
| @f[query;options] | @f[query;options] |
| $f[^file::sql{$query}[$options]] | $f[^file::sql{$query}[$options]] |
| ^json:string[$f; $.indent(1) $.file[text] ] | ^json:string[$f; $.indent(1) $.file[text] ] |
| @s[query;options] | |
| $s[^string:sql{$query}[$options]] | |
| "$s" |