在 EDB 中,edb_redwood_date 是 Oracle 相容性的設置參數(位在 $PGDATA/postgresql.conf 裡面),這會將一些 PostgreSQL 原生的時間格式,微調成能夠相容於 Oracle 的設定。
根據 EnterpriseDB 的 Oracle 相容性使用手冊 Database Compatibility for Oracle® Developer's Guide v9.5 - 3.2.4 Date/Time Types ,以及 PostgreSQL 原生版文件 PostgreSQL: Documentation: 9.1: Date/Time Types - Table 8-9. Date/Time Types。可見 EDB 為了 Oracle 相容性緣故,於啟用 edb_redwood_date 之後(預設為啟用),會將 DATE 轉換成 PostgreSQL 原生的 TIMESTAMP(0)。
下圖為一個小測試:
不過根據 PostgreSQL 原生文件所述:
原生的 DATE 為 4 Bytes 的資料型態
而 TIMESTAMP 為 8 Bytes 的資料型態
Oracle 中的 DATE 為 7 Bytes 的資料型態
所以 EDB 的預設 DATE 為 TIMESTAMP(0)(也就是 8 Byte 僅含日期的時間)是 Oracle 相容所必須的設計。
因此,如果沒有要在 EDB 上面進行額外開發原生 PostgreSQL 功能的需求,就無須擔心 EDB 自動轉換的問題,保持預設的 edb_redwood_date = on 就好,以達到最佳 Oracle 相容性。
參考:
Database Compatibility for Oracle® Developer's Guide v9.5 - 3.2.4 Date/Time Types
PostgreSQL: Documentation: 9.1: Date/Time Types - Table 8-9. Date/Time Types
How many bytes does a DATE use? | Oracle Community
沒有留言:
張貼留言