Am 09.11.2011 um 22:45 schrieb John Huss:

> You need to create a pull request on github.

I never did that, I never used git and I currently have no time to acquire that 
knowledge. Can somebody else please do that instead?

> 
> On Wed, Nov 9, 2011 at 1:41 PM, Lars Sonchocky-Helldorf 
> <[email protected]> wrote:
> 
> Am 08.11.2011 um 20:56 schrieb Lars Sonchocky-Helldorf:
> 
> > Hi folks!
> >
> >
> > For reason not to be discussed here my coworker has created a PostgreSQL 9 
> > database table like follows:
> >
> > CREATE TABLE systemmessagecontent
> > (
> >  id integer NOT NULL,
> >  "language" character(2) NOT NULL,
> >  message text NOT NULL,
> >  subject character varying(255) NOT NULL,
> >  systemmessageid integer NOT NULL,
> >  CONSTRAINT systemmessagecontent_pkey PRIMARY KEY (id),
> >  CONSTRAINT systemmessagecontent_systemmessage_fk FOREIGN KEY 
> > (systemmessageid)
> >      REFERENCES systemmessage (id) MATCH SIMPLE
> >      ON UPDATE NO ACTION ON DELETE NO ACTION
> > )
> >
> > The interesting point here is column "language" which is a two character 
> > fixed string.
> >
> > In the corresponding EOModel the property for this has "char" as External 
> > Type and an External Width of 2 and no prototype (since there is nothing 
> > matching).
> >
> >
> >
> > When running the application and trying to update that property/column the 
> > following SQL is generated:
> >
> > Nov 08 18:28:34 BKAdmin[55555] DEBUG NSLog  -  === Begin Internal 
> > Transaction
> > Nov 08 18:28:34 BKAdmin[55555] DEBUG NSLog  -  evaluateExpression: 
> > <com.webobjects.jdbcadaptor.PostgresqlExpression: "UPDATE 
> > SystemMessageContent SET language = ?::char WHERE (id = ?::int4 AND 
> > systemMessageID = ?::int4)" withBindings: 1:"de"(language), 2:28(id), 
> > 3:48(systemMessageID)>
> > Nov 08 18:28:34 BKAdmin[55555] DEBUG NSLog  -  === Commit Internal 
> > Transaction
> >
> > Remarkable here is the "?::char" Obviously this is a cast into a single 
> > character type of PostgreSQL.
> >
> > see http://www.postgresql.org/docs/9.1/interactive/datatype-character.html 
> > table 8-5 for this.
> >
> >
> >
> > Correct would have been to use character(2) or char(2) as my tests with 
> > PGAdmin revealed:
> >
> > At first I fired the following SQL:
> >
> > UPDATE SystemMessageContent SET language = 'de'::char WHERE (id = 28::int4 
> > AND systemMessageID = 48::int4)
> >
> > The result was the same like the one from the WOApp itself, after updating 
> > the database contained this: "d "
> >
> >
> > When I changed the query accordingly ('de'::char to 'de'::char(2)) I got 
> > what I expected:
> >
> > UPDATE SystemMessageContent SET language = 'de'::char(2) WHERE (id = 
> > 28::int4 AND systemMessageID = 48::int4)
> >
> > After this the database  contained a "de".
> >
> >
> > Trying to use "char(2)" as External Type in my EOModel (instead of "char") 
> > I've got the following exception:
> >
> > Nov 08 18:40:36 BKAdmin[55555] WARN  NSLog  - *** JDBCAdaptor : no type 
> > info found for char(2)
> > Nov 08 18:40:36 BKAdmin[55555] DEBUG NSLog  -  === Begin Internal 
> > Transaction
> > Nov 08 18:46:49 BKAdmin[55555] INFO  er.transaction.adaptor.Exceptions  - 
> > Database Exception occured: 
> > com.webobjects.eoaccess.EOGeneralAdaptorException: Unable to find type 
> > information for external type 'char(2)' in attribute 'language' of entity 
> > 'SystemMessageContent'.  Check spelling and capitalization.
> >
> >
> > Now I think that maybe "char" was the right External Type to begin with. 
> > Only the JDBCAdaptor did not respect the external with of "2" and did not 
> > mangle "char" into "char(2)"
> >
> >
> > Is there something I can do about this?
> 
> Adding the following to PostgresqlPlugIn.framework/Resources/JDBCInfo.plist:
> 
>                "character" = {
>                        "defaultJDBCType" = (
>                                "CHAR"
>                        );
>                        "createParams" = "1";
>                        "maxScale" = "0";
>                        "minScale" = "0";
>                        "isNullable" = "T";
>                        "isSearchable" = "T";
>                        "precision" = "10485760";
>                };
> 
> and setting "character" as External Type in the corresponding EOModel did 
> help.
> 
> The result then is:
> 
> Nov 09 13:13:18 BKAdmin[55555] DEBUG NSLog  -  === Begin Internal Transaction
> Nov 09 13:13:18 BKAdmin[55555] DEBUG NSLog  -  evaluateExpression: 
> <com.webobjects.jdbcadaptor.PostgresqlExpression: "UPDATE 
> SystemMessageContent SET language = ?::character(2) WHERE (id = ?::int4 AND 
> systemMessageID = ?::int4)" withBindings: 1:"de"(language), 2:28(id), 
> 3:48(systemMessageID)>
> Nov 09 13:13:18 BKAdmin[55555] DEBUG NSLog  -  === Commit Internal Transaction
> 
> Could somebody with commit access to the PostgresqlPlugIn.framework please 
> add this code upstream?
> 
> 
> 
> cheers,
> 
>        Lars _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/johnthuss%40gmail.com
> 
> This email sent to [email protected]
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to