제로보드XE에서 돌아가는 업무에 필요한 모듈하나를 만들던중 테이블 JOIN문에서 에러가 발생하여 확인하니 XML 파서에서 버그를 발견했다. 제로보드님이 바쁜관계로 조금 늦어지는듯 하다. 혹시 필요하신분들은 임시로 수정해서 사용하시기 바랍니다.
<table name="scm_products" alias="products" />
<table name="scm_code" alias="unit" />
<table name="scm_code" alias="car" />
위 내용은 제가 작성한 Queries/XML 파일의 내용중 일부입니다.
join문구가 들어가는 모듈을 작성중 위와 같이하면 에러가 발생하더군요
그래서 추적을 해보니 XmlQueryParser에서 문제의 원인(?)을 찾아볼 수 있었습니다.
$table[$table_name] = $alias; <== 대략 이런형식으로 되어 있었던것 같습니다.
테이블명을 키값으로 사용해서 alias값을 넣더군요
위의 코드를 보면 테이블명 'scm_code' 이 두개 있습니다.
결국 같은 키값으로 들어가니 alias가 unit인 값은 사라지고 car 하나만 남더군요
테이블명을 키값으로 사용하는것이 원인(?)인듯합니다.
$table[$alias] = $table_name; <== 이런형식으로 바꾸어야 할것같습니다. 별명은 같은값이 있을수 없으니 말입니다.
아래는 버그 수정방법이다 어디까지나 임시방편입니다.
=============================
일단 저같은 경우 이것때문에 이상한 문제는 발견되어 지지 않았습니다.
제가 MYSQL을 사용기에 mysql을 이용하는 분들만이라도 .....
다른 디비를 사용하시는분들도 classes안의 php파일을 일부 수정하시면 될듯합니다. 아랫것들을 참조하여 한번해보시기 바랍니다.
zbxe v0.2.3 기준
classes/db/DBMysql.class.php
399
$table_list[] = '`'.$this->prefix.$key.'`';
399수정
$table_list[] = '`'.$this->prefix.$val.'`';
425
$table_list[] = '`'.$this->prefix.$key.'` as '.$val;
425수정
$table_list[] = '`'.$this->prefix.$val.'` as '.$key;
456
$table_list[] = '`'.$this->prefix.$key.'`';
456수정
$table_list[] = '`'.$this->prefix.$val.'`';
477
$table_list[] = '`'.$this->prefix.$key.'` as '.$val;
477수정
$table_list[] = '`'.$this->prefix.$val.'` as '.$key;
classes/xml/XmlQueryParser.class.php
49
$output->tables[$table_name] = $alias;
49수정
$output->tables[$alias] = $table_name;




