ColdFusion Query of Queries Creates BIGINT Values When Hard Coding Integers

Posted October 24, 2006 at 2:24 PM by Ben Nadel

Tags: ColdFusion

Just a minor thing that I came across today; ColdFusion query of queries defines hard-coded integer values as type BIGINT. While this is a very minor detail, it can cause some issues when performing a UNION as I had to do today (I had join a query to itself in a parent-child relationship query).

I had a query that looked like this:

  • <!--- Query for top level vendors. --->
  • <cfquery name="qTopLevelVendor" dbtype="query">
  • (
  • SELECT
  • id,
  • name,
  • has_children
  • FROM
  • qVendor
  • WHERE
  • parent_id = 0
  • )
  •  
  • UNION
  •  
  • (
  • SELECT
  • parent_id,
  • parent_name,
  • ( 0 ) AS has_children
  • FROM
  • qVendor
  • WHERE
  • parent_id != 0
  • )
  • </cfquery>

This threw thew following error:

Query Of Queries runtime error. Cannot mix types "INTEGER" and "BIGINT" in a "compare" binary operation.

The problem was with this line of code:

  • ( 0 ) AS has_children

In the original query, this was an integer value. The query of queries is making that a BIGINT, which cannot be compared properly. To overcome this, I had to convert one of the values:

  • <!--- Query for top level vendors. --->
  • <cfquery name="qTopLevelVendor" dbtype="query">
  • (
  • SELECT
  • id,
  • name,
  • has_children
  • FROM
  • qVendor
  • WHERE
  • parent_id = 0
  • )
  •  
  • UNION
  •  
  • (
  • SELECT
  • parent_id,
  • parent_name,
  • CAST( 0 AS INTEGER ) AS has_children
  • FROM
  • qVendor
  • WHERE
  • parent_id != 0
  • )
  • </cfquery>

Notice that I am casting the hard coded value as an integer. That did the trick. It's not often that I really think about the data types of hard coded values, but this just goes to show that that is very important.



Reader Comments

Jan 22, 2009 at 7:29 AM // reply »
18 Comments

Thanks Ben. I just fell into this exact same trap, and thankfully there you were to guide me out. Cheers


Jan 22, 2009 at 8:09 AM // reply »
11,243 Comments

@Matt,

Awesome. It's all about team work :)


Mar 16, 2009 at 9:24 PM // reply »
2 Comments

What Matt said!

Thanks Ben


Aug 22, 2009 at 1:19 AM // reply »
3 Comments

I know this is an old post but man did this stump me for a bit. Google searched the error message and your post was #1. Thanks.


Sep 6, 2009 at 1:27 PM // reply »
11,243 Comments

@Robert,

Sweeeeet!


Nov 20, 2012 at 10:51 AM // reply »
29 Comments

Thanks Ben! This was actually happening to me when performing a COUNT() operation in a previous query of queries. I changed it to CAST(COUNT(1) AS INTEGER) and it worked great.


Post A Comment

Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.

Please review the following issues:

Author Name:


Author Email:

Author Website:

Comment:

Supported HTML tags for formatting: <strong>bold</strong>   <em>italic</em>   <code>code</code>







  • Help Wanted - Find Your Next ColdFusion Job
Ben Nadel's Company - Epicenter Consulting Recent Blog Comments
May 23, 2013 at 11:06 AM
Strange Interaction Between DeserializeJson(), ArrayContains(), And Database Values In ColdFusion
@Ben, Are you talking about As Number: YES As String: YES As Java: YES? If so, that's with 3 different ways of referencing the constant 1, not users.id[1]. Query object references(*) are what seem ... read »
May 23, 2013 at 9:55 AM
Strange Interaction Between DeserializeJson(), ArrayContains(), And Database Values In ColdFusion
@Dan, According to the CF Admin, I'm running Java "1.6.0_45". As far as the DB column, in the database it's an INT. I'll see if I can dig into what CF sees it as. @WebManWalking, But h ... read »
May 23, 2013 at 9:49 AM
Strange Interaction Between DeserializeJson(), ArrayContains(), And Database Values In ColdFusion
@Ben, I think the problem is that we're used to loose typing in ColdFusion, like JavaScript. If a value is a number but it's needed in an expression to be a string, noooo problem. I've encountered ... read »
May 23, 2013 at 9:47 AM
ColdFusion QueryAppend( qOne, qTwo )
You rock! Thank you, thank you, thank you!!! ... read »
May 23, 2013 at 5:19 AM
Ask Ben: Print Part Of A Web Page With jQuery
How to print also the background color of table cells and table lines ... read »
May 23, 2013 at 3:55 AM
Javascript Array Methods: Unshift(), Shift(), Push(), And Pop()
very interesting and helpful too. ... read »
May 22, 2013 at 5:35 PM
Script Tags, jQuery, And Html(), Text() And Contents()
This is still an issue 2 years later. jQuery is supposed to remediate these cross browser issues, no? I have been unable to find any statement from the jQuery team calling this behavior "by de ... read »
May 22, 2013 at 12:44 PM
Ask Ben: Query Loop Inside CFScript Tags
In cf10, if you call a function that has: local.result = {}; local.result.msg = ""; local.svc = new query(); local.svc.setSQL("SELECT * FROM..."); local.obj = local.svc.exe ... read »
InVision App - Prototyping Made Beautiful With Prototyping Tools