스키마 정보를 읽어온다. 성공적으로 수행되었을 경우 결과는 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에 대한 튜플(tuple)의 구성은 아래 표와 같다.
타입에 대한 튜플 구성
타입 | 컬럼 순서 | 컬럼 이름 | 컬럼 타입 |
---|---|---|---|
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* |
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)