Skip to content

The deleteUnmatched param for upsert() does not support parameter bindings #308

Description

@michaelborn

See #285 . The fix made to accept a closure fails to add the bindings back to the root query:

variables.qb
	.from( "myTable" )
	.returningRaw( [ "INSERTED.ID AS upserted", "DELETED.ID AS deleted" ] )
	.upsert(
		values = upsertData,
		target = [ "name" ],
		update = [ "foo", "bar" ],
		deleteUnmatched = ( queryBuilder ) => {
			return queryBuilder.where( "status", myStatus );
		}
	);

This throws the following:

lucee.runtime.exp.ApplicationException: there are more question marks in the SQL than params defined
	at lucee.runtime.tag.util.QueryParamConverter.convert(QueryParamConverter.java:190)
	at lucee.runtime.tag.util.QueryParamConverter.convert(QueryParamConverter.java:108)
	at lucee.runtime.tag.Query._doEndTag(Query.java:592)
	at lucee.runtime.tag.Query.doEndTag(Query.java:566)
	at lucee.runtime.functions.query.QueryExecute.call(QueryExecute.java:86)
	at models.grammars.basegrammar_cfc$cf.udfCall1(/qb/models/Grammars/BaseGrammar.cfc:126)
	at models.grammars.basegrammar_cfc$cf.udfCall(/qb/models/Grammars/BaseGrammar.cfc)
	at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
	at lucee.runtime.type.UDFImpl._call(UDFImpl.java:358)
	at lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:213)
	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:665)
	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:594)
	at lucee.runtime.SuperComponent.callWithNamedValues(SuperComponent.java:93)
	at lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:866)
	at lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1795)
        at modules_app.mssql2008grammar.models.mssql2008grammar_cfc$cf.udfCall1(/modules_app/MSSQL2008Grammar/models/MSSQL2008Grammar.cfc:15)
	at modules_app.mssql2008grammar.models.mssql2008grammar_cfc$cf.udfCall(/modules_app/MSSQL2008Grammar/models/MSSQL2008Grammar.cfc)
	at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
	at lucee.runtime.type.UDFImpl._call(UDFImpl.java:358)
	at lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:213)
	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:665)
	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:586)
	at lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:1952)
	at lucee.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:866)
	at lucee.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1795)
	at models.query.querybuilder_cfc$cf.udfCalln(/qb/models/Query/QueryBuilder.cfc:4055)
	at models.query.querybuilder_cfc$cf.udfCall(/qb/models/Query/QueryBuilder.cfc)
	at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112)
	at lucee.runtime.type.UDFImpl._call(UDFImpl.java:358)
	at lucee.runtime.type.UDFImpl.call(UDFImpl.java:223)
	at lucee.runtime.type.scope.UndefinedImpl.call(UndefinedImpl.java:786)
	at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:787)
	at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1776)
	at models.query.querybuilder_cfc$cf.udfCalli(/qb/models/Query/QueryBuilder.cfc:3383)
	at models.query.querybuilder_cfc$cf.udfCall(/qb/models/Query/QueryBuilder.cfc)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions