ALTER TABLE ticket RENAME TO ticket_part_default;
CREATE TABLE ticket (LIKE ticket_part_default);
ALTER TABLE ticket_part_default INHERIT ticket;
...
decodes(class_tne, 'ТНЭ-1Т'::text, all_cur, 0)) as generation_off_t
'a,b' - TEXT, CHAR(3), VARCHAR(), ...
'1' - SMALLINT, INTEGER, BIGINT, TEXT, ...
'{a,b}' - TEXT[], CHAR(1)[], VARCHAR(...)[], ...
'{1,2}' - TEXT[], SMALLINT[], INTEGER[], BIGINT[], ...
'{"a":"b"}' - JSON, JSONB
EXPLAIN ANALYZE
SELECT name, count(*) as similar_names_count
FROM users
WHERE name = ANY('{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}')
GROUP BY name
LIMIT 100;
CREATE OR REPLACE FUNCTION generate_create_table_statement(p_table_name varchar)
RETURNS text AS
$BODY$
DECLARE
v_table_ddl text;
column_record record;
BEGIN
FOR column_record IN
SELECT
b.nspname as schema_name,
b.relname as table_name,
a.attname as column_name,
pg_catalog.format_type(a.atttypid, a.atttypmod) as column_type,
CASE WHEN
(SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
FROM pg_catalog.pg_attrdef d
WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef) IS NOT NULL THEN
'DEFAULT '|| (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
FROM pg_catalog.pg_attrdef d
WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef)
ELSE
''
END as column_default_value,
CASE WHEN a.attnotnull = true THEN
'NOT NULL'
ELSE
'NULL'
END as column_not_null,
a.attnum as attnum,
e.max_attnum as max_attnum
FROM
pg_catalog.pg_attribute a
INNER JOIN
(SELECT c.oid,
n.nspname,
c.relname
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname ~ ('^('||p_table_name||')$')
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3) b
ON a.attrelid = b.oid
INNER JOIN
(SELECT
a.attrelid,
max(a.attnum) as max_attnum
FROM pg_catalog.pg_attribute a
WHERE a.attnum > 0
AND NOT a.attisdropped
GROUP BY a.attrelid) e
ON a.attrelid=e.attrelid
WHERE a.attnum > 0
AND NOT a.attisdropped
ORDER BY a.attnum
LOOP
IF column_record.attnum = 1 THEN
v_table_ddl:='CREATE TABLE '||column_record.schema_name||'.'||column_record.table_name||' (';
ELSE
v_table_ddl:=v_table_ddl||',';
END IF;
IF column_record.attnum <= column_record.max_attnum THEN
v_table_ddl:=v_table_ddl||chr(10)||
' '||column_record.column_name||' '||column_record.column_type||' '||column_record.column_default_value||' '||column_record.column_not_null;
END IF;
END LOOP;
v_table_ddl:=v_table_ddl||');';
RETURN v_table_ddl;
END;
$BODY$
LANGUAGE 'plpgsql' COST 100.0 SECURITY INVOKER;
SELECT generate_create_table_statement('tablename');
t1.field IS NOT DISTINCT FROM t2.field
COALESCE(t1.field, '') = COALESCE(t2.field, '')
SELECT
...
AND ( t1.age || t1.growth || t1.hair || t1.size || t1.weight ) IS NOT NULL
AND ( t2.age || t2.growth || t2.hair || t2.size || t2.weight ) IS NOT NULL
SET search_path TO <название нужной схемы>,public;
SELECT * FROM "myschema"."mytable";
UPDATE "catalog"."goods" SET "price" = 100 WHERE "id" = 10;
EXPLAIN ANALYZE SELECT * FROM b WHERE a_id='123' ORDER BY time DESC;