Okay, thanks, Mark. I'll hold off for now, but if I have some time, I
may try to hack just a little further to get things working w/
PostgreSQL 8.3. I'm just concerned that after I address the current
error, I'll hit another, and then another... Not sure how long of a
thread I'd be pulling! Can you give me your best guess as to how much
digging I may have to do to ensure the PostgreSQL UUID data type
doesn't make my Transfer implementation error out?

Thanks!
Jamie

On Nov 11, 4:38 pm, "Mark Mandel" <[EMAIL PROTECTED]> wrote:
> There is an enhancement in the tracker to allow you to extend property
> definitions to use your own custom query params, with prefixes,
> suffixes, etc
>
> http://tracker.transfer-orm.com/issue.cfm?p=89977683-A728-9CD3-ABD954...
>
> It has yet to be implemented.
>
> Mark
>
> On Wed, Nov 12, 2008 at 1:29 AM, Jamie Krug <[EMAIL PROTECTED]> wrote:
>
> > Sorry in advance for a lengthy one...
>
> > Using the UUID data type in PostgreSQL 8.3 (http://www.postgresql.org/
> > docs/8.3/interactive/datatype-uuid.html) is problematic with
> > cfqueryparam. There is no explicit cfsqltype, and using cf_sql_varchar
> > will cause the following error when attempting a query like this:
>
> > select * from my_table
> > where my_uuid=<cfqueryparam value="#my_uuid_value"
> > cfsqltype="cf_sql_varchar" />
>
> > org.postgresql.util.PSQLException: ERROR: operator does not exist:
> > uuid = character varying
>
> > I stumbled upon this post, which fixes a similar issue regarding the
> > interval data type:
> >http://www.ghidinelli.com/2007/06/14/postgresql-interval-data-type-wi...
> > (Here's the important part:)
> > UPDATE table
> > SET someInterval = <cfqueryparam cfsqltype="cf_sql_varchar"
> > value="#interalValue#">::interval
>
> > So I tried sticking a "::uuid" on the end of my cfqueryparam and it
> > works! (But don't stop reading now, I found another solution and then
> > another problem...)
>
> > By the way, I should note that I'm using property type "GUID" in my
> > Transfer configuration file, not UUID, even though that is the
> > PostgreSQL data type name. The standard output format used by
> > PostgreSQL for UUID data type matches what is considered GUID format
> > in a Transfer property type.
>
> > I couldn't find any mention of this issue on this list or noted in the
> > Transfer issue tracker, but please let me know if I've missed
> > something.
>
> > So, I thought I had a quick fix... I believe I've identified all
> > relevant cfqueryparam instances in the Transfer 1.1 code (just 4 of
> > them, in 3 files). I saved the diff/patch for the fix if anyone cares.
> > It's just a conditional at the end of the cfqueryparam tags used for
> > Transfer property types that currently result in use of
> > cfsqltype="cf_sql_varchar". This made things work for simple object
> > definitions (no onetomany/manytoone/manytomany relationships).
>
> > A less quirky solution to the cfqueryparam/uuid issue is to simply
> > download the latest PostgreSQL JDBC drivers, replace your current .jar
> > file and restart CF (got this idea from
> >http://jochem.vandieten.net/2008/02/06/postgresql-uuids-and-coldfusio...).
> > I downloaded postgresql-8.3-603.jdbc4.jar 
> > fromhttp://jdbc.postgresql.org/download.html,
> > placed it in the proper directory, renamed the existing
> > postgresql-8.1-407.jdbc4.jar to postgresql-8.1-407.jdbc4.jar.BAK and
> > restarted CF. (To find your existing postgre driver path click on the
> > "I" icon for System Information in CF Admin and find "postgre" on the
> > page -- my default install location for CF8.01 multiple server
> > configuration on Linux is /opt/jrun4/servers/cfusion/cfusion-ear/
> > cfusion-war/WEB-INF/cfusion/lib/). I can now use cfqueryparam with
> > cfsqltype="cf_sql_other" for PostgreSQL UUID data type columns. I also
> > tried this fix in the Transfer code, but still ran into another
> > issue...
>
> > Unfortunately, the above solutions only worked with simple Transfer
> > object definitions. As soon as I added a onetomany to a basic object
> > definition, I received a new error, which also appears to be a type/
> > cast inconsistency issue:
>
> > ERROR: UNION types text and integer cannot be matched
>
> > It looks like a CAST(text as NULL) in one part of a UNION is matched
> > up with an actual column value of data type UUID, which throws the
> > above error. I haven't dug nearly deep enough into the Transfer code
> > to know if this is Transfer-related, or just a compatibility issue
> > between PostgreSQL 8.3 and ColdFusion 8.01 (or more likely, the driver
> > included w/CF). I've pasted details of my environment, relevant
> > Transfer config snippets and more details from the error output at the
> > bottom of this message.
>
> > My config in this case is very much like the basic idea of a Post
> > object with a onetomany to Comment, as in the tBlog sample
> > application, only I'm using PostgreSQL 8.3 UUID data types for primary
> > keys instead of numeric.
>
> > My immediate goal is to get this relatively small project moving
> > quickly, so I'm trying to discern whether I should try to work around
> > the use of UUID data types, not use UUID, not use Transfer (this is my
> > first real dive in and was excited until this) until I figure the UUID
> > stuff out, etc. To keep things moving here, I may have to leave out
> > Transfer, temporarily, for this app.
>
> > Has anyone else tackled this problem? Others using PostgreSQL with
> > Transfer, maybe an older version? Is PostgreSQL 8.3 support in the
> > Transfer road map yet? Any feedback would be much appreciated.
>
> > Thanks,
> > Jamie
>
> > *Dev environment:*
>
> > Transfer 1.1 (final)
> > ColdFusion 8.01, multiple server (JRun) configuration
> > PostgreSQL 8.3.3
> > Ubuntu 8.04
> > Apache 2.2
>
> > *Relevant snippets from my transfer.xml:*
>
> >          <package name="page">
> >              <object name="Page" table="page">
> >                  <id name="idpage" type="GUID" />
> >                  <property name="isActive" type="boolean"
> > column="is_active" />
> >                  <property name="href" type="string" column="href" />
> >                  <property name="anchorText" type="string"
> > column="anchor_text" />
> >                  <property name="anchorTitle" type="string"
> > column="anchor_title" />
> >                  <onetomany name="ContentPage">
> >                    <link to="content.ContentPage" column="idpage" />
> >                    <collection type="array">
> >                        <order property="IDContent_Page" order="asc" /
>
> >                    </collection>
> >                </onetomany>
> >              </object>
> >          </package>
> >          <package name="content">
> >              <object name="Content" table="content">
> >                  <id name="idcontent" type="GUID" />
> >                  <property name="content" type="string"
> > column="content" />
> >              </object>
> >              <object name="ContentPage" table="content_page">
> >                  <id name="idcontent_page" type="GUID" />
> >                  <property name="title" type="string" column="title" /
>
> >                  <property name="description" type="string"
> > column="description" />
> >                  <property name="keywords" type="string"
> > column="keywords" />
> >                  <manytoone name="Content">
> >                    <link to="content.Content" column="idcontent" />
> >                  </manytoone>
> >              </object>
> >              <object name="ContentSnippet" table="content_snippet">
> >                  <id name="idcontent_snippet" type="GUID" />
> >                  <property name="friendlyID" type="string"
> > column="friendly_id" />
> >                  <manytoone name="Content">
> >                    <link to="content.Content" column="idcontent"/>
> >                  </manytoone>
> >              </object>
> >          </package>
>
> > *Test code:*
>
> > <cfscript>
> >    transferConfig = structNew();
> >    transferConfig["datasourcePath"] = "/temp/config/transfer/
> > datasource.xml";
> >    transferConfig["configPath"] = "/temp/config/transfer/
> > transfer.xml";
> >    transferConfig["definitionPath"] = "/temp/model/data/transfer";
> >    transferFactory =
> > createObject("component","transfer.TransferFactory").init(argumentCollection=transferConfig);
> >    transfer = transferFactory.getTransfer();
> >    page = transfer.get('page.Page', '7a85e8c7-ebb7-
> > f962-0fe4-6043ce7e6721');
> > </cfscript>
> > <cfdump var="#page#" />
>
> > *Error output:*
>
> > Error Executing Database Query.
> > ERROR: UNION types text and uuid cannot be matched
>
> > The error occurred in /home/jkrug/www/common/transfer/com/sql/
> > QueryExecution.cfc: line 82
> > Called from /home/jkrug/www/common/transfer/com/sql/
> > TransferSelecter.cfc: line 53
> > Called from /home/jkrug/www/common/transfer/com/sql/SQLManager.cfc:
> > line 87
> > Called from /home/jkrug/www/common/transfer/com/dynamic/
> > TransferPopulator.cfc: line 50
> > Called from /home/jkrug/www/common/transfer/com/dynamic/
> > DynamicManager.cfc: line 72
> > Called from /home/jkrug/www/common/transfer/com/Transfer.cfc: line 120
> > Called from /home/jkrug/www/temp/scribble.cfm: line 10
> > Called from /home/jkrug/www/common/transfer/com/sql/
> > QueryExecution.cfc: line 82
> > Called from /home/jkrug/www/common/transfer/com/sql/
> > TransferSelecter.cfc: line 53
> > Called from /home/jkrug/www/common/transfer/com/sql/SQLManager.cfc:
> > line 87
> > Called from /home/jkrug/www/common/transfer/com/dynamic/
> > TransferPopulator.cfc: line 50
> > Called from /home/jkrug/www/common/transfer/com/dynamic/
> > DynamicManager.cfc: line 72
> > Called from /home/jkrug/www/common/transfer/com/Transfer.cfc: line 120
> > Called from /home/jkrug/www/temp/scribble.cfm: line 10
>
> > 80 :         <cfquery name="queryValue"
> > datasource="#getDataSource().getName()#"
> > username="#getDataSource().getUsername()#"
> > password="#getDataSource().getPassword()#">
> > 81 :             <cfset eLen = ArrayLen(evaluation) />
> > 82 :             <cfloop from="1" to="#eLen#" index="eCounter">
> > 83 :                 <cfset block = evaluation[eCounter] />
> > 84 :                 #PreserveSingleQuotes(block.preSQL)#
>
> > SQLSTATE       42804
> > SQL       SELECT page_1.href, page_1.idpage, Cast(NULL as text) as
> > idcontent_page, Cast(NULL as text) as content, Cast(NULL as text) as
> > description, Cast(NULL as text) as idcontent, Cast(NULL as text) as
> > title, page_1.is_active, Cast(NULL as text) as keywords,
> > page_1.anchor_title, page_1.anchor_text, Cast(NULL as text) as
> > transfer_parentKey, 1 as transfer_orderIndex,'page.Page' as
> > transfer_className,'' as transfer_parentClassName,'' as
> > transfer_parentParentClassName,'' as
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/transfer-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to