1、PostgreSQL中文社区第1313届PostgreSQLPostgreSQL中国技术大会聚焦云端创新汇聚智慧共享PostgreSQL中文社区PostgreSQL智慧碎片一些有趣的案例墨天轮技术顾问彭冲个人简介彭冲(多米爸比),目前就职于墨天轮技术研究院,专注于PostgreSQL/openGauss/MogDB数据库新技术、新特性及行业发展,对数据库版本新特性有丰富的实践研究。荆州洪湖人,业余热爱写作,欢迎关注个人公众象楚之行。新书快速掌握PostgreSQL版本新特性本书以PostgreSQL版本10到16作为主线,从性能、可靠性、日常运维、应用开发、系统层变化5个方面展开,以新特性实践
2、视角进行写作。PostgreSQL中文社区PostgreSQL智慧碎片:一些有趣的案例4第/16页版本兼容性问题extra_float_digits=3CREATE TABLE t1(a varchar);ps.setObject(1,new Double(48);ps.setObject(1,new Double(48.1);ps.setObject(1,new Double(48.9);INSERT INTO test VALUES(generate_series(1,10),generate_series(1,3);PostgreSQL中文社区PostgreSQL智慧碎片:一些有趣的案例
3、5第/16页游标多数据集查看CREATE OR REPLACE PROCEDURE f1(OUT cur1 REFCURSOR,OUT cur2 REFCURSOR)AS$BEGIN OPEN cur1 FOR SELECT id,data FROM fiverows WHERE id BETWEEN 1 AND 3;OPEN cur2 FOR SELECT id,data FROM fiverows WHERE id BETWEEN 4 AND 5;END;$LANGUAGE PLPGSQL;CREATE OR REPLACE FUNCTION f2(cur1 REFCURSOR,cur2
4、REFCURSOR)RETURNS SETOF REFCURSOR AS$BEGIN OPEN cur1 FOR SELECT id,data FROM fiverows WHERE id BETWEEN 1 AND 3;RETURN NEXT cur1;OPEN cur2 FOR SELECT id,data FROM fiverows WHERE id BETWEEN 4 AND 5;RETURN NEXT cur2;END;$LANGUAGE PLPGSQL;START TRANSACTION;SELECT f2(mycur1,mycur2);FETCH ALL IN mycur1;FE
5、TCH ALL IN mycur2;COMMIT;PostgreSQL中文社区PostgreSQL智慧碎片:一些有趣的案例6第/16页数据类型字节对齐CREATE TABLE tab1(b1 boolean,-1字节i1 integer,-4字节+3字节对齐b2 boolean,-1字节i2 integer -4字节+3字节对齐);INSERT INTO tab1 VALUES(true,1,false,2);CREATE TABLE tab2(i1 integer,-4字节i2 integer,-4字节,无需对齐b1 boolean,-1字节,无需对齐b2 boolean -1字节,无需对齐
6、);INSERT INTO tab2 VALUES(1,2,true,false);postgres=#SELECT lp_len,t_data FROM heap_page_items(get_raw_page(tab1,0);lp_len|t_data -+-40|x01000000010000000000000002000000(1 row)postgres=#SELECT lp_len,t_dataFROM heap_page_items(get_raw_page(tab2,0);lp_len|t_data -+-34|x01000000020000000100(1 row)Postg