포럼
XML Query 에 대하여
2015.02.23 03:46
최근에 쓸데가 있어서 (시간때우기로) XE 를 Oracle 12c 버전에서 구동해보기 프로젝트를 해보고 있습니다 ...
일단 XE 설치 -> 기본 적인 코어 기능 까지는 정상적으로 작동 하지만, 가장 큰 문제가 있어요 ...
XE 코어에서는 발생하지 않는 문제인데 ;; 자료실에 배포한 대부분의 모듈 및 위젯에서 발생하는 문제입니다.
Scehma XML 을 보시면 ... DB 스키마를 설계 할때 notnull="notnull" 이 옵션을 ... 무조건 사용 하시는 분들이 많습니다.
MySQL의 경우는 (물론 STRICT MODE를 비활성화 한 경우) NOT NULL 칼럼에 Null 값이 들어가더라도, 데이터가 올바르게 삽입이 되는 반면에 ... 일부 까다로운 DB (Ex. Oracle)의 경우 ... NOT NULL 칼럼에 Null 값이 들어갈 경우 오류가 나버립니다 ...
그리고 두번째 문제점은 나타나는 모듈이 극히 일부분이긴 하지만 적어 놓을게요 ...
<query id="sample_query" action="select">
<tables>
<table name="sample1" alias="sample1" />
<table name="sample2" alias="sample2" />
</tables>
<columns>
<column name="sample1.*" />
<column name="sample2.*" />
</columns>
... 이하 생략 ...
위와 같은 쿼리가 있을때, sample1 테이블과 sample2 테이블에 중복되는 필드가 있을 경우 오류가 나버립니다 ...
일부 DB 에서는 그런 문제가 생길수 있으니 ... 개발을 하실때 참고가 되었으면 하는 바램으로 ... 이렇게 글을 올리게 되었습니다.
댓글 7
-
sol
2015.02.23 06:56
-
XESniper
2015.02.23 10:03
아 그러고 보니 DB 특정의 문제가 맞네요 .... 근데 MySQL 같은 경우도 Strict Mode 를 끄지 않을 경우에는 동일 한거 같더라고요 ...
애초에 오류를 방지 하기 위하서는 Third Party 모듈들도 XE 코어와 같이 꼭 필요한 필드에만 notnull="notnull" 값을 주고, 웬만해선 Table 조인시에는 와일드 카드 선택 문을 복수로 사용하지 않는데 좋을거 같아 보이긴 해요.
-
sol
2015.02.23 10:14
MySQL이 not null 문제이외에도 group by랑 int형 처리 등 너무 관대합니다;;
하지만 MySQL이 대부분을 차지하고 있어서 무시하기도 애매한 상황이죠.
-
Akairain
2015.02.23 15:21
XE Core 같은 경우에는 DB를 전문으로 하시는 분이 있지 않나요?
코어 같은 경우는 문제 되는데 documents 테이블에 homepage 필으가 Not Null 로 생성되는 문제를 제외하곤 없습니다 ...
group by 의 경우는 Oracle에서 현재 까지 문제되는것이 거이 없는것으로 보여 집니다. -
Akairain
2015.02.23 15:24
또 하나 문제점이 ... Index 를 생성할때 MSSQL이나 Cubrid에서는 문제 없단 부분인데 ... ;; Index 이름이 중복되면 설치중 오류가 나는 현상이 있어요 ... idx_datetime 이거가 특히 문제가 많이 생기던 부분인데 ... 여러개의 테이블에 동일한 이름으로 인덱스를 생성 할경우 Oracle의 경우 ... 오류가 좀 많아요 ㅜㅜ -
sejin7940
2015.02.23 11:28
두번째 문제점은 정확하게 어느 시점이었는지 기억이 안 나는데 ( 1.5 올라올떄였는지 1.7 올라올때였는지)
메이저 업데이트 되면서 저런 현상이 발생했습니다. (원칙적으로는 저게 맞는거죠. XE에서 칼럼명을 테이블명.칼럼명 으로 쓰질 않으니)
결국 join 을 시킬때.. 중심이 되는건 .* 으로 처리하고,
부가 되는 테이블은 전부 각각 별도 지정해서 겹치지 않게 alias 를 재설정해줘야할겁니다.
저렇게 정의가 안 되어있으면 아예 query 문 결과가 안 나올꺼예요 (구자료 호환 안 되던 큰 이유중 하나였죠)
-
misol
2015.02.24 00:37
대부분 MySql 환경에서 개발하고 테스트 해서 그럴거에요...
모듈 제작자에게 알려주시면 (또는 코드 기여를 하시면?) 패치되는 모듈도 꽤 있을 것으로 예상합니다.
XML Query 문제라기 보다는 DB특성 문제입니다.
다른 DB가 까다롭기보다는 MySQL이 이상하게 관대한 것 같습니다.