發表日期: 2023-04-13 11:18:52 瀏覽次數:11
遵義市紅花崗區中山路街道網站制作、遵義市紅花崗區北京路街道小程序制作、遵義市紅花崗區長征街道網站優化、遵義市紅花崗區禮儀街道網站開發、遵義市紅花崗區南關街道400電話辦理、遵義市紅花崗區忠莊街道網絡推廣、遵義市紅花崗區新蒲街道網站建設、遵義市紅花崗區新中街道網店裝修、遵義市紅花崗區巷口鎮微信公眾號開發、遵義市紅花崗區海龍鎮網頁設計、遵義市紅花崗區深溪鎮網絡公司、遵義市紅花崗區金鼎山鎮域名企業郵箱、遵義市紅花崗區新舟鎮服務器空間、遵義市紅花崗區蝦子鎮網站案例報價、遵義市紅花崗區三渡鎮編輯排版美工、遵義市紅花崗區永樂鎮App軟件開發、遵義市紅花崗區喇叭鎮百度推廣、遵義市匯川區上海路街道代運營托管、遵義市匯川區洗馬路街道logo設計、遵義市匯川區大連路街道網絡全網營銷
高校教育是創新人才培養中的重要一環。蘇州大學未來科學與工程學院副院長陳濤提到,作為大數據與人工智能領域的頂級賽事,CCF BDCI一直注重選拔和培養能夠將產業與技術相結合的實踐型、創新型數字人才。作為大賽承辦單位之一,承辦CCF BDCI是蘇州大學未來科學與工程學院人才培養和科學研究快速提升的一次難得機遇,同時也將促進專家學者和學院之間的交流合作,他們有信心在大賽組委會的指導下,把2022 CCF BDCI辦成一屆高水平、高層次、有特色、有亮點的盛會。
華為計算開源總經理堵俊平表示,CCF BDCI大賽作為行業最具影響力以及最活躍的大賽,一直是華為的深度合作對象。本屆大賽華為分別基于MindSpore AI框架和openLooKeng發布了腎臟腫瘤分割賽題和SQL語句內存使用量預測系統賽題,均涉及AI及大數據開源技術。去年華為設置的賽道賽題吸引了超過5000名的開發者參與,最終收獲了100多個優質賽題作品。期待今年有更多的開發者參與進來,一起唱響大數據智能技術帶來的魅力。
枚舉類型需要 由一個或者更多帶引號的標簽構成的列表,每一個標簽長度必須不超過 NAMEDATALEN
字節(在標準的 PostgreSQL編譯中是 64 字節)。
如第 8.17 節中所述,第三種形式的 CREATE TYPE
創建范圍類型。
范圍類型的subtype
可以 是任何帶有一個相關的 B 樹操作符類(用來決定該范圍類型值的順序)的類型。 通常,子類型的默認 B 樹操作符類被用來決定順序。要使用一種非默認操作符 類,可以用 subtype_opclass
指定它 的名字。如果子類型是可排序的并且希望在該范圍的順序中使用一種非默認的 排序規則,可以用collation
選項來指定。
可選的canonical
函數 必須接受一個所定義的范圍類型的參數,并且返回同樣類型的一個值。在適 用時,它被用來把范圍值轉換成一種規范的形式。更多信息請見第 8.17.8 節。創建一個 canonical
函數有點棘 手,因為必須在聲明范圍類型之前定義它。要這樣做,必須首先創建一種 shell 類型,它是一種沒有屬性只有名稱和擁有者的占位符類型。這可以通過 發出不帶額外參數的命令CREATE TYPE
來完成。然后可以使用該 shell 類型作為 參數和結果來聲明該函數,并且最終用同樣的名稱來聲明范圍類型。這會自動 用一種合法的范圍類型替換 shell 類型項。name
可選的subtype_diff
函數 必須接受兩個subtype
類型 的值作為參數,并且返回一個double precision
值表示兩個給定 值之間的差別。雖然這是可選的,但是提供這個函數會讓該范圍類型列上 GiST 索 引效率更高。詳見第 8.17.8 節。
第四種形式的CREATE TYPE
創建一種新的 基本類型(標量類型)。為了創建一種新的基本類型,你必須是一個超級 用戶(做這種限制的原因是一種錯誤的類型定義可能讓服務器混淆甚至 崩潰)。
參數可以以任意順序出現(而不僅是按照上面所示的順序),并且大部分 是可選的。在定義類型前,必須注冊兩個或者更多函數(使用 CREATE FUNCTION
)。支持函數 input_function
以及 output_function
是必需的,而函數 receive_function
、 send_function
、 type_modifier_input_function
、 type_modifier_output_function
和 analyze_function
是可選的。通常來說這些函數必須是用 C 或者另外一種低層語言編寫的。
input_function
將 類型的外部文本表達轉換成為該類型定義的操作符和函數所使用的內部 表達。 output_function
執行反向的轉換。輸入函數可以被聲明為有一個cstring
類型的參數,或者有三個類型分別為cstring
、 oid
、integer
的參數。第一個參數是 以 C 字符串存在的輸入文本,第二個參數是該類型自身的 OID(對于 數組類型則是其元素類型的 OID),第三個參數是目標列的 typmod
(如果知道,不知道則將傳遞 -1)。輸入函數必須 返回一個該數據類型本身的值。通常,一個輸入函數應該被聲明為 STRICT。 如果不是這樣,在讀到一個 NULL 輸入值時,調用它時第一個參數會是 NULL。在這種情況下,該函數必須仍然返回 NULL,除非它發生了錯誤( 這種情況主要是想支持域輸入函數,它們可能需要拒絕 NULL 輸入)。 輸出函數必須被聲明為有一個新數據類型的參數。輸出函數必須返回類型 cstring
。對于 NULL 值不會調用輸出函數。
T可選的receive_function
會把類型的外部二進制表達轉換成內部表達。如果沒有提供這個函數, 該類型不能參與到二進制輸入中。二進制表達轉換成內部形式代價更低, 然而卻更容易移植(例如,標準的整數數據類型使用網絡字節序作為外 部二進制表達,而內部表達是機器本地的字節序)。接收函數應該執行 足夠的檢查以確保該值是有效的。接收函數可以被聲明為有一個 internal
類型的參數,或者有三個類型分別為 internal
、oid
、integer
的參數。第一個參數是一個指向StringInfo
緩沖區的 指針,其中保存著接收到的字節串。其余可選的參數和文本輸入函數的 相同。接收函數必須返回一個該數據類型本身的值。通常,一個接收函 數應該被聲明為 STRICT。如果不是這樣,在讀到一個 NULL 輸入值時, 調用它時第一個參數會是 NULL。在這種情況下,該函數必須仍然返回 NULL,除非它發生了錯誤(這種情況主要是想支持域接收函數,它們 可能需要拒絕 NULL 輸入)。類似地,可選的 send_function
將 內部表達轉換成外部二進制表達。如果沒有提供這個函數,該類型將不 能參與到二進制輸出中。發送函數必須被聲明為有一個新數據類型的參 數。發送函數必須返回類型bytea
。對于 NULL 值不 會調用發送函數。
到這里你應該在疑惑輸入和輸出函數是如何能被聲明為具有新類型的 結果或參數的?因為必須在創建新類型之前創建這兩個函數。這個問題 的答案是,新類型應該首先被定義為一種shell type, 它是一種占位符類型,除了名稱和擁有者之外它沒有其他屬性。這可以 通過不帶額外參數的命令CREATE TYPE
做到。然后用 C 寫的 I/O 函數可以 被定義為引用這種 shell type。最后,用帶有完整定義的 name
CREATE TYPE
把該 shell type 替換為一個完全的、合 法的類型定義,之后新類型就可以正常使用了。
如果該類型支持修飾符(附加在類型聲明上的可選約束,例如 char(5)
或者numeric(30,2)
),則需要可選的 type_modifier_input_function
以及type_modifier_output_function
。 PostgreSQL允許用戶定義的類型有一個或者 多個簡單常量或者標識符作為修飾符。不過,為了存儲在系統目錄中,該信息必須 能被打包到一個非負整數值中。所聲明的修飾符會被以cstring
數組的形式 傳遞給 type_modifier_input_function
。 它必須檢查該值的合法性(如果值錯誤就拋出一個錯誤),如果值正確,要返回 一個非負integer
值,它將被存儲在“typmod”列中。如果 類型沒有 type_modifier_input_function
則類型修飾符將被拒絕。 type_modifier_output_function
把內部的整數 typmod 值轉換回正確的形式用于用戶顯示。它必須返回一個 cstring
值,該值就是追加到類型名稱后的字符串。例如 numeric
的函數可能會返回(30,2)
。如果默認的顯示格式 就是只把存儲的 typmod 整數值放在圓括號內,則允許省略 type_modifier_output_function
。
可選的analyze_function
為該數據類型的列執行與類型相關的統計信息收集。默認情況下,如果 該類型有一個默認的 B-樹操作符類,ANALYZE
將嘗試用 類型的“equals”和“less-than”操作符來收集統計信息。 這種行為對于非標量類型并不合適,因此可以通過指定一個自定義分析函數來 覆蓋這種行為。分析函數必須被聲明為有一個類型為internal
的參 數,并且返回一個boolean
結果。分析函數的詳細 API 請見 src/include/commands/vacuum.h
。
雖然只有 I/O 函數和其他為該類型創建的函數才知道新類型的內部表達的細節, 但是內部表達的一些屬性必須被向 PostgreSQL聲明。其中最重要的是 internallength
。基本數據 類型可以是定長的(這種情況下 internallength
是一個正 整數)或者是變長的(把 internallength
設置為 VARIABLE
,在內部通過把typlen
設置為 -1 表示)。 所有變長類型的內部表達都必須以一個 4 字節整數開始,它給出了這個值的總 長度(注意如第 66.2 節中所述,長度域常常是被編碼 過的,直接接受它是不明智的)。
可選的標志PASSEDBYVALUE
表示這種數據類型的值需要 被傳值而不是傳引用。傳值的類型必須是定長的,并且它們的內部表達不能超 過Datum
類型(某些機器上是 4 字節,其他機器上是 8 字節)的 尺寸。
alignment
參數指定數據 類型的存儲對齊要求。允許的值等同于以 1、2、4 或 8 字節邊界對齊。注意 變長類型的 alignment 參數必須至少為 4,因為它們需要包含一個 int4
作為它們的第一個組成部分。
storage
參數允許 為變長數據類型選擇存儲策略(對定長類型只允許 plain
)。plain
指定該類型的數 據將總是被存儲在線內并且不會被壓縮。extended
指定系統將首先嘗試壓縮一個長的數據值,并且將在數據仍然太長的情 況下把值移出主表行。external
允許值被移出主表, 但是系統將不會嘗試對它進行壓縮。main
允許壓縮, 但是不鼓勵把值移出主表(如果沒有其他辦法讓行的大小變得合適,具有 這種存儲策略的數據項仍將被移出主表,但比起 extended
以及external
項來, 這種存儲策略的數據項會被優先考慮保留在主表中)。
如第 66.2 節和第 37.11.1 節 所述,除plain
之外所有的 storage
值都暗示 該數據類型的函數能處理被TOAST 過的值。指定的值 僅僅是決定一種可 TOAST 數據類型的列的默認 TOAST 存儲策略,用戶 可以使用ALTER TABLE SET STORAGE
為列選取其他策略。
like_type
參數提供 了另一種方法來指定一種數據類型的基本表達屬性:從某種現有的類型中 拷貝。internallength
、 passedbyvalue
、 alignment
和 storage
的值會從指 定的類型中復制而來(也可以通過在LIKE
子句中指定這些屬 性的值來覆蓋復制過來的值,不過通常并不這么做)。當新類型的低層 實現是以一種現有的類型為參考時,用這種方式指定表達特別有用。
category
和 preferred
參數可以被用來 幫助控制在混淆的情況下應用哪一種隱式造型。每一種數據類型都屬于一個用 單個 ASCII 字符命名的分類,并且每一種類型可以是其所屬分類中的 “首選”。當有助于解決重載函數或操作符時,解析器將優先 造型到首選類型(但是只能從同類的其他類型造型)。更多細節請見 第 10 章。對于沒有隱式造型到任意其他類型或者 從任意其他類型造型的類型,讓這些設置保持默認即可。不過,對于一組 具有隱式造型的相關類型,把它們都標記為屬于同一個類別并且選擇一種 或兩種“最常用”的類型作為該類別的首選通常是很有用的。在 把一種用戶定義的類型增加到一個現有的內建類別(例如數字或者字符串 類型)中時, category
參數特別 有用。不過,也可以創建新的全部是用戶定義類型的類別。對這樣的類別, 可選擇除大寫字母之外的任何 ASCII 字符。
如果用戶希望該數據類型的列被默認為某種非空值,可以指定一個默認值。 默認值可以用DEFAULT
關鍵詞指定(這樣一個默認值 可以被附加到一個特定列的顯式DEFAULT
子句覆蓋)。
要指定一種類型是數組,用ELEMENT
關鍵詞指定該數組元素 的類型。例如,要定義一個 4 字節整數的數組(int4
), 應指定ELEMENT = int4
。更多有關數組類型的細節請 見下文。
要指定在這種類型數組的外部表達中分隔值的定界符,可以把delimiter
設置為一個特定字符。默認 的定界符是逗號(,
)。注意定界符是與數組元素類型相 關的,而不是數組類型本身相關。
如果可選的布爾參數 collatable
為真,這種 類型的列定義和表達式可能通過使用COLLATE
子句攜帶 有排序規則信息。在該類型上操作的函數的實現負責真正利用這些信息,僅 把類型標記為可排序的并不會讓它們自動地去使用這類信息。
遵義市紅花崗區中山路街道網站制作、遵義市紅花崗區北京路街道小程序制作、遵義市紅花崗區長征街道網站優化、遵義市紅花崗區禮儀街道網站開發、遵義市紅花崗區南關街道400電話辦理、遵義市紅花崗區忠莊街道網絡推廣、遵義市紅花崗區新蒲街道網站建設、遵義市紅花崗區新中街道網店裝修、遵義市紅花崗區巷口鎮微信公眾號開發、遵義市紅花崗區海龍鎮網頁設計、遵義市紅花崗區深溪鎮網絡公司、遵義市紅花崗區金鼎山鎮域名企業郵箱、遵義市紅花崗區新舟鎮服務器空間、遵義市紅花崗區蝦子鎮網站案例報價、遵義市紅花崗區三渡鎮編輯排版美工、遵義市紅花崗區永樂鎮App軟件開發、遵義市紅花崗區喇叭鎮百度推廣、遵義市匯川區上海路街道代運營托管、遵義市匯川區洗馬路街道logo設計、遵義市匯川區大連路街道網絡全網營銷
歡迎您免費咨詢,請填寫以下信息,我們收到后會盡快與您聯系
服務熱線:400-111-6878