最近剛好有機會接觸PostgreSQL
一部分的工作是將存在舊版PostgreSQL的資料 porting 至新版
在 porting 的過程當中,發現 PostgreSQL 8.3版針對 implicit type conversion 做了更嚴
所以~ 在舊版 PostgreSQL上面存在的一些default的自動轉型函式(implicit type conversion function)都被移除掉了
當然,過去寫的程式若是比較髒 (例如: 拿 integer 跟 char varing比較、Join)的SQL Statement在新版就會行不通~
比較用功的人~ 當然要藉機好好的review一下 schema的設計是符合理,schema, SQL Statement語句是否要調整~
但,如果影響範圍很大的話,倒是可以自已將新版拿掉的 自動轉型函式再補回去~
這樣 就不用改程式囉 :Q
以下是我在網路上找到,補在新版PostgreSQL的一些function,補上去後 原本的app就可順利執行了:
CREATE FUNCTION pg_catalog.text(integer) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(int4out($1));';
CREATE CAST (integer AS text) WITH FUNCTION pg_catalog.text(integer) AS IMPLICIT;
COMMENT ON FUNCTION pg_catalog.text(integer) IS 'convert integer to text';
CREATE FUNCTION pg_catalog.text(bigint) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(int8out($1));';
CREATE CAST (bigint AS text) WITH FUNCTION pg_catalog.text(bigint) AS IMPLICIT;
COMMENT ON FUNCTION pg_catalog.text(bigint) IS 'convert bigint to text';
2009-03-17
PostgreSQL 8.3 版 與舊版之相容性問題排除方法
標籤:
PostgreSQL
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言