문서유형ㅣ장애해결
분야ㅣ인터페이스/연동
적용제품버전ㅣ7FS02PS
문서번호ㅣTIITS009
현상
Tibero to Postgresql DBLink 사용 시 실제로 존재하는 테이블 조회할 경우 테이블이 존재하지 않는다고 출력되는 TBR-12126 오류 현상이 발생하였습니다.
아래 예시 코드와 같이 Postgresql 에서 테이블 생성 후 Tibero에서 해당 테이블을 조회하면, 에러코드가 출력됩니다.
Postgresql에서 테이블 생성
create table test (c1 int); insert into test values(1);
Tibero에서 해당 테이블 조회 시 에러코드 출력
SQL> select * from test@pgnew; TBR-12126: Remote database client API error - Explicit prepare failed. - ERROR: relation "TEST" does not exist Position: 37 TBR-130097:Explicit prepare failed. - ERROR: relation "TEST" does not exist Position: 37
원인
Tibero는 기본적으로 테이블과 칼럼 이름을 다 `대문자`로 변경하고, Postgresql 은 기본적으로 테이블과 칼럼 이름 전체를 `소문자`로 변경하여 해당 오류 현상이 발생하였습니다.
해결
Postgresql 에서 테이블명 소문자로 테이블 생성 시
Postgressql에서 생성한 테이블은 소문자로 생성 되므로, Tibero에서 해당 테이블 조회 시 Double quotes (””, 쌍따옴표)으로 감싸서 조회해야 합니다.
prosyncmanager=> create table test (c1 int); CREATE TABLE prosyncmanager=> insert into test values(1); INSERT 0 1
Tibero에서 조회
SQL> select * from "test"@pgnew;
c1
----------
1
1 row selected.
Postgresql 에서 테이블명 대문자로 테이블 생성 시
만약 Postgresql에서 생성한 테이블이 대문자라면 Tibero에서 조회 시 Double quotes(””, 쌍따옴표)으로 감싸지 않아도 됩니다.
prosyncmanager=> create table "TEST3" (c1 int); CREATE TABLE prosyncmanager=> insert into "TEST3" values (3); INSERT 0 1 prosyncmanager=> select * from "TEST3"; c1 ---- 3 (1 row)
Tibero에서 조회
SQL> select * from test3@pgnew;
c1
----------
3테이블명 대소문자 적용에 따른 출력값 비교
1) 테이블 명이 소문자 일 때, 출력값 비교
Postgresql
prosyncmanager=> select * from test; c1 ---- 1 (1 row)
Tibero
SQL> select * from "test"@pgnew;
c1
----------
1
1 row selected.
2) 테이블 명에 대소문자 섞여있을 때, 출력값 비교
Postgresql
prosyncmanager=> select * from "Test2"; c1 ---- 2 (1 row)
Tibero
SQL> select * from "Test2"@pgnew;
c1
----------
2
1 row selected.3) 테이블 명이 대문자 일 때, 출력값 비교
Postgresql
prosyncmanager=> select * from "TEST3"; c1 ---- 3 (1 row)
Tibero
SQL> select * from test3@pgnew;
c1
----------
3
1 row selected.