PostgreSQLパッチ

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

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  
  • パッチは2箇所
 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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。