cubrid JDBC 빌드 하는법

nforge에서 checkout을 받는다.

원하는 릴리즈를 선택 한다.
svn checkout --username anonsvn https://dev.naver.com/svn/cubrid/tags/2008_R1.1

2008_R1.4를 원한다면

svn checkout --username anonsvn https://dev.naver.com/svn/cubrid/tags/2008_R1.4

  • JDK : Java 5 or Java6 
  • ANT : Version 상관 없음
  • make
  • 현재 소스에서 JDK5, JDK 6모두 지원한다.
    그러나 JDK 1.4의 경우 공식적인 지원을 안한다.

    오라클의 경우
    classes12.jar - JDK 1.2, JDK1.3
    ojddbc14.jar   - JDK 1.4
    ojdbc6.jar       - Java 5
    ojdbc6.jar       - Java 6
    의 형태로 배포 하고 있다.

    현재 큐브리드는 JDBC Driver 빌드는 Make를 이용하여 빌드 한다.

    ./driver/CUBRIDCallableStatement.pjava
    ./driver/CUBRIDDatabaseMetaData.pjava
    ./driver/CUBRIDDriver.pjava
    ./driver/CUBRIDBlob.pjava
    ./driver/CUBRIDStatement.pjava
    ./driver/CUBRIDPreparedStatement.pjava
    ./driver/CUBRIDPooledConnection.pjava
    ./driver/CUBRIDConnection.pjava
    ./driver/CUBRIDDataSource.pjava
    ./driver/CUBRIDResultSetMetaData.pjava
    ./driver/CUBRIDResultSetWithoutQuery.pjava
    ./driver/CUBRIDClob.pjava
    ./driver/CUBRIDResultSet.pjava
    ./jci/UJCIManager.pjava
    ./jci/UConnection.pjava


    와 같이 되어 있기 때문에 ant로만 빌드 할 수 없다.

    /home/build/2008_R1.4/jdbc/Makefile
    ----------------------------------------------------------------
    CUBRIDConnection.java: $(JDBC_SRC_DIR)/cubrid/jdbc/driver/CUBRIDConnection.pjava
            cpp -C -P $(PJAVA_CFLAGS) $< $@
    ----------------------------------------------------------------

    vi ./driver/CUBRIDConnection.pjava

    cpp - The C Preprocessor
    로 버전 비교

    #ifdef JDK6
    /* JDK 1.6 */
      public Array createArrayOf (String arg0, Object[]arg1) throws SQLException
      {
        throw new java.lang.UnsupportedOperationException ();
      }


     [build@localhost jdbc]$ make
    cpp -C -P -DJDBC_DRIVER_MAJOR_VERSION=8 -DJDBC_DRIVER_MINOR_VERSION=1 -DJDBC_DRIVER_PATCH_VERSION=4 -DJDBC_DRIVER_SERIAL_NUMBER=1032  ../src/jdbc/cubrid/jdbc/driver/CUBRIDConnection.pjava CUBRIDConnection.java
    cpp -C -P -DJDBC_DRIVER_MAJOR_VERSION=8 -DJDBC_DRIVER_MINOR_VERSION=1 -DJDBC_DRIVER_PATCH_VERSION=4 -DJDBC_DRIVER_SERIAL_NUMBER=1032  ../src/jdbc/cubrid/jdbc/driver/CUBRIDDriver.pjava CUBRIDDriver.java
    cpp -C -P -DJDBC_DRIVER_MAJOR_VERSION=8 -DJDBC_DRIVER_MINOR_VERSION=1 -DJDBC_DRIVER_PATCH_VERSION=4 -DJDBC

    신고
    top

    Write a comment


    내가 생각 하는 두가지 관점은

    1) DBMS 를 사용하는 사람
       - 실제로 데이터를 모델링 하는 모델러, DBA, DB 개발자 기타 등등이 되겠다.

    2) DBMS 를 만드는 사람
       - 실제 DBMS를 만드는 핵심 코어 엔지니어와 각 벤더의 DBMS를 지원하는 기술지원자의 입장 ...

    등이 있을수 있겠다.

    현재 국내에서 사용하는 데이터 베이스 시스템은 Oracle , MSSQL Server, MySQL, Cubrid, Sybase, DB2, Informix, PostgreSQL 서버 기타 등등이다.

    실제로 DBMS 서버의 경우 ISO에 등록된 표준 스펙 SQL 1992, SQL 2003 등의 스펙으로 구현된 경우가 많다. 하지만 실제 DBMS 벤더의 경우 산업 표준이 아닌 벤더만의 특수 기능을 넣는 경우가 있다.

    우선 DB 개발을 주로 하는 DB 개발자 위주의 내용이 되겠다.

    예로 아우터 조인의 경우

    오라클과 Cubrid 에서 지원하는 (+) 연산자를 사용하는 다음과 같은 SQL문이 있다.

    SQL>  SELECT DISTINCT(a.deptno), b.deptno
              FROM emp a, dept b
              WHERE  
    a.deptno(+) = b.deptno



    Oracle9i
    부터는 ANSI/ISO SQL표준인 LEFT OUTER JOIN , RIGHT OUTER JOIN, FULL OUTER JOIN 지원 합니다.

     

    LEFT OUTER JOIN
     
    왼쪽 테이블에 조인시킬 컬럽의 값이 없는 경우 사용합니다.
     
    SQL>SELECT DISTINCT(e.deptno), d.deptno
        FROM dept d LEFT OUTER JOIN emp e
        ON d.deptno = e.deptno;
     
     
     
    RIGHT OUTER JOIN
     -
    오른쪽에 테이블에 조인시킬 컬럽의 값이 없는 경우 사용합니다.
     
    SQL>SELECT DISTINCT(a.deptno), b.deptno
        FROM emp a RIGHT OUTER JOIN dept b
        ON a.deptno = b.deptno;
     
     
     
    FULL OUTER JOIN
    양쪽 테이블에 outer join 거는것을 TWO-WAY OUTER JOIN 또는 FULL OUTER JOIN이라 합니다.
     
    SQL>SELECT DISTINCT(a.deptno), b.deptno
        FROM emp a FULL OUTER JOIN dept b
        ON a.deptno = b.deptno;

    대부분의 DBMS엔진이 각 벤더만의 특수한 기능을 넣는다.

    다음번에는 Recursive SQL 의 경우를 고찰해 볼것이다.


    신고
    top

    Write a comment