Commit graph

224 commits

Author SHA1 Message Date
Tobie Morgan Hitchcock
93d154a099 Add sql functions for generating GUIDs 2017-11-27 11:35:26 +00:00
Tobie Morgan Hitchcock
cfa573e7cf Ensure Model can be encoded<->decoded into CORK 2017-11-27 11:16:29 +00:00
Tobie Morgan Hitchcock
a569ad78d6 Improve statement read/write status detection
Only store read-write statement status in the database for statements which can be either read or write. For those statements which are always write statements (Live, Kill, Create, Update, Delete, Relate, Insert, Upsert, Define, Remove….), then hardcode this on the statement itself.
2017-11-24 12:56:53 +00:00
Tobie Morgan Hitchcock
8de7424efb Ensure the IfStatement can be encoded and decoded into cork 2017-11-24 12:47:59 +00:00
Tobie Morgan Hitchcock
1d08949fff Full update of the SQL package 2017-11-16 20:53:13 +00:00
Tobie Morgan Hitchcock
4c16dafcf3 Add duration method to killable statements 2017-04-28 17:12:11 +01:00
Tobie Morgan Hitchcock
b60c663fdd SQL models need a different min and max value
If the same minimum and maximum value is used in a SQL model … |person:1..1| then the sql query parser will fail.
2017-04-28 17:09:35 +01:00
Tobie Morgan Hitchcock
dacf7b954b Enable WITH aswell as TO in RELATE clause 2017-04-28 17:07:38 +01:00
Tobie Morgan Hitchcock
8a53ed3617 Fix SQL tests 2017-04-14 13:24:53 +01:00
Tobie Morgan Hitchcock
7aca98a581 No need to generate codec code definitions
SQL ASTs are never outputted to the end user, but instead are only ever encoded/decoded using CORK, so we don’t need to pre-generate any code definitions for codec (JSON, BINC, CBOR, MsgPack).
2017-04-14 13:22:29 +01:00
Tobie Morgan Hitchcock
aa7e4ac561 Enable model expressions in SQL parser
The SQL parser now supports model expressions for defining ranges using the |table:0,0.5..100| notation syntax.
2017-04-14 13:21:08 +01:00
Tobie Morgan Hitchcock
2de5a8fa3f Simplify parsing @table:thing definitions 2017-04-14 13:13:31 +01:00
Tobie Morgan Hitchcock
a3da779190 Improve SQL error messages 2017-04-12 18:45:52 +01:00
Tobie Morgan Hitchcock
9df4c5041a Use pointer 2017-04-12 18:44:01 +01:00
Tobie Morgan Hitchcock
17b1f9ff55 Fix JSON parsing in SQL
Previously, JSON which contained bracket `[]` or brace `{}` characters inside strings would fail to parse as valid JSON.
2017-04-12 17:44:27 +01:00
Tobie Morgan Hitchcock
5a558c0d6f Implement Authable statements for improved logging 2017-03-24 21:25:22 +00:00
Tobie Morgan Hitchcock
7a071af821 Download generate dependencies in each gen files 2017-03-04 10:55:58 +00:00
Tobie Morgan Hitchcock
a96a8466cb Add initial golang code tracing and logging 2017-03-03 21:39:37 +00:00
Tobie Morgan Hitchcock
98db89a2d7 Implement query statement timeout functionality 2017-03-02 14:38:56 +00:00
Tobie Morgan Hitchcock
378bbe6dae Ensure default tables/fields are private by default 2017-03-02 10:55:42 +00:00
Tobie Morgan Hitchcock
2d5151c8ba Enable SQL AST string formatting 2017-03-02 10:47:10 +00:00
Tobie Morgan Hitchcock
1157835a29 Don’t perform cpu intensive operations in SQL parser 2017-03-02 10:32:20 +00:00
Tobie Morgan Hitchcock
6e223f5f08 Move authentication level constants to cnf package
Instead of defining the authentication level types as ints in the sql package, there is now a specific type which is now located in the cnf package.
2017-02-24 13:33:03 +00:00
Tobie Morgan Hitchcock
e4bef0c4b7 Differentiate between IDENT and EXPR in SQL
Previously it was possible to CREATE/UPDATE/DELETE path expressions as this would satisfy an IDENT in the SQL parser.

Now however, there is a difference between an IDENT and an EXPR…

IDENT: person | person_main | person123
EXPR: person | person.path | person[0].path

As a result, path expressions are only possible when setting data or setting conditional conditions.
2017-02-24 13:05:07 +00:00
Tobie Morgan Hitchcock
d27e00e737 Fix sql tests 2017-02-23 15:09:02 +00:00
Tobie Morgan Hitchcock
e10debba6c Enable query params for USE NS / USE DB in queries 2017-02-20 01:44:13 +00:00
Tobie Morgan Hitchcock
ac868694eb Enable query params for VERSION in queries 2017-02-20 01:44:13 +00:00
Tobie Morgan Hitchcock
6a719d815b Improve errors throught codebase 2017-02-20 01:44:13 +00:00
Tobie Morgan Hitchcock
cd7922db15 Enable query params for LIMIT and START in queries 2017-02-20 01:44:12 +00:00
Tobie Morgan Hitchcock
83a64c6c29 Enforce default RETURN value in sql parser 2017-02-20 01:44:12 +00:00
Tobie Morgan Hitchcock
3ffaec9265 Remove RETURN statement from SELECT query 2017-02-20 01:44:12 +00:00
Tobie Morgan Hitchcock
3f82f83cf1 Remove SQL error for embedded DEFINE/REMOVE queries 2017-02-20 01:44:12 +00:00
Tobie Morgan Hitchcock
b62b7ed2c9 Don’t use pointer as we already are a pointer 2017-02-20 01:44:11 +00:00
Tobie Morgan Hitchcock
6c82529d85 JSON Patch expects only array in SQL, not object 2017-02-20 01:44:11 +00:00
Tobie Morgan Hitchcock
b724d864f8 Add ability to define NAMESPACE without DATABASE
Once somebody had specified USE NAMESPACE to select a namespace, it was not possible to DEFINE a DATABASE underneath the NAMESPACE, as an error that ‘no database is selected’ would be returned. Not it is possible to DEFINE DATABASE having selected only a NAMESPACE.
2017-02-20 01:44:11 +00:00
Tobie Morgan Hitchcock
7d88c389e1 Enable use of SQL DEFINE/REMOVE in transactions 2017-02-20 01:44:11 +00:00
Tobie Morgan Hitchcock
dd230dca56 Enable SQL ASTs to self-encode and self-decode 2017-02-20 01:44:11 +00:00
Tobie Morgan Hitchcock
1fd450890b Fix typo 2017-02-20 01:44:10 +00:00
Tobie Morgan Hitchcock
dfee11339e Fix SQL bug where NAMESPACE/DATABASE were needed twice
DEFINE NAMESPACE and REMOVE NAMESPACE statements expected two NAMESPACE keywords in the SQL query.

DEFINE DATABASE and REMOVE DATABASE statements expected two DATABASE keywords in the SQL query.
2017-02-09 10:31:53 +00:00
Tobie Morgan Hitchcock
74658132c1 Enable password field types 2017-02-03 19:10:51 +00:00
Tobie Morgan Hitchcock
1901f6fd8c Enable simplified json in SQL queries 2017-02-03 19:08:57 +00:00
Tobie Morgan Hitchcock
a941987349 Remove unnecessary return statement 2017-02-03 19:08:37 +00:00
Tobie Morgan Hitchcock
e3c472b31a Remove incorrect build tags 2017-01-11 11:22:17 +00:00
Tobie Morgan Hitchcock
fa40f52302 Place build instruction before package name 2016-12-08 22:04:22 +00:00
Tobie Morgan Hitchcock
9b8aec6549 Add SQL functions for hotp/totp/yubikey security 2016-12-08 21:57:22 +00:00
Tobie Morgan Hitchcock
fbe34c6083 Add PERMISSIONS and remove DEFINE / REMOVE RULES 2016-11-26 13:39:03 +00:00
Tobie Morgan Hitchcock
2b47e6e0a9 No need for a default TYPE on SQL DEFINE FIELD
Previously the default type for DEFINE FIELD statements was “any”, but this is unnecessary, as fields with type “any” are not type-checked anyway, so there is little point in defining the default as “any”. Therefore the type is left blank if no TYPE is specifically defined.
2016-11-26 13:35:58 +00:00
Tobie Morgan Hitchcock
90953735d9 DEFINE and REMOVE SQL queries can not be inside transactions 2016-11-26 13:05:21 +00:00
Tobie Morgan Hitchcock
2fcc2e3668 Improve SQL INFO command to support namespaces 2016-11-23 12:53:27 +00:00
Tobie Morgan Hitchcock
75b5f2f412 Improve SQL DEFINE TOKEN statements 2016-11-22 19:10:42 +00:00
Tobie Morgan Hitchcock
063de926ed Improve SQL DEFINE LOGIN statements 2016-11-22 19:10:32 +00:00
Tobie Morgan Hitchcock
f150e5b587 Increase bit length of SQL TOKEN keys 2016-11-22 19:09:02 +00:00
Tobie Morgan Hitchcock
8cdae77483 Generate token keys in SQL and store as binary 2016-11-22 13:51:21 +00:00
Tobie Morgan Hitchcock
bb752eb124 Encrypt SQL LOGIN password immediately 2016-11-22 13:36:57 +00:00
Tobie Morgan Hitchcock
5bfe938fcf Enable authentication tokens on SCOPES 2016-11-21 18:58:07 +00:00
Tobie Morgan Hitchcock
2783c4c653 Add authentication level checks to SQL INFO query 2016-11-21 18:52:51 +00:00
Tobie Morgan Hitchcock
b25ce6d059 If no TYPE is found on SQL DEFINE FIELD default to “any” 2016-11-21 18:52:12 +00:00
Tobie Morgan Hitchcock
94c9631d91 Improve database authentication
Improve the database authentication implementation for namespaces, databases, and scopes.
2016-11-21 18:48:25 +00:00
Tobie Morgan Hitchcock
19650ab770 Remove POLICY from SQL DEFINE SCOPE statement 2016-11-21 18:43:15 +00:00
Tobie Morgan Hitchcock
4e039cff44 Add basic sql functions for crypto 2016-11-21 14:34:15 +00:00
Tobie Morgan Hitchcock
0fa8537624 No need to have selected a NS/DB for transactions 2016-11-17 14:18:33 +00:00
Tobie Morgan Hitchcock
ee6653c289 Improve SQL DEFINE SCOPE statement 2016-11-16 22:47:43 +00:00
Tobie Morgan Hitchcock
cf79487b81 Add SQL DEFINE TOKEN statement 2016-11-16 22:47:23 +00:00
Tobie Morgan Hitchcock
a66c604c2f Add SQL DEFINE LOGIN statement 2016-11-16 22:46:57 +00:00
Tobie Morgan Hitchcock
2a10913b06 Change name of authentication scope level 2016-11-14 13:26:07 +00:00
Tobie Morgan Hitchcock
cd20e647a0 No need to check auth level when choosing NS/DB 2016-11-14 13:23:34 +00:00
Tobie Morgan Hitchcock
63e516b63f Add method for parsing json object directly 2016-11-14 13:22:43 +00:00
Tobie Morgan Hitchcock
cd44c77de6 Improve error message when unable to select NS/DB 2016-11-14 10:20:45 +00:00
Tobie Morgan Hitchcock
3038b6adec Rename file 2016-11-13 19:21:34 +00:00
Tobie Morgan Hitchcock
45b06dfd9b Remove unused SQL tokens 2016-11-10 12:36:01 +00:00
Tobie Morgan Hitchcock
4f04721b31 Enable times as basic LET variables and set immediately 2016-11-09 15:18:11 +00:00
Tobie Morgan Hitchcock
0292140d3c Enable NOW keyword as shortcut for now() in SQL 2016-11-09 15:16:09 +00:00
Tobie Morgan Hitchcock
b0f8ed6b56 Improving parsing of time durations.
Previously, the number 0 was parsed as 0ns.

In addition, it is now not possible to have duration values defined as strings (inside “” or ‘’).

However, now values are explicitly marked as a duration only if they have a valid DURATION suffix. Anlything else is either a NUMBER of an IDENT.
2016-11-09 15:15:09 +00:00
Tobie Morgan Hitchcock
fdbf38f833 Enable parameters in @thing:id in sql parser 2016-11-05 14:10:59 +00:00
Tobie Morgan Hitchcock
c53efdb06f Define basic parameters immediately 2016-11-05 14:00:15 +00:00
Tobie Morgan Hitchcock
77aa2adaf7 Update SQL tests 2016-11-04 12:15:51 +00:00
Tobie Morgan Hitchcock
3016dfae99 This should never have been here in the first place 2016-11-04 11:49:50 +00:00
Tobie Morgan Hitchcock
54ad8a16d9 Add codec code generation 2016-11-04 11:45:38 +00:00
Tobie Morgan Hitchcock
2e94c2fe02 Add AND UPSERT to UPDATE statement 2016-11-04 11:43:59 +00:00
Tobie Morgan Hitchcock
61e884c529 Add AND EXPUNGE to DELETE statement 2016-11-04 11:43:32 +00:00
Tobie Morgan Hitchcock
eb90f2a1b7 Update code comment 2016-11-04 11:34:48 +00:00
Tobie Morgan Hitchcock
b9327723f8 Add SQL command for DEFINE/REMOVE DATABASE 2016-11-04 11:34:37 +00:00
Tobie Morgan Hitchcock
15103e202b Add SQL command for DEFINE/REMOVE NAMESPACE 2016-11-04 11:33:57 +00:00
Tobie Morgan Hitchcock
b720213bd4 Perform authentication access checks in SQL layer 2016-11-04 11:25:53 +00:00
Tobie Morgan Hitchcock
defe873d7d Add back in field parsing expressions 2016-11-04 11:17:11 +00:00
Tobie Morgan Hitchcock
57f49576db Serialize and deserialize Tokens as strings 2016-11-04 11:16:41 +00:00
Tobie Morgan Hitchcock
b0ab86c4ef Add KV, NS, DB to LET and RETURN SQL ASTs
All queries which manipulate the data layer in any way, should at least store the authenticated/selected NS and DB options, even if they do not actually use them when running the SQL statement.
2016-11-04 11:15:05 +00:00
Tobie Morgan Hitchcock
d8a2d40d34 Update SQL tests 2016-11-04 11:13:34 +00:00
Tobie Morgan Hitchcock
b5c8b21eb6 Enable durations to be specified without “” marks 2016-11-04 10:04:55 +00:00
Tobie Morgan Hitchcock
4d9f9b297e Fix single line comment bug
Comments which were on the last line of an SQL query would cause the scanner to never reach the end of the reader stream, hangining indefinitely.

This fix ensures that the single line comment is ended when an EOF is reached.
2016-11-04 10:04:31 +00:00
Tobie Morgan Hitchcock
6e4a229a96 Add && + || as alternatives for AND + OR in SQL 2016-11-04 10:03:07 +00:00
Tobie Morgan Hitchcock
e0bcd5ff37 No need to create extra variable 2016-11-04 10:02:00 +00:00
Tobie Morgan Hitchcock
b5da299ea3 Add CORK self encoding to SQL objects 2016-11-04 10:01:32 +00:00
Tobie Morgan Hitchcock
68c22bc25c Add subqueries, subexpressions, and paths to SQL 2016-11-04 09:58:11 +00:00
Tobie Morgan Hitchcock
28d1806785 Simplify JSON expression parsing 2016-11-04 09:45:11 +00:00
Tobie Morgan Hitchcock
45be69637e Add ‘record’ as a field type 2016-11-04 09:42:00 +00:00
Tobie Morgan Hitchcock
1733f84070 Enable main SQL commands to be within subqueries 2016-11-03 17:20:18 +00:00
Tobie Morgan Hitchcock
dd21b8879a Only do function argument checking in sql parser 2016-11-03 17:16:08 +00:00
Tobie Morgan Hitchcock
3b20033ebf Update PATH token types
Remove unused PATH token and move EDGE tokens to literals.
2016-11-03 08:13:34 +00:00
Tobie Morgan Hitchcock
7e9c595ff7 Add blueprint for RELATE SQL query 2016-10-30 16:59:16 +00:00