PostgreSQLパッチ
- RoundCubeは、MySQLが開発のメインとなっているようです。
- PostgreSQLで使うには、いわゆるMyGresパッチ作業が必要です(注:MyGresは桑村さんから教えていただきました)。
- RoundCubeは、エラーの内容が、logsディレクトリにerrorsファイルへ吐き出される。PHPのログファイルも合わせてデバッグ作業をおこなう。
- もちろん、PostgreSQLのログファイルもチェックしよう。
PostgreSQLパッチ(2005.12.24)
- messageテーブル変更
- from/cc/toで、「too long」が出た。text型へ変更
--
-- Table "messages"
-- Name: messages; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE "messages" (
message_id integer DEFAULT nextval('message_ids'::text) NOT NULL,
user_id integer DEFAULT 0 NOT NULL,
del integer DEFAULT 0 NOT NULL,
cache_key character varying(128) DEFAULT ''::character varying NOT NULL,
idx integer DEFAULT 0 NOT NULL,
uid integer DEFAULT 0 NOT NULL,
subject text DEFAULT '',
"from" text DEFAULT '',
"to" text DEFAULT '',
cc text DEFAULT '',
date timestamp with time zone NOT NULL,
size integer DEFAULT 0 NOT NULL,
headers text NOT NULL,
body text
);
PostgreSQLパッチ情報(2005.10.15)
PostgreSQLパッチの数々
UNIX_TIMESTAMP()関数の問題 (2005-10-14)
- PostgreSQLのデフォルトではUNIX_TIMESTAMP関数は無い。
- ディスカッションサイトでは2通り紹介されている。
- 1. PHPソースをパッチ
- SELECT vars, ip, UNIX_TIMESTAMP(changed) AS changed
+ SELECT vars, ip, extract(epoch from changed) AS changed
- 2. 無ければ、RoundCube用に関数を作る(力技)
create or replace function unix_timestamp
(timestamp with time zone) time zoneがある場合
returns int as '
declare
date alias for $1;
timezero timestamp;
offset interval;
begin
timezero := timestamp ''1970-1-1 00:00'' at time zone ''utc'';
offset := date-timezero;
return (
extract(''days'' from offset)*86400+
extract(''hours'' from offset)*3600+
extract(''minutes'' from offset)*60+
extract(''seconds'' from offset))::int;
end;
' language 'plpgsql';
エスケープ文字が無いバグ(2005-10-15)
- SELECT identity_id, name, email
FROM identities
WHERE user_id=1 AND del!='1'
ORDER BY "default" DESC, name ASC
+ SELECT identity_id, name, email
FROM identities
WHERE user_id=1 AND del!='1'
ORDER BY \"default\" DESC, name ASC
program\steps\mail\compose.inc(94): ORDER BY `default` DESC, name ASC",
program\steps\settings\func.inc(151): ORDER BY `default` DESC, name ASC",
PHP文法ミス
- roundcubemail/program/include/rcube_db.inc
@@ -169,7 +169,7 @@
- $result =& $this->db_handle->getOne("SELECT CURRVAL('" .$sequence. "')");
+ $result =& $this->db_handle->getOne("SELECT CURRVAL('$sequence')");
最終更新:2005年12月24日 15:33