Skip to content

Commit bcbf464

Browse files
authored
Revert fix for bug 426852 which caused issues in existing applications (#2646)
* Revert fix for bug 426852 which caused issues in existing applications Signed-off-by: Vaibhav Vishal vaibhav.vishal@oracle.com
1 parent 6840e58 commit bcbf464

10 files changed

Lines changed: 4 additions & 384 deletions

File tree

foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/DatasourcePlatform.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313

1414
// Contributors:
1515
// Oracle - initial API and implementation from Oracle TopLink
16-
// 09/29/2016-2.7 Tomas Kraus
17-
// - 426852: @GeneratedValue(strategy=GenerationType.IDENTITY) support in Oracle 12c
1816
// 09/14/2017-2.6 Will Dazey
1917
// - 522312: Add the eclipselink.sequencing.start-sequence-at-nextval property
2018
// 02/20/2018-2.7 Will Dazey
@@ -44,15 +42,13 @@
4442
import org.eclipse.persistence.sequencing.DefaultSequence;
4543
import org.eclipse.persistence.sequencing.QuerySequence;
4644
import org.eclipse.persistence.sequencing.Sequence;
47-
import org.eclipse.persistence.sessions.Session;
4845

4946
import java.io.IOException;
5047
import java.io.Writer;
5148
import java.util.HashMap;
5249
import java.util.Iterator;
5350
import java.util.List;
5451
import java.util.Map;
55-
import java.util.Set;
5652

5753
/**
5854
* DatasourcePlatform is private to TopLink. It encapsulates behavior specific to a datasource platform
@@ -1177,28 +1173,6 @@ public DatasourceCall buildNativeCall(String queryString) {
11771173
return new SQLCall(queryString);
11781174
}
11791175

1180-
/**
1181-
* INTERNAL:
1182-
* Initialize platform specific identity sequences.
1183-
* @param session Active database session (in connected state).
1184-
* @param defaultIdentityGenerator Default identity generator sequence name.
1185-
* @since 2.7
1186-
*/
1187-
public void initIdentitySequences(final Session session, final String defaultIdentityGenerator) {
1188-
}
1189-
1190-
/**
1191-
* INTERNAL:
1192-
* Remove platform specific identity sequences for specified tables. Default identity sequences are restored.
1193-
* @param session Active database session (in connected state).
1194-
* @param defaultIdentityGenerator Default identity generator sequence name.
1195-
* @param tableNames Set of table names to check for identity sequence removal.
1196-
* @since 2.7
1197-
*/
1198-
public void removeIdentitySequences(
1199-
final Session session, final String defaultIdentityGenerator, final Set<String> tableNames) {
1200-
}
1201-
12021176
/**
12031177
* INTERNAL:
12041178
* Override this method if the platform needs to use a custom function based on the DatabaseField

foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/databaseaccess/Platform.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.eclipse.persistence.queries.Call;
2424
import org.eclipse.persistence.queries.ValueReadQuery;
2525
import org.eclipse.persistence.sequencing.Sequence;
26-
import org.eclipse.persistence.sessions.Session;
2726

2827
import java.io.Serializable;
2928
import java.io.Writer;
@@ -289,29 +288,6 @@ public interface Platform extends CorePlatform<ConversionManager>, Serializable,
289288
*/
290289
boolean usesPlatformDefaultSequence();
291290

292-
/**
293-
* INTERNAL:
294-
* Initialize platform specific identity sequences.
295-
* This method is called from {@code EntityManagerSetupImpl} after login and optional schema generation.
296-
* Method is also called from {@code TableCreator} class during tables creation and update..
297-
* @param session Active database session (in connected state).
298-
* @param defaultIdentityGenerator Default identity generator sequence name.
299-
* @since 2.7
300-
*/
301-
void initIdentitySequences(final Session session, final String defaultIdentityGenerator);
302-
303-
/**
304-
* INTERNAL:
305-
* Remove platform specific identity sequences for specified tables. Default identity sequences are restored.
306-
* Method is also called from {@code TableCreator} class during tables removal.
307-
* @param session Active database session (in connected state).
308-
* @param defaultIdentityGenerator Default identity generator sequence name.
309-
* @param tableNames Set of table names to check for identity sequence removal.
310-
* @since 2.7
311-
*/
312-
void removeIdentitySequences(
313-
final Session session, final String defaultIdentityGenerator, final Set<String> tableNames);
314-
315291
/**
316292
* INTERNAL:
317293
* Get platform specific connection properties.

foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/localization/i18n/TraceLocalizationResource.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -511,8 +511,6 @@ The thread is working in the context of (CacheKey) = ({2}) .\s
511511
{ "dbPlatformHelper_detectedVendorPlatform", "Detected database platform: {0}"},
512512
{ "dbPlatformHelper_regExprDbPlatform", "Database platform: {1}, regular expression: {0}"},
513513
{ "dbPlatformHelper_patternSyntaxException", "Exception while using regular expression: {0}" },
514-
{ "platform_ora_init_id_seq", "Init Oracle identity sequence {0} -> {1} for table {2}"},
515-
{ "platform_ora_remove_id_seq", "Remove Oracle identity sequence {0} -> {1} for table {2}"},
516514
{ "unknown_query_hint", "query {0}: unknown query hint {1} will be ignored"},
517515
{ "query_hint", "query {0}: query hint {1}; value {2}"},
518516
{ "property_value_specified", "property={0}; value={1}"},

foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/tools/schemaframework/TableCreator.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 1998, 2025 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 1998, 2026 Oracle and/or its affiliates. All rights reserved.
33
* Copyright (c) 2020 IBM Corporation. All rights reserved.
44
*
55
* This program and the accompanying materials are made available under the
@@ -53,10 +53,6 @@
5353
* @author Peter Krogh
5454
*/
5555
public class TableCreator {
56-
/** Default identity generator sequence name.
57-
* Copy of value from JPA: {@code MetadataProject.DEFAULT_IDENTITY_GENERATOR}. */
58-
public static final String DEFAULT_IDENTITY_GENERATOR = "SEQ_GEN_IDENTITY";
59-
6056
/** Flag to disable table existence check before create. */
6157
public static boolean CHECK_EXISTENCE = true;
6258

@@ -206,7 +202,6 @@ public void createTables(final DatabaseSession session, final SchemaManager sche
206202
createConstraints(missingTables, session, schemaManager, false);
207203

208204
schemaManager.createOrReplaceSequences(createSequenceTables, createSequences);
209-
session.getDatasourcePlatform().initIdentitySequences(session, DEFAULT_IDENTITY_GENERATOR);
210205
}
211206

212207
/**
@@ -300,7 +295,6 @@ public void dropTables(final DatabaseSession session, final SchemaManager schema
300295
}
301296
}
302297
}
303-
session.getDatasourcePlatform().removeIdentitySequences(session, DEFAULT_IDENTITY_GENERATOR, tableNames);
304298
tables = failed;
305299
}
306300
} finally {
@@ -681,8 +675,6 @@ public void extendTables(final DatabaseSession session, final SchemaManager sche
681675
createConstraints(session, schemaManager, false);
682676

683677
schemaManager.createSequences();
684-
session.getDatasourcePlatform().initIdentitySequences(session, DEFAULT_IDENTITY_GENERATOR);
685-
686678
}
687679

688680
// Reads column information from the database.

foundation/org.eclipse.persistence.oracle/src/main/java/org/eclipse/persistence/platform/database/oracle/Oracle12Platform.java

Lines changed: 2 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2014, 2024 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2014, 2026 Oracle and/or its affiliates. All rights reserved.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License v. 2.0 which is available at
@@ -12,8 +12,6 @@
1212

1313
// Contributors:
1414
// Oracle - initial API and implementation from Oracle TopLink
15-
// 09/29/2016-2.7 Tomas Kraus
16-
// - 426852: @GeneratedValue(strategy=GenerationType.IDENTITY) support in Oracle 12c
1715
package org.eclipse.persistence.platform.database.oracle;
1816

1917
import java.io.IOException;
@@ -24,37 +22,22 @@
2422
import java.sql.SQLException;
2523
import java.sql.Struct;
2624
import java.util.List;
27-
import java.util.Map;
28-
import java.util.Set;
29-
import java.util.concurrent.ConcurrentHashMap;
3025

31-
import org.eclipse.persistence.descriptors.ClassDescriptor;
3226
import org.eclipse.persistence.exceptions.ValidationException;
3327
import org.eclipse.persistence.internal.helper.ClassConstants;
3428
import org.eclipse.persistence.internal.helper.DatabaseField;
3529
import org.eclipse.persistence.internal.sessions.AbstractRecord;
3630
import org.eclipse.persistence.internal.sessions.AbstractSession;
37-
import org.eclipse.persistence.logging.SessionLog;
3831
import org.eclipse.persistence.queries.ValueReadQuery;
39-
import org.eclipse.persistence.sequencing.NativeSequence;
40-
import org.eclipse.persistence.sequencing.Sequence;
41-
import org.eclipse.persistence.sessions.Session;
4232

4333
/**
4434
* <p><b>Purpose:</b>
45-
* Supports usage of certain Oracle JDBC specific APIs for the Oracle 12 database.<br>
46-
* Identity column:<br>
47-
* {@code GENERATED [ ALWAYS | BY DEFAULT [ ON NULL ] ] AS IDENTITY [ ( identity_options ) ]}
35+
* Supports usage of certain Oracle JDBC specific APIs for the Oracle 12 database.
4836
*/
4937
public class Oracle12Platform extends Oracle11Platform {
5038

51-
/** Table name to identity sequence name storage. */
52-
private final Map<String, String> identitySequences;
53-
5439
public Oracle12Platform() {
5540
super();
56-
supportsIdentity = true;
57-
identitySequences = new ConcurrentHashMap<>();
5841
}
5942

6043
/**
@@ -68,83 +51,6 @@ public boolean isOracle12() {
6851
return true;
6952
}
7053

71-
/**
72-
* INTERNAL:
73-
* Initialize platform specific identity sequences.
74-
* @param session Active database session (in connected state).
75-
* @param defaultIdentityGenerator Default identity generator sequence name.
76-
* @since 2.7
77-
*/
78-
@Override
79-
public void initIdentitySequences(final Session session, final String defaultIdentityGenerator) {
80-
if (sequences != null && sequences.containsKey(defaultIdentityGenerator)) {
81-
for (final ClassDescriptor descriptor : session.getDescriptors().values()) {
82-
final Sequence sequence = descriptor.getSequence();
83-
if (sequence != null && defaultIdentityGenerator.equals(sequence.getName())) {
84-
final String tableName = descriptor.getTableName();
85-
final String seqName = getIdentitySequence(tableName, session);
86-
if (seqName != null) {
87-
final NativeSequence newSequence = new NativeSequence(seqName, 1, true);
88-
newSequence.setShouldAcquireValueAfterInsert(true);
89-
newSequence.onConnect(this);
90-
descriptor.setSequence(newSequence);
91-
descriptor.setSequenceNumberName(seqName);
92-
identitySequences.put(tableName, seqName);
93-
addSequence(newSequence);
94-
if (session.getSessionLog().shouldLog(SessionLog.FINE)) {
95-
session.getSessionLog().log(SessionLog.FINE, "platform_ora_init_id_seq",
96-
new Object[] {defaultIdentityGenerator, seqName, tableName});
97-
}
98-
}
99-
}
100-
}
101-
}
102-
}
103-
104-
/**
105-
* INTERNAL:
106-
* Remove platform specific identity sequence for specified table. Default identity sequence is restored.
107-
* @param session Active database session (in connected state).
108-
* @param defaultIdentityGenerator Default identity generator sequence name.
109-
* @param tableNames Set of table names to check for identity sequence removal.
110-
* @since 2.7
111-
*/
112-
@Override
113-
public void removeIdentitySequences(final Session session, final String defaultIdentityGenerator, final Set<String> tableNames) {
114-
if (sequences != null && sequences.containsKey(defaultIdentityGenerator)) {
115-
final Sequence defaultSeq = getSequence(defaultIdentityGenerator);
116-
for (final ClassDescriptor descriptor : session.getDescriptors().values()) {
117-
final String tableName = descriptor.getTableName();
118-
if (tableName != null && identitySequences.containsKey(tableName)) {
119-
final String seqName = identitySequences.remove(tableName);
120-
removeSequence(seqName);
121-
descriptor.setSequence(defaultSeq);
122-
descriptor.setSequenceNumberName(defaultIdentityGenerator);
123-
if (session.getSessionLog().shouldLog(SessionLog.FINE)) {
124-
session.getSessionLog().log(SessionLog.FINE, "platform_ora_remove_id_seq",
125-
new Object[] {seqName, defaultIdentityGenerator, tableName});
126-
}
127-
}
128-
}
129-
}
130-
}
131-
132-
/**
133-
* Get sequence name corresponding to the table name.
134-
* @param tableName Name of the table.
135-
* @param session Active data source session.
136-
* @return Sequence name corresponding to the table name or {@code null} if no such sequence exists.
137-
* @since 2.7
138-
*/
139-
private String getIdentitySequence(final String tableName, final Session session) {
140-
// TABLE_NAME values are converted to upper case by default.
141-
// Also TableDefinition.buildCreationWriter(AbstractSession,Writer) does not have support for quoting table names
142-
// to make them case sensitive on Oracle DB.
143-
final String sql = "SELECT SEQUENCE_NAME FROM USER_TAB_IDENTITY_COLS WHERE TABLE_NAME='" + tableName.toUpperCase() + "'";
144-
final ValueReadQuery query = new ValueReadQuery(sql);
145-
return (String) session.executeQuery(query);
146-
}
147-
14854
/**
14955
* INTERNAL:
15056
* Append the receiver's field 'identity' constraint clause to a writer.

jpa/eclipselink.jpa.testapps/jpa.test.identity/src/main/java/org/eclipse/persistence/testing/models/jpa22/identity/Person.java

Lines changed: 0 additions & 69 deletions
This file was deleted.

jpa/eclipselink.jpa.testapps/jpa.test.identity/src/main/resources/META-INF/persistence.xml

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)