Since when is "working better than expected" a "bug?"

On Thu, Aug 13, 2009 at 10:04 AM,
whostheJBoss<dotfus...@changethings.org> wrote:
>
> Thoughts on this Mark? This is definitely a bug in CF that is
> reflected as a bug in Transfer. This is, I repeat, NOT a bug in Railo.
> As of now I have to change the numeric mapping to double to get my
> insert to work...
>
> On Aug 10, 12:10 pm, whostheJBoss <dotfus...@changethings.org> wrote:
>> Ok, well, I've taken this up with Railo and...
>>
>> http://groups.google.com/group/railo/browse_thread/thread/d8e20b98308...
>>
>> Any thoughts on this Mark?
>>
>> If you want the short version...
>>
>> "What happens if you change the line from "cf_sql_float"to
>> "cf_sql_double" or "cf_sql_decimal"?   I bet it's a truncation issue,
>> where ColdFusion considers cf_sql_float and cf_sql_double to be
>> equivalent, but Railo is correctly using reduced precision for
>> cf_sql_float (causing your erroneous value).  To put that another way,
>> I suspect a bug in ColdFusion (not reducing precision on cf_sql_float)
>> is masking a bug in Transfer (using an imprecise type for numerics)
>> that Railo's correct implementation (reducing cf_sql_float precision)
>> unmasks.  :)
>>
>> cheers,
>> barneyb"
>>
>> "I'm pretty sure all that's needed for confirmation is to change the
>> type from cf_sql_float to cf_sql_decimal or cf_sql_double and confirm
>> that that fixes the issue (just like cf_sql_bigint) does.
>> --
>> Barney Boisvert
>> bboisv...@gmail.comhttp://www.barneyb.com/";
>>
>> "Hi whostheJBoss
>>
>> Railo translate CF_SQL_FLOAT to java.sql.Types.FLOAT
>> then java.sql.PreparedStatement.setFloat(int index,float value) is
>> used
>> in this case,
>> i think adobeCF use java.sql.PreparedStatement.setDouble(int
>> index,double value) instead of setFloat.
>>
>> but this is definitly the wrong way, like barney has written before
>> "cf_sql_double" or "cf_sql_decimal  is the way to go.
>> from my perspective it is wrong to change this to "setDouble".
>>
>> what do you thnk?
>>
>> greetings micha
>>
>> --
>> Michael Offner-Streit
>> CTO
>> Railo Technologies GmbH
>> michael.off...@railo.ch"
>>
>> On Aug 5, 5:23 pm, Mark Mandel <mark.man...@gmail.com> wrote:
>>
>>
>>
>> > numeric maps to using cf_sql_float.
>>
>> > cf_sql_float is a parameter that will correctly handle floating points
>> > across databases.
>>
>> > It seems that Railo has an issue with how it is mapping cf_sql_float, so it
>> > cannot handle BigInt values in the database you are using, whereas on CF it
>> > has no such trouble.
>>
>> > Mark
>>
>> > On Thu, Aug 6, 2009 at 10:07 AM, whostheJBoss 
>> > <dotfus...@changethings.org>wrote:
>>
>> > > You happen to know what part of Transfer the bug is affecting? I'd be
>> > > happy to take it up with the guys at Railo, just need to know what I
>> > > should be asking.
>>
>> > > Is Transfer checking the column type of the objects and then using
>> > > that type to wrap them with a cfsqltype? Does that mean Railo is not
>> > > providing this information to Transfer, so then it is falling back on
>> > > the default cfsqltype for numeric, which in this case happens to be
>> > > float?
>>
>> > > Basically, is Transfer unable to get the type from Railo so it runs
>> > > this:
>>
>> > > <cfelseif block.mapparam.type eq "numeric">
>> > >     <cfqueryparam value="#value#" cfsqltype="cf_sql_float"
>> > > list="#param.list#" null="#param.isNull#">
>>
>> > > And sets it to float?
>>
>> > > Thanks!
>>
>> > > On Aug 5, 4:52 pm, Mark Mandel <mark.man...@gmail.com> wrote:
>> > > > Sounds like a bug in Railo to me.
>>
>> > > > Mark
>>
>> > > > On Wed, Aug 5, 2009 at 8:18 AM, whostheJBoss 
>> > > > <dotfus...@changethings.org
>> > > >wrote:
>>
>> > > > > You always manage to come in and say something very simple and I go
>> > > > > "Oh yeah!!!"
>>
>> > > > > Anyway, CF9 has no problem with this, so it must be... a Railo thing.
>> > > > > Err, a Transfer / Railo thing.
>>
>> > > > > So, what can be done to have Transfer see the right data type in
>> > > > > Railo?
>>
>> > > > > Thanks!!!
>>
>> > > > > On Aug 4, 2:52 pm, Mark Mandel <mark.man...@gmail.com> wrote:
>> > > > > > You're also on Railo aren't you?
>>
>> > > > > > Mark
>>
>> > > > > > On Wed, Aug 5, 2009 at 6:17 AM, whostheJBoss <
>> > > dotfus...@changethings.org
>> > > > > >wrote:
>>
>> > > > > > > By the way, thanks for helping!!! :)
>>
>> > > > > > > On Aug 4, 12:31 pm, Jennifer Larkin <jlar...@gmail.com> wrote:
>> > > > > > > > Which version of MySQL are you using?
>>
>> > > > > > > > OK, so looking again at the two values in question:
>> > > > > > > > 1474075992
>> > > > > > > > 1474076030
>>
>> > > > > > > > It is certainly feasible that you have encountered a floating
>> > > point
>> > > > > > > > error. In a ten digit number, the second number is off by 38. 
>> > > > > > > > The
>> > > > > > > > thing is, Transfer doesn't cause floating point errors-- they 
>> > > > > > > > are
>> > > the
>> > > > > > > > cause of the software that Transfer runs on, and MySQL has
>> > > floating
>> > > > > > > > point errors. I've used Transfer on Oracle and as I said, I've
>> > > never
>> > > > > > > > encountered this problem.
>>
>> > > > > > > > So, I looked up MySQL floating point errors and discovered this
>> > > > > article:
>> > > > > > >http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html
>>
>> > > > > > > > Which leads me to believe that if you are using a version of
>> > > MySQL
>> > > > > > > > prior to 5.0.5, that you should upgrade to 5.0.5, which has
>> > > greater
>> > > > > > > > floating point precision.
>>
>> > > > > > > > On Tue, Aug 4, 2009 at 12:09 PM, whostheJBoss<
>> > > > > dotfus...@changethings.org>
>> > > > > > > wrote:
>>
>> > > > > > > > > The column in question here is not a key, it's an additional
>> > > field,
>> > > > > > > > > nothing special. Just a BIGINT named customID, but it's not 
>> > > > > > > > > the
>> > > > > > > > > primary key. The primary key field is userID.
>>
>> > > > > > > > > As of now, any column with datatype INT or BIGINT is being
>> > > saved
>> > > > > > > > > incorrectly by Transfer. This one in particular was INT, 
>> > > > > > > > > then I
>> > > > > > > > > changed to BIGINT trying to fix the problem. So, as of now it
>> > > is
>> > > > > > > > > BIGINT and will be staying that way.
>>
>> > > > > > > > > The same column using the exact same SQL that Transfer
>> > > generates in
>> > > > > a
>> > > > > > > > > regular <cfquery> work fine because it isn't wrapped in
>> > > > > > > > > cfsqltype="cf_sql_float" query param which is invisible to 
>> > > > > > > > > the
>> > > > > debug
>> > > > > > > > > output. (Which is why I didn't see it before.)
>>
>> > > > > > > > > The column it does work for is VARCHAR, which makes complete
>> > > sense.
>> > > > > It
>> > > > > > > > > just takes the number and inserts it as a string.
>>
>> > > > > > > > > Transfer has this statement:
>>
>> > > > > > > > > <cfelseif block.mapparam.type eq "numeric">
>> > > > > > > > >        <cfqueryparam value="#value#" cfsqltype="cf_sql_float"
>> > > > > > > > > list="#param.list#" null="#param.isNull#">
>>
>> > > > > > > > > Which takes any "numeric" property of a defined Transfer 
>> > > > > > > > > object
>> > > and
>> > > > > > > > > forces it to float, even if the database has it marked as
>> > > BIGINT.
>>
>> > > > > > > > > On Aug 4, 11:17 am, Jennifer Larkin <jlar...@gmail.com> 
>> > > > > > > > > wrote:
>> > > > > > > > >> I've used transfer with tons of bigint columns and never had
>> > > this
>> > > > > > > > >> problem. I would assume that your key is bigint and not 
>> > > > > > > > >> float,
>> > > but
>> > > > > you
>> > > > > > > > >> aren't having a problem with the key being set as float. So
>> > > the
>> > > > > > > > >> question is, why does this work for some columns and not for
>> > > > > others.
>>
>> > > > > > > > >> What is the datatype on the column that is getting saved
>> > > correctly
>> > > > > and
>> > > > > > > > >> the one that is getting saved incorrectly?
>>
>> > > > > > > > >> On Tue, Aug 4, 2009 at 10:36 AM, whostheJBoss<
>> > > > > > > dotfus...@changethings.org> wrote:
>>
>> > > > > > > > >> > Ok, I've figured it out.
>>
>> > > > > > > > >> > This was absolutely something in Transfer.
>>
>> > > > > > > > >> > In:
>>
>> > > > > > > > >> > transfer.com.sql.QueryExecution
>>
>> > > > > > > > >> > This line:
>>
>> > > > > > > > >> > <cfelseif block.mapparam.type eq "numeric">
>> > > > > > > > >> >        <cfqueryparam value="#value#"
>> > > cfsqltype="cf_sql_float"
>> > > > > > > > >> > list="#param.list#" null="#param.isNull#">
>>
>> > > > > > > > >> > If I replace it with:
>>
>> > > > > > > > >> > <cfelseif block.mapparam.type eq "numeric">
>> > > > > > > > >> >        <cfqueryparam value="#value#"
>> > > cfsqltype="CF_SQL_BIGINT"
>> > > > > > > > >> > list="#param.list#" null="#param.isNull#">
>>
>> > > > > > > > >> > It works. Obviously I can't leave it this way since I have
>> > > other
>> > > > > > > > >> > fields that are not BIGINT and will cause the same problem
>> > > for
>> > > > > those
>> > > > > > > > >> > fields, but this is definitely where the problem is.
>>
>> > > > > > > > >> > So, all numeric values are being set to float.
>>
>> > > > > > > > >> > On Aug 4, 9:52 am, whostheJBoss 
>> > > > > > > > >> > <dotfus...@changethings.org
>>
>> > > > > wrote:
>> > > > > > > > >> >> Yes, please see my examples above.
>>
>> > > > > > > > >> >> Transfer updates the correct record in the correct
>> > > database, it
>> > > > > > > just
>> > > > > > > > >> >> happens to put in the wrong value.
>>
>> > > > > > > > >> >> I know this for sure because I have another field called
>> > > "note"
>> > > > > > > that
>> > > > > > > > >> >> is a text field, and if I change:
>>
>> > > > > > > > >> >> user.setCustomID(1474075992);
>>
>> > > > > > > > >> >> to:
>>
>> > > > > > > > >> >> user.setNote(1474075992);
>>
>> > > > > > > > >> >> It puts the correct value in for the note field. (the
>> > > "note"
>> > > > > field
>> > > > > > > is
>> > > > > > > > >> >> VARCHAR). If I change it back to customID, I get the 
>> > > > > > > > >> >> wrong
>> > > > > value
>> > > > > > > > >> >> again.
>>
>> > > > > > > > >> >> I thought something fishy might be happening, that's why 
>> > > > > > > > >> >> I
>> > > ran
>> > > > > > > another
>> > > > > > > > >> >> query immediately after the Transfer insert by using the
>> > > EXACT
>> > > > > same
>> > > > > > > > >> >> query that the debug showed from Transfer.
>>
>> > > > > > > > >> >> Running the query through <cfquery> inserts correctly,
>> > > running
>> > > > > it
>> > > > > > > > >> >> through Transfer causes the value to be modified.
>>
>> > > > > > > > >> >> Are we certain Transfer works properly with BIGINT?
>>
>> > > > > > > > >> >> So, again, to reiterate so there is no confusion here...
>>
>> > > > > > > > >> >> I run an insert with Transfer and it puts in the wrong
>> > > value,
>> > > > > even
>> > > > > > > > >> >> though the debug output for the query that Transfer
>> > > generates
>>
>> ...
>>
>> read more »
> >
>



-- 
"Nothing says mother's love like a giant robotic platypus butt!"
Phineas and Ferb

Now blogging....
http://www.blivit.org/blog/index.cfm
http://www.blivit.org/mr_urc/index.cfm

--~--~---------~--~----~------------~-------~--~----~
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer

You received this message because you are subscribed to the Google Groups 
"transfer-dev" group.
To post to this group, send email to transfer-dev@googlegroups.com
To unsubscribe from this group, send email to 
transfer-dev-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/transfer-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to