Commit Graph

382 Commits

Author SHA1 Message Date
Simon Binder de67ca6e7b
Parse ISNULL and NOTNULL postfix expressions 2020-01-03 17:39:35 +01:00
Simon Binder 6924543a47
sqlparser: Parse CREATE INDEX statements 2020-01-03 17:14:42 +01:00
Simon Binder 75cbe74b53
Make "new" and "old" table available for triggers 2020-01-01 20:37:34 +01:00
Simon Binder 8b86143ebb
Generate code for triggers 2019-12-31 16:03:03 +01:00
Simon Binder a3697c6f38
Find references of a trigger 2019-12-31 15:07:08 +01:00
Simon Binder 04f75d11d3
Migrate some trigger code to refactorings on develop 2019-12-30 21:38:24 +01:00
Simon Binder ba603f22cc
Merge branch 'develop' into views-triggers-indexes
# Conflicts:
#	moor/lib/moor.dart
#	moor/lib/src/runtime/api/query_engine.dart
#	moor/lib/src/runtime/query_builder/schema/entities.dart
#	moor/test/data/tables/custom_tables.g.dart
#	moor/test/data/tables/tables.moor
#	moor/test/parsed_sql/moor_files_integration_test.dart
#	moor_generator/lib/src/analyzer/moor/parser.dart
#	moor_generator/lib/src/analyzer/runner/steps.dart
#	moor_generator/lib/src/analyzer/runner/steps/analyze_dart.dart
#	moor_generator/lib/src/model/specified_db_classes.dart
#	moor_generator/lib/src/writer/database_writer.dart
#	sqlparser/lib/src/ast/ast.dart
#	sqlparser/lib/src/ast/statements/create_table.dart
#	sqlparser/lib/src/ast/statements/statement.dart
#	sqlparser/lib/src/reader/parser/schema.dart
#	sqlparser/lib/src/reader/tokenizer/token.dart
#	sqlparser/test/engine/autocomplete/static_test.dart
2019-12-30 21:08:32 +01:00
Simon Binder 757abf3b34
Fix typo in test description 2019-12-30 20:58:41 +01:00
Simon Binder c54a62120d
sqlparser: Support CAST expressions 2019-12-30 20:46:54 +01:00
Simon Binder 4484890609
Types2: Initial support for binary expressions 2019-12-30 20:14:29 +01:00
Simon Binder 927fbf561b
Begin architecture of a new type resolver in sqlparser 2019-12-26 21:55:02 +01:00
Simon Binder 7abda32ac4
Add argument to sql visitor class 2019-12-26 12:35:29 +01:00
Simon Binder d2b70e69dc
Support explicit type arguments in moor_generator 2019-12-25 21:07:08 +01:00
Simon Binder 868dde358f
Parse variable type hints in queries 2019-12-25 20:24:03 +01:00
Simon Binder 412e8b4c83
Ability to override variable types in the sqlparser 2019-12-25 19:50:32 +01:00
Simon Binder 4a2273c1e8
Show available columns when failing to resolve a reference 2019-12-24 14:07:12 +01:00
Simon Binder e01b7a1b88
Remove author from pubspec, bump version for next release 2019-12-23 12:52:46 +01:00
Simon Binder 3f0c35abff
Improve changelog, error description for columns 2019-12-23 12:24:22 +01:00
Simon Binder cb38590ee4
Parse special `@`-queries (not analyzed yet), #280 2019-12-17 22:03:59 +01:00
Simon Binder 0335e2482b
Scan @-variable tokens (not used yet) 2019-12-17 20:48:18 +01:00
Simon Binder ffe4bb8c82
Don't crash when trying to resolve variables 2019-12-16 13:24:29 +01:00
Simon Binder 8661e0a28a
Refactoring on the model classes in moor_generator 2019-12-14 21:43:04 +01:00
Simon Binder c9f29fab5b
Support detailed analysis for fts5 functions 2019-12-13 22:30:36 +01:00
Simon Binder 94634bd48b
Support custom fts5 queries 2019-12-12 18:56:37 +01:00
Simon Binder a23ff772fa
Improve syntax highlighting in the sql IDE 2019-12-11 21:14:33 +01:00
Simon Binder 99cf31bb61
Don't attempt to type unresolved references 2019-12-11 10:12:30 +01:00
Simon Binder 74ebb8a9ab
Ability to create fts5 tables in moor files (#196) 2019-12-10 20:24:08 +01:00
Simon Binder 54f4fd73e8
Revert analyzer workaround, a fixed version is out 2019-12-09 12:16:18 +01:00
Simon Binder 013a28564b
Temporary fix for CI failures: Don't use latest analyzer 2019-12-07 13:13:50 +01:00
Simon Binder 28b1e19145
Test that dart components can be used from UseMoor/Dao
Fixes #267
2019-12-05 19:23:52 +01:00
Simon Binder 3c74a20f56
Enable more recent lints and enforce them 2019-12-04 21:45:09 +01:00
Simon Binder f4c05f44c7
sqlparser: Read table schemas for fts5 tables 2019-12-04 19:55:23 +01:00
Simon Binder 325820af80
Parse CREATE VIRTUAL TABLE statements 2019-12-04 15:36:23 +01:00
Simon Binder a0ce3421c9
Resolve json functions when option is set (#235) 2019-11-28 21:50:55 +01:00
Simon Binder bb1fcc1590
Fix analyzer crash at CTE (#255) 2019-11-24 14:46:20 +01:00
Simon Binder 598fef750e
RELEASE
- moor 2.1.0
- moor_generator 2.1.0
- sqlparser 0.4.0
- moor_ffi 0.2.0
2019-11-16 11:23:11 +01:00
Simon Binder e83464df28
Prepare 2.1.0 release 2019-11-13 21:14:38 +01:00
Simon Binder 623f3212a1
Use builtin coverage collection from test package 2019-11-08 22:51:53 +01:00
Simon Binder a304d13927
Use enforceHasSpan on all parse results in tests 2019-10-27 11:51:09 +01:00
Simon Binder 591e1b2bff
Support WITH clause for inner select statements 2019-10-27 10:47:21 +01:00
Simon Binder 9372178204
INSERT INTO SELECT: Support with clause 2019-10-25 23:18:21 +02:00
Simon Binder d43a23eb88
Don't crash when a table wasn't resolved 2019-10-24 22:26:27 +02:00
Simon Binder b8af08919a
Handle recursive CTEs in analyzer 2019-10-23 18:03:24 +02:00
Simon Binder d55e1de66d
Handle common table expressions in the analyzer 2019-10-23 17:07:44 +02:00
Simon Binder 29a7b4853d
Parse common table expressions (no analysis yet) 2019-10-21 22:10:19 +02:00
Simon Binder 8a54fd4729
Generate code for CREATE TRIGGER statements 2019-10-21 18:13:28 +02:00
Simon Binder e553d37de6
Fix autocomplete tests 2019-10-21 17:27:38 +02:00
Simon Binder 8de2b141a9
Parse CREATE TRIGGER statements 2019-10-20 17:48:17 +02:00
Simon Binder 8a8b811643
Fix more sqlparser crashes in the resolver 2019-10-20 11:28:05 +02:00
Simon Binder a69f469444
Support sqlite_master, sqlite_sequence tables (#197) 2019-10-19 16:56:36 +02:00
Simon Binder fd27c878d4
Fix errors in sqlparser that were swallowed before 2019-10-19 16:41:30 +02:00
Simon Binder d8226aeb23
Handle aliases references to rowid (#197) 2019-10-19 16:09:44 +02:00
Simon Binder 4c090af98c
Ability to override json keys in moor files (#176) 2019-10-14 19:59:52 +02:00
Simon Binder 5ae3d7c2af
Prepare pubspec and changelog for 2.0.1 release 2019-10-11 13:17:50 +02:00
Simon Binder ed03bff4c2
Recognize boolean and datetime column in moor 2019-10-05 21:24:41 +02:00
Simon Binder ef1dd8d2c5
Scan \r as whitespace (#170) 2019-10-04 22:21:17 +02:00
Simon Binder 1ba687696f
Plugin: Navigation support for table references 2019-09-28 23:15:23 +02:00
Simon Binder b9f934c1d4
Report information about where a column was declared 2019-09-28 22:01:28 +02:00
Simon Binder ab787b82be
Use existing parser code for auto-complete
This works very well when the user is typing at the end of a statement, but won't provide accurate results when editing in the middle.
2019-09-27 22:06:14 +02:00
Simon Binder b684a7be69
Replace imports of test_api with test 2019-09-26 22:52:20 +02:00
Simon Binder a6cfc5fdd8
Better types for nested expressions, more 2.0 docs 2019-09-26 22:46:19 +02:00
Simon Binder c4f321748a
Prepare release for sqlparser 0.3.0 2019-09-25 20:19:39 +02:00
Simon Binder 2a782a010e
Resolve types of columns in compound select statements 2019-09-25 19:46:39 +02:00
Simon Binder f6a5009380
Report errors when ORDER or LIMIT is used in compound stmt 2019-09-25 18:08:24 +02:00
Simon Binder 0cbac2ee37
Parse compound select statements 2019-09-25 14:58:44 +02:00
Simon Binder d9c2b5f342
Parse JOIN and INDEXED as identifiers when appropriate 2019-09-25 11:37:03 +02:00
Simon Binder bf6d60b170
Fix column parser not accepting columns without type 2019-09-24 22:45:18 +02:00
Simon Binder ba21a594af
Fix autocomplete and suggestions in the analyzer plugin 2019-09-24 20:50:23 +02:00
Simon Binder 1bdfa0289b
Make the parser set a span on each AST node. 2019-09-18 21:36:25 +02:00
Simon Binder 1bd856e9c5
Fix scanner crashing when the last line contains a comment 2019-09-18 20:53:49 +02:00
Simon Binder 7121bac866
More work on the analyzer plugin
- finish migration to refactored generator
- document how to use the analysis plugin
- better error reporting without redundant messages
2019-09-18 20:48:44 +02:00
Simon Binder 00b2956b35
Allow data class names to be overridden in sql
Closes #147
2019-09-17 15:23:24 +02:00
Simon Binder 746b8401ec
Scan comments in sql 2019-09-16 22:33:36 +02:00
Simon Binder 5f2d5d3258
Parse <expression> IN (<select-stmt>) again 2019-09-15 21:41:32 +02:00
Simon Binder 25ceda3505
Report lints about invalid Dart Templates in SQL 2019-09-15 11:59:47 +02:00
Simon Binder 3abfbd5963
Don't parse tuples as expressions 2019-09-15 11:19:32 +02:00
Simon Binder c95a3badb2
Infer types for dart placeholder expressions
Also, infer where clauses to have a bool type
2019-09-14 22:44:20 +02:00
Simon Binder 349b245089
Write implementation for Dart placeholders 2019-09-14 16:42:24 +02:00
Simon Binder bf7c9feddf
Write parameter declarations for Dart placeholders 2019-09-14 12:26:58 +02:00
Simon Binder f171098789
Parse Dart placeholders based on their context 2019-09-14 11:44:15 +02:00
Simon Binder 7a8191fe7e
Fix moor queries not expanding array vars properly 2019-09-14 09:27:36 +02:00
Simon Binder 4c250c8f40
Parse dart template expressions and limit clauses 2019-09-13 23:08:29 +02:00
Simon Binder 44a2319bba
Improve variable tokenization for easier parsing logic 2019-09-13 22:48:55 +02:00
Simon Binder 6a0716daaf
Handle import statements and declared queries in .moor 2019-09-12 19:51:15 +02:00
Simon Binder a5cecd3ba6
Support moor file AST in the plugin 2019-09-09 20:34:14 +02:00
Simon Binder 1b7721a98f
Plugin: Import assists for column nullability 2019-09-08 21:36:26 +02:00
Simon Binder e807822f3f
Make plugin operate on the new MoorFile AST node 2019-09-08 10:29:59 +02:00
Simon Binder 7354b56712
Merge branch 'develop' into analyzer-plugin
# Conflicts:
#	moor_generator/lib/src/analyzer/moor/parser.dart
#	sqlparser/lib/src/engine/sql_engine.dart
2019-09-07 23:05:36 +02:00
Simon Binder a62c076c4c
Suggest CREATE TABLE statements in moor files 2019-09-07 22:49:23 +02:00
Simon Binder ee9b413e5d
Start experimenting with auto-completion features 2019-09-07 22:18:45 +02:00
Simon Binder 35e5bdb317
Introduce new top-level ast node for moor files 2019-09-07 21:33:56 +02:00
Simon Binder 1ed1e3ba94
Parse declared statements in moor files 2019-09-07 20:26:51 +02:00
Simon Binder 8268867369
Fix analyzer errors, re-run build_runner 2019-09-07 20:01:33 +02:00
Simon Binder 1fcc6facee
Implement basic functionality of the analyzer plugin 2019-09-07 18:49:11 +02:00
Simon Binder b550afd68f
Merge branch 'develop' into analyzer-plugin
# Conflicts:
#	moor_generator/lib/src/parser/moor/moor_analyzer.dart
2019-09-07 11:31:34 +02:00
Simon Binder 6ccaad866b
Parse import statements in moor files 2019-09-05 10:52:33 +02:00
Simon Binder ba772ef07f
Better error handling when parsing multiple sql statements 2019-09-03 21:24:59 +02:00
Simon Binder fcdbc309b7
Fix resolver not finding window expressions 2019-08-30 19:36:23 +02:00
Simon Binder 4af370f0cb
Tests: Verify that an executor is open when used. 2019-08-30 19:32:44 +02:00
Simon Binder 876db0671e
Provide lints on insert statements that will fail 2019-08-29 21:09:20 +02:00
Simon Binder 241baed0c3
Generate query implementations for insert statements 2019-08-29 16:27:55 +02:00
Simon Binder dd8b4ab03a
Infer types for insert statements 2019-08-29 15:32:45 +02:00
Simon Binder 2f8dc6d68e
Parse insert statements 2019-08-29 15:04:39 +02:00
Simon Binder 5d2149d727
Parse MAPPED BY constraints for moor files 2019-08-27 12:33:48 +02:00
Simon Binder aa13aad276
Introduce moor-specific tokens for type converters 2019-08-27 12:15:32 +02:00
Simon Binder 3612c78241
Introduce special token class for keywords 2019-08-27 11:54:56 +02:00
Simon Binder 4b0add64de
Provide better error messages at unknown tables 2019-08-26 22:26:38 +02:00
Simon Binder a3f6f1e326
Merge branch 'develop' into analyzer-plugin
# Conflicts:
#	moor_generator/pubspec.yaml
2019-08-26 15:32:28 +02:00
Simon Binder e38719a194
Write changelogs, prepare release 1.7 2019-08-22 12:27:39 +02:00
Simon Binder 26e28e9ddc
Fix AggregateExpression not reporting content equality 2019-08-19 20:51:10 +02:00
Simon Binder e911e74af2
Support window declarations on select statements 2019-08-19 18:06:25 +02:00
Simon Binder 3dcf59af63
Fix some bugs in the sql parser, another integration test 2019-08-17 22:21:34 +02:00
Simon Binder 7d89f12aa7
Use explicit indices for array parameters 2019-08-15 21:26:27 +02:00
Simon Binder 7ba89c099f
Resolve and infer types for window expressions 2019-08-14 18:00:41 +02:00
Simon Binder 1d3d68fb54
Parse aggregate functions and window definitions 2019-08-13 14:11:13 +02:00
Simon Binder 515b95acfe
Add AST classes to model windowing in sql 2019-08-12 16:50:13 +02:00
Simon Binder 4210c0c836
Start some work on the analyzer plugin
Of course it's not working at all
2019-07-30 18:34:33 +02:00
Simon Binder 5df5e3cacc
Fix typename parsing, set span on default constraint 2019-07-30 09:35:19 +02:00
Simon Binder 4798d0a7e5
Parse specified tables from .moor files 2019-07-29 12:54:49 +02:00
Simon Binder a550a49705
Export table structure from CREATE TABLE statements 2019-07-28 22:09:20 +02:00
Simon Binder 3a2646e837
Only use the current analysis steps for CRUD statements 2019-07-28 21:22:18 +02:00
Simon Binder 0bad842735
Parse table constraints 2019-07-28 21:01:48 +02:00
Simon Binder 7e0bfa9cf9
Parse foreign clauses as column constraints 2019-07-28 20:18:22 +02:00
Simon Binder 7cddf6f5d7
Provide coverage upload token variable 2019-07-28 11:08:39 +02:00
Simon Binder 4c7874dd91
Test and coverage the sql parser 2019-07-28 09:49:14 +02:00
Simon Binder 7b6802e1c5
Split parser implementation into multiple files 2019-07-27 20:47:11 +02:00
Simon Binder 1766bb3f77
Fix tests that used "table" as a table name
(we now recognize that as a keyword)
2019-07-26 13:49:25 +02:00
Simon Binder dee9993c83
Parse CREATE TABLE statements 2019-07-26 13:35:49 +02:00
Simon Binder 888e429467
Write model classes to represent CREATE TABLE statements 2019-07-26 11:35:53 +02:00
Simon Binder 6c84013cfa
Correctly find references to aliased columns 2019-07-25 17:44:59 +02:00
Simon Binder 82f84732d0
Resolve aliased columns 2019-07-25 17:33:01 +02:00
Simon Binder f21021a6e9
Final preparations for the 1.6 release
Short summary of updates
- web support
- using zones to resolve the current transaction
- comparable date time values
- collate expressions
- many bug fixes
2019-07-12 10:52:42 +02:00
Simon Binder d01b5c750f
Fix order in limit expressions with comma
Fixes #73
2019-07-10 17:29:03 +02:00
Simon Binder aeb9b6ba41
Parse COLLATE expressions in the sql parser
For #67
2019-07-08 23:03:03 +02:00
Simon Binder 01db5e2afc
Release moor version 1.5.1, sqlparser 0.1.1 2019-07-03 20:04:09 +02:00
Simon Binder b0ca66bc06
Parse empty tuples
Closes #54
2019-07-02 22:30:54 +02:00
Simon Binder 1654193af4
Make parser assert it's at end after finishing 2019-07-02 22:21:20 +02:00
Simon Binder c5d46adcb5
Parse JOIN clauses without additional operators
Fixes #56
2019-07-02 22:07:30 +02:00
Simon Binder 3024157ec9
Parse and analyze tuples, rework type resolution for `IN` 2019-07-02 14:38:28 +02:00
Simon Binder 285113717f
Parse tuples 2019-07-02 12:48:08 +02:00
Simon Binder 316f9e1052
Only resolve columns declared in scope of a statement
Fixes #52
2019-07-02 12:28:54 +02:00
Simon Binder 3dddc6993a
Remove outdated todo entries 2019-07-01 21:37:08 +02:00
Simon Binder a45d73a6cf
Update documentation, fix multiline parsing 2019-07-01 21:20:59 +02:00
Simon Binder b2f79e97e6
Update docs of sqlparser library 2019-07-01 15:04:17 +02:00
Simon Binder da07be2da4
Parse exists expressions 2019-07-01 14:27:08 +02:00
Simon Binder 3e910123d2
Resolve and infer types related to like expressions 2019-07-01 13:59:52 +02:00
Simon Binder 791afdb6bf
Support ESCAPE clause for LIKE and similar expressions 2019-07-01 13:52:46 +02:00
Simon Binder 464754267e
Document new features for version 1.5 2019-06-30 22:16:58 +02:00
Simon Binder baf3c9ce88
Parse update statements 2019-06-30 15:25:39 +02:00
Simon Binder 53ea5835a8
For custom queries, use a matching data class if possible 2019-06-30 12:01:46 +02:00
Simon Binder 3f0776faf8
Fix tests, parse delete statements 2019-06-29 22:47:40 +02:00
Simon Binder ff530dd4ea
Improve documentation of the sqlparser library 2019-06-29 22:29:16 +02:00
Simon Binder d9f5cf0e69
Resolve types for case expressions 2019-06-29 18:02:44 +02:00
Simon Binder 9c07eaa465
Parse case expressions 2019-06-29 17:59:18 +02:00
Simon Binder 5e1ec15caa
Resolve types for between expression 2019-06-29 17:36:33 +02:00
Simon Binder 7ef904d053
Parse between expressions 2019-06-29 17:32:06 +02:00
Simon Binder 7a07a1ae78
Handle function calls in type resolution 2019-06-29 17:02:38 +02:00
Simon Binder 74257e0c83
Don't resolve functions.
It adds too much complication at the moment, so it's not
worth it for our simple purposes.
2019-06-29 16:14:59 +02:00
Simon Binder 807d1ddff0
Resolve index of sql parameters, documentation 2019-06-29 12:48:09 +02:00
Simon Binder 40a4ebdadf
Started to integrate the sqlparser into moor generator 2019-06-28 23:41:27 +02:00
Simon Binder 1479a0d850
Start resolving variables 2019-06-28 20:50:36 +02:00
Simon Binder 1271e730b8
Finish type resolution for simple expressions and columns 2019-06-28 10:50:41 +02:00
Simon Binder 7e916b9d74
Start with type resolution 2019-06-27 16:40:48 +02:00
Simon Binder db92059610
Better column name prediction for expressions 2019-06-27 15:30:29 +02:00
Simon Binder 6238e459d1
Beware of the mightily inefficient four-pass parser
(computers are fast these days ok??)
2019-06-26 23:07:30 +02:00
Simon Binder 674f4c6a9c
Slightly better reference resolving, parse subqueries 2019-06-26 21:44:29 +02:00
Simon Binder 12e8c31b71
Fix select statement including a null iterable as children 2019-06-24 20:08:59 +02:00
Simon Binder 4562979d62
Better ability to resolve forward references 2019-06-23 22:14:50 +02:00
Simon Binder 62c20d0202
Add simple tests for reference resolution 2019-06-23 16:35:28 +02:00
Simon Binder 8b5539bb03
Start with reference resolution 2019-06-23 15:57:18 +02:00
Simon Binder 5d1046ba3a
Scaffold classes for type and reference analysis 2019-06-23 14:44:28 +02:00
Simon Binder b0649ee208
Parse group by statements 2019-06-23 13:37:30 +02:00
Simon Binder 8bbf6d8054
Parse function expressions 2019-06-23 13:04:05 +02:00
Simon Binder 1c75c9d3e8
Parse sql variables 2019-06-23 11:50:44 +02:00
Simon Binder b52dcf9a60
Test select statement parsing 2019-06-23 10:35:25 +02:00
Simon Binder 5e6cabc816
Write some rudimentary api and docs for the parser 2019-06-22 22:35:34 +02:00
Simon Binder 99202f3df6
Parse the FROM part of a select statement 2019-06-22 22:04:06 +02:00
Simon Binder be5bcfd459
Parse "ORDER BY" clause 2019-06-18 14:49:30 +02:00
Simon Binder 1bc4bfc120
Simplify equality check, some more SELECT parsing 2019-06-17 22:33:28 +02:00
Simon Binder d125a844da
Start implementing SELECT statements for parser 2019-06-16 21:23:33 +02:00
Simon Binder b442d32a87
Parse simple expressions 2019-06-16 20:50:07 +02:00
Simon Binder 52f3ee045f
Extract sql parser to yet another subpackage 2019-06-15 23:01:10 +02:00