Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collate Expression broken in 3.0.0 #533

Closed
knaeckeKami opened this issue May 3, 2020 · 2 comments
Closed

Collate Expression broken in 3.0.0 #533

knaeckeKami opened this issue May 3, 2020 · 2 comments

Comments

@knaeckeKami
Copy link
Contributor

Hi there,
Thanks for the great update to 3.0.0!

I'm running in an issue however in my project; SQL-Statments with collate expressions now aren't parsed correctly any more in .moor files.

Simple Repro:

CREATE TABLE FROMMOOR (
  "textColumn" text
);

repro:
    select * from FROMMOOR
    order by textColumn collate nocase;

Behavior on moor_generator 2.4.0:

[INFO] Generating build script...
[INFO] Generating build script completed, took 352ms

[INFO] Initializing inputs
[INFO] Reading cached asset graph...
[INFO] Reading cached asset graph completed, took 68ms

[INFO] Checking for updates since last build...
[INFO] Checking for updates since last build completed, took 759ms

[WARNING] moor_generator|lib/src/analyzer/moor/moor_ffi_extension.dart was not found in the asset graph, incremental builds will not work.
 This probably means you don't have your dependencies specified fully in your pubspec.yaml.
[WARNING] Invalidating asset graph due to build script update!
[INFO] Cleaning up outputs from previous builds....
[INFO] Cleaning up outputs from previous builds. completed, took 6ms

[INFO] Generating build script...
[INFO] Generating build script completed, took 66ms

[INFO] Creating build script snapshot......
[INFO] Creating build script snapshot... completed, took 11.4s

[INFO] Initializing inputs
[INFO] Building new asset graph...
[INFO] Building new asset graph completed, took 623ms

[INFO] Checking for unexpected pre-existing outputs....
[INFO] Checking for unexpected pre-existing outputs. completed, took 1ms

[INFO] Running build...
[INFO] 1.0s elapsed, 1/5 actions completed.
[INFO] 3.9s elapsed, 1/5 actions completed.
[INFO] 5.0s elapsed, 1/5 actions completed.
[INFO] 8.5s elapsed, 1/5 actions completed.
[INFO] Running build completed, took 8.8s

[INFO] Caching finalized dependency graph...
[INFO] Caching finalized dependency graph completed, took 40ms

Behavior on moor_generator 3.0.0:

[INFO] Generating build script...
[INFO] Generating build script completed, took 353ms

[INFO] Initializing inputs
[INFO] Reading cached asset graph...
[INFO] Reading cached asset graph completed, took 70ms

[INFO] Checking for updates since last build...
[INFO] Checking for updates since last build completed, took 770ms

[WARNING] Invalidating asset graph due to build script update!
[INFO] Cleaning up outputs from previous builds....
[INFO] Cleaning up outputs from previous builds. completed, took 5ms

[INFO] Generating build script...
[INFO] Generating build script completed, took 60ms

[INFO] Creating build script snapshot......
[INFO] Creating build script snapshot... completed, took 11.4s

[INFO] Initializing inputs
[INFO] Building new asset graph...
[INFO] Building new asset graph completed, took 639ms

[INFO] Checking for unexpected pre-existing outputs....
[INFO] Checking for unexpected pre-existing outputs. completed, took 1ms

[INFO] Running build...
[INFO] 1.1s elapsed, 2/5 actions completed.
[INFO] 3.9s elapsed, 2/5 actions completed.
[INFO] 4.9s elapsed, 2/5 actions completed.
[INFO] 8.3s elapsed, 2/5 actions completed.
[WARNING] moor_generator:moor_generator on lib/from_moor.dart:
There were some errors while running moor_generator on package:moor_isolates_close/from_moor.dart:
[WARNING] moor_generator:moor_generator on lib/from_moor.dart:
Error while trying to parse repro: Bad state: Unary operator TokenType.collate not recognized by types2. At CollateExpression: collate nocase, #0      TypeResolver.visitUnaryExpression (package:sqlparser/src/analysis/types2/resolving_visitor.dart:225:7)
#1      UnaryExpression.accept (package:sqlparser/src/ast/expressions/simple.dart:11:20)
#2      RecursiveVisitor.visitList (package:sqlparser/src/ast/visitor.dart:463:12)
#3      RecursiveVisitor.visitChildren (package:sqlparser/src/ast/visitor.dart:458:40)
#4      RecursiveVisitor.visitOrderingTerm (package:sqlparser/src/ast/visitor.dart:202:12)
#5      OrderingTerm.accept (package:sqlparser/src/ast/clauses/ordering.dart:44:20)
#6      RecursiveVisitor.visitList (package:sqlparser/src/ast/visitor.dart:463:12)
#7      RecursiveVisitor.visitChildren (package:sqlparser/src/ast/visitor.dart:458:40)
#8      RecursiveVisitor.visitOrderBy (package:sqlparser/src/ast/visitor.dart:197:12)
#9      OrderBy.accept (package:sqlparser/src/ast/clauses/ordering.dart:19:20)
#10     RecursiveVisitor.visit (package:sqlparser/src/ast/visitor.dart:453:34)
#11     TypeResolver.visitSelectStatement (package:sqlparser/src/analysis/types2/resolving_visitor.dart:52:9)
#12     SelectStatement.accept (package:sqlparser/src/ast/statements/select.dart:44:20)
#13     RecursiveVisitor.visit (package:sqlparser/src/ast/visitor.dart:453:34)
#14     TypeResolver.run (package:sqlparser/src/analysis/types2/resolving_visitor.dart:19:5)
#15     SqlEngine._analyzeContext (package:sqlparser/src/engine/sql_engine.dart:194:18)
#16     SqlEngine.analyzeNode (package:sqlparser/src/engine/sql_engine.dart:168:5)
#17     SqlAnalyzer.parse (package:moor_generator/src/analyzer/sql_queries/query_analyzer.dart:76:28)
#18     AnalyzeMoorStep.analyze (package:moor_generator/src/analyzer/runner/steps/analyze_moor.dart:17:9)
#19     Task._analyze (package:moor_generator/src/analyzer/runner/task.dart:223:45)
#20     Task.runTask (package:moor_generator/src/analyzer/runner/task.dart:61:13)
<asynchronous suspension>
#21     MoorBuilder.analyzeDartFile (package:moor_generator/src/backends/build/moor_builder.dart:28:18)
#22     MoorGenerator.generate (package:moor_generator/src/backends/build/generators/moor_generator.dart:24:34)
#23     _generate (package:source_gen/src/builder.dart:280:35)
<asynchronous suspension>
#24     _Builder._generateForLibrary (package:source_gen/src/builder.dart:73:15)
#25     _Builder.build (package:source_gen/src/builder.dart:67:11)
<asynchronous suspension>
#26     runBuilder.buildForInput (package:build/src/generate/run_builder.dart:55:21)
#27     MappedListIterable.elementAt (dart:_internal/iterable.dart:417:31)
#28     ListIterator.moveNext (dart:_internal/iterable.dart:346:26)
#29     Future.wait (dart:async/future.dart:395:26)
#30     runBuilder.<anonymous closure> (package:build/src/generate/run_builder.dart:61:36)
#31     _rootRun (dart:async/zone.dart:1184:13)
#32     _CustomZone.run (dart:async/zone.dart:1077:19)
#33     _runZoned (dart:async/zone.dart:1619:10)
#34     runZonedGuarded (dart:async/zone.dart:1608:12)
#35     runZoned (dart:async/zone.dart:1536:12)
#36     scopeLogAsync (package:build/src/builder/logging.dart:22:3)
#37     runBuilder (package:build/src/generate/run_builder.dart:61:9)
#38     _SingleBuild._runForInput.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:487:19)
#39     _NoOpBuilderActionTracker.trackStage (package:build_runner_core/src/generate/performance_tracker.dart:300:15)
#40     _SingleBuild._runForInput.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:485:23)
<asynchronous suspension>
#41     _SingleBuild._runForInput.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart)
#42     NoOpTimeTracker.track (package:timing/src/timing.dart:222:44)
#43     _SingleBuild._runForInput.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:442:22)
#44     Pool.withResource (package:pool/pool.dart:127:28)
<asynchronous suspension>
#45     _SingleBuild._runForInput (package:build_runner_core/src/generate/build_impl.dart:438:17)
#46     _SingleBuild._runBuilder.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:376:38)
#47     MappedIterator.moveNext (dart:_internal/iterable.dart:395:20)
#48     Future.wait (dart:async/future.dart:395:26)
#49     _SingleBuild._runBuilder (package:build_runner_core/src/generate/build_impl.dart:375:36)
#50     _SingleBuild._runPhases.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:321:20)
#51     _rootRunUnary (dart:async/zone.dart:1192:38)
#52     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
#53     _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#54     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#55     Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#56     Future._completeWithValue (dart:async/future_impl.dart:526:5)
#57     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:36:15)
#58     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:298:13)
#59     _SingleBuild._matchingPrimaryInputs (package:build_runner_core/src/generate/build_impl.dart)
#60     _rootRunUnary (dart:async/zone.dart:1192:38)
#61     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
#62     _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#63     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#64     Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#65     Future._completeWithValue (dart:async/future_impl.dart:526:5)
#66     Future.wait.<anonymous closure> (dart:async/future.dart:402:22)
#67     _rootRunUnary (dart:async/zone.dart:1192:38)
#68     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
#69     _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#70     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#71     Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#72     Future._completeWithValue (dart:async/future_impl.dart:526:5)
#73     Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:556:7)
#74     _rootRun (dart:async/zone.dart:1184:13)
#75     _CustomZone.run (dart:async/zone.dart:1077:19)
#76     _CustomZone.runGuarded (dart:async/zone.dart:979:7)
#77     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1019:23)
#78     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
#79     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
#80     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
#81     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169:5)

[WARNING] moor_generator:moor_generator on lib/from_moor.dart:
There were some errors while running moor_generator on package:moor_isolates_close/from_moor.dart:
[WARNING] moor_generator:moor_generator on lib/from_moor.dart:
Error while trying to parse repro: Bad state: Unary operator TokenType.collate not recognized by types2. At CollateExpression: collate nocase, #0      TypeResolver.visitUnaryExpression (package:sqlparser/src/analysis/types2/resolving_visitor.dart:225:7)
#1      UnaryExpression.accept (package:sqlparser/src/ast/expressions/simple.dart:11:20)
#2      RecursiveVisitor.visitList (package:sqlparser/src/ast/visitor.dart:463:12)
#3      RecursiveVisitor.visitChildren (package:sqlparser/src/ast/visitor.dart:458:40)
#4      RecursiveVisitor.visitOrderingTerm (package:sqlparser/src/ast/visitor.dart:202:12)
#5      OrderingTerm.accept (package:sqlparser/src/ast/clauses/ordering.dart:44:20)
#6      RecursiveVisitor.visitList (package:sqlparser/src/ast/visitor.dart:463:12)
#7      RecursiveVisitor.visitChildren (package:sqlparser/src/ast/visitor.dart:458:40)
#8      RecursiveVisitor.visitOrderBy (package:sqlparser/src/ast/visitor.dart:197:12)
#9      OrderBy.accept (package:sqlparser/src/ast/clauses/ordering.dart:19:20)
#10     RecursiveVisitor.visit (package:sqlparser/src/ast/visitor.dart:453:34)
#11     TypeResolver.visitSelectStatement (package:sqlparser/src/analysis/types2/resolving_visitor.dart:52:9)
#12     SelectStatement.accept (package:sqlparser/src/ast/statements/select.dart:44:20)
#13     RecursiveVisitor.visit (package:sqlparser/src/ast/visitor.dart:453:34)
#14     TypeResolver.run (package:sqlparser/src/analysis/types2/resolving_visitor.dart:19:5)
#15     SqlEngine._analyzeContext (package:sqlparser/src/engine/sql_engine.dart:194:18)
#16     SqlEngine.analyzeNode (package:sqlparser/src/engine/sql_engine.dart:168:5)
#17     SqlAnalyzer.parse (package:moor_generator/src/analyzer/sql_queries/query_analyzer.dart:76:28)
#18     AnalyzeMoorStep.analyze (package:moor_generator/src/analyzer/runner/steps/analyze_moor.dart:17:9)
#19     Task._analyze (package:moor_generator/src/analyzer/runner/task.dart:223:45)
#20     Task.runTask (package:moor_generator/src/analyzer/runner/task.dart:61:13)
<asynchronous suspension>
#21     MoorBuilder.analyzeDartFile (package:moor_generator/src/backends/build/moor_builder.dart:28:18)
#22     DaoGenerator.generate (package:moor_generator/src/backends/build/generators/dao_generator.dart:12:34)
#23     _generate (package:source_gen/src/builder.dart:280:35)
<asynchronous suspension>
#24     _Builder._generateForLibrary (package:source_gen/src/builder.dart:73:15)
#25     _Builder.build (package:source_gen/src/builder.dart:67:11)
<asynchronous suspension>
#26     runBuilder.buildForInput (package:build/src/generate/run_builder.dart:55:21)
#27     MappedListIterable.elementAt (dart:_internal/iterable.dart:417:31)
#28     ListIterator.moveNext (dart:_internal/iterable.dart:346:26)
#29     Future.wait (dart:async/future.dart:395:26)
#30     runBuilder.<anonymous closure> (package:build/src/generate/run_builder.dart:61:36)
#31     _rootRun (dart:async/zone.dart:1184:13)
#32     _CustomZone.run (dart:async/zone.dart:1077:19)
#33     _runZoned (dart:async/zone.dart:1619:10)
#34     runZonedGuarded (dart:async/zone.dart:1608:12)
#35     runZoned (dart:async/zone.dart:1536:12)
#36     scopeLogAsync (package:build/src/builder/logging.dart:22:3)
#37     runBuilder (package:build/src/generate/run_builder.dart:61:9)
#38     _SingleBuild._runForInput.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:487:19)
#39     _NoOpBuilderActionTracker.trackStage (package:build_runner_core/src/generate/performance_tracker.dart:300:15)
#40     _SingleBuild._runForInput.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:485:23)
<asynchronous suspension>
#41     _SingleBuild._runForInput.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart)
#42     NoOpTimeTracker.track (package:timing/src/timing.dart:222:44)
#43     _SingleBuild._runForInput.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:442:22)
#44     Pool.withResource (package:pool/pool.dart:127:28)
<asynchronous suspension>
#45     _SingleBuild._runForInput (package:build_runner_core/src/generate/build_impl.dart:438:17)
#46     _SingleBuild._runBuilder.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:376:38)
#47     MappedIterator.moveNext (dart:_internal/iterable.dart:395:20)
#48     Future.wait (dart:async/future.dart:395:26)
#49     _SingleBuild._runBuilder (package:build_runner_core/src/generate/build_impl.dart:375:36)
#50     _SingleBuild._runPhases.<anonymous closure>.<anonymous closure> (package:build_runner_core/src/generate/build_impl.dart:321:20)
#51     _rootRunUnary (dart:async/zone.dart:1192:38)
#52     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
#53     _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#54     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#55     Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#56     Future._completeWithValue (dart:async/future_impl.dart:526:5)
#57     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:36:15)
#58     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:298:13)
#59     _SingleBuild._matchingPrimaryInputs (package:build_runner_core/src/generate/build_impl.dart)
#60     _rootRunUnary (dart:async/zone.dart:1192:38)
#61     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
#62     _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#63     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#64     Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#65     Future._completeWithValue (dart:async/future_impl.dart:526:5)
#66     Future.wait.<anonymous closure> (dart:async/future.dart:402:22)
#67     _rootRunUnary (dart:async/zone.dart:1192:38)
#68     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
#69     _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#70     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#71     Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#72     Future._completeWithValue (dart:async/future_impl.dart:526:5)
#73     Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:556:7)
#74     _rootRun (dart:async/zone.dart:1184:13)
#75     _CustomZone.run (dart:async/zone.dart:1077:19)
#76     _CustomZone.runGuarded (dart:async/zone.dart:979:7)
#77     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1019:23)
#78     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
#79     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
#80     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
#81     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169:5)

[INFO] Running build completed, took 8.7s

[INFO] Caching finalized dependency graph...
[INFO] Caching finalized dependency graph completed, took 29ms

[INFO] Succeeded after 8.7s with 4 outputs (11 actions)

P.S.:
Since 3.0.0, semicolons are required to end statements in .moor files. Before, they were optional. You might want to include this in the Changelog to make it easier to migrate.

@simolus3
Copy link
Owner

simolus3 commented May 3, 2020

Thanks for the report. As a workaround for now, you can enable the legacy_type_inference build option. I'll fix this and release an update later today or tomorrow.

@simolus3
Copy link
Owner

simolus3 commented May 3, 2020

Fixed in sqlparser: 0.8.1. Running flutter packages upgrade should fix this.

@simolus3 simolus3 closed this as completed May 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants