数据库使用 如何查看表是行存还是列存? 表的存储方式由建表语句中的ORIENTATION参数控制,row表示行存,column表示列存。 查看已创建的表是行存还是列存,可通过表定义函数PGGETTABLEDEF查询。 如下orientationcolumn表示为列存表。 目前暂不支持通过ALTER TABLE语句修改ORIENTATION参数,即行存表和列存表无法直接进行转换。 SELECT FROM PGGETTABLEDEF('customert1'); pggettabledef SET searchpath tpchobs; + CREATE TABLE customert1 ( + ccustomersk integer, + ccustomerid character(5), + cfirstname character(6), + clastname character(8) + ) + WITH (orientationcolumn, compressionmiddle, colversion2.0, enabledeltafalse)+ DISTRIBUTE BY HASH(clastname) + TO GROUP groupversion1; (1 row) 如何使用自定义函数改写CRC32函数 DWS目前未内置CRC32函数,但如果需要实现MySQL中的CRC32()函数功能,用户可使用DWS的自定义函数语句对其进行改写。 函数:CRC32(expr) 描述:用于计算循环冗余值。入参expr为字符串。如果参数为NULL,则返回NULL;否则,在计算冗余后返回32位无符号值。 DWS的自定义函数语句改写CRC32函数示例: CREATE OR REPLACE FUNCTION crc32(textstring text) RETURNS bigint AS $$ DECLARE val bigint; i int; j int; bytelength int; binarystring bytea; BEGIN IF textstring is null THEN RETURN null; ELSIF textstring '' THEN RETURN 0; END IF; i 0; val 4294967295; bytelength bitlength(textstring) / 8; binarystring decode(replace(textstring, E'', E''), 'escape'); LOOP val (val