华为云用户手册

  • hll_hash_bytea(bytea, int32) 描述:对bytea类型数据计算哈希值,并设置hashseed(即改变哈希策略)。 返回值类型:hll_hashval 示例: 12345 SELECT hll_hash_bytea(E'\\x', 10); hll_hash_bytea --------------------- 6574525721897061910(1 row)
  • 内置函数 HLL(HyperLogLog)有一系列内置函数用于内部对数据进行处理,一般情况下不建议用户使用。 表1 内置函数 函数名称 功能描述 hll_in 以string格式接收hll数据。 hll_out 以string格式发送hll数据。 hll_recv 以bytea格式接收hll数据。 hll_send 以bytea格式发送hll数据。 hll_trans_in 以string格式接收hll_trans_type数据。 hll_trans_out 以string格式发送hll_trans_type数据。 hll_trans_recv 以bytea形式接收hll_trans_type数据。 hll_trans_send 以bytea形式发送hll_trans_type数据。 hll_typmod_in 接收typmod类型数据。 hll_typmod_out 发送typmod类型数据。 hll_hashval_in 接收hll_hashval类型数据。 hll_hashval_out 发送hll_hashval类型数据。 hll_add_trans0 类似于hll_add所提供的功能,通常在分布式聚合运算的第一阶段DN上使用。 hll_union_trans 类似hll_union所提供的功能,在分布式聚合运算的第一阶段DN上使用。 hll_union_collect 类似于hll_union所提供的功能,在分布式聚合运算第二阶段CN上使用,汇总各个DN上的结果。 hll_pack 在分布式聚合运算第三阶段CN上使用,把自定义hll_trans_type类型最后转换成hll类型。 hll 用于hll类型转换成hll类型,根据输入参数会设定指定参数。 hll_hashval 用于bigint类型转换成hll_hashval类型。 hll_hashval_int4 用于int4类型转换成hll_hashval类型。 父主题: HLL函数和操作符
  • pgxc_get_residualfiles() 描述:pg_get_residualfiles()的CN统一查询函数。该函数为集群级函数,与当前所在的数据库无关,在CN实例上运行。 参数类型:无 返回值类型:record 函数返回字段如下: 表2 pgxc_get_residualfiles()返回字段 名称 类型 描述 nodename text 节点名称。 isverified bool 是否已经验证。 isdeleted bool 是否已经被删除。 dbname text 所属数据库名称。 residualfile text 数据文件路径。 filepath text 残留文件记录路径。 notes text 注释。 示例: 12345678 SELECT * FROM pgxc_get_residualfiles(); nodename | isverified | isdeleted | dbname | residualfile | filepath | notes --------------+------------+-----------+----------+-------------------+---------------------------+------- cn_5001 | f | f | postgres | base/15092/32803 | pgrf_20200910170129360401 | dn_6001_6002 | f | f | db2 | base/49155/114691 | pgrf_20200908160211441546 | dn_6001_6002 | f | f | db2 | base/49155/114694 | pgrf_20200908160211441546 | dn_6001_6002 | f | f | db2 | base/49155/114696 | pgrf_20200908160211441546 | (4 rows)
  • pg_get_residualfiles() 描述:用于获取当前节点的所有残留文件记录。该函数为实例级函数,与当前所在的数据库无关,可以在任意实例上运行。 参数类型:无 返回值类型:record 函数返回字段如下: 表1 pg_get_residualfiles()返回字段 名称 类型 描述 isverified bool 是否已经验证。 isdeleted bool 是否已经被删除。 dbname text 所属数据库名称。 residualfile text 数据文件路径。 filepath text 残留文件记录路径。 notes text 注释。 示例: 1234567 SELECT * FROM pg_get_residualfiles(); isverified | isdeleted | dbname | residualfile | filepath | notes ------------+-----------+--------+-------------------+---------------------------+------- f | f | db2 | base/49155/114691 | pgrf_20200908160211441546 | f | f | db2 | base/49155/114694 | pgrf_20200908160211441546 | f | f | db2 | base/49155/114696 | pgrf_20200908160211441546 | (3 rows)
  • rb_xor_cardinality_agg(roaringbitmap) 描述:将分组内的roaringbitmap按照异或的逻辑合并后的基数。 示例: 1 2 3 4 5 6 7 8 91011121314 SELECT a, rb_xor_cardinality_agg(b) FROM r1 GROUP BY a ORDER BY 1; a | rb_xor_cardinality_agg----+------------------------ 1 | 0 2 | 1 3 | 1 4 | 1 5 | 1 6 | 1 7 | 1 8 | 1 9 | 1 10 | 1(10 rows)
  • rb_and_agg(roaringbitmap) 描述:将分组内的roaringbitmap数据按照交的操作聚合成一个roaringbitmap集合。 示例: 1 2 3 4 5 6 7 8 9101112131415161718 CREATE TABLE r1(a int ,b roaringbitmap);INSERT INTO r1 SELECT a, rb_build_agg(b) FROM t1 GROUP BY a;INSERT INTO t1 SELECT generate_series(1,10),generate_series(1,20,4);INSERT INTO r1 SELECT a, rb_build_agg(b) FROM t1 GROUP BY a;SELECT a, rb_to_array(rb_and_agg(b)) FROM r1 GROUP BY a ORDER BY a; a | rb_to_array----+------------- 1 | {1} 2 | {3} 3 | {5} 4 | {7} 5 | {9} 6 | {11} 7 | {13} 8 | {15} 9 | {17}10 | {19}(10 rows)
  • rb_or_agg(roaringbitmap) 描述:将分组内的roaringbitmap按照并的逻辑组合成一个roaringbitmap。 示例: 1 2 3 4 5 6 7 8 91011121314 SELECT a, rb_to_array(rb_or_agg(b)) FROM r1 GROUP BY a ORDER BY a; a | rb_to_array----+------------- 1 | {1} 2 | {3,5} 3 | {5,9} 4 | {7,13} 5 | {9,17} 6 | {1,11} 7 | {5,13} 8 | {9,15} 9 | {13,17} 10 | {17,19}(10 rows)
  • rb_or_cardinality_agg(roaringbitmap) 描述:将分组内的roaringbitmap按照并集计算后的基数。 示例: 1 2 3 4 5 6 7 8 91011121314 SELECT a, rb_or_cardinality_agg(b) FROM r1 GROUP BY a ORDER BY 1; a | rb_or_cardinality_agg----+----------------------- 1 | 1 2 | 2 3 | 2 4 | 2 5 | 2 6 | 2 7 | 2 8 | 2 9 | 2 10 | 2(10 rows)
  • rb_build_agg(int) 描述:将分组内的int值聚合成一个roaringbitmap值。 返回值类型:roaringbitmap 示例: 123456 CREATE TABLE t1 (a int ,b int);NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using round-robin as the distribution mode by default.HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.CREATE TABLEINSERT INTO t1 SELECT generate_series(1,10),generate_series(1,20,2);INSERT 0 10 1 2 3 4 5 6 7 8 91011121314 SELECT rb_iterate(rb_build_agg(b)) FROM t1;rb_iterate------------135791113151719(10 rows)
  • rb_xor_agg(roaringbitmap) 描述:将分组内的roaringbitmap按照异或的逻辑组合成一个roaringbitmap。 示例: 1 2 3 4 5 6 7 8 91011121314 SELECT a, rb_to_array(rb_xor_agg(b)) FROM r1 GROUP BY a ORDER BY a;a | rb_to_array----+------------- 1 | {} 2 | {5} 3 | {9} 4 | {13} 5 | {17} 6 | {1} 7 | {5} 8 | {9} 9 | {13} 10 | {17}(10 rows)
  • rb_and_cardinality_agg(roaringbitmap) 描述:分组内的roaringbitmap按照交集计算后的基数。 返回值类型:int 示例: 1 2 3 4 5 6 7 8 91011121314 SELECT a, rb_and_cardinality_agg(b) FROM r1 GROUP BY a ORDER BY 1; a | rb_and_cardinality_agg----+------------------------ 1 | 1 2 | 1 3 | 1 4 | 1 5 | 1 6 | 1 7 | 1 8 | 1 9 | 1 10 | 1(10 rows)
  • hll_expthresh(hll) 描述:得到当前hll中expthresh大小,hll通常会由Explicit模式到Sparse模式再到Full模式,这个过程称为promotion hierarchy策略。可以通过调整expthresh值的大小改变策略,比如expthresh为0的时候就会跳过Explicit模式而直接进入Sparse模式。当显式指定expthresh的取值为1-7之间时,该函数得到的是 2expthresh。 返回值类型:record 示例: 1 2 3 4 5 6 7 8 91011 SELECT hll_expthresh(hll_empty()); hll_expthresh --------------- (-1,160)(1 row)SELECT hll_expthresh(hll_empty(11,5,3)); hll_expthresh --------------- (8,8)(1 row)
  • 模式可见性查询函数 每个函数对数据库对象执行可见性检查。对于函数和操作符,如果在前面的搜索路径中没有相同的对象名称和参数的数据类型,则此对象是可见的。对于操作符类,则要同时考虑名字和相关索引的访问方法。 所有这些函数都需要使用OID来标识要需要检查的对象。如果用户想通过名字测试对象,则可使用OID别名类型(regclass、regtype、regprocedure、regoperator、regconfig或regdictionary)。 比如,如果一个表所在的模式在搜索路径中,并且在前面的搜索路径中没有同名的表,那么这个表是可见的。它等效于表可以不带明确模式修饰进行引用。比如,要列出所有可见表的名字: 1 SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);
  • obj_description(object_oid, catalog_name) 描述:获取一个数据库对象的注释。 返回类型:text 备注:带有两个参数的obj_description返回一个数据库对象的注释,该对象是通过其OID和其所属的系统表名字声明。比如,obj_description(123456,'pg_class')将返回OID为123456的表的注释。只带一个参数的obj_description只要求对象OID。 obj_description不能用于表字段,因为字段没有自己的OID。
  • col_description(table_oid, column_number) 描述:获取一个表字段的注释。 返回类型:text 备注:col_description返回一个表中字段的注释,通过表OID和字段号来声明。 示例:查询pg_class系统表获取表OID,查询INFORMATION_SCHEMA.COLUMNS系统视图获取column_number。 1 2 3 4 5 6 7 8 91011121314151617 SELECT COLUMN_NAME,ORDINAL_POSITION FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't' AND COLUMN_NAME = 'a';column_name | ordinal_position-------------+------------------a | 1(1 row)SELECT oid FROM pg_class WHERE relname='t'; oid------- 44020(1 row)SELECT col_description(44020,1); col_description----------------------- This is a test table.(1 row)
  • gs_table_distribution() 描述:快速查看当前库中所有表在各节点的存储空间分布情况。 返回值类型:record 表2 gs_table_distribution() 名称 类型 描述 schemaname name 模式名称。 tablename name 表名。 relkind character 类型,i: 索引,r: 表。 nodename name 节点名称。 dnsize bigint 表在该节点上的存储空间大小,单位:字节。 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。 该函数基于PG_RELFILENODE_SIZE系统表上的物理文件存储空间记录,需确保GUC参数use_workload_manager和enable_perm_space必须开启。 性能上,单表查询时,gs_table_distribution函数低于table_distribution函数;在全库表查询时,gs_table_distribution函数大幅度优于table_distribution函数;在大集群大数据量场景下,如果进行全库表表查询,建议优先使用gs_table_distribution函数。
  • pgxc_get_stat_dirty_tables(int dirty_percent, int n_tuples, text schema) 描述:获取各表的插入、更新、删除以及脏页率信息。该函数针对视图PGXC_GET_STAT_ALL_TABLES进行了性能优化, 可以快速筛选出每个DN上满足脏页率大于dirty_percent,dead元组数大于n_tuples的表,将筛选结果返回到CN进行汇总并输出。模式名是schema的表。 返回值类型:setof record 函数返回字段同上述函数pgxc_get_stat_dirty_tables(int dirty_percent, int n_tuples)。 示例: 查询指定系统表pg_catalog.pg_class的脏页率: 12345 SELECT relname AS table_name,dirty_page_rate FROM pgxc_get_stat_dirty_tables(0,0,'pg_catalog') WHERE relname = 'pg_class'; table_name | dirty_page_rate------------+----------------- pg_class | 16.46(1 row)
  • gs_table_distribution(schemaname text, tablename text) 描述:快速查看指定表在各个节点上占用的存储空间。 返回值类型:record 表1 gs_table_distribution(schemaname text, tablename text) 名称 类型 描述 schemaname name 模式名称。 tablename name 表名。 relkind character 类型。 i: 索引 r: 表 nodename name 节点名称。 dnsize bigint 表在该节点上的存储空间大小,单位:字节。 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。 该函数基于PG_RELFILENODE_SIZE系统表上的物理文件存储空间记录,需确保GUC参数use_workload_manager和enable_perm_space必须开启。 性能上,单表查询时,gs_table_distribution函数低于table_distribution函数;在全库表查询时,gs_table_distribution函数大幅度优于table_distribution函数;在大集群大数据量场景下,如果进行全库表表查询,建议优先使用gs_table_distribution函数。
  • copy_error_log_create() 描述:创建COPY FROM容错机制所需要的错误表(public.pgxc_copy_error_log)。 返回值类型:boolean 此函数会尝试创建public.pgxc_copy_error_log表,表的详细信息请参见表3。 在relname列上创建B-tree索引,并REVOKE ALL on public.pgxc_copy_error_log FROM public对错误表进行权限控制(与COPY语句权限一致)。 由于尝试创建的public.pgxc_copy_error_log定义是一张行存表,因此集群上必须支持行存表的创建才能够正常运行此函数,并使用后续的COPY容错功能。需要特别注意的是,enable_hadoop_env这个GUC参数开启后会禁止在集群内创建行存表( GaussDB (DWS)默认为off)。 此函数自身权限为Sysadmin及以上(与错误表、COPY权限一致)。 若创建前public.pgxc_copy_error_log表已存在或者copy_error_log_relname_idx索引已存在,则此函数会报错回滚。 表3 错误表public.pgxc_copy_error_log信息 列名称 类型 描述 relname varchar 表名称。以模式名.表名形式显示。 begintime timestamp with time zone 出现数据格式错误的时间。 filename character varying 出现数据格式错误的数据源文件名。 rownum bigint 在数据源文件中,出现数据格式错误的行号。 rawrecord text 在数据源文件中,出现数据格式错误的原始记录。为了防止字段长度过大,限制字段的长度不超过1024 byte。 detail text 详细错误信息。 示例: 12345 SELECT copy_error_log_create(); copy_error_log_create----------------------- t(1 row)
  • table_distribution(regclass) 描述:查看指定表在各个节点上占用的存储空间。 参数:表示待查询表的表名或OID,表名可以有模式名限定。为regclass类型。 返回值类型:record 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。 table_distribution性能比table_skewness更优,尤其是在大集群大数据量场景下,请优先考虑使用table_distribution函数。 当使用table_distribution并希望直观的看到空间占比时,可使用dnsize/(sum(dnsize) over ())的方式查看出具体的占比情况。
  • table_distribution() 描述:查看当前库中所有表在各节点的存储空间分布情况。 返回值类型:record 使用本函数涉及全库表信息查询,需要具备管理员权限或预置角色gs_role_read_all_stats权限。 当前基于table_distribution()函数,GaussDB(DWS)提供视图PGXC_GET_TABLE_SKEWNESS进行数据倾斜查询,建议在数据库中表数量(小于10000)较少的场景直接使用。 示例: 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 SELECT * FROM table_distribution(); schemaname | tablename | nodename | dnsize--------------------+-------------------------+--------------+-------- scheduler | pg_task | dn_6005_6006 | 8192 public | ocr_group | dn_6005_6006 | 8192 public | ocr_item | dn_6005_6006 | 8192 sea | ocr_group | dn_6005_6006 | 16384 sea | ocr_item | dn_6005_6006 | 16384 public | customer_t1 | dn_6005_6006 | 16384 dbms_om | gs_wlm_session_info | dn_6005_6006 | 8192 dbms_om | gs_wlm_operator_info | dn_6005_6006 | 8192 dbms_om | gs_wlm_ec_operator_info | dn_6005_6006 | 8192 public | pgxc_copy_error_log | dn_6005_6006 | 8192 information_schema | sql_features | dn_6005_6006 | 98304 information_schema | sql_implementation_info | dn_6005_6006 | 49152 information_schema | sql_languages | dn_6005_6006 | 49152 information_schema | sql_packages | dn_6005_6006 | 49152 information_schema | sql_parts | dn_6005_6006 | 49152 information_schema | sql_sizing | dn_6005_6006 | 49152 information_schema | sql_sizing_profiles | dn_6005_6006 | 8192 scheduler | pg_task | dn_6003_6004 | 8192 public | ocr_group | dn_6003_6004 | 8192 public | ocr_item | dn_6003_6004 | 16384 sea | ocr_group | dn_6003_6004 | 8192 sea | ocr_item | dn_6003_6004 | 16384 public | customer_t1 | dn_6003_6004 | 16384 dbms_om | gs_wlm_session_info | dn_6003_6004 | 8192 dbms_om | gs_wlm_operator_info | dn_6003_6004 | 8192 dbms_om | gs_wlm_ec_operator_info | dn_6003_6004 | 8192 public | pgxc_copy_error_log | dn_6003_6004 | 8192 information_schema | sql_features | dn_6003_6004 | 98304 information_schema | sql_implementation_info | dn_6003_6004 | 49152 information_schema | sql_languages | dn_6003_6004 | 49152 information_schema | sql_packages | dn_6003_6004 | 49152 information_schema | sql_parts | dn_6003_6004 | 49152 information_schema | sql_sizing | dn_6003_6004 | 49152 information_schema | sql_sizing_profiles | dn_6003_6004 | 8192 scheduler | pg_task | dn_6001_6002 | 8192 public | ocr_group | dn_6001_6002 | 16384 public | ocr_item | dn_6001_6002 | 8192 sea | ocr_group | dn_6001_6002 | 8192 sea | ocr_item | dn_6001_6002 | 16384 public | customer_t1 | dn_6001_6002 | 16384 dbms_om | gs_wlm_session_info | dn_6001_6002 | 8192 dbms_om | gs_wlm_operator_info | dn_6001_6002 | 8192 dbms_om | gs_wlm_ec_operator_info | dn_6001_6002 | 8192 public | pgxc_copy_error_log | dn_6001_6002 | 8192 information_schema | sql_features | dn_6001_6002 | 98304 information_schema | sql_implementation_info | dn_6001_6002 | 49152 information_schema | sql_languages | dn_6001_6002 | 49152 information_schema | sql_packages | dn_6001_6002 | 49152 information_schema | sql_parts | dn_6001_6002 | 49152 information_schema | sql_sizing | dn_6001_6002 | 49152 information_schema | sql_sizing_profiles | dn_6001_6002 | 8192(51 rows)
  • table_data_skewness(data_row record, locatorType "char") 描述:计算指定表中列拼接出的record,对应的桶分布索引。 参数:data_row表示指定表中列拼接出的record,locatorType表示分布规则,当前建议指定'H',按hash分布计算。 返回值类型:smallint 示例: 计算tx表中a列拼接的record,按照hash分布规则对应的桶分布索引。 123456789 SELECT a, table_data_skewness(row(a), 'H') FROM tx; a | table_data_skewness ---+--------------------- 3 | 0 6 | 2 7 | 2 4 | 1 5 | 1(5 rows)
  • table_distribution(schemaname text, tablename text) 描述:查看指定表在各个节点上占用的存储空间。 参数:表示待查询表的模式名和表名,均为text类型。 返回值类型:record 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。 table_distribution性能比table_skewness更优,尤其是在大集群大数据量场景下,请优先考虑使用table_distribution函数。 当使用table_distribution并希望直观的看到空间占比时,可使用dnsize/(sum(dnsize) over ())的方式查看出具体的占比情况。
  • pg_options_to_table(reloptions) 描述:获取存储选项名称/值对的集合。 返回类型:setof record 备注:pg_options_to_table当通过pg_class.reloptions或pg_attribute.attoptions时返回存储选项名字/值对(option_name/option_value)的集合。 示例: 1234567 CREATE TABLE customer_test( state_ID CHAR(2), state_NAME VARCHAR2(40), area_ID NUMBER)WITH (ORIENTATION = COLUMN,COMPRESSION=middle); 123456789 SELECT pg_options_to_table(reloptions) FROM pg_class WHERE relname='customer_test';pg_options_to_table---------------------- (orientation,column) (compression,middle) (bucketnums,16384) (colversion,2.0) (enable_delta,false)(5 rows)
  • pg_get_indexdef(index_oid) 描述:获取索引的CREATE INDEX命令。 返回类型:text index_oid为索引的OID,可以通过PG_STATIO_ALL_INDEXES系统视图查询。 示例:查询索引ds_ship_mode_t1_index1的OID及其创建命令。 1 2 3 4 5 6 7 8 910 SELECT indexrelid FROM PG_STATIO_ALL_INDEXES WHERE indexrelname = 'ds_ship_mode_t1_index1'; indexrelid------------ 136035(1 row)SELECT * FROM pg_get_indexdef(136035); pg_get_indexdef--------------------------------------------------------------------------------------------------------------- CREATE INDEX ds_ship_mode_t1_index1 ON tpcds.ship_mode_t1 USING psort (sm_ship_mode_sk) TABLESPACE pg_default(1 row)
  • pg_get_viewdef(viewname text [, pretty bool [, fullflag bool]]) 描述:为视图获取底层的SELECT命令。 返回类型:text 备注: pg_get_viewdef重构定义视图的SELECT查询。pretty bool参数为true时,显示格式“适合打印”,且该格式易读。pretty bool参数缺省值为false,显示格式不易读。如果用于转储,那么尽可能使用缺省格式。pretty bool参数只对有效视图生效。 fullflag bool参数为true时,显示视图的完整定义。其缺省值为false。
  • pg_typeof(any) 描述:获取任何值的数据类型。 返回类型:regtype 备注: pg_typeof返回传递给他的值的数据类型OID。这可能有助于故障排除或动态构造SQL查询。声明此函数返回regtype,这是一个OID别名类型(请参考对象标识符类型);这意味着它是一个为了比较而显示类型名字的OID。 示例: 1 2 3 4 5 6 7 8 91011 SELECT pg_typeof(33); pg_typeof ----------- integer(1 row)SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); typlen -------- 4(1 row)
  • pg_get_indexdef(index_oid, column_no, pretty_bool) 描述:获取索引的CREATE INDEX命令,或者如果column_no不为零,则只获取一个索引字段的定义。 返回类型:text 1 2 3 4 5 6 7 8 910 SELECT * FROM pg_get_indexdef(136035,0,false); pg_get_indexdef--------------------------------------------------------------------------------------------------------------- CREATE INDEX ds_ship_mode_t1_index1 ON tpcds.ship_mode_t1 USING psort (sm_ship_mode_sk) TABLESPACE pg_default(1 row)SELECT * FROM pg_get_indexdef(136035,1,false); pg_get_indexdef----------------- sm_ship_mode_sk(1 row)
  • pg_get_tabledef(table_oid) 描述:根据table_oid获取表定义。 返回类型:text 示例:先通过系统表pg_class获取表customer_t2的OID,再使用此函数查询表customer_t2的定义,可获取创建表customer_t2时的表字段,表的存储方式(行存或列存)及表的分布方式等信息。 1 2 3 4 5 6 7 8 910111213141516171819 SELECT oid FROM pg_class WHERE relname ='customer_t2'; oid------- 17353(1 row)SELECT * FROM pg_get_tabledef(17353); pg_get_tabledef-------------------------------------------- SET search_path = dbadmin; + CREATE TABLE customer_t2 ( + state_id character(2), + state_name character varying(40), + area_id numeric + ) + WITH (orientation=column, compression=low)+ DISTRIBUTE BY HASH(state_id) + TO GROUP group_version1;(1 row)
  • collation for (any) 描述:获取参数的排序。 返回类型:text 备注: 表达式collation for返回传递给他的值的排序。示例: 12345 SELECT collation for (description) FROM pg_description LIMIT 1; pg_collation_for ------------------ "default"(1 row) 值可能是引号括起来的并且模式限制的。如果没有为参数表达式排序,则返回一个null值。如果参数不是排序的类型,则抛出一个错误。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全