MCPcopy Create free account
hub / github.com/actiontech/dtle / TestParseConstraintSQL

Function TestParseConstraintSQL

driver/oracle/extractor/log_miner_test.go:656–718  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

654}
655
656func TestParseConstraintSQL(t *testing.T) {
657
658 tests := []struct {
659 name string
660 sql string
661 want string
662 }{
663 {
664 name: "createTableSQLCharRelation",
665 sql: `create table TEST.userInfo (
666 id number(6) primary key,--主键
667 name varchar2(20) not null,--非空
668 sex number(1),
669 age number(3) default 18,
670 birthday date,
671 address varchar2(50),
672 email varchar2(25) unique,--唯一
673 tel number(11)
674 -- deptno number(2) references dept(deptno) -- 外键
675 )`,
676 want: "CREATE TABLE `TEST`.`USERINFO` (`ID` INT PRIMARY KEY,`NAME` VARCHAR(20) NOT NULL,`SEX` TINYINT,`AGE` SMALLINT,`BIRTHDAY` DATETIME,`ADDRESS` VARCHAR(50),`EMAIL` VARCHAR(25) UNIQUE KEY,`TEL` BIGINT) DEFAULT CHARACTER SET = UTF8MB4"},
677
678 {
679 name: "createOutOfLineConstraint",
680 sql: `CREATE TABLE TEST.employees_demo
681 ( employee_id NUMBER(6)
682 , first_name VARCHAR2(20)
683 , last_name VARCHAR2(25)
684 CONSTRAINT emp_last_name_nn_demo NOT NULL
685 , email VARCHAR2(25)
686 CONSTRAINT emp_email_nn_demo NOT NULL
687 , phone_number VARCHAR2(20)
688 , hire_date DATE
689 CONSTRAINT emp_hire_date_nn_demo NOT NULL
690 , job_id VARCHAR2(10)
691 CONSTRAINT emp_job_nn_demo NOT NULL
692 , salary NUMBER(8,2)
693 CONSTRAINT emp_salary_nn_demo NOT NULL
694 , commission_pct NUMBER(2,2)
695 , manager_id NUMBER(6)
696 , department_id NUMBER(4)
697 , dn VARCHAR2(300)
698 , CONSTRAINT emp_email_uk_demo
699 UNIQUE (email)
700 )`,
701 want: "CREATE TABLE `TEST`.`EMPLOYEES_DEMO` (`EMPLOYEE_ID` INT,`FIRST_NAME` VARCHAR(20),`LAST_NAME` VARCHAR(25) NOT NULL,`EMAIL` VARCHAR(25) NOT NULL,`PHONE_NUMBER` VARCHAR(20),`HIRE_DATE` DATETIME NOT NULL,`JOB_ID` VARCHAR(10) NOT NULL,`SALARY` DECIMAL(8,2) NOT NULL,`COMMISSION_PCT` DECIMAL(2,2),`MANAGER_ID` INT,`DEPARTMENT_ID` SMALLINT,`DN` VARCHAR(300),UNIQUE `EMP_EMAIL_UK_DEMO`(`email`)) DEFAULT CHARACTER SET = UTF8MB4",
702 },
703 }
704 logger := hclog.NewNullLogger()
705 extractor := &ExtractorOracle{logger: logger, replicateDoDb: []*common.DataSource{}}
706 for _, tt := range tests {
707 t.Run(tt.name, func(t *testing.T) {
708 dataEvent, err := extractor.parseDDLSQL(tt.sql, "")
709 if err != nil {
710 t.Error(err)
711 return
712 }
713 if dataEvent.Query != tt.want {

Callers

nothing calls this directly

Calls 2

parseDDLSQLMethod · 0.95
RunMethod · 0.65

Tested by

no test coverage detected