Skip to content

.from in .whereIn subquery incorrectly results in parent entity table #248

@MordantWastrel

Description

@MordantWastrel

The following Quick scope is producing an erroneous table prefix for the 'where in' clause.


     function scopeNotInCloneQueue( query, required string seasonUID ) {
                return query.whereNotIn( "registrationID", function( sQ ) {
                        sQ.from( "registration_clone_queue" )
                                .select( "registrationID" )
                                .join(
                                        "registration_clone_queue_batches",
                                        "registration_clone_queue.batchID",
                                        "=",
                                        "registration_clone_queue_batches.batchID"
                                )
                                .whereTargetSeasonUID( seasonUID )
                } );
        }

What did you expect to happen?

The subquery should be selecting registrationID from registration_clone_queue.

What actually happened instead?

The SQL produced was to SELECT registrationID FROM registrations (the table of the parent entity where the scope lives). registrationID is the primary key.

A workaround is to specify an alias in the from clause and refer to the registraitonID explicitly with the table prefix.

Environment

List the software versions you're using:

  • Quick: 7.3.1 / Lucee 5

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions