package org.dbsp.sqlCompiler.compiler.sql.quidem;

import org.dbsp.sqlCompiler.compiler.CompilerOptions;
import org.dbsp.sqlCompiler.compiler.DBSPCompiler;
import org.dbsp.sqlCompiler.compiler.sql.tools.SqlIoTest;

// https://github.com/apache/calcite/blob/main/innodb/src/test/resources/scott.sql
// https://github.com/julianhyde/scott-data-hsqldb/blob/main/src/main/resources/scott.script
public class ScottBaseTests extends SqlIoTest {
    @Override
    public CompilerOptions testOptions() {
        CompilerOptions options = super.testOptions();
        options.languageOptions.ignoreOrderBy = true;
        return options;
    }

    @Override
    public void prepareInputs(DBSPCompiler compiler) {
        // Changed UNIQUE KEY to PRIMARY KEY
        compiler.submitStatementsForCompilation("""
CREATE TABLE DEPT(
    DEPTNO TINYINT NOT NULL,
    DNAME VARCHAR(50) NOT NULL,
    LOC VARCHAR(20),
    -- UNIQUE KEY DEPT_PK (DEPTNO)
    PRIMARY KEY (DEPTNO)
);

CREATE TABLE EMP(
    EMPNO INT NOT NULL,
    ENAME VARCHAR(10) NOT NULL,
    JOB VARCHAR(9) NOT NULL,
    MGR BIGINT,
    HIREDATE DATE,
    SAL DECIMAL(7,2) NOT NULL,
    COMM DECIMAL(7,2),
    DEPTNO TINYINT
);

CREATE TABLE BONUS(ENAME VARCHAR(10), JOB VARCHAR(9), SAL DECIMAL(7,2), COMM DECIMAL(7,2));
CREATE TABLE SALGRADE(GRADE INTEGER, LOSAL DECIMAL(7,2), HISAL DECIMAL(7,2));

INSERT INTO DEPT VALUES(10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES(20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES(30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES(40,'OPERATIONS','BOSTON');

INSERT INTO EMP VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO EMP VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,'1981-02-04',2975,NULL,20);
INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,'1981-01-05',2850,NULL,30);
INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);

INSERT INTO SALGRADE VALUES(1,700.00,1200.00);
INSERT INTO SALGRADE VALUES(2,1201.00,1400.00);
INSERT INTO SALGRADE VALUES(3,1401.00,2000.00);
INSERT INTO SALGRADE VALUES(4,2001.00,3000.00);
INSERT INTO SALGRADE VALUES(5,3001.00,9999.00);
""");
    }
}
