1

주제: common.plugin.php의 treatPluginTable 함수 관련 mysql 버그

플러그인 드라이버에서 storage 섹션을 선언했을 때 mysql의 timestamp 데이터 타입의 default값으로 CURRENT_TIMESTAMP나 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP를 주면 정상적으로 테이블을 생성하지 못합니다. 디버깅 해보니 /lib/model/common.plugin.php에서 treatPluginTable 함수가 default값을 무조건 문자열로 인식해서 생기는 문제더군요. (1.7.5에서는 적어도 이렇습니다.)

일단 급한 것은 아니니 이런 버그도 있다는것만 참조해주세요. ^^;;

그나저나 플러그인 드라이버에서 storage 섹션을 선언해서 사용하는 것은 어느 버전부터 가능한가요? 제작중인 플러그인이 자체 테이블을 생성해서 사용하도록 하고 싶은데, 만약에 비교적 최근 버전에서만 가능하다면 테이블 생성을 수동으로 해야 할 것 같아서 말이죠. (확인했습니다. 버전별 코드 일일이 뒤져서. 1.1부터 가능하군요.)

kirrie (2008-10-29 00:10:18)에 의해 마지막으로 수정

2

답글: common.plugin.php의 treatPluginTable 함수 관련 mysql 버그

안준환 작성:

버그...라기보다는 의도된 처리인 것 같습니다. 아무래도 프로그램 입장에서는 default로 들어온 값이 문자열인지 SQL문인지 판단할 수 있는 방법이 없으니까요 roll (그리고 2.0대에서 RDBMS가 ORM으로 wrapping되면 raw SQL을 프로그램 내부에서 사용하는 것을 최소화하는게 좋지요)

필요하시다면 insert문이나 update문에서 time()으로 넣어주시면 될 것 같습니다. TC 내부에서도 아마 그렇게 처리하고 있을겁니다~

몇개 안되는거 예외처리 해주시면!! 하고 생각해 보다가 보니 아무래도 플러그인인데 그 이상의 각각의 디비에 관한 로우-레벨한 것들을 요구하는건 좀 그렇겠네요. 잘 알겠습니다!