You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cayenne.apache.org by Michael Gentry <bl...@gmail.com> on 2008/04/24 15:16:12 UTC

Enums as PK?

Andrus, I'm going to send you a test I just did via e-mail since the
list doesn't support attachments.  Enums as PKs worked for me.  What
issue were you seeing?

Thanks,

/dev/mrg

Re: Enums as PK?

Posted by Andrus Adamchik <an...@objectstyle.org>.
Cool, I'll close the Jira and keep an eye on it.

Andrus

On Apr 25, 2008, at 5:01 PM, Michael Gentry wrote:

> I just did a simple test using the enum PK in a relationship.  I
> inserted, queried, and deleted an object pointing to the reference
> table.  All worked fine except one cosmetic glitch:
>
> SELECT t0.state_fk, t0.first_name, t0.last_name, t0.pk FROM test_peeps
> t0, test_enums t1 WHERE t0.state_fk = t1.state AND (t1.state = ?)
> [bind: 1->state:test.State@4084820]
>
> The bind should show the actual enum value.  This is with M3, though.
>
> With the current trunk:
>
> SELECT t0.state_fk, t0.first_name, t0.last_name, t0.pk FROM test_peeps
> t0, test_enums t1 WHERE t0.state_fk = t1.state AND (t1.state = ?)
> [bind: 1->state:VA=7]
>
> So, the state gets cleaned up in the current build, which is what I
> was hoping since I had changed the enum logging code (the 7 is the
> ordinal position and the value it would be if mapped to an integer in
> the DB).  Switching to the extended enumerations gives:
>
> SELECT t0.state_fk, t0.first_name, t0.last_name, t0.pk FROM test_peeps
> t0, test_enums t1 WHERE t0.state_fk = t1.state AND (t1.state = ?)
> [bind: 1->state:VIRGINIA='VA']
>
> So ... I'm thinking it is OK.
>
>
>
> On Thu, Apr 24, 2008 at 10:19 AM, Andrus Adamchik
> <an...@objectstyle.org> wrote:
>> That's the thing - I opened that Jira as a note to self without doing
>> immediate deeper investigation. So now I don't recall the exact  
>> details. :-)
>>
>> As for relationships, ideally it should work ... of course ... But  
>> since FK
>> is not an ObjAttribute, it may get translated incorrectly when a  
>> related
>> to-one fault ObjectId is instantiated. That would be a bug of course.
>>
>> Andrus
>>
>>
>>
>> On Apr 24, 2008, at 5:14 PM, Michael Gentry wrote:
>>
>>
>>> I didn't try doing a relationship using the enum in the join.  Did
>>> you?  I can try that, too, but I believe all of the translation code
>>> goes through the same routines, so it should work there, too.
>>>
>>> Thanks,
>>>
>>> /dev/mrg
>>>
>>>
>>> On Thu, Apr 24, 2008 at 10:11 AM, Andrus Adamchik
>>> <an...@objectstyle.org> wrote:
>>>
>>>> Yeah, your example works in all combinations of M3/trunk and  
>>>> Extended
>> enum
>>>> vs. Java enum... I guess there was some other thing in my project  
>>>> (that
>> I
>>>> since remapped as String) that made it blow... I can think of two  
>>>> things
>> -
>>>> relationships and inheritance. I am pretty sure inheritance wasn't
>> involved.
>>>> So it was probably an issue similar to this:
>>>>
>>>> https://issues.apache.org/cayenne/browse/CAY-1034
>>>>
>>>> I guess we can close CAY-1014 and see if we can improve  
>>>> relationship
>>>> validation...
>>>>
>>>> Andrus
>>>>
>>>>
>>>>
>>>>
>>>> On Apr 24, 2008, at 4:35 PM, Michael Gentry wrote:
>>>>
>>>>
>>>>> Hmm, I used the ExtendedEnumerations which aren't in M3.  When I
>>>>> changed my State class to look like:
>>>>>
>>>>> public enum State
>>>>> {
>>>>> AL, AK, AR, AZ, DC, MD, TN, VA;
>>>>> }
>>>>>
>>>>> It still worked with M3.
>>>>>
>>>>>
>>>>> On Thu, Apr 24, 2008 at 9:22 AM, Michael Gentry <blacknext@gmail.com 
>>>>> >
>>>>>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>>> Sorry, already sent the attachment.  Nothing sensitive in it,  
>>>>>> though
>>>>>> (custom test db/table).
>>>>>>
>>>>>> Let me see if I have M3 lying around and I'll try it.
>>>>>>
>>>>>> /dev/mrg
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Apr 24, 2008 at 9:19 AM, Andrus Adamchik
>>>>>>
>>>>>
>>>> <an...@objectstyle.org> wrote:
>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>> Sure, or you can attach it to CAY-1014 if you don't have any
>> sensitive
>>>>>>>
>>>>>>
>>>>>
>>>> info
>>>>
>>>>>
>>>>>>
>>>>>>> in it.
>>>>>>>
>>>>>>> Wonder if my related fix had any effect on this? Could you try  
>>>>>>> it
>> with
>>>>>>>
>>>>>>
>>>>>
>>>> M3
>>>>
>>>>>
>>>>>>
>>>>>>> if possible?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Andrus
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Apr 24, 2008, at 4:16 PM, Michael Gentry wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Andrus, I'm going to send you a test I just did via e-mail  
>>>>>>>> since
>> the
>>>>>>>> list doesn't support attachments.  Enums as PKs worked for me.
>> What
>>>>>>>> issue were you seeing?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> /dev/mrg
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>


Re: Enums as PK?

Posted by Michael Gentry <bl...@gmail.com>.
I just did a simple test using the enum PK in a relationship.  I
inserted, queried, and deleted an object pointing to the reference
table.  All worked fine except one cosmetic glitch:

SELECT t0.state_fk, t0.first_name, t0.last_name, t0.pk FROM test_peeps
t0, test_enums t1 WHERE t0.state_fk = t1.state AND (t1.state = ?)
[bind: 1->state:test.State@4084820]

The bind should show the actual enum value.  This is with M3, though.

With the current trunk:

SELECT t0.state_fk, t0.first_name, t0.last_name, t0.pk FROM test_peeps
t0, test_enums t1 WHERE t0.state_fk = t1.state AND (t1.state = ?)
[bind: 1->state:VA=7]

So, the state gets cleaned up in the current build, which is what I
was hoping since I had changed the enum logging code (the 7 is the
ordinal position and the value it would be if mapped to an integer in
the DB).  Switching to the extended enumerations gives:

SELECT t0.state_fk, t0.first_name, t0.last_name, t0.pk FROM test_peeps
t0, test_enums t1 WHERE t0.state_fk = t1.state AND (t1.state = ?)
[bind: 1->state:VIRGINIA='VA']

So ... I'm thinking it is OK.



On Thu, Apr 24, 2008 at 10:19 AM, Andrus Adamchik
<an...@objectstyle.org> wrote:
> That's the thing - I opened that Jira as a note to self without doing
> immediate deeper investigation. So now I don't recall the exact details. :-)
>
>  As for relationships, ideally it should work ... of course ... But since FK
> is not an ObjAttribute, it may get translated incorrectly when a related
> to-one fault ObjectId is instantiated. That would be a bug of course.
>
>  Andrus
>
>
>
>  On Apr 24, 2008, at 5:14 PM, Michael Gentry wrote:
>
>
> > I didn't try doing a relationship using the enum in the join.  Did
> > you?  I can try that, too, but I believe all of the translation code
> > goes through the same routines, so it should work there, too.
> >
> > Thanks,
> >
> > /dev/mrg
> >
> >
> > On Thu, Apr 24, 2008 at 10:11 AM, Andrus Adamchik
> > <an...@objectstyle.org> wrote:
> >
> > > Yeah, your example works in all combinations of M3/trunk and Extended
> enum
> > > vs. Java enum... I guess there was some other thing in my project (that
> I
> > > since remapped as String) that made it blow... I can think of two things
> -
> > > relationships and inheritance. I am pretty sure inheritance wasn't
> involved.
> > > So it was probably an issue similar to this:
> > >
> > > https://issues.apache.org/cayenne/browse/CAY-1034
> > >
> > > I guess we can close CAY-1014 and see if we can improve relationship
> > > validation...
> > >
> > > Andrus
> > >
> > >
> > >
> > >
> > > On Apr 24, 2008, at 4:35 PM, Michael Gentry wrote:
> > >
> > >
> > > > Hmm, I used the ExtendedEnumerations which aren't in M3.  When I
> > > > changed my State class to look like:
> > > >
> > > > public enum State
> > > > {
> > > > AL, AK, AR, AZ, DC, MD, TN, VA;
> > > > }
> > > >
> > > > It still worked with M3.
> > > >
> > > >
> > > > On Thu, Apr 24, 2008 at 9:22 AM, Michael Gentry <bl...@gmail.com>
> > > >
> > > wrote:
> > >
> > > >
> > > >
> > > > > Sorry, already sent the attachment.  Nothing sensitive in it, though
> > > > > (custom test db/table).
> > > > >
> > > > > Let me see if I have M3 lying around and I'll try it.
> > > > >
> > > > > /dev/mrg
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > On Thu, Apr 24, 2008 at 9:19 AM, Andrus Adamchik
> > > > >
> > > >
> > > <an...@objectstyle.org> wrote:
> > >
> > > >
> > > > >
> > > > >
> > > > > > Sure, or you can attach it to CAY-1014 if you don't have any
> sensitive
> > > > > >
> > > > >
> > > >
> > > info
> > >
> > > >
> > > > >
> > > > > > in it.
> > > > > >
> > > > > > Wonder if my related fix had any effect on this? Could you try it
> with
> > > > > >
> > > > >
> > > >
> > > M3
> > >
> > > >
> > > > >
> > > > > > if possible?
> > > > > >
> > > > > > Thanks,
> > > > > > Andrus
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Apr 24, 2008, at 4:16 PM, Michael Gentry wrote:
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > > Andrus, I'm going to send you a test I just did via e-mail since
> the
> > > > > > > list doesn't support attachments.  Enums as PKs worked for me.
> What
> > > > > > > issue were you seeing?
> > > > > > >
> > > > > > > Thanks,
> > > > > > >
> > > > > > > /dev/mrg
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> >
> >
>
>

Re: Enums as PK?

Posted by Andrus Adamchik <an...@objectstyle.org>.
That's the thing - I opened that Jira as a note to self without doing  
immediate deeper investigation. So now I don't recall the exact  
details. :-)

As for relationships, ideally it should work ... of course ... But  
since FK is not an ObjAttribute, it may get translated incorrectly  
when a related to-one fault ObjectId is instantiated. That would be a  
bug of course.

Andrus

On Apr 24, 2008, at 5:14 PM, Michael Gentry wrote:

> I didn't try doing a relationship using the enum in the join.  Did
> you?  I can try that, too, but I believe all of the translation code
> goes through the same routines, so it should work there, too.
>
> Thanks,
>
> /dev/mrg
>
>
> On Thu, Apr 24, 2008 at 10:11 AM, Andrus Adamchik
> <an...@objectstyle.org> wrote:
>> Yeah, your example works in all combinations of M3/trunk and  
>> Extended enum
>> vs. Java enum... I guess there was some other thing in my project  
>> (that I
>> since remapped as String) that made it blow... I can think of two  
>> things -
>> relationships and inheritance. I am pretty sure inheritance wasn't  
>> involved.
>> So it was probably an issue similar to this:
>>
>> https://issues.apache.org/cayenne/browse/CAY-1034
>>
>> I guess we can close CAY-1014 and see if we can improve relationship
>> validation...
>>
>> Andrus
>>
>>
>>
>>
>> On Apr 24, 2008, at 4:35 PM, Michael Gentry wrote:
>>
>>> Hmm, I used the ExtendedEnumerations which aren't in M3.  When I
>>> changed my State class to look like:
>>>
>>> public enum State
>>> {
>>> AL, AK, AR, AZ, DC, MD, TN, VA;
>>> }
>>>
>>> It still worked with M3.
>>>
>>>
>>> On Thu, Apr 24, 2008 at 9:22 AM, Michael Gentry  
>>> <bl...@gmail.com>
>> wrote:
>>>
>>>> Sorry, already sent the attachment.  Nothing sensitive in it,  
>>>> though
>>>> (custom test db/table).
>>>>
>>>> Let me see if I have M3 lying around and I'll try it.
>>>>
>>>> /dev/mrg
>>>>
>>>>
>>>>
>>>>
>>>> On Thu, Apr 24, 2008 at 9:19 AM, Andrus Adamchik
>> <an...@objectstyle.org> wrote:
>>>>
>>>>> Sure, or you can attach it to CAY-1014 if you don't have any  
>>>>> sensitive
>> info
>>>>> in it.
>>>>>
>>>>> Wonder if my related fix had any effect on this? Could you try  
>>>>> it with
>> M3
>>>>> if possible?
>>>>>
>>>>> Thanks,
>>>>> Andrus
>>>>>
>>>>>
>>>>>
>>>>> On Apr 24, 2008, at 4:16 PM, Michael Gentry wrote:
>>>>>
>>>>>
>>>>>
>>>>>> Andrus, I'm going to send you a test I just did via e-mail  
>>>>>> since the
>>>>>> list doesn't support attachments.  Enums as PKs worked for me.   
>>>>>> What
>>>>>> issue were you seeing?
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> /dev/mrg
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>


Re: Enums as PK?

Posted by Michael Gentry <bl...@gmail.com>.
I didn't try doing a relationship using the enum in the join.  Did
you?  I can try that, too, but I believe all of the translation code
goes through the same routines, so it should work there, too.

Thanks,

/dev/mrg


On Thu, Apr 24, 2008 at 10:11 AM, Andrus Adamchik
<an...@objectstyle.org> wrote:
> Yeah, your example works in all combinations of M3/trunk and Extended enum
> vs. Java enum... I guess there was some other thing in my project (that I
> since remapped as String) that made it blow... I can think of two things -
> relationships and inheritance. I am pretty sure inheritance wasn't involved.
> So it was probably an issue similar to this:
>
>  https://issues.apache.org/cayenne/browse/CAY-1034
>
>  I guess we can close CAY-1014 and see if we can improve relationship
> validation...
>
>  Andrus
>
>
>
>
>  On Apr 24, 2008, at 4:35 PM, Michael Gentry wrote:
>
> > Hmm, I used the ExtendedEnumerations which aren't in M3.  When I
> > changed my State class to look like:
> >
> > public enum State
> > {
> >  AL, AK, AR, AZ, DC, MD, TN, VA;
> > }
> >
> > It still worked with M3.
> >
> >
> > On Thu, Apr 24, 2008 at 9:22 AM, Michael Gentry <bl...@gmail.com>
> wrote:
> >
> > > Sorry, already sent the attachment.  Nothing sensitive in it, though
> > > (custom test db/table).
> > >
> > > Let me see if I have M3 lying around and I'll try it.
> > >
> > > /dev/mrg
> > >
> > >
> > >
> > >
> > > On Thu, Apr 24, 2008 at 9:19 AM, Andrus Adamchik
> <an...@objectstyle.org> wrote:
> > >
> > > > Sure, or you can attach it to CAY-1014 if you don't have any sensitive
> info
> > > > in it.
> > > >
> > > > Wonder if my related fix had any effect on this? Could you try it with
> M3
> > > > if possible?
> > > >
> > > > Thanks,
> > > > Andrus
> > > >
> > > >
> > > >
> > > > On Apr 24, 2008, at 4:16 PM, Michael Gentry wrote:
> > > >
> > > >
> > > >
> > > > > Andrus, I'm going to send you a test I just did via e-mail since the
> > > > > list doesn't support attachments.  Enums as PKs worked for me.  What
> > > > > issue were you seeing?
> > > > >
> > > > > Thanks,
> > > > >
> > > > > /dev/mrg
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>

Re: Enums as PK?

Posted by Andrus Adamchik <an...@objectstyle.org>.
Yeah, your example works in all combinations of M3/trunk and Extended  
enum vs. Java enum... I guess there was some other thing in my project  
(that I since remapped as String) that made it blow... I can think of  
two things - relationships and inheritance. I am pretty sure  
inheritance wasn't involved. So it was probably an issue similar to  
this:

https://issues.apache.org/cayenne/browse/CAY-1034

I guess we can close CAY-1014 and see if we can improve relationship  
validation...

Andrus


On Apr 24, 2008, at 4:35 PM, Michael Gentry wrote:
> Hmm, I used the ExtendedEnumerations which aren't in M3.  When I
> changed my State class to look like:
>
> public enum State
> {
>  AL, AK, AR, AZ, DC, MD, TN, VA;
> }
>
> It still worked with M3.
>
>
> On Thu, Apr 24, 2008 at 9:22 AM, Michael Gentry  
> <bl...@gmail.com> wrote:
>> Sorry, already sent the attachment.  Nothing sensitive in it, though
>> (custom test db/table).
>>
>> Let me see if I have M3 lying around and I'll try it.
>>
>> /dev/mrg
>>
>>
>>
>>
>> On Thu, Apr 24, 2008 at 9:19 AM, Andrus Adamchik <andrus@objectstyle.org 
>> > wrote:
>>> Sure, or you can attach it to CAY-1014 if you don't have any  
>>> sensitive info
>>> in it.
>>>
>>> Wonder if my related fix had any effect on this? Could you try it  
>>> with M3
>>> if possible?
>>>
>>> Thanks,
>>> Andrus
>>>
>>>
>>>
>>> On Apr 24, 2008, at 4:16 PM, Michael Gentry wrote:
>>>
>>>
>>>> Andrus, I'm going to send you a test I just did via e-mail since  
>>>> the
>>>> list doesn't support attachments.  Enums as PKs worked for me.   
>>>> What
>>>> issue were you seeing?
>>>>
>>>> Thanks,
>>>>
>>>> /dev/mrg
>>>>
>>>>
>>>
>>>
>>
>


Re: Enums as PK?

Posted by Michael Gentry <bl...@gmail.com>.
Hmm, I used the ExtendedEnumerations which aren't in M3.  When I
changed my State class to look like:

public enum State
{
  AL, AK, AR, AZ, DC, MD, TN, VA;
}

It still worked with M3.


On Thu, Apr 24, 2008 at 9:22 AM, Michael Gentry <bl...@gmail.com> wrote:
> Sorry, already sent the attachment.  Nothing sensitive in it, though
>  (custom test db/table).
>
>  Let me see if I have M3 lying around and I'll try it.
>
>  /dev/mrg
>
>
>
>
>  On Thu, Apr 24, 2008 at 9:19 AM, Andrus Adamchik <an...@objectstyle.org> wrote:
>  > Sure, or you can attach it to CAY-1014 if you don't have any sensitive info
>  > in it.
>  >
>  >  Wonder if my related fix had any effect on this? Could you try it with M3
>  > if possible?
>  >
>  >  Thanks,
>  >  Andrus
>  >
>  >
>  >
>  >  On Apr 24, 2008, at 4:16 PM, Michael Gentry wrote:
>  >
>  >
>  > > Andrus, I'm going to send you a test I just did via e-mail since the
>  > > list doesn't support attachments.  Enums as PKs worked for me.  What
>  > > issue were you seeing?
>  > >
>  > > Thanks,
>  > >
>  > > /dev/mrg
>  > >
>  > >
>  >
>  >
>

Re: Enums as PK?

Posted by Michael Gentry <bl...@gmail.com>.
Sorry, already sent the attachment.  Nothing sensitive in it, though
(custom test db/table).

Let me see if I have M3 lying around and I'll try it.

/dev/mrg


On Thu, Apr 24, 2008 at 9:19 AM, Andrus Adamchik <an...@objectstyle.org> wrote:
> Sure, or you can attach it to CAY-1014 if you don't have any sensitive info
> in it.
>
>  Wonder if my related fix had any effect on this? Could you try it with M3
> if possible?
>
>  Thanks,
>  Andrus
>
>
>
>  On Apr 24, 2008, at 4:16 PM, Michael Gentry wrote:
>
>
> > Andrus, I'm going to send you a test I just did via e-mail since the
> > list doesn't support attachments.  Enums as PKs worked for me.  What
> > issue were you seeing?
> >
> > Thanks,
> >
> > /dev/mrg
> >
> >
>
>

Re: Enums as PK?

Posted by Andrus Adamchik <an...@objectstyle.org>.
Sure, or you can attach it to CAY-1014 if you don't have any sensitive  
info in it.

Wonder if my related fix had any effect on this? Could you try it with  
M3 if possible?

Thanks,
Andrus

On Apr 24, 2008, at 4:16 PM, Michael Gentry wrote:

> Andrus, I'm going to send you a test I just did via e-mail since the
> list doesn't support attachments.  Enums as PKs worked for me.  What
> issue were you seeing?
>
> Thanks,
>
> /dev/mrg
>