package io.mycat.parser.druid;
import static junit.framework.Assert.assertEquals;
import io.mycat.route.parser.druid.DruidSequenceHandler;
import io.mycat.server.config.node.SystemConfig;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.Test;
/**
* 获取MYCAT SEQ 表名。
*/
public class DruidSequenceHandlerTest {
@Test
public void test() {
DruidSequenceHandler handler = new DruidSequenceHandler(SystemConfig.SEQUENCEHANDLER_LOCALFILE);
String sql = "select next value for mycatseq_xxxx".toUpperCase();
String tableName = handler.getTableName(sql);
assertEquals(tableName, "XXXX");
sql = " insert into test(id,sid)values(next value for MYCATSEQ_TEST,1)".toUpperCase();
tableName = handler.getTableName(sql);
assertEquals(tableName, "TEST");
sql = " insert into test(id,sid)values(next value for MYCATSEQ_TEST ,1)".toUpperCase();
tableName = handler.getTableName(sql);
assertEquals(tableName, "TEST");
sql = " insert into test(id)values(next value for MYCATSEQ_TEST )".toUpperCase();
tableName = handler.getTableName(sql);
assertEquals(tableName, "TEST");
}
@Test
public void test2() {
DruidSequenceHandler handler = new DruidSequenceHandler(SystemConfig.SEQUENCEHANDLER_LOCALFILE);
String sql = "/* APPLICATIONNAME=DBEAVER 3.3.2 - MAIN CONNECTION */ SELECT NEXT VALUE FOR MYCATSEQ_XXXX".toUpperCase();
String tableName = handler.getTableName(sql);
assertEquals(tableName, "XXXX");
}
public static void main(String[] args)
{
String patten="(?:(\\s*next\\s+value\\s+for\\s*MYCATSEQ_(\\w+))(,|\\)|\\s)*)+";
Pattern pattern = Pattern.compile(patten,Pattern.CASE_INSENSITIVE);
String sql="insert into test(id,sid)values( next value for MYCATSEQ_TEST ,1)";
Matcher matcher = pattern.matcher(sql);
System.out.println(matcher.find());
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}
}