发表日期: 2023-04-13 11:18:52 浏览次数:38
遵义市红花岗区中山路街道网站制作、遵义市红花岗区北京路街道小程序制作、遵义市红花岗区长征街道网站优化、遵义市红花岗区礼仪街道网站开发、遵义市红花岗区南关街道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设计、遵义市汇川区大连路街道网络全网营销
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878