Skip to content

update some TCK dependencies, Add sql scripts, add LASTNAMEEMPLOYEES_KEY column to table EMP_MAPKEYCOL2 for https://github.com/jakartaee/persistence/issues/1010#1017

Open
scottmarlow wants to merge 5 commits into
jakartaee:mainfrom
scottmarlow:add_sql_scripts
Open

Conversation

@scottmarlow

Copy link
Copy Markdown
Member

Add SQL scripts and table change for #1010

@scottmarlow

Copy link
Copy Markdown
Member Author

@kuuku123 please confirm that the added tck/sql/derby/derby.ddl.persistence.sql matches what you tested with your 629b325 change.

@scottmarlow scottmarlow marked this pull request as draft April 22, 2026 13:02
@scottmarlow

Copy link
Copy Markdown
Member Author

Apparently the check failure is due to the SQL script files not including the project copyright license:

[315](https://github.com/jakartaee/persistence/actions/runs/24779385472/job/72506054805?pr=1017#step:4:4316)
[INFO] --- glassfish-copyright:2.4:check (default-cli) @ persistence-tck-parent ---
/home/runner/work/persistence/persistence/tck/sql/oracle/oracle.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/oracle/oracle.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/mssqlserver/mssqlserver.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/mssqlserver/mssqlserver.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/postgresql/postgresql.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/postgresql/postgresql.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/sybase/sybase.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/sybase/sybase.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/mysql/mysql.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/mysql/mysql.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/derby/derby.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/derby/derby.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/db2/db2.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/db2/db2.ddl.persistence.sprocs.sql: No copyright
Error:  Errors: 14[315](https://github.com/jakartaee/persistence/actions/runs/24779385472/job/72506054805?pr=1017#step:4:4316)
[INFO] --- glassfish-copyright:2.4:check (default-cli) @ persistence-tck-parent ---
/home/runner/work/persistence/persistence/tck/sql/oracle/oracle.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/oracle/oracle.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/mssqlserver/mssqlserver.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/mssqlserver/mssqlserver.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/postgresql/postgresql.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/postgresql/postgresql.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/sybase/sybase.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/sybase/sybase.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/mysql/mysql.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/mysql/mysql.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/derby/derby.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/derby/derby.ddl.persistence.sprocs.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/db2/db2.ddl.persistence.sql: No copyright
/home/runner/work/persistence/persistence/tck/sql/db2/db2.ddl.persistence.sprocs.sql: No copyright
Error:  Errors: 14

Comment thread .github/workflows/maven.yml Outdated
run: |
mvn -B -U -C -V clean install -Poss-release -Dgpg.skip=true -DskipTests ${{ matrix.java-version.extra_args }}
mvn org.glassfish.copyright:glassfish-copyright-maven-plugin:check -Poss-release -Dgpg.skip=true -Dcopyright.ignoreyear=true ${{ matrix.java-version.extra_args }}
mvn org.glassfish.copyright:glassfish-copyright-maven-plugin:check -Poss-release -Dgpg.skip=true -Dcopyright.ignoreyear=true ${{ matrix.java-version.extra_args }} -Dcopyright.exclude=persistence/tck/sql/oracle/oracle.ddl.persistence.sprocs.sql,persistence/tck/sql/oracle/oracle.ddl.persistence.sql,persistence/tck/sql/mssqlserver/mssqlserver.ddl.persistence.sql,persistence/tck/sql/mssqlserver/mssqlserver.ddl.persistence.sprocs.sql,persistence/tck/sql/postgresql/postgresql.ddl.persistence.sql,persistence/tck/sql/postgresql/postgresql.ddl.persistence.sprocs.sql,persistence/tck/sql/sybase/sybase.ddl.persistence.sql,persistence/tck/sql/sybase/sybase.ddl.persistence.sprocs.sql,persistence/tck/sql/mysql/mysql.ddl.persistence.sql,persistence/tck/sql/mysql/mysql.ddl.persistence.sprocs.sql,persistence/tck/sql/derby/derby.ddl.persistence.sql,persistence/tck/sql/derby/derby.ddl.persistence.sprocs.sql,persistence/tck/sql/db2/db2.ddl.persistence.sql,persistence/tck/sql/db2/db2.ddl.persistence.sprocs.sql

@lukasj lukasj Apr 22, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @lukasj! Will reuse the project-wide copyright-exclude!

Signed-off-by: Scott Marlow <scott.marlow@ibm.com>
@scottmarlow scottmarlow marked this pull request as ready for review April 22, 2026 16:08
Signed-off-by: Scott Marlow <scott.marlow@ibm.com>
@kuuku123

Copy link
Copy Markdown
Contributor

@scottmarlow

@kuuku123 please confirm that the added tck/sql/derby/derby.ddl.persistence.sql matches what you tested with your 629b325 change.

yes it does.
LASTNAMEEMPLOYEES_KEY VARCHAR(255), is what i added and tested

@gavinking

Copy link
Copy Markdown
Member

Derby? Isn't that project dead now?

@scottmarlow

Copy link
Copy Markdown
Member Author

Derby? Isn't that project dead now?

Yes but users could still use it for a while until it stops working. @kuuku123 mentioned he is using Derby still.

@kuuku123

Copy link
Copy Markdown
Contributor

yes we are still using it

@@ -0,0 +1,918 @@

DROP TABLE ADDRESS!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What would be the expectations on these DDLs within the standalone TCK ?

Note that currently the TCK tests are using the drop-and-create unless the test does not require the schema or if the schema has to be created "manually" by the test itself:

if (dropCreateSchemaOnStartByDefault()) {
jpaProps.put(JAKARTA_SCHEMAGEN_DATABASE_ACTION, "drop-and-create");
}

So wouldn't these scripts cause confusion as to how they are supposed to be used ?

@@ -0,0 +1,23 @@
DROP PROCEDURE GetEmpOneFirstNameFromOut !
CREATE PROCEDURE GetEmpOneFirstNameFromOut (out OUT_PARAM VARCHAR(255)) LANGUAGE SQL BEGIN SELECT FIRSTNAME into OUT_PARAM FROM EMPLOYEE WHERE ID=1; END !

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah if we have procedure scripts for DBs other than Postgres then we should feed that to:

protected Map<String, Object> extraPersistenceUnitProperties() {
assertTrue(Objects.toString(myProps.get(JAKARTA_PERSISTENCE_JDBC_DRIVER), "").toLowerCase(Locale.ROOT).contains("postgresql"),
"This test only contains procedures for the PostgreSQL database. Running on other DBs may result in an unpredictable outcome.");
return Map.of(Persistence.SchemaManagementProperties.SCHEMAGEN_CREATE_SCRIPT_SOURCE,
new StringReader(
"CREATE TABLE IF NOT EXISTS EMPLOYEE (HIREDATE date, ID integer not null, SALARY float4, FIRSTNAME varchar(255), LASTNAME varchar(255), primary key (ID)); \n"
+ "CREATE OR REPLACE PROCEDURE Integer_Proc(out pmax integer, out pmin integer, out pnull integer) LANGUAGE plpgsql AS $$ BEGIN SELECT MAX_VAL, MIN_VAL, NULL_VAL INTO pmax, pmin, pnull FROM Integer_Tab; END; $$ ;\n"
+ "CREATE OR REPLACE PROCEDURE GetEmpOneFirstNameFromOut(out OUT_PARAM text) LANGUAGE plpgsql AS $$ BEGIN SELECT FIRSTNAME INTO OUT_PARAM FROM EMPLOYEE WHERE ID=1; END; $$ ;\n"
+ "CREATE OR REPLACE PROCEDURE GetEmpFirstNameFromOut(in IN_PARAM int, out OUT_PARAM text) LANGUAGE plpgsql AS $$ BEGIN SELECT FIRSTNAME INTO OUT_PARAM FROM EMPLOYEE WHERE ID=IN_PARAM; END; $$ ;\n"
+ "CREATE OR REPLACE PROCEDURE GetEmpLastNameFromInOut(inout INOUT_PARAM text) LANGUAGE plpgsql AS $$ BEGIN SELECT LASTNAME INTO INOUT_PARAM FROM EMPLOYEE WHERE ID=CAST(INOUT_PARAM AS int); END; $$ ;\n"
+ "CREATE OR REPLACE PROCEDURE GetEmpASCFromRS(out ref refcursor) LANGUAGE plpgsql AS $$ BEGIN OPEN ref FOR SELECT ID, FIRSTNAME, LASTNAME, HIREDATE, SALARY FROM EMPLOYEE ORDER BY ID ASC; END; $$ ;\n"
+ "CREATE OR REPLACE PROCEDURE GetEmpIdFNameLNameFromRS(in IN_PARAM int, out ref refcursor) LANGUAGE plpgsql AS $$ BEGIN OPEN ref FOR SELECT ID, FIRSTNAME, LASTNAME FROM EMPLOYEE WHERE ID=IN_PARAM; END; $$ ;\n"
+ "CREATE OR REPLACE PROCEDURE GetEmpIdUsingHireDateFromOut(in IN_PARAM DATE, out OUT_PARAM int) LANGUAGE plpgsql AS $$ BEGIN SELECT ID INTO OUT_PARAM FROM EMPLOYEE WHERE HIREDATE=IN_PARAM; END; $$ ;\n"
+ "CREATE OR REPLACE PROCEDURE UpdateEmpSalaryColumn() LANGUAGE plpgsql AS $$ BEGIN UPDATE EMPLOYEE SET SALARY=0.00; END; $$ ;\n"
+ "CREATE OR REPLACE PROCEDURE DeleteAllEmp() LANGUAGE plpgsql AS $$ BEGIN DELETE FROM EMPLOYEE; END; $$ ;\n"
));
}

how about we package them as resources in the tck/common jar and then read them in the test depending on the input parameter passed to surefiure/failsafe and default to use Postgres if no property was passed ?

Comment thread tck/bin/pom.xml
Comment on lines +100 to +115
<!--
No idea why, but it seems these two dependencies are required to make it work,
even though they are a transitive dependency of persistence-tck-common?!
-->
<dependency>
<groupId>jakarta.tck</groupId>
<artifactId>signaturetest</artifactId>
<version>${jakarta.tck.sigtest.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jakarta.tck</groupId>
<artifactId>sigtest-maven-plugin</artifactId>
<version>2.6</version>
</dependency>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just to link to the related issue: #897

if we make the sigtest work then maybe we close that on ^ or we just remove the sigtest 🙈 🙂 ?

@gavinking

Copy link
Copy Markdown
Member

I wonder if we should add a way to specify platform-specific DDL in the XML descriptor. We do already have such a thing in Hibernate, IIRC.

@gavinking

Copy link
Copy Markdown
Member

See #1023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants