Dokumen ini menjelaskan perbandingan kompatibilitas antara AnalyticDB for PostgreSQL V4.3 dan V6.0. Jika Anda memutakhirkan instance AnalyticDB for PostgreSQL dari V4.3 ke V6.0, penyesuaian tertentu diperlukan.
Pengoptimal kueri
| Item | V4.3 | V6.0 |
| Pengoptimal kueri default | Legacy | ORCA |
Baik AnalyticDB for PostgreSQL V4.3 maupun V6.0 mendukung pengoptimal kueri Legacy dan ORCA. Untuk informasi lebih lanjut tentang pengoptimal kueri ini, lihat Pilih Pengoptimal Kueri.
Karakter escape
- Di AnalyticDB for PostgreSQL V6.0,
backslashes (\)di dalam string tidak digunakan sebagai karakter escape. - Anda dapat mengeksekusi pernyataan berikut untuk menggunakan backslash (\) sebagai karakter escape. Namun, kami sarankan agar Anda tidak melakukan operasi ini.
set standard_conforming_strings = off;Catatan Pernyataan tersebut hanya berlaku untuk sesi. Jika Anda ingin menerapkannya pada instance AnalyticDB for PostgreSQL, ajukan tiket dan minta dukungan teknis AnalyticDB for PostgreSQL untuk mengonfigurasi karakter escape sesuai kebutuhan Anda.
Konversi tipe data
- AnalyticDB for PostgreSQL V6.0 tidak secara otomatis mengonversi string dalam format
YYYYMMDDHH24MISSmenjadi timestamp. Untuk melakukan konversi, gunakan fungsi bawaanto_timestamp/to_char. - Dibandingkan dengan V4.3, AnalyticDB for PostgreSQL V6.0 tidak secara implisit mengonversi tipe data numerik menjadi TEXT. Setelah memutakhirkan dari V4.3 ke V6.0, tambahkan fungsi ke pernyataan SQL asli untuk mengonversi tipe data numerik menjadi TEXT. Contoh:
create or replace function substr(numeric, integer,integer)returns text as $$ select substr($1::text,$2,$3); $$ language sql IMMUTABLE strict;create or replace function pg_catalog.btrim(str numeric) returns text as $$ return $_[0]; $$ language plperl IMMUTABLE strict;create or replace function to_date(timestamp, text) returns date as $$ select to_date($1::text,$2); $$ language sql IMMUTABLE strict;create or replace function to_date(integer, text) returns date as $$ select to_date($1::text,$2); $$ language sql IMMUTABLE strict; - Tulis ulang pernyataan SQL atau fungsi tempat tipe data perlu dikonversi secara implisit menjadi TEXT.
Log kesalahan tabel eksternal
INTO error_table dalam pernyataan CREATE EXTERNAL TABLE atau COPY. Sebagai gantinya, gunakan fungsi bawaan untuk memanipulasi log kesalahan tabel eksternal.gp_read_error_log('$external_table')
gp_truncate_error_log('$external_table')Tipe data
- Jika Anda mengubah format penyimpanan file NUMERIC, ruang disk yang terkait akan terpengaruh.
- Jika Anda mengubah tipe data MONEY dari 32-bit menjadi 64-bit, ruang disk yang terkait juga akan terpengaruh.
- Di AnalyticDB for PostgreSQL V6.0, Anda tidak dapat menggunakan tipe data berikut untuk kunci distribusi:
- abstime
- reltime
- tinterval
- money
- anyarray
Kata kunci
AnalyticDB for PostgreSQL V6.0 menambah, memodifikasi, dan menghapus beberapa kata kunci. Nama objek database tidak boleh sama dengan kata kunci.
Penggunaan kata kunci bervariasi antar kategori. Anda dapat mengeksekusi pernyataan berikut untuk melihat semua kata kunci dan kategorinya di AnalyticDB for PostgreSQL V4.3 dan V6.0:
select * from pg_get_keywords();| Kode Kategori | Kategori | Deskripsi |
| U | tidak dicadangkan | Tidak dicadangkan. Kata kunci dalam kategori ini dapat digunakan sebagai nama untuk semua objek termasuk tampilan, tabel, fungsi, indeks, bidang, dan tipe. |
| C | tidak dicadangkan (tidak dapat digunakan sebagai nama fungsi atau tipe) | Tidak dicadangkan. Kata kunci dalam kategori ini dapat digunakan sebagai nama objek kecuali untuk fungsi dan tipe. |
| T | dicadangkan (dapat digunakan sebagai nama fungsi atau tipe) | Dicadangkan. Kata kunci dalam kategori ini tidak dapat digunakan sebagai nama objek kecuali untuk fungsi dan tipe. |
| R | dicadangkan | Dicadangkan. Kata kunci dalam kategori ini tidak dapat digunakan sebagai nama objek. |
| Kata Kunci | V4.3 | V6.0 |
| between | dicadangkan | tidak dicadangkan (tidak dapat digunakan sebagai nama fungsi atau tipe) |
| collation | Tidak ada | dicadangkan (dapat digunakan sebagai nama fungsi atau tipe) |
| concurrently | tidak dicadangkan | dicadangkan (dapat digunakan sebagai nama fungsi atau tipe) |
| convert | tidak dicadangkan (tidak dapat digunakan sebagai nama fungsi atau tipe) | Tidak ada |
| filter | dicadangkan | tidak dicadangkan |
| lateral | T/A | dicadangkan |
| new | dicadangkan | Tidak ada |
| off | dicadangkan | tidak dicadangkan |
| old | dicadangkan | Tidak ada |
| percentile_cont | tidak dicadangkan (tidak dapat digunakan sebagai nama fungsi atau tipe) | Tidak ada |
| percentile_disc | tidak dicadangkan (tidak dapat digunakan sebagai nama fungsi atau tipe) | Tidak ada |
| range | dicadangkan | tidak dicadangkan |
| reindex | tidak dicadangkan | dicadangkan |
| rows | dicadangkan | tidak dicadangkan |
| sort | dicadangkan | dicadangkan (dapat digunakan sebagai nama fungsi atau tipe) |
| variadic | Tidak ada | dicadangkan |
Tabel sistem
Beberapa tabel sistem berbeda antara AnalyticDB for PostgreSQL V4.3 dan V6.0. Jika logika bisnis Anda merujuk pada tabel sistem berikut, modifikasi tabel sistem yang dirujuk diperlukan untuk menghindari kesalahan.
| V4.3 | V6.0 | Deskripsi |
| pg_class.reltoastidxid | Tidak ada | AnalyticDB for PostgreSQL V6.0 tidak mendukung tabel ini. |
| pg_stat_activity.procpid | pg_stat_activity.pid | Dalam AnalyticDB for PostgreSQL V6.0, nama kolom diubah dari procpid menjadi pid. |
| pg_stat_activity.current_query | pg_stat_activity.state pg_stat_activity.query | AnalyticDB for PostgreSQL V6.0 menampilkan aktivitas saat ini dari proses server dalam dua kolom. Kolom state menampilkan status keseluruhan backend saat ini. Kolom query menampilkan kueri yang sedang dieksekusi. |
| gp_distribution_policy.attrnums | gp_distribution_policy.distkey | Dalam AnalyticDB for PostgreSQL V6.0, nama kolom diubah dari attrnums menjadi distkey, dan tipe data kolom ini diubah menjadi int2vector. |
| sesion_level_memory_consumption.__gp_localid sesion_level_memory_consumption.__gp_masterid | Tidak ada | AnalyticDB for PostgreSQL V6.0 tidak mendukung tabel-tabel ini. |
| pg_filespace pg_filespace_entry | Tidak ada | AnalyticDB for PostgreSQL V6.0 tidak mendukung tabel-tabel ini. |
Parameter fungsi bawaan
AnalyticDB for PostgreSQL V6.0 mengubah parameter beberapa fungsi bawaan.
| V4.3 | V6.0 | Deskripsi |
| int4_avg_accum(bytea, integer) | int4_avg_accum(bigint[], integer) | Tidak ada |
| string_agg(expression) | string_agg(expression, delimiter) | Dalam AnalyticDB for PostgreSQL V6.0, Anda dapat menggunakan fungsi string_agg untuk mengonversi ekspresi menjadi string. |
Perbandingan lainnya
| Item | V4.3 | V6.0 |
| Fungsi LEFT() | Tidak didukung | Didukung |
| Operasi UPDATE pada kolom kunci distribusi | Tidak didukung | Didukung |