cci_schema_info

설명

스키마 정보를 읽어온다. 성공적으로 수행되었을 경우 결과는 request handle에 의해 관리되고, fetch, getdata를 통해서 결과를 가져올 수 있다. class_name, attr_name을 pattern match에 의해서 검색해야 할 경우 flag를 설정한다. 

CCI_CLASS_NAME_PATTERN_MATCH, CCI_ATTR_NAME_PATTERN_MATCH 두 개의 flag가 사용된다. OR 연산자( | )로 둘을 설정할 수 있다. Pattern match를 사용할 경우 속도가 매우 떨어질 수 있다. 

type에 대한 레코드의 구성은 아래 표와 같다. 

타입에 대한 레코드 구성

타입

컬럼 순서

컬럼 이름

컬럼 타입

CCI_SCH_CLASS

1

NAME

char*

2

TYPE

short
0 : system class
1 : vclass
2 : class
3 : proxy

CCI_SCH_VCLASS

1

NAME

char*

2

TYPE

short
1 : vclass
3 : proxy

CCI_SCH_ATTRIBUTE

1

NAME

char*

2

DOMAIN

int

3

SCALE

int

4

PRECISION

int

5

INDEXED

int
1 : indexed

6

NON_NULL

int
1 : non null

7

SHARED

int
1 : shared

8

UNIQUE

int
1 : unique

9

DEFAULT

void*

10

ATTR_ORDER

int
base : 1

11

CLASS_NAME

char*

12

SOURCE_CLASS

char*

13

IS_KEY

short
1 : key

CCI_SCH_CLASS_METHOD

1

NAME

char*

2

RET_DOMAIN

int

3

ARG_DOMAIN

char*

CCI_SCH_METHOD_FILE

1

METHOD_FILE

char*

CCI_SCH_SUPERCLASS

1

CLASS_NAME

char*

2

TYPE

short

CCI_SCH_SUBCLASS

1

CLASS_NAME

char*

2

TYPE

short

CCI_SCH_CONSTRAINT

1

TYPE
0 : unique
1 : index
2 : reverse unique
3 : reverse index

int

2

NAME

char*

3

ATTR_NAME

char*

4

NUM_PAGES

int

5

NUM_KEYS

int

6

PRIMARY_KEY
1 : primary key

short

7

KEY_ORDER

short
base : 1

CCI_SCH_TRIGGER

1

NAME

char*

2

STATUS

char*

3

EVENT

char*

4

TARGET_CLASS

char*

5

TARGET_ATTR

char*

6

ACTION_TIME

char*

7

ACTION

char*

8

PRIORITY

float

9

CONDITION_TIME

char*

10

CONDITION

char*

CCI_SCH_CLASS_PRIVILEGE

1

CLASS_NAME

char*

2

PRIVELEGE

char*

3

GRANTABLE

char*

CCI_SCH_ATTR_PRIVILEGE

1

ATTR_NAME

char*

2

PRIVILEGE

char*

3

GRANTABLE

char*

CCI_SCH_PRIMARY_KEY

1

CLASS_NAME

char*

2

ATTR_NAME

char*

3

KEY_SEQ

short
base : 1

4

KEY_NAME

char*

CCI_SCH_IMPORTED_KEYS
주어진 테이블의 외래 키 컬럼들이 참조하고 있는 기본 키 컬럼들의 정보를 조회하며, 결과는 PKTABLE_NAME 및 KEY_SEQ 순서로 정렬된다.
이 타입을 인자로 지정하면, class_name에는 외래 키 테이블, attr_name에는 NULL을 지정한다.

1

PKTABLE_NAME

char**

2

PKCOLUMN_NAME

char**

3

FKTABLE_NAME

char**

4

FKCOLUMN_NAME

char**

5

KEY_SEQ

char**

6

UPDATE_ACTION
cascade=0
restrict=1
no action=2
set null=3

int*

7

DELETE_ACTION
cascade=0
restrict=1
no action=2
set null=3

int*

8

FK_NAME

char**

9

PK_NAME

char**

CCI_SCH_EXPORTED_KEYS
주어진 테이블의 기본 키 컬럼들을 참조하는 모든 외래 키 컬럼들의 정보를 조회하며, 결과는 FKTABLE_NAME 및 KEY_SEQ 순서로 정렬된다.
이 타입을 인자로 지정하면, class_name에는 기본 키 테이블, attr_name에는 NULL을 지정한다.

1

PKTABLE_NAME

char**

2

PKCOLUMN_NAME

char**

3

FKTABLE_NAME

char**

4

FKCOLUMN_NAME

char**

5

KEY_SEQ

char**

6

UPDATE_ACTION
cascade=0
restrict=1
no action=2
set null=3

int*

7

DELETE_ACTION
cascade=0
restrict=1
no action=2
set null=3

int*

8

FK_NAME

char**

9

PK_NAME

char**

CCI_SCH_CROSS_REFERENCE
주어진 테이블의 기본 키와 주어진 테이블의 외래 키가 상호 참조하는경우, 해당 외래 키 컬럼들의 정보를 조회하며, 결과는 FKTABLE_NAME 및 KEY_SEQ 순서로 정렬된다.
이 타입을 인자로 지정하면, class_name에는 기본 키 테이블, attr_name에는 외래 키 테이블을 지정한다.

1

PKTABLE_NAME

char**

2

PKCOLUMN_NAME

char**

3

FKTABLE_NAME

char**

4

FKCOLUMN_NAME

char**

5

KEY_SEQ

char**

6

UPDATE_ACTION
cascade=0
restrict=1
no action=2
set null=3

int*

7

DELETE_ACTION
cascade=0
restrict=1
no action=2
set null=3

int*

8

FK_NAME

char**

9

PK_NAME

char**

Pattern match

CCI_SCH_TYPE

Class name

ATTR_name

CCI_SCH_CLASS (VCLASS)

O

none

CCI_SCH_ATTRIBUTE (CLASS ATTRIBUTE)

O

O

CCI_SCH_CLASS_PRIVILEGE

O

none

CCI_SCH_ATTR_PRIVILEGE

X

O

CCI_SCH_PRIMARY_KEY

O

none

패턴 flag가 설정되지 않을 경우 주어진 클래스 이름 또는 속성 이름은 exact string match를 사용하며, 따라서 NULL이 주어질 경우 결과는 없다. 패턴 flag가 설정되어 있을 경우 클래스 이름 또는 속성 이름이 NULL일 경우 "%"와 동일한 결과를 얻는다. 

참고 CCI_SCH_CLASS, CCI_SCH_VCLASS의 TYPE 컬럼 : proxy 타입이 추가됨. OLEDB, ODBC, PHP에서 사용할 경우 proxy와 vclass를 구분하지 않고 vclass로 보임. 

구문

int cci_schema_info(int conn_handle, T_CCI_SCHEMA_TYPE type, char *class_name, char *attr_name, char flag, T_CCI_ERROR *err_buf)

리턴 값
에러 코드