Skip to content

QuickQB.update - invalid argument type assumption leading to expression exception #246

@davidAtInleague

Description

@davidAtInleague

quick 7.3.1

quick/models/QuickQb.cfc

Hit a case where Quick tries to treat a string as a struct, e.g. in the following, if values is something like {someColumn: "someValue"}

	public any function update(
		struct values  = {},
		struct options = {},
 		boolean toSql  = false
 	) {
 		for ( var key in arguments.values ) {
 			if ( structKeyExists( arguments.values[ key ], "isQuickBuilder" ) ) {
 				arguments.values[ key ] = arguments.values[ key ].getQb();
 			}

The structKeyExists becomes structKeyExists( "someValue", "isQuickBuilder" ) which fails with "cannot convert string to struct".

Our current workaround is:

diff --git a/modules/quick/models/QuickQB.cfc b/modules/quick/models/QuickQB.cfc
index 457378a20..2567f341d 100755
--- a/modules/quick/models/QuickQB.cfc
+++ b/modules/quick/models/QuickQB.cfc
@@ -305,6 +305,9 @@ component
 		boolean toSql  = false
 	) {
 		for ( var key in arguments.values ) {
+			if ( isNull( arguments.values[ key ] ) || isSimpleValue( arguments.values[ key ] ) ) {
+				continue;
+			}
 			if ( structKeyExists( arguments.values[ key ], "isQuickBuilder" ) ) {
 				arguments.values[ key ] = arguments.values[ key ].getQb();
 			}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    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