日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

6.0版本與7.0版本兼容性注意事項

更新時間:

AnalyticDB PostgreSQL 6.0版AnalyticDB PostgreSQL 7.0版存在兼容性差異,當您需要將實例從6.0版本升級到7.0版本時,請先根據本文了解6.0版本與7.0版本兼容性注意事項。

數據類型

  • AnalyticDB PostgreSQL 7.0版刪除了以下被SQL標準類型(如timestamp)所淘汰的數據類型:

    • abstime

    • realtime

    • tinterval

    • timeInterval

  • AnalyticDB PostgreSQL 7.0版雖然保留了unknown關鍵字,但已不再支持unknown類型。具體內容如下:

    • 不再支持以unknown類型作為列類型。

      --- 不再支持直接作為列類型
      CREATE TABLE test(a INT, b UNKNOWN);
      ERROR:  COLUMN "b" has pseudo-type UNKNOWN
    • AnalyticDB PostgreSQL 7.0版中,CTAS語句的字符串常量不再識別為unknown類型,而是以就近原則來轉換類型或默認轉換為text類型。

      --- CTAS:普通字符串常量或NULL,在adbpg6中被識別為unknown類型,而在adbpg7中被默認轉換為text類型
       CREATE TABLE test AS SELECT 1 AS a, NULL AS b;
      
                      TABLE "public.test"
       Column |  Type   | Collation | Nullable | Default 
      --------+---------+-----------+----------+---------
       a      | integer |           |          | 
       b      | text    |           |          | 
      Distributed randomly
      
      --- 使用union,unknown類型會就近轉換為對應列的同類型
      CREATE TABLE test AS SELECT 1::INT UNION SELECT NULL;
      
                     TABLE "public.test"
       Column |  Type   | Collation | Nullable | Default 
      --------+---------+-----------+----------+---------
       int4   | integer |           |          | 
      Distributed randomly

      當字符串常量的位置無法就近獲取被轉換的類型時,字符串常量默認轉換為text類型,此時可能會發生類型相關的錯誤。

      CREATE TABLE test(a INT);
      
      --- 兩層select的嵌套,讓內部的字符串無法根據就近原則發現test表中int類型的存在
      INSERT INTO test SELECT a FROM (SELECT '1' AS a) t;
      ERROR:  COLUMN "a" IS OF type INTEGER but expression IS OF type text 
    • 對于部分函數,如果輸入的參數錯誤,字符串常量可能會出現unknown類型報錯。

      --- string_agg的入參只有以下兩種
      string_agg(text,text)
      string_agg(bytea,bytea)
      --- 如果其它類型和字符串常量同時出現可能會以unknown類型的報錯展示
      CREATE TABLE test(a INT, b INT);
      SELECT a, string_agg(b,',') FROM test GROUP BY a;
      ERROR:  FUNCTION string_agg(INTEGER, UNKNOWN) does NOT exist 
    說明

    AnalyticDB PostgreSQL 6.0版v6.3.11與AnalyticDB PostgreSQL 7.0版保持一致,不再支持unknown類型。AnalyticDB PostgreSQL 6.0版v6.6.2添加了開關adbpg_enable_resolve_unknowns來控制是否支持unknown類型,并默認關閉。

SQL語法

  • ALTER TABLE ... ADD PRIMARY KEY差異:

    • AnalyticDB PostgreSQL 7.0版主表執行ALTER TABLE ... ADD PRIMARY KEY標記列為NOT NULL時,該更新操作會傳播到繼承的子表,即子表的對應列會增加NOT NULL屬性。

    • AnalyticDB PostgreSQL 6.0版主表執行ALTER TABLE ... ADD PRIMARY KEY標記列為NOT NULL時,該更新操作不會傳播到繼承的子表。

  • CREATE FUNCTION差異:

    • AnalyticDB PostgreSQL 7.0版移除CREATE FUNCTION中的WITH子句。

    • AnalyticDB PostgreSQL 6.0版CREATE FUNCTION中仍保留WITH子句。

  • 刪除OID列的特殊行為差異:

    • AnalyticDB PostgreSQL 7.0版系統表有普通的OID列。

    • AnalyticDB PostgreSQL 6.0版系統表中有隱藏的OID列。AnalyticDB PostgreSQL 6.0版在創建表的過程中,可以使用WITH OIDS來指定一個通常不可見的OID列,目前該功能已被刪除;列仍然可以顯式聲明為OID類型。 對具有使用WITH OIDS創建的列的表的操作將需要調整。

系統表

系統表在AnalyticDB PostgreSQL 7.0版進行了以下變更,如果您的業務邏輯引用了以下系統表,請進行修改否則將引起報錯。

  • 刪除以下系統表:

    • pg_exttable

      AnalyticDB PostgreSQL 7.0版external系統表與foreign系統表合并為pg_foreign_table。其中external表的server被設為gp_exttable_server,相關屬性寫入ftoptions

    • pg_partition

    • pg_partition_encoding

    • pg_partition_rule

      與分區表相關的系統表由gp_partition_templatepg_partitioned_table代替。

  • 新增分區表相關系統表:

    • gp_partition_template

      gp_partition_template定義了分區表在分區層次結構中每個級別的子分區模板,表結構信息如下。

      列名

      類型

      描述

      relid

      oid

      分區表的OID(頂層父表)。

      level

      int16

      分區在層次中的級別。

      template

      pg_node_tree

      模板結構。

    • pg_partitioned_table

      pg_partitioned_table存放有關表如何被分區的信息,表結構信息如下。

      列名

      類型

      引用

      描述

      partrelid

      oid

      pg_class.oid

      分區表pg_class項的OID。

      partstrat

      char

      分區策略,取值說明:

      • h:哈希分區表。

      • l:列表分區表。

      • r:范圍分區表。

      partnatts

      int2

      分區鍵中的列數。

      partdefid

      oid

      pg_class.oid

      分區表默認分區(子分區)的pg_class項的OID,如果分區表沒有默認分區則為0。

      partattrs

      int2vector

      pg_attribute.attnum

      長度為partnatts值的數組,指示分區鍵的組成部分。例如,取值1 3表示第一和第三個列組成了分區鍵。該數組中的零表示對應的分區鍵列是一個表達式而不是簡單的列引用。

      partclass

      oidvector

      pg_opclass.oid

      partclass包含分區鍵中每一列要使用的操作符類的OID。詳見pg_opclass

      partcollation

      oidvector

      pg_opclass.oid

      partcollation包含分區鍵中每一列要用于分區排序規則的OID,如果該列不是一種可排序數據類型則為零。

      partexprs

      pg_node_tree

      非簡單列引用的分區鍵列的表達式樹(以nodeToString()的表達式)。該項是一個列表,如果所有分區鍵列都是簡單列引用,則該域為空。

  • 更改以下系統表:

    系統表

    變更內容

    pg_attribute

    • 新增atthasmissing列,指示是否有missing值。取值說明:

      • true:該列具有缺失值選項,可以包含NULL值。

      • false:該列不具有缺失值選項,不允許包含NULL值。

    • 新增attidentity列,指示該列是否被定義為標識列。取值說明:

      • 'a':該列是標識列,其值總是生成。

      • 'd':該列是標識列,其值是通過序列或其他機制自動生成的。

      • ''(零字節):該列不是標識列。

    • 新增attgenerated列,指示該列是否為生成列。取值說明:

      • 's':該列是生成列,其值為stored。

      • ''(零字節):該列不是生成列。

    pg_class

    • 刪除relstorage列,用于指示relkind的物理存儲方式。AnalyticDB PostgreSQL 7.0版中external表的relkind由'r'更改為'f'

    • 刪除relhasoids列,用于指示是否為表每行生成一個OID。AnalyticDB PostgreSQL 7.0版已經刪除OID隱藏列。

    • 刪除relhaspkey列,用于指示是否有Primary Key Index(主鍵索引),AnalyticDB PostgreSQL 7.0版已刪除,需要檢查主鍵的應用程序,應查詢pg_index。

    • 新增relrowsecurity列,指示行級安全是否開啟。取值說明:

      • true :表啟用了行級安全性,可以應用安全策略。

      • false :表未啟用行級安全性,默認情況下所有用戶都可以訪問表的所有數據。

    • 新增felforcerowsecurity列,跟蹤表是否強制啟用了行級安全性,如果行級安全性(啟用時)也適用于表擁有者則為真(true)。

    • 新增relispartition列,指示是否為分區表。取值說明:

      • true :該表是分區表的一個分區。

      • false :該表不是分區表或者是分區表的父表。

    • 新增relrewrite列,指示表在DDL操作期間是否具有重寫規則。取值說明:

      • true :表具有重寫規則。

      • false :表沒有定義重寫規則或者不適用于重寫規則。

    • 新增relpartbound列,為pg_node_tree類型,表明分區邊界的內部表達。

    pg_index

    • 新增indnkeyatts列,指示Index中Key列的數量。AnalyticDB PostgreSQL 7.0版對Index開始加入Including語句,可以將非Index鍵的列寫入葉子節點方便查找。

    pg_proc

    • 將protransform列更名為prosupport,調用該函數時可以通過此列指定的函數進行簡化。

    • 刪除proisagg列,指示函數是否為一個聚集函數。

    • 刪除proiswindow列,指示函數是否為一個窗口函數。

    • 新增prokind列,用于指示函數的種類。取值說明:

      • f:普通函數。

      • p:存儲過程。

      • a:聚集函數。

      • w:窗口函數。

    • 新增proparallel列,指示該函數在并行模式下是否能安全運行。取值說明:

      • s:能在并行模式下不受限制安全運行的函數。

      • r:可以在并行模式下運行,但是只限于由并行分組的領導者執行的函數。

      • u:在并行模式中不安全的函數,這類函數的存在會強制一個順序執行計劃。

    • 新增protrftypes列,存儲需要應用轉換數據類型的OID。

    pg_statistic

    • 新增stacoll列,指示統計信息的收集方法。取值說明:

      • N:排序規則用于導出存儲在第N個“槽”中的統計信息。例如,可排序列的直方圖槽將顯示定義數據排序順序的排序規則。

      • 0:表示不可整理數據。

擴展插件

以下擴展插件,AnalyticDB PostgreSQL 7.0版可能暫時無法使用。

插件名

描述

adbpg_desensitization

進行SQL脫敏。

adbpg_hardware_bench

評估硬件的適用性。

address_standardizer

用于將地址解析為組元素,一般用于支持地理編碼地址標準化步驟。

address_standardizer_data_us

提供了美國地址標準化和解析的功能。

auto_partition

管理日期分區。

diskquota

磁盤配額程序。

fastann

向量化數據庫引擎。

hyjal_pb_formatter

支持讀取hyjal protobuf數據。

madlib

提供用于可擴展數據庫內分析的開源庫。

morton_code

莫頓碼編碼器。

multi_master

提供Multi-Master特性的UDF。

Multicorn

實現自定義外部數據源的查詢,使用Multicorn插件需要一定的Python編程知識。

open_analytic

對非結構化數據進行分析。

oss_ext

用于支持OSS外表的協議。

AnalyticDB PostgreSQL 7.0版不再支持,使用oss_fdw替換。

PL/Java

提供了將Java代碼嵌入到PostgreSQL數據庫中的能力。

PL/Python

提供了將Python代碼嵌入到PostgreSQL數據庫中的能力。

AnalyticDB PostgreSQL 7.0版不再支持,更改為PL/Python3u。

PL/Python2u

允許在PostgreSQL數據庫中使用Python 2語言編寫存儲過程、觸發器和函數。

AnalyticDB PostgreSQL 7.0版不再支持,更改為PL/Python3u。

redis_fdw

用于查詢Redis服務器的外部數據包裝器。

關鍵字

AnalyticDB PostgreSQL 7.0版新增、修改、刪除了部分關鍵字。(數據庫對象的命名,不可與關鍵字沖突)。

關鍵字不同的分類及含義,可以通過如下命令查看(6.0版和7.0版均適用)。

SELECT * FROM pg_get_keywords();

AnalyticDB PostgreSQL 7.0版字符分類碼說明如下:

catcode

說明

U

不保留,可以用于任何對象(視圖、表、函數、類型、索引、字段、類型等)。

C

不保留,但是不可用于函數、類型名。

T

保留,但是可用于函數、類型名。

R

保留,不可用于任何對象名稱。

AnalyticDB PostgreSQL 7.0版AnalyticDB PostgreSQL 6.0版關鍵字差異如下:

關鍵字

AnalyticDB PostgreSQL 6.0版

AnalyticDB PostgreSQL 7.0版

access_key_id

unreserved

無此關鍵字

attach

無此關鍵字

unreserved

call

無此關鍵字

unreserved

columns

無此關鍵字

unreserved

coordinator

無此關鍵字

unreserved

cube

unreserved(不可用于函數、類型名)

unreserved

depends

無此關鍵字

unreserved

detach

無此關鍵字

unreserved

endpoint

無此關鍵字

unreserved

generated

無此關鍵字

unreserved

groups

無此關鍵字

unreserved

import

無此關鍵字

unreserved

include

無此關鍵字

unreserved

incremental

unreserved

無此關鍵字

initplan

無此關鍵字

unreserved

json

unreserved

無此關鍵字

jsonline

unreserved

無此關鍵字

lc_collate

unreserved

無此關鍵字

lc_ctype

unreserved

無此關鍵字

library

unreserved

無此關鍵字

locked

無此關鍵字

unreserved

logged

無此關鍵字

unreserved

manifest

unreserved

無此關鍵字

merge

unreserved

無此關鍵字

method

無此關鍵字

unreserved

multisort

unreserved

無此關鍵字

new

無此關鍵字

unreserved

old

無此關鍵字

unreserved

orc

unreserved

無此關鍵字

overriding

無此關鍵字

unreserved

persistently

無此關鍵字

unreserved

parquet

unreserved

無此關鍵字

policy

無此關鍵字

unreserved

procedures

無此關鍵字

unreserved

referencing

無此關鍵字

unreserved

retrieve

無此關鍵字

unreserved

rollup

unreserved(不可用于函數、類型名)

unreserved

routine

無此關鍵字

unreserved

routines

無此關鍵字

unreserved

schemas

無此關鍵字

unreserved

secret_access_key

unreserved

無此關鍵字

sets

unreserved(不可用于函數、類型名)

unreserved

skip_ao_aux_table

unreserved

無此關鍵字

skip

無此關鍵字

unreserved

sort

unreserved

無此關鍵字

sorted

unreserved

無此關鍵字

storage_cold

unreserved

無此關鍵字

storage_hot

unreserved

無此關鍵字

stored

無此關鍵字

unreserved

support

無此關鍵字

unreserved

synchronization

unreserved

無此關鍵字

tablesample

無此關鍵字

reserved(不可用于函數、類型名)

transform

無此關鍵字

unreserved

ttl

unreserved

無此關鍵字

unload

unreserved

無此關鍵字

unsorted

unreserved

無此關鍵字

xmlnamespaces

無此關鍵字

unreserved(不可用于函數、類型名)

xmltable

無此關鍵字

unreserved(不可用于函數、類型名)

zorder

reserved

無此關鍵字

函數相關

  • AnalyticDB PostgreSQL 7.0版重命名預寫式日志目錄pg_xlog 為pg_wal,并重命名事務狀態目錄pg_clog為pg_xact,因此名稱引用了“xlog”的SQL函數、工具和選項等都被更改為“wal”。例如,pg_switch_xlog()被改為pg_switch_wal()pg_receivexlog被改為pg_receivewal--xlogdir被改為--waldir

  • AnalyticDB PostgreSQL 7.0版修改SQL風格的substring(),使其具有符合標準的貪婪行為。在模式以多種方式匹配的情況下,初始子模式會被視為匹配盡可能少的文本,而不是匹配盡可能多的文本。例如,%#"aa*#"%模式當前會從輸入中選擇第一組a,而不是最后一組。

其他

為提高安全性,AnalyticDB PostgreSQL 7.0版使用sha256算法對密碼進行加密,sha256算法的安全性遠高于AnalyticDB PostgreSQL 6.0版默認的md5算法。您可以使用遷移方式進行升級,升級后請重置密碼。具體操作,請參見AnalyticDB PostgreSQL版間的數據遷移