'cubrid'에 해당되는 글 3건

  1. 2012.06.08 CUBRID CCI Error Codes and Messages
  2. 2012.05.22 [Cubrid] cci example code
  3. 2009.01.21 큐브리드 사용후기 (7.3 -> 2008R1.1)

CUBRID CCI Error Codes and Messages

ITWeb/개발일반 2012. 6. 8. 17:51


[원본링크]

CUBRID CCI Error Codes and Messages


The following list displays the error messages raised in CUBRID CCI API.


CCI Error Code NumberCCI Error CodeError MessageNote
0CCI_ER_NO_ERROR
-1CCI_ER_DBMS"CUBRID DBMS Error"Fails to database connection.
-2CCI_ER_CON_HANDLE"Invalid connection handle"
-3CCI_ER_NO_MORE_MEMORY"Memory allocation error"Insufficient memory
-4CCI_ER_COMMUNICATION"Cannot communicate with server"
-5CCI_ER_NO_MORE_DATA"Invalid cursor position"
-6CCI_ER_TRAN_TYPE"Unknown transaction type"
-7CCI_ER_STRING_PARAM"Invalid string argument"string parameter is NULL or an empty string.
-8CCI_ER_TYPE_CONVERSION"Type conversion error"Cannot convert the given value into an actual data type.
-9CCI_ER_BIND_INDEX"Parameter index is out of range"Index that binds data is not valid.
-10CCI_ER_ATYPE"Invalid T_CCI_A_TYPE value"
-11CCI_ER_NOT_BIND
-12CCI_ER_PARAM_NAME"Invalid T_CCI_DB_PARAM value"
-13CCI_ER_COLUMN_INDEX"Column index is out of range"
-14CCI_ER_SCHEMA_TYPE
-15CCI_ER_FILE"Cannot open file"Fails to open/read/write a file.
-16CCI_ER_CONNECT"Cannot connect to CUBRID CAS"Fails to connect the CAS when trying connection to the server.
-17CCI_ER_ALLOC_CON_HANDLE"Cannot allocate connection handle"
-18CCI_ER_REQ_HANDLE"Cannot allocate request handle"
-19CCI_ER_INVALID_CURSOR_POS"Invalid cursor position"
-20CCI_ER_OBJECT"Invalid oid string"
-21CCI_ER_CAS
-22CCI_ER_HOSTNAME"Unknown host name"
-23CCI_ER_OID_CMD"Invalid T_CCI_OID_CMD value"
-24CCI_ER_BIND_ARRAY_SIZE"Array binding size is not specified"
-25CCI_ER_ISOLATION_LEVEL"Unknown transaction isolation level"
-26CCI_ER_SET_INDEX"Invalid set index"Invalid index is specified when an set element in the T_SET is retrieved.
-27CCI_ER_DELETED_TUPLE"Current row was deleted"
-28CCI_ER_SAVEPOINT_CMD"Invalid T_CCI_SAVEPOINT_CMD value"Invalid T_CCI_SAVEPOINT_CMD value is used as an argument of cci_savepoint() function.
-29CCI_ER_THREAD_RUNNING"Thread is running"The thread is still executed when cci_execute() is executed with CCI_EXEC_THREAD flaged and check the result of thread execution through cci_get_thread_result().
-30CCI_ER_INVALID_URL"Invalid url string"
-31CCI_ER_INVALID_LOB_READ_POS
-32CCI_ER_INVALID_LOB_HANDLE
-33CCI_ER_NO_PROPERTY
-34CCI_ER_PROPERTY_TYPE
-35CCI_ER_INVALID_DATASOURCE
-36CCI_ER_DATASOURCE_TIMEOUT
-37CCI_ER_DATASOURCE_TIMEDWAIT
-38CCI_ER_LOGIN_TIMEOUT
-39CCI_ER_QUERY_TIMEOUT
-99CCI_ER_NOT_IMPLEMENTED

:

[Cubrid] cci example code

ITWeb/개발일반 2012. 5. 22. 00:33

[Source Code]

// http://www.cubrid.org/manual/841/ko/CCI%20API
// http://www.cubrid.org/manual/841/ko/C%20Type%20Definition
#include <stdio.h>
#include <cas_cci.h>

int main (int argc, char *argv[]) {

    int con = 0, req = 0, rowCount = 0, res;

    T_CCI_ERROR error;
    T_CCI_QUERY_RESULT *queryResult;

    printf("Program started!\n");

    if ((con=cci_connect("SERVER_IP", SERVER_PORT, "DB_NAME", "USER", "PASSWORD"))<0) {
        printf( "%s(%d): cci_connect fail\n", __FILE__, __LINE__);
        return -1;
    }

    if ((req=cci_prepare(con, "select name from demodb where id=1", 0,&error))<0) {
        printf( "%s(%d): cci_prepare fail(%d)\n", __FILE__, __LINE__,error.err_code);
        goto handle_error;
    }

    printf("Prepare ok!(%d)\n",req);
    printf("========================================\n");

    if ((res=cci_execute(req, 0, 0, &error))<0) {
        printf( "%s(%d): cci_execute fail(%d)\n", __FILE__, __LINE__,error.err_code);
        goto handle_error;
    }

    if ((res=cci_execute_result(req, &queryResult, &error))<0) {
        printf( "%s(%d): cci_execute_result fail(%d)\n", __FILE__, __LINE__,error.err_code);
        goto handle_error;
    }

    rowCount = CCI_QUERY_RESULT_RESULT(queryResult, 1);

    if ( rowCount > 0 ) {
        printf("This is virus(%d).\n", rowCount);
    } else {
        printf("This is clean(%d).\n", rowCount);
    }

    if ((res=cci_close_req_handle(req))<0) {
           printf( "%s(%d): cci_close_req_handle fail", __FILE__, __LINE__);
           goto handle_error;
    }

    if ((res=cci_disconnect(con, &error))<0) {
          printf( "%s(%d): cci_disconnect fail(%d)", __FILE__, __LINE__,error.err_code);
          goto handle_error;
    }

    printf("Program ended!\n");

    return 0;

handle_error:

    if (req > 0) cci_close_req_handle(req);
    if (con > 0) cci_disconnect(con, &error);

    printf("Program failed!\n");

    return -1;
}


[Build]

- 위치

mkdir -p /home/jjeong/workspace/cubrid

cd  /home/jjeong/workspace/cubrid

- prerequisite

http://www.cubrid.org/manual/841/en/CCI%20API

CUBRID-CCI-Linux-8.4.0.2027.tar.gz

tar -xvzf CUBRID-CCI-Linux-8.4.0.2027.tar.gz

ln -s cubrid-cci-8.4.0.2027 libcubrid

- gcc

gcc cubrildMini.c ./libcubrid/lib/libcascci.a -I./libcubrid/include -lpthread -lnsl -o cubridMini


:

큐브리드 사용후기 (7.3 -> 2008R1.1)

Legacy 2009. 1. 21. 23:28

큐브리드를 처음 접한지 불과 4개월 조금 안된 것 같다.
가장 많이 사용해 본 DBMS 는 MySQL 과 Oracle 사실 최근 수년 간은 MySQL 만 사용해 왔다고 보는게 맞을 것 같다.

어찌 되었건 큐브리드를 처음 접하는 쌩 초보의 입장에서 큐브리드를 한번 파헤쳐 보자.. ^^;

1. 큐브리드의 역사
큐브리드는 아시는지 모르겠지만 역사가 꽤 오래된 회사 입니다.
실제 회사 연혁에 들어가 보시면 아시겠지만.. 1988년 부터 역사가 시작 되었지요.
지금의 큐브리드 시조는 UniSQL 입니다.
UniSQL 이.. 진화 하면서 UniSQL 6.0 에서 큐브리드라는 회사가 설립 되면서 큐브리드 6.5 로 탈바꿈을 하게 된 것이지요.
지금은 벌써.. 큐브리드 8.1 버전이 release 되어서 배포 되고 있습니다.
오픈 소스화는 8.1 버전 부터 진행된 것이고 7.3 버전과는 내부적으로도 많이 다르다고 하내요.

2. 큐브리드 7.3은 사용해 봤냐?
우선 어디서 다운로드 받을 수 있는지 레퍼런스는 어디서 구해야 하는지 알아 볼까요.. :)
다운로드는 여기서 -> http://www.cubrid.com/zbxe/download_73
레퍼런스는 여기서 -> http://www.cubrid.com/zbxe/bbs_developer73_tutorial
매뉴얼은 여기서 -> http://www.cubrid.com/zbxe/bbs_developer73_manual

그렇습니다.
전략적으로 이제 오픈소스화 된 8점대 버전을 밀기 때문에 큐브리드 홈페이지에서도 나와 있지만 7.3 버전은 이제 lifetime 이 다했답니다.
관련 공지는 http://www.cubrid.com/zbxe/bbs_developer73_manual/35709 를 참고 하세요.

큐브리드 설치를 해보셨다면 아시겠지만.. 다른 DBMS에 비해서 설치가 매우 쉽습니다.
또한 제공해주고 있는 client manager 역시 MySQL 이나 Oracle 에서 제공 되는 툴에 비해 뒤떨어 진다는 생각은 들지 않내요..


3. 그럼 큐브리드 2008R1.x 버전은.. 어떨까?

기존 버전들은 모두 큐브리드 사이트에서 다운로드를 받으셨죠.

허나 NHN 에 합병 되고 8.1 부터 오픈 소스화 되면서 아래 사이트에서 다운 로드를 받을 수 있답니다.

http://dev.naver.com/projects/cubrid

설치 방법은 여기 잘 나와 있습니다.

http://www.cubrid.com/zbxe/bbs_download_install/32611

 

사용자 입장에서는 크게 달라진걸 못느끼면서 사용이 가능 합니다.

릴리즈된 내용들에 대해서 궁금 하신 분들은

http://dev.naver.com/wiki/cubrid/index.php/%EB%A6%B4%EB%A6%AC%EC%A6%88%EC%A0%95%EB%B3%B4

여기를 참고 하세요..

PDF 문서로 릴리즈 정보를 제공 하고 있습니다.

R1.2 에서는 개선된 사항이 많이 보이내요.. :)

초기 버전에서 나왔던 버그들이 상당수 많이 개선이 된 듯 합니다. (짝짝짝 박수를 보내 드립니다.. ^^*)

 

4. 큐브리드 살펴보기

- 오라클 처럼 rownum 을 제공 하고 있습니다.

- MySQL 에서 paging 을 하기 위한 limit 은 제공 하지 않습니다.

- Replication 기능 제공 합니다. (auto recovery 가 된다고 하내요. 이건 mysql 의 replication 에서는 안되는 기능이죠.. 수동으로 해줘야 한다는.. )

이외도 참 많은 기능들이 있는데 실제 제가 사용을 많이 해본게 아니라 섣불리 작성하기가 그러내요..

http://www.cubrid.com/online_manual/index.htm 여기를 참고 하시면 좋을 듯 하내요.

 

 

 

5. 큐브리드 장단점?

- Class privileges 에 대한 설정이 좀 불편 합니다. (제가 기능을 잘 몰라서 그럴 수도 있구요.. ^^; 각 권한에 대해서 all 설정을 하였으나 잘 안되어서 각각에 권한 부여를 했답니다.)

- 설치의 편리함.

- 레퍼런스의 부족함. (사용자 층이 낮아서 인지 큐브리드 사이트를 제외 하고는 일반 웹사이트에서는 아직 레퍼런스를 구하기가 쉽지는 않더라구요.. ^^;)

장단점에 대해서 여러가지 면을 작성 하기가 어렵내요.

다양한 구조로 큐브리드를 사용해 보지 못해보았고 사용도 역시 많이 해보질 못해.. 좀 작성 하면서도 아쉬움이 많이 남내요.

 

앞으로 큐브리드를 복잡한 시스템에 사용을 하면서 노하우가 축적이 되어야 겠지만 저 자신도 그렇고 큐브리드도 그렇고 모두 win win 할 수 있었으면 합니다.

 

6. wikipedia

http://ko.wikipedia.org/wiki/%ED%81%90%EB%B8%8C%EB%A6%AC%EB%93%9C

 

 

7. 총평

초기 접근은 매우 쉬우나 레퍼런스를 구하기가 어려워 복잡한 시스템에 적용하기에 다소 어려움이 많다.

사용자 층이 두터워 지면 이런 어려움은 자동으로 해소 될거라 생각 하나 이를 위해서는 큐브리드 개발자 분들의 부단한 노력이 필요해 보입니다.

사실 무료 교육도 시켜 주고 계시는데 아직 저변 확대가 안되어서 그런것 같구요.

국내 기술력으로 만들어진 DB 인 만큼 버그나 불편함에 토로 하지 말고.. 잘 만들어 질수 있도록 노력하면.. 외산 DB에 버금가는 DB 가 될거라 생각 합니다.

2008년이 시작이라고 생각하고 화이팅 하세요.. :)

 

감사합니다.

 

 

: