Return-Path: Delivered-To: apmail-incubator-open-jpa-dev-archive@locus.apache.org Received: (qmail 85475 invoked from network); 18 Apr 2007 22:19:42 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 18 Apr 2007 22:19:42 -0000 Received: (qmail 3256 invoked by uid 500); 18 Apr 2007 22:19:48 -0000 Delivered-To: apmail-incubator-open-jpa-dev-archive@incubator.apache.org Received: (qmail 3217 invoked by uid 500); 18 Apr 2007 22:19:48 -0000 Mailing-List: contact open-jpa-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: open-jpa-dev@incubator.apache.org Delivered-To: mailing list open-jpa-dev@incubator.apache.org Received: (qmail 3208 invoked by uid 99); 18 Apr 2007 22:19:48 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Apr 2007 15:19:48 -0700 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: local policy) Received: from [206.190.53.30] (HELO smtp105.plus.mail.re2.yahoo.com) (206.190.53.30) by apache.org (qpsmtpd/0.29) with SMTP; Wed, 18 Apr 2007 15:19:40 -0700 Received: (qmail 6702 invoked from network); 18 Apr 2007 22:19:19 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Received:X-YMail-OSG:Mime-Version:In-Reply-To:References:Content-Type:Message-Id:Content-Transfer-Encoding:From:Subject:Date:To:X-Mailer; b=l5oKtdyzudg6OtANrN/AMQ+vSDn9zhcsTdwTTiHxmIKqdetxFXfrLJ8N7jEiql9f2P5EZ8/SKa9SjfPqS4wQkaPPl8UiwvpraHteawqPs1cPnrD4Bt3wmtjqQvyWU7cgmOhVUNoYipt8za+OaMTIgetzHza8pXBr1aIRKMVUd4w= ; Received: from unknown (HELO ?192.168.0.17?) (david_jencks@64.62.18.244 with plain) by smtp105.plus.mail.re2.yahoo.com with SMTP; 18 Apr 2007 22:19:18 -0000 X-YMail-OSG: 8.Emnf8VM1lA8eE.JMctwiDyey_PQuKcYgsZJwYnJQ1RtG8KY7whV0TSMMS4qOo.YXHGg4wiOHRBl4a2RTJdQvNqaDQjRFIl8pWN63gpq55VzLE9g8kcKgybCKKweDbWLqbdw1opJhq9pVg- Mime-Version: 1.0 (Apple Message framework v752.3) In-Reply-To: <7D856CDFE035FF45A0420ACBD71BDD6303F4F7EF@repbex02.amer.bea.com> References: <13549454.1176916695621.JavaMail.jira@brutus> <01B6BC74-7A8A-46E3-A8F1-E545BCA2AD0A@yahoo.com> <7D856CDFE035FF45A0420ACBD71BDD6303F4F7EF@repbex02.amer.bea.com> Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: <151EFBB6-17AB-464A-A49A-8B26AFBA42C2@yahoo.com> Content-Transfer-Encoding: 7bit From: David Jencks Subject: Re: [jira] Commented: (OPENJPA-221) DerbyDictionary doesn't describe a working mapping for char fields. Date: Wed, 18 Apr 2007 15:19:37 -0700 To: open-jpa-dev@incubator.apache.org X-Mailer: Apple Mail (2.752.3) X-Virus-Checked: Checked by ClamAV on apache.org On Apr 18, 2007, at 11:12 AM, Patrick Linskey wrote: > Hi, > > >> IIUC derby is a pure java db optimized for use with java and >> storing java primitive types basically using java >> serialization. Why would openjpa want to store a char in >> derby as an integer? > > "Because we've always done it that way." Is there a reason why we > should > not be storing chars as numbers? Historically, we've seen problems > with > comparisons and localization issues when storing chars as chars, which > is why we store them as ints by default. Does that mean you store Strings as arrays of integers by default for the same reason? Why is this different? > Based on the fact that you said > that the unit tests fail with Derby with that configuration change, it > sounds like there are some sorts of issues with char mappings in > Derby. The unit tests fail with only the storeCharsAsIntegers=false because the sql for creating the table is invalid. They succeed with the additional patch to create a CHAR(1) column instead of CHAR(255) for a char field. I'm happy to discuss if creating a CHAR(255) column to store a char field is reasonable :-) > > Additionally, since we've always done it that way, changing would mean > backwards-compatibility problems. There aren't any non-incubator openjpa releases yet, so I don't see the problem. I'd also expect that for preexisting tables either an INTEGER or CHAR column would work. > >> Why are the current settings correct, >> despite not working with the obvious char <> CHAR mapping? > > How do you define "not working"? It's my expectation that if the > application behaves as expected, then things are working. It sounds > like > what you're saying is "the default is not what was expected", not that > "things don't work". I expect that if I have a char field in an object and a preexisting table with a CHAR column openjpa will figure out some way to get a char from the field to the column and back again without any additional configuration, for all databases. Admittedly my proposed fix only does this for derby, and by changing the default mapping for chars for derby. I additionally expect that if openjpa creates a schema for me for a database with default utf support it will map a char field to a CHAR column. I wouldn't necessarily expect this for a database that by default doesn't have utf columns. > >> I haven't found the magic setting so I can see what table is >> being created for the unit tests > > openjpa.Log: SQL=TRACE Where would I put this so I could see what the unit tests were doing? I think there are 2 issues here: 1. should openjpa be able to use a preexisting CHAR column for storing a char, no matter what the storeCharsAsInteger setting is? 2. should the settings for derby be storeCharsAsInteger = false or true? (1) is a lot more important, but changing the answer to (2) is easier and solves my immediate problem. thanks david jencks > > -Patrick > > -- > Patrick Linskey > BEA Systems, Inc. > ______________________________________________________________________ > _ > Notice: This email message, together with any attachments, may > contain > information of BEA Systems, Inc., its subsidiaries and > affiliated > entities, that may be confidential, proprietary, copyrighted > and/or > legally privileged, and is intended solely for the use of the > individual > or entity named in this message. If you are not the intended > recipient, > and have received this message in error, please immediately return > this > by email and then delete it. > >> -----Original Message----- >> From: David Jencks [mailto:david_jencks@yahoo.com] >> Sent: Wednesday, April 18, 2007 10:53 AM >> To: open-jpa-dev@incubator.apache.org >> Subject: Re: [jira] Commented: (OPENJPA-221) DerbyDictionary >> doesn't describe a working mapping for char fields. >> >> I'm not understanding something, maybe someone could explain, >> and obviously the comments I suggested in DBDictionary are >> completely wrong, although I sure don't see why. >> >> IIUC derby is a pure java db optimized for use with java and >> storing java primitive types basically using java >> serialization. Why would openjpa want to store a char in >> derby as an integer? Why are the current settings correct, >> despite not working with the obvious char <> CHAR mapping? I >> haven't found the magic setting so I can see what table is >> being created for the unit tests, but I'm pretty sure it >> isn't creating a CHAR column for the char field in the >> allTypes object. >> >> I assumed the problems I ran into were a result of no one >> having tested this code path, but you appear to be saying >> that the current code is more correct than my proposal. I'd >> really like to know why. >> >> On Apr 18, 2007, at 10:18 AM, Patrick Linskey (JIRA) wrote: >> >>> >>> [ https://issues.apache.org/jira/browse/OPENJPA-221? >>> page=com.atlassian.jira.plugin.system.issuetabpanels:comment- >>> tabpanel#action_12489820 ] >>> >>> Patrick Linskey commented on OPENJPA-221: >>> ----------------------------------------- >>> >>> It's not surprising that the OpenJPA tests >> storeCharsAsNumbers to be >>> true. >> >> maybe to you :-) I still find it extremely surprising, and >> can't imagine any reason why you'd want to do this. >>> >>> I was referring to your test environment. Rather than changing the >>> default behavior of the DerbyDictionary in code, it seems more >>> appropriate to use the built-in configuration option to >> toggle it for >>> your application. >>> >>> It sounds like you're reluctant to do this since you don't >> have easy >>> access to modify the persistence.xml files. Happily, if you drop a >>> file conforming to the persistence.xml schema into META-INF/ >>> openjpa.xml, OpenJPA will load the settings in the >> properties in the >>> first PU in that file as defaults for all PUs. >>> >>> What happens if you put the DBDictionary stanza that I mentioned >>> earlier into a META-INF/openjpa.xml file? >> >> Won't this change the behavior for all databases, not just >> the derby dictionary? I'd prefer to >> >> (a) understand why these settings as are they are >> (b) make all the db-specific dictionaries work unmodified >> with all reasonable mappings. >> >> thanks >> david jencks >> >> >>> >>>> DerbyDictionary doesn't describe a working mapping for char fields. >>>> ------------------------------------------------------------------- >>>> >>>> Key: OPENJPA-221 >>>> URL: https://issues.apache.org/jira/browse/ >>>> OPENJPA-221 >>>> Project: OpenJPA >>>> Issue Type: Bug >>>> Components: sql >>>> Affects Versions: 0.9.7 >>>> Reporter: David Jencks >>>> Attachments: OPENJPA-221.patch >>>> >>>> >>>> If a class has a char field mapped to CHAR or CHAR(1) in a derby >>>> database, the derby dictionary sets up a mapping to an >> integer column >>>> which doesn't work. openjpa tries to store e.g. the >> string "97" for >>>> the char 'a' which results in a truncation error. >>> >>> -- >>> This message is automatically generated by JIRA. >>> - >>> You can reply to this email to add a comment to the issue online. >>> >> >> > > Notice: This email message, together with any attachments, may > contain information of BEA Systems, Inc., its subsidiaries > and affiliated entities, that may be confidential, proprietary, > copyrighted and/or legally privileged, and is intended solely for > the use of the individual or entity named in this message. If you > are not the intended recipient, and have received this message in > error, please immediately return this by email and then delete it.