⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rangefuncs.out

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 OUT
📖 第 1 页 / 共 2 页
字号:
SELECT name, setting FROM pg_settings WHERE name LIKE 'enable%';       name        | setting -------------------+--------- enable_bitmapscan | on enable_hashagg    | on enable_hashjoin   | on enable_indexscan  | on enable_mergejoin  | on enable_nestloop   | on enable_seqscan    | on enable_sort       | on enable_tidscan    | on(9 rows)CREATE TABLE foo2(fooid int, f2 int);INSERT INTO foo2 VALUES(1, 11);INSERT INTO foo2 VALUES(2, 22);INSERT INTO foo2 VALUES(1, 111);CREATE FUNCTION foot(int) returns setof foo2 as 'SELECT * FROM foo2 WHERE fooid = $1;' LANGUAGE SQL;-- supposed to fail with ERRORselect * from foo2, foot(foo2.fooid) z where foo2.f2 = z.f2;ERROR:  function expression in FROM may not refer to other relations of same query level-- function in subselectselect * from foo2 where f2 in (select f2 from foot(foo2.fooid) z where z.fooid = foo2.fooid) ORDER BY 1,2; fooid | f2  -------+-----     1 |  11     1 | 111     2 |  22(3 rows)-- function in subselectselect * from foo2 where f2 in (select f2 from foot(1) z where z.fooid = foo2.fooid) ORDER BY 1,2; fooid | f2  -------+-----     1 |  11     1 | 111(2 rows)-- function in subselectselect * from foo2 where f2 in (select f2 from foot(foo2.fooid) z where z.fooid = 1) ORDER BY 1,2; fooid | f2  -------+-----     1 |  11     1 | 111(2 rows)-- nested functionsselect foot.fooid, foot.f2 from foot(sin(pi()/2)::int) ORDER BY 1,2; fooid | f2  -------+-----     1 |  11     1 | 111(2 rows)CREATE TABLE foo (fooid int, foosubid int, fooname text, primary key(fooid,foosubid));NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "foo_pkey" for table "foo"INSERT INTO foo VALUES(1,1,'Joe');INSERT INTO foo VALUES(1,2,'Ed');INSERT INTO foo VALUES(2,1,'Mary');-- sql, proretset = f, prorettype = bCREATE FUNCTION getfoo(int) RETURNS int AS 'SELECT $1;' LANGUAGE SQL;SELECT * FROM getfoo(1) AS t1; t1 ----  1(1 row)CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);SELECT * FROM vw_getfoo; getfoo --------      1(1 row)-- sql, proretset = t, prorettype = bDROP VIEW vw_getfoo;DROP FUNCTION getfoo(int);CREATE FUNCTION getfoo(int) RETURNS setof int AS 'SELECT fooid FROM foo WHERE fooid = $1;' LANGUAGE SQL;SELECT * FROM getfoo(1) AS t1; t1 ----  1  1(2 rows)CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);SELECT * FROM vw_getfoo; getfoo --------      1      1(2 rows)-- sql, proretset = t, prorettype = bDROP VIEW vw_getfoo;DROP FUNCTION getfoo(int);CREATE FUNCTION getfoo(int) RETURNS setof text AS 'SELECT fooname FROM foo WHERE fooid = $1;' LANGUAGE SQL;SELECT * FROM getfoo(1) AS t1; t1  ----- Joe Ed(2 rows)CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);SELECT * FROM vw_getfoo; getfoo -------- Joe Ed(2 rows)-- sql, proretset = f, prorettype = cDROP VIEW vw_getfoo;DROP FUNCTION getfoo(int);CREATE FUNCTION getfoo(int) RETURNS foo AS 'SELECT * FROM foo WHERE fooid = $1;' LANGUAGE SQL;SELECT * FROM getfoo(1) AS t1; fooid | foosubid | fooname -------+----------+---------     1 |        1 | Joe(1 row)CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);SELECT * FROM vw_getfoo; fooid | foosubid | fooname -------+----------+---------     1 |        1 | Joe(1 row)-- sql, proretset = t, prorettype = cDROP VIEW vw_getfoo;DROP FUNCTION getfoo(int);CREATE FUNCTION getfoo(int) RETURNS setof foo AS 'SELECT * FROM foo WHERE fooid = $1;' LANGUAGE SQL;SELECT * FROM getfoo(1) AS t1; fooid | foosubid | fooname -------+----------+---------     1 |        1 | Joe     1 |        2 | Ed(2 rows)CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);SELECT * FROM vw_getfoo; fooid | foosubid | fooname -------+----------+---------     1 |        1 | Joe     1 |        2 | Ed(2 rows)-- sql, proretset = f, prorettype = recordDROP VIEW vw_getfoo;DROP FUNCTION getfoo(int);CREATE FUNCTION getfoo(int) RETURNS RECORD AS 'SELECT * FROM foo WHERE fooid = $1;' LANGUAGE SQL;SELECT * FROM getfoo(1) AS t1(fooid int, foosubid int, fooname text); fooid | foosubid | fooname -------+----------+---------     1 |        1 | Joe(1 row)CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1) AS (fooid int, foosubid int, fooname text);SELECT * FROM vw_getfoo; fooid | foosubid | fooname -------+----------+---------     1 |        1 | Joe(1 row)-- sql, proretset = t, prorettype = recordDROP VIEW vw_getfoo;DROP FUNCTION getfoo(int);CREATE FUNCTION getfoo(int) RETURNS setof record AS 'SELECT * FROM foo WHERE fooid = $1;' LANGUAGE SQL;SELECT * FROM getfoo(1) AS t1(fooid int, foosubid int, fooname text); fooid | foosubid | fooname -------+----------+---------     1 |        1 | Joe     1 |        2 | Ed(2 rows)CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1) AS(fooid int, foosubid int, fooname text);SELECT * FROM vw_getfoo; fooid | foosubid | fooname -------+----------+---------     1 |        1 | Joe     1 |        2 | Ed(2 rows)-- plpgsql, proretset = f, prorettype = bDROP VIEW vw_getfoo;DROP FUNCTION getfoo(int);CREATE FUNCTION getfoo(int) RETURNS int AS 'DECLARE fooint int; BEGIN SELECT fooid into fooint FROM foo WHERE fooid = $1; RETURN fooint; END;' LANGUAGE 'plpgsql';SELECT * FROM getfoo(1) AS t1; t1 ----  1(1 row)CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);SELECT * FROM vw_getfoo; getfoo --------      1(1 row)-- plpgsql, proretset = f, prorettype = cDROP VIEW vw_getfoo;DROP FUNCTION getfoo(int);CREATE FUNCTION getfoo(int) RETURNS foo AS 'DECLARE footup foo%ROWTYPE; BEGIN SELECT * into footup FROM foo WHERE fooid = $1; RETURN footup; END;' LANGUAGE 'plpgsql';SELECT * FROM getfoo(1) AS t1; fooid | foosubid | fooname -------+----------+---------     1 |        1 | Joe(1 row)CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);SELECT * FROM vw_getfoo; fooid | foosubid | fooname -------+----------+---------     1 |        1 | Joe(1 row)DROP VIEW vw_getfoo;DROP FUNCTION getfoo(int);DROP FUNCTION foot(int);DROP TABLE foo2;DROP TABLE foo;-- Rescan tests --CREATE TABLE foorescan (fooid int, foosubid int, fooname text, primary key(fooid,foosubid));NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "foorescan_pkey" for table "foorescan"INSERT INTO foorescan values(5000,1,'abc.5000.1');INSERT INTO foorescan values(5001,1,'abc.5001.1');INSERT INTO foorescan values(5002,1,'abc.5002.1');INSERT INTO foorescan values(5003,1,'abc.5003.1');INSERT INTO foorescan values(5004,1,'abc.5004.1');INSERT INTO foorescan values(5005,1,'abc.5005.1');INSERT INTO foorescan values(5006,1,'abc.5006.1');INSERT INTO foorescan values(5007,1,'abc.5007.1');INSERT INTO foorescan values(5008,1,'abc.5008.1');INSERT INTO foorescan values(5009,1,'abc.5009.1');INSERT INTO foorescan values(5000,2,'abc.5000.2');INSERT INTO foorescan values(5001,2,'abc.5001.2');INSERT INTO foorescan values(5002,2,'abc.5002.2');INSERT INTO foorescan values(5003,2,'abc.5003.2');INSERT INTO foorescan values(5004,2,'abc.5004.2');INSERT INTO foorescan values(5005,2,'abc.5005.2');INSERT INTO foorescan values(5006,2,'abc.5006.2');INSERT INTO foorescan values(5007,2,'abc.5007.2');INSERT INTO foorescan values(5008,2,'abc.5008.2');INSERT INTO foorescan values(5009,2,'abc.5009.2');INSERT INTO foorescan values(5000,3,'abc.5000.3');INSERT INTO foorescan values(5001,3,'abc.5001.3');INSERT INTO foorescan values(5002,3,'abc.5002.3');INSERT INTO foorescan values(5003,3,'abc.5003.3');INSERT INTO foorescan values(5004,3,'abc.5004.3');INSERT INTO foorescan values(5005,3,'abc.5005.3');INSERT INTO foorescan values(5006,3,'abc.5006.3');INSERT INTO foorescan values(5007,3,'abc.5007.3');INSERT INTO foorescan values(5008,3,'abc.5008.3');INSERT INTO foorescan values(5009,3,'abc.5009.3');INSERT INTO foorescan values(5000,4,'abc.5000.4');INSERT INTO foorescan values(5001,4,'abc.5001.4');INSERT INTO foorescan values(5002,4,'abc.5002.4');INSERT INTO foorescan values(5003,4,'abc.5003.4');INSERT INTO foorescan values(5004,4,'abc.5004.4');INSERT INTO foorescan values(5005,4,'abc.5005.4');INSERT INTO foorescan values(5006,4,'abc.5006.4');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -