Javadogs, I took an action item to resolve whether the TCK needs different metadata files to describe the different strategies that databases use for generating primary key values. The spec says, <spec> •The value “sequence” specifies that a named database sequence is used to generate key values for the table. If sequence is used, then the sequence attribute is required. •The value “identity” specifies that the column identified as the key column is managed by the database as an identity type. </spec> In the TCK, we only use strategy="identity" and the issue is whether databases that don't support the SQL 2003 construction "GENERATED ALWAYS AS IDENTITY" can use this same strategy. My reading of the specification is that the identity strategy can be used for any database as long as the database is configured to generate the keys. Such constructions as PostgreSQL SERIAL and Oracle sequences can be used, meaning that the SQL for the table declares that the database, not the JDO implementation, is responsible for generating the keys. The effect of this interpretation is that the TCK is valid for all databases that are capable of generating the primary key values (which I think is all databases of interest to us). Therefore, there is no need to change the TCK to accommodate databases that don't support the "GENERATED ALWAYS AS IDENTITY". A suitable SQL table definition can be used for all databases to implement the identity strategy. I propose that we clarify this with a change to the specification, <proposed> •The value “sequence” specifies that a named database sequence is used to generate key values for the table. If sequence is used, then the sequence attribute is required. The JDO implementation uses the named sequence in insert statements for the table. •The value “identity” specifies that the column identified as the key column is managed by the database as an identity type, regardless of how the database generates the values, e.g. using the SQL 2003 IDENTITY column type or using triggers and stored procedures with a sequence. The JDO implementation does not provide primary key values for the table. </proposed> I'm also trying to figure out if we need the following: <spec> •The value “autoassign” specifies that the column identified as the key column is managed by the database to automatically increment key values. </spec> Would anyone notice if we removed this? Craig Craig Russell Architect, Sun Java Enterprise System http://java.sun.com/products/jdo 408 276-5638 mailto:[EMAIL PROTECTED] P.S. A good JDO? O, Gasp! |
smime.p7s
Description: S/MIME cryptographic signature