CreateSynonymTest.java
/*-
* #%L
* JSQLParser library
* %%
* Copyright (C) 2004 - 2020 JSQLParser
* %%
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
* #L%
*/
package net.sf.jsqlparser.statement.create.synonym;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.schema.Synonym;
import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class CreateSynonymTest {
@Test
public void createPublic() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed(
"CREATE PUBLIC SYNONYM TBL_TABLE_NAME FOR SCHEMA.T_TBL_NAME");
}
@Test
public void createWithReplace() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed(
"CREATE OR REPLACE SYNONYM TBL_TABLE_NAME FOR SCHEMA.T_TBL_NAME");
}
@Test
public void createWithReplacePublic() throws Exception {
assertSqlCanBeParsedAndDeparsed(
"CREATE OR REPLACE PUBLIC SYNONYM TBL_TABLE_NAME FOR SCHEMA.T_TBL_NAME");
}
/**
* The dblink should be parsed as a regular name
*
* @throws Exception
*/
@Test
public void createWithDbLink() throws Exception {
assertSqlCanBeParsedAndDeparsed(
"CREATE PUBLIC SYNONYM emp_table FOR hr.employees@remote.us.oracle.com");
}
@Test
public void synonymAttributes() throws Exception {
final CreateSynonym createSynonym = (CreateSynonym) CCJSqlParserUtil
.parse("CREATE OR REPLACE PUBLIC SYNONYM TBL_TABLE_NAME FOR SCHEMA.T_TBL_NAME");
assertThat(createSynonym.isOrReplace()).isTrue();
assertThat(createSynonym.isPublicSynonym()).isTrue();
assertThat(createSynonym.getSynonym().getFullyQualifiedName()).isEqualTo("TBL_TABLE_NAME");
assertThat(createSynonym.getFor()).isEqualTo("SCHEMA.T_TBL_NAME");
assertEquals(2, createSynonym.getForList().size());
assertEquals("NEW_TBL_TABLE_NAME", createSynonym
.withSynonym(new Synonym().withName("NEW_TBL_TABLE_NAME")).getSynonym().getName());
}
}