Ahoj
Cely email je dost dlouhy. Rozdelil jsem ho na dve casti: prvni kratkou, z otazkou na kterou odpoved mne zajima, a druhou pro ty co jsou zvedavi a maji dostatek trpelivosti :)
Jedna se o obsah plain vystupu z pgdump/pdumpall. Obsahuje on meta data dumpovanych objektu (ktere nekdo by mohl chtit pouzit pro nejake automatizovane potreby).
Treba:
--
-- Name: tab_clients; Type: TABLE; Schema: clients; Owner: sazky
--
Narazil jsem tu na jiste nedostatky. A to:
1. nekonzistentni podoba seznamu argumentu funkci v komentarich/meta informacich
2. nazvy objektu nejsou escapovany/zabaleny do uvozovek, i v pripade ze obsahuji mezery.
3. chybejici nazev tabulky pro vytvareny index v meta informacich
Otazka:
Kde muzu tohleto reportovat abych zvetsil sanci na pripadnou opravu?
#### Pro ty co se chteji seznamit s detailem problemu ####
A. Nekonzistentni identifikator funkce
DDL funkce predchazi nize uvedeny blok komentare.
Argumenty funkce jsou identifikovane pouze datovymi typy, co odpovida tomu co najdeme v pg_proc.oid::regprocedure (nebo presneji oidvectortypes(pg_proc.proargtypes))
--
-- Name: quote_empty(character varying, integer[]); Type: FUNCTION; Schema: public; Owner: sazky
--
Ale uz v pripade ACL, identifikator muze (nemusi ale) obsahovat nazvy argumentu
--
-- Name: FUNCTION generate_salt(_length integer); Type: ACL; Schema: betsys; Owner: sazky
--
--
-- Name: FUNCTION ghstore_out(public.ghstore); Type: ACL; Schema: public; Owner: sazky
--
Pokud to neni malo, pak pripadne output parametry jsou indikovane klicovym slovem OUT
--
-- Name: FUNCTION dblink_get_notify(conname text, OUT notify_name text, OUT be_pid integer, OUT extra text); Type: ACL; Schema: public; Owner: sazky
--
Prani c. 1: konzistentni format argumentu funkci v meta informacich. Nejlip totozne s oidvectortypes(pg_proc.proargtypes)
B. chybejici guoting nazvu objektu obsahujicich mezery (ale take nevzdycky)
--
-- Database "db s mezerou" dump
--
Vyse je to spravne, uz par radek nize nikoliv:
--
-- Name: db s mezerou; Type: DATABASE; Schema: -; Owner: postgres
--
Jeste horsi je to u tabulky, a hlavne jeji atributu a navaznych vlastnosti:
CREATE TABLE "schema s mezerou"."table s mezerou" (
"id s mezerou" bigint NOT NULL
);
V dumpu najdeme nasledujici bloky komentaru:
Vytvoreni tabulky
--
-- Name: table s mezerou; Type: TABLE; Schema: schema s mezerou; Owner: postgres
--
ACL tabulky, prekvaplive jen pro nazev tabulky. Nazev schematy uz nikoliv:
--
-- Name: TABLE "table s mezerou"; Type: ACL; Schema: schema s mezerou; Owner: postgres
--
Nazev sekvence
--
-- Name: table s mezerou_id s mezerou_seq; Type: SEQUENCE; Schema: schema s mezerou; Owner: postgres
--
ACL sekvence je podobne spravne jako u ACL tabulky:
--
-- Name: SEQUENCE "table s mezerou_id s mezerou_seq"; Type: ACL; Schema: schema s mezerou; Owner: postgres
--
EXTREM je pro default sloupce v tabulce. Tady neni mozne rozlisit co je nazev tabulky a co je nazev sloupce.
--
-- Name: table s mezerou id s mezerou; Type: DEFAULT; Schema: schema s mezerou; Owner: postgres
--
Prani c. 2 Dodrzovani konvenci nazvu objektu v meta datech/komentarich v plain dumpu
Nakonec uz malickost. Meta info pro indexy neobsahuje nazev tabulky ke ktere index patri. Coz je nekonzistentni s jinymi pripady , np. nazev tabulky, ke ktere patri komentar ke sloupci ;)
--
-- Name: ix_tabuserroles_idrole; Type: INDEX; Schema: app_permissions; Owner: sazky
--
CREATE INDEX ix_tabuserroles_idrole ON app_permissions.tab_user_roles USING btree (id_role);
Zdravim vsechny