Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt
Original file line number Diff line number Diff line change
Expand Up @@ -18880,7 +18880,7 @@ RelationAlterAction PostgreSqlRelationAction():
(
<K_USING> <K_INDEX> name=RelObjectName()
{ action.setReplicaIdentity(RelationAlterAction.ReplicaIdentity.USING_INDEX); action.setValue(name); }
| ( token=<K_DEFAULT> | token=<K_FULL> | token=<S_IDENTIFIER> )
| ( token=<K_DEFAULT> | token=<K_FULL> | token=<K_NOTHING> | token=<S_IDENTIFIER> )
{ action.setReplicaIdentity(accessEnum(RelationAlterAction.ReplicaIdentity.class, token.image)); }
)
|
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
*/
package net.sf.jsqlparser.statement.alter;

import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;
import static org.junit.jupiter.api.Assertions.*;
import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -80,6 +81,7 @@ class PostgreSqlRelationAlterTest {
"ALTER TABLE t RESET(toast.autovacuum_enabled,fillfactor)",
"ALTER TABLE t INHERIT p",
"ALTER TABLE t NO INHERIT p",
"ALTER TABLE t REPLICA IDENTITY NOTHING",
"ALTER TABLE t REPLICA IDENTITY USING INDEX ix",
"ALTER TABLE t SET ACCESS METHOD heap"})
void auditedActionsAreStructuredAndRoundTrip(String sql) throws JSQLParserException {
Expand All @@ -96,6 +98,24 @@ void auditedActionsAreStructuredAndRoundTrip(String sql) throws JSQLParserExcept
p -> p.withDialect(Dialect.POSTGRESQL)).size());
}

@ParameterizedTest
@ValueSource(strings = {"DEFAULT", "FULL", "NOTHING"})
void replicaIdentityModesAreStructuredAndEditable(String mode) throws JSQLParserException {
Alter statement = (Alter) assertSqlCanBeParsedAndDeparsed(
"ALTER TABLE t REPLICA IDENTITY " + mode, false,
parser -> parser.withDialect(Dialect.POSTGRESQL));
RelationAlterAction action = assertInstanceOf(RelationAlterAction.class,
statement.getAlterExpressions().get(0));
assertEquals(RelationAlterAction.Kind.REPLICA_IDENTITY, action.getKind());
assertEquals(RelationAlterAction.ReplicaIdentity.valueOf(mode),
action.getReplicaIdentity());
assertRoundTrip(statement);

action.setReplicaIdentity(RelationAlterAction.ReplicaIdentity.NOTHING);
assertEquals("ALTER TABLE t REPLICA IDENTITY NOTHING", statement.toString());
assertRoundTrip(statement);
}

@Test
void indexNameAndActionParametersCanBeReplaced() throws JSQLParserException {
AlterRelation index =
Expand Down
Loading