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

Provide better error when trying to bind a column name #1187

Closed
TrueWarg opened this issue Jan 22, 2019 · 1 comment
Closed

Provide better error when trying to bind a column name #1187

TrueWarg opened this issue Jan 22, 2019 · 1 comment

Comments

@TrueWarg
Copy link

TrueWarg commented Jan 22, 2019

similar problem was in #1167, but I have reproduced it in 1.01 version

SELECT *
FROM transaction
WHERE user_id = ?
ORDER BY ? ASC

if remove ORDER BY ? ASC, compile is ok

Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app-data-source-storage:generateDebugSqlDelightInterface'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipCachedTaskExecuter.execute(SkipCachedTaskExecuter.java:105)
	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ResolveBuildCacheKeyExecuter.execute(ResolveBuildCacheKeyExecuter.java:79)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
	at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
	at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.IllegalStateException: Failed to compile SqliteCompoundSelectStmtImpl(COMPOUND_SELECT_STMT): [] :
SELECT *
FROM transaction
WHERE user_id = ?
ORDER BY ? ASC
	at com.squareup.sqldelight.core.compiler.SqlDelightCompilerKt.tryWithElement(SqlDelightCompiler.kt:119)
	at com.squareup.sqldelight.core.compiler.QueriesTypeGenerator.generateType(QueriesTypeGenerator.kt:59)
	at com.squareup.sqldelight.core.compiler.SqlDelightCompiler.writeQueriesType$sqldelight_compiler(SqlDelightCompiler.kt:80)
	at com.squareup.sqldelight.core.compiler.SqlDelightCompiler.compile(SqlDelightCompiler.kt:36)
	at com.squareup.sqldelight.core.SqlDelightEnvironment$generateSqlDelightFiles$2.invoke(SqlDelightEnvironment.kt:112)
	at com.squareup.sqldelight.core.SqlDelightEnvironment$generateSqlDelightFiles$2.invoke(SqlDelightEnvironment.kt:53)
	at com.alecstrong.sqlite.psi.core.SqliteCoreEnvironment$forSourceFiles$1.processFile(SqliteCoreEnvironment.kt:69)
	at com.alecstrong.sqlite.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqliteCoreEnvironment.kt:100)
	at com.alecstrong.sqlite.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqliteCoreEnvironment.kt:97)
	at com.alecstrong.sqlite.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqliteCoreEnvironment.kt:97)
	at com.alecstrong.sqlite.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqliteCoreEnvironment.kt:97)
	at com.alecstrong.sqlite.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqliteCoreEnvironment.kt:97)
	at com.alecstrong.sqlite.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqliteCoreEnvironment.kt:97)
	at com.alecstrong.sqlite.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqliteCoreEnvironment.kt:97)
	at com.alecstrong.sqlite.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqliteCoreEnvironment.kt:97)
	at com.alecstrong.sqlite.psi.core.CoreFileIndex.iterateContentUnderDirectory(SqliteCoreEnvironment.kt:97)
	at com.alecstrong.sqlite.psi.core.CoreFileIndex.iterateContent(SqliteCoreEnvironment.kt:91)
	at com.alecstrong.sqlite.psi.core.SqliteCoreEnvironment.forSourceFiles(SqliteCoreEnvironment.kt:67)
	at com.squareup.sqldelight.core.SqlDelightEnvironment.generateSqlDelightFiles(SqlDelightEnvironment.kt:109)
	at com.squareup.sqldelight.gradle.SqlDelightTask.generateSqlDelightFiles(SqlDelightTask.kt:50)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
	at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:801)
	at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:768)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
	... 33 more
Caused by: java.lang.AssertionError: Cannot bind unknown types or null
	at com.squareup.sqldelight.core.lang.IntermediateType$SqliteType.prepareStatementBinder(IntermediateType.kt:149)
	at com.squareup.sqldelight.core.lang.IntermediateType.preparedStatementBinder(IntermediateType.kt:89)
	at com.squareup.sqldelight.core.compiler.QueryGenerator.executeBlock(QueryGenerator.kt:105)
	at com.squareup.sqldelight.core.compiler.SelectQueryGenerator.querySubtype(SelectQueryGenerator.kt:197)
	at com.squareup.sqldelight.core.compiler.QueriesTypeGenerator$generateType$$inlined$forEach$lambda$1.invoke(QueriesTypeGenerator.kt:70)
	at com.squareup.sqldelight.core.compiler.QueriesTypeGenerator$generateType$$inlined$forEach$lambda$1.invoke(QueriesTypeGenerator.kt:19)
	at com.squareup.sqldelight.core.compiler.SqlDelightCompilerKt.tryWithElement(SqlDelightCompiler.kt:117)
	... 66 more


@AlecKazakova
Copy link
Collaborator

you cant pass column names at runtime, but we should communicate that error better.

@JakeWharton JakeWharton changed the title Throws exception during .from sq file parsing Provide better error when trying to bind a column name Jan 23, 2019
@AlecKazakova AlecKazakova added this to the 1.4.4 milestone Oct 2, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants