PostgreSQL ay isang open source, malakas, maaasahan, matatag, enterprise-handa at libreng object-relational database system sa estilo ng mga proyekto ng MariaDB, MySQL o SQLite. Ang database server / engine na may ACID (Atomicity, Consistency, Isolation, Durability) ay maaaring maging lubos na pinasadya at kabilang ang maraming mga kaakit-akit na tampok, na ginagawang isang mahusay na kapalit para sa nabanggit na mga engine ng database.
Mga tampok sa isang sulyap
Kabilang sa mga pangunahing tampok ang suporta para sa mga banyagang key, view, joins, trigger at naka-imbak na mga pamamaraan, suporta para sa maraming wika, suporta para sa isang malawak na hanay ng mga uri ng data ng SQL, kabilang ang BOOLEAN, CHAR, INTEGER, NUMERIC, VARCHAR, INTERVAL, TIMESTAMP at DATE.
Bilang karagdagan, ang software ay may suporta para sa pagpapanatili ng mga malalaking bagay na binary, kabilang ang lahat ng uri ng mga file na multimedia (video, audio at larawan), at nagbibigay ng mga developer na may mga native na interface ng programming para sa C, C ++, Python, Perl, Ruby, Java, .Net, Tcl at ODBC programming languages.
Sa iba pang mga kagiliw-giliw na tampok, maaari naming banggitin ang MVCC (Multi-Bersyon Concurrency Control), mga talahanayan, mga pag-encode ng multibyte na character, punto sa pagbawi ng oras, isang mature na query optimizer at tagaplano, asynchronous na pagtitiklop, mga online na backup, nested na mga transaksyon (kilala bilang savepoints), mainit na pag-backup, sumulat ng maagang pag-log para sa fault tolerance, suporta para sa internasyonal na set ng character, pati na rin ang suporta Unicode.PostgreSQL sa mga numero
Sa ngayon, sinusuportahan ng server database ng PostgreSQL ang walang limitasyong laki para sa mga database, ang 32 TB ay dapat ang maximum na laki para sa mga talahanayan, 1.6 TB bawat hilera, 1 GB bawat field, walang limitasyong hanay sa bawat talahanayan, ay sumusuporta sa pagitan ng 250 at 1600 mga haligi sa bawat talahanayan , depende sa mga uri ng haligi, at sumusuporta sa walang limitasyong index bawat table.
Mga sinusuportahang operating system
Matagumpay na nasubok ang PostgreSQL sa lahat ng mga pangunahing operating system, kabilang ang GNU / Linux, BSD, Solaris, HP-UX, AIX, SGI IRIX, Solaris, Tru64, Mac OS X at Microsoft Windows. Ang PostgreSQL ay magagamit para sa pag-download bilang isang unibersal na archive ng mapagkukunan, pati na rin ang mga pre-compiled binary na pakete para sa maraming mga distribusyon ng Linux, na sumusuporta sa parehong mga 32-bit at 64-bit na mga arkitektura.
strong> sa paglabas na ito:
- Iniayos ng paglabas na ito ang dalawang isyu sa seguridad. Inaayos din ng release na ito ang mga isyu na natagpuan sa VACUUM, GIN & index ng hash, parallel query, lohikal na pagtitiklop, at iba pang mga bug na iniulat sa nakalipas na tatlong buwan. Ang lahat ng mga gumagamit na gumagamit ng mga apektadong bersyon ng PostgreSQL ay dapat na i-update sa lalong madaling panahon.
Ano ang bago sa bersyon 10.4 / 11 Beta 1:
- Iniayos ng paglabas na ito ang dalawang isyu sa seguridad. Inaayos din ng release na ito ang mga isyu na natagpuan sa VACUUM, GIN & index ng hash, parallel query, lohikal na pagtitiklop, at iba pang mga bug na iniulat sa nakalipas na tatlong buwan. Ang lahat ng mga gumagamit na gumagamit ng mga apektadong bersyon ng PostgreSQL ay dapat na i-update sa lalong madaling panahon.
Ano ang bagong sa bersyon:
- Higit pang paghigpitan ang kakayahang makita ng pg_user_mappings.umoptions, upang protektahan ang mga password na naka-imbak bilang mga pagpipilian sa pagma-map ng gumagamit (Noah Misch)
- Ang pag-aayos para sa CVE-2017-7486 ay hindi tama: pinapayagan nito ang isang user na makita ang mga opsyon sa kanyang sariling pagma-map ng gumagamit, kahit na wala siyang pahintulot sa USAGE sa nauugnay na banyagang server. Maaaring may kasamang mga opsiyon ang isang password na ibinigay ng may-ari ng server sa halip na ang gumagamit mismo. Dahil ang information_schema.user_mapping_options ay hindi nagpapakita ng mga opsyon sa mga naturang kaso, hindi dapat alinman sa pg_user_mappings. (CVE-2017-7547)
- Sa pamamagitan mismo nito, ayusin lamang ng patch na ito ang pag-uugali sa mga bagong database ng initdb. Kung nais mong ilapat ang pagbabagong ito sa isang umiiral nang database, kakailanganin mong gawin ang mga sumusunod:
- I-restart ang postmaster pagkatapos idagdag ang allow_system_table_mods = totoo sa postgresql.conf. (Sa mga bersyon na sumusuporta sa ALTER SYSTEM, maaari mong gamitin iyon upang gawin ang pagbabago ng pagsasaayos, ngunit kailangan mo pa ring i-restart.)
- Sa bawat database ng kumpol, patakbuhin ang sumusunod na mga utos bilang superuser:
- SET search_path = pg_catalog;
- LILIKHA O I-REPLACE TINGNAN ang pg_user_mappings AS
- PUMILI
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- CASE WHEN U.umuser = 0 THEN
- 'pampubliko'
- ELSE
- A.rolname
- END AS usename,
- KASO KASO (U.umuser 0 AT A.rolname = current_user
- AT (pg_has_role (S.srvowner, 'USAGE')
- O has_server_privilege (S.oid, 'USAGE')))
- O (U.umuser = 0 AT pg_has_role (S.srvowner, 'USAGE'))
- O (PUMILI rolsuper MULA pg_authid WHERE rolname = current_user)
- THEN U.umoptions
- ELSE NULL END AS umoptions
- MULA sa pg_user_mapping U
- LEFT JOIN pg_authid A ON (A.oid = U.umuser) SUMALI
- pg_foreign_server S ON (U.umserver = S.oid);
- Huwag kalimutan na isama ang template0 at template1 na mga database, o ang kahinaan ay mananatili pa rin sa mga datos na nilikha mo mamaya. Upang ayusin ang template0, kakailanganin mong pansamantalang gawin itong tanggapin ang mga koneksyon. Sa PostgreSQL 9.5 at mas bago, maaari mong gamitin ang
- ALTER DATABASE template0 MAY MGA LARAWAN ng ALLOW_CONNECTIONS;
- at pagkatapos ay matapos ang pag-aayos ng template0, i-undo na may
- ALTER DATABASE template0 MAY MAYROON ng mga ALLOW_CONNECTIONS;
- Sa mga naunang bersyon, halip gamitin
- UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
- UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
- Panghuli, alisin ang setting ng configuration ng allow_system_table_mods, at muling i-restart ang postmaster.
- Huwag pahintulutan ang mga walang laman na password sa lahat ng mga pamamaraan ng pagpapatunay na batay sa password (Heikki Linnakangas)
- Hindi pinapansin ng libpq ang walang laman na mga pagtutukoy ng password, at hindi ipinapadala ito sa server. Kaya, kung naka-set ang password ng user sa walang laman na string, imposibleng mag-log in gamit ang password na iyon sa pamamagitan ng psql o iba pang mga client na nakabase sa libpq. Ang isang administrator ay maaaring maniwala na ang pagtatakda ng password sa walang laman ay katumbas ng hindi pagpapagana ng pag-login ng password. Gayunpaman, sa isang nabagong o non-libpq na nakabatay sa client, ang pag-log in ay posible, depende sa kung anong paraan ng pagpapatunay ay na-configure. Sa partikular ang pinaka-karaniwang paraan, md5, tinanggap ang mga walang laman na password. Baguhin ang server upang tanggihan ang mga walang laman na password sa lahat ng mga kaso. (CVE-2017-7546)
- Gumawa ng lo_put () suriin para sa UPDATE na pribilehiyo sa target na malaking bagay (Tom Lane, Michael Paquier)
- Ang lo_put () ay tiyak na nangangailangan ng parehong mga pahintulot bilang lowrite (), ngunit ang tseke ay nawawala, na nagpapahintulot sa anumang user na baguhin ang data sa isang malaking bagay. (CVE-2017-7548)
- Iwasto ang dokumentasyon tungkol sa proseso para sa pag-upgrade ng mga server ng standby sa pg_upgrade (Bruce Momjian)
- Inilahad ng naunang dokumentasyon ang mga user upang simulan / itigil ang pangunahing server pagkatapos tumakbo pg_upgrade ngunit bago i-sync ang mga standby server. Ang pagkakasunud-sunod na ito ay hindi ligtas.
- Ayusin ang sabay na pagla-lock ng mga tuple update chain (Alvaro Herrera)
- Kung ang ilang mga sesyon ay sabay na naka-lock ang isang tuple update chain kasama ang mga hindi naka-configure na lock mode gamit ang isang lumang snapshot, at lahat sila ay magtagumpay, posible para sa ilan sa kanila na mabigo (at magtapos walang live na tuple version) dahil sa isang lahi kondisyon. Nagkaroon ito ng mga kahihinatnan tulad ng mga tseke sa mga banyagang key na hindi nakakakita ng isang tuple na tiyak na umiiral ngunit ina-update nang kasabay.
- Ayusin ang potensyal na katiwalian ng data kapag nagyeyelo ang isang tuple na ang XMAX ay isang multixact na may eksaktong isa pa ring kagiliw-giliw na miyembro (Teodor Sigaev)
- Iwasan ang integer na pag-apaw at sumunod na pag-crash kapag nag-uuri ng higit sa isang bilyong tuples sa memory (Sergey Koposov)
- Sa Windows, muling subukan ang paglikha ng proseso kung hindi namin inilalaan ang hanay ng address para sa aming nakabahaging memorya sa bagong proseso (Tom Lane, Amit Kapila)
- Ito ay inaasahan na ayusin ang mga madalas na pagkabigo ng bata-proseso-paglunsad na malamang dahil sa pagkagambala sa mga produkto ng antivirus.
- Ayusin ang mababang probabilidad na katiwalian ng nakabahaging hawak na predindado-lock na hash sa Windows build (Thomas Munro, Tom Lane)
- Iwasan ang pag-log ng malinis na pagsasara ng isang koneksyon sa SSL na parang ito ay isang pag-reset ng koneksyon (Michael Paquier)
- Pigilan ang pagpapadala ng mga tiket sa session ng SSL sa mga kliyente (Tom Lane)
- Pinipigilan ng pag-aayos na ito ang mga pagkukulang ng pag-reconnection sa code ng SSL code na may kamalayan ng client.
- Ayusin ang code para sa pagtatakda ng tcp_keepalives_idle sa Solaris (Tom Lane)
- Ayusin ang mga kolektor ng istatistika upang igalang ang mga mensahe ng pagtatanong na ibinigay pagkatapos lamang ng isang postmaster shutdown at agarang restart (Tom Lane)
- Ang mga katanungan sa istatistika na inisyu sa loob ng kalahating segundo ng nakaraang postmaster shutdown ay epektibo na hindi pinansin.
- Tiyaking makatatanggap ng laki ng buffer ang mga tagatala ng tagapii ay hindi bababa sa 100KB (Tom Lane)
- Binabawasan nito ang panganib ng pagbaba ng data ng istatistika sa mas lumang mga platform na ang default na tumanggap ng laki ng buffer ay mas mababa kaysa sa na.
- Ayusin ang posibleng paglikha ng isang hindi balidong WAL na segment kapag ang standby ay na-promote pagkatapos na maiproseso ang record ng XLOG_SWITCH WALA (Andres Freund)
- Ayusin ang walsender upang agad na lumabas kapag hiniling ng pag-shutdown ng client (Tom Lane)
- Ayusin ang SIGHUP at SIGUSR1 na paghawak sa proseso ng walsender (Petr Jelinek, Andres Freund)
- Pigilan ang mga pagnanot ng walsender sa mga checkpoint sa pagsara (Andres Freund, Michael Paquier)
- Ayusin ang mga hindi kinakailangang mabagal na restart ng mga proseso ng walreceiver dahil sa kalagayan ng lahi sa postmaster (Tom Lane)
- Ayusin ang pagtambulin ng mga maliliit na subtransaksiyon sa disk sa panahon ng lohikal na pag-decode (Andres Freund)
- Nagresulta ito sa pansamantalang mga file na kumakain ng labis na puwang sa disk.
- Bawasan ang trabaho na kailangan upang bumuo ng mga snapshot sa paglikha ng mga lohikal na decoding slot (Andres Freund, Petr Jelinek)
- Ang nakaraang algorithm ay sobra-sobra na mahal sa isang server na may maraming mga bukas na transaksyon.
- Ayusin ang kondisyon ng lahi na maaaring walang katapusan na pagkaantala sa paglikha ng mga lohikal na decoding slot (Andres Freund, Petr Jelinek)
- Bawasan ang overhead sa pagproseso ng mga kaganapan ng syscache na hindi wasto (Tom Lane)
- Ito ay kapaki-pakinabang lalo na para sa lohikal na pag-decode, na nagpapalitaw ng madalas na di-wastong cache.
- Alisin ang hindi wastong heuristic na ginagamit sa ilang mga kaso upang matantya sumali sa selectivity batay sa pagkakaroon ng mga banyagang key na mga hadlang (David Rowley)
- Sa ilang mga kaso kung saan umiiral ang isang umiiral na multi-column na pangunahing hadlang ngunit hindi eksakto na tumutugma sa istrakturang sumali sa query, ang tagaplano ay gumagamit ng isang heuristic ng pagtingin na lumalabas na hindi gumagana nang maayos. Ibalik ang mga ganitong kaso sa paraan ng tinantyang mga ito bago ang 9.6.
- Mag-ayos ng mga kaso kung saan ang isang INSERT o UPDATE ay nagtatalaga sa higit sa isang elemento ng haligi na may uri ng domain-over-array (Tom Lane)
- Pahintulutan ang mga function ng window na gagamitin sa sub-SELECT na nasa mga argumento ng isang pinagsama-samang pag-andar (Tom Lane)
- Tiyaking naipapatupad nang wasto ang mga sugnay ng PAGSUSIP sa pagtingin ng tseke kapag ang pinagbabatayan ng talahanayan ay isang banyagang talahanayan (Etsuro Fujita)
- Noong nakaraan, ang pag-update ay maaaring ganap na hunhon sa dayuhang server, ngunit ang pangangailangan upang i-verify ang mga kondisyon ng pagtingin ay napalampas kung gayon.
- Ilipat ang mga uri ng autogenerated na array sa paraan habang ALTER ... RENAME (Vik Fearing)
- Noong nakaraan, papangalanang muli ang pangalan ng isang magkakasalungat na uri ng hanay ng autogenerated sa PARAAN; ang pag-aayos na ito ay umaabot sa pag-uugali na iyon sa pagpapalit ng pangalan ng mga operasyon.
- Ayusin ang nakabitin na pointer sa ALTER TABLE kapag mayroong isang puna sa isang hadlang na kabilang sa talahanayan (David Rowley)
- Ang pag-re-apply ng komento sa reconstructed na pagpilit ay maaaring mabigo sa isang kakaibang mensahe ng error, o kahit na pag-crash.
- Tiyakin na ang ALTER USER ... SET ay tumatanggap ng lahat ng mga variant ng syntax na ALTER ROLE ... SET ay (Peter Eisentraut)
- Pahintulutan ang mga limitasyon ng CHECK sa banyagang talahanayan sa simula ay HINDI TIRAHAN (Amit Langote)
- LILIKHA NG TALAAN ay tahimik na bumababa ang HINDI TINATANGGAP na mga pagtutukoy para sa mga limitasyon ng CHECK, na ang mesa ay dapat na walang laman upang ang bisa ay agad na mapatunayan. Ngunit ito ay mali para gumawa ng FOREIGN TABLE, kung saan walang dahilan upang ipagpalagay na ang pinagbabatayan ng talahanayan ay walang laman, at kahit na ito ay hindi negosyo ng atin upang magpasya na ang pagpilit ay maaaring tratuhin bilang wastong pasulong. Laktawan ang & quot; pag-optimize & quot; para sa mga banyagang mesa.
- Tumpak na i-update ang impormasyon ng dependency kapag binago ang argumento ng isang function na datatype I / O o uri ng pagbalik mula sa opaque sa tamang uri (Heikki Linnakangas)
- Pahintulutan ang parallelism sa query plan kapag ang COPY na mga kopya mula sa resulta ng query (Andres Freund)
- Bawasan ang paggamit ng memory kapag nagproseso ang ANALYZE ng haligi ng tsvector (Heikki Linnakangas)
- Ayusin ang hindi kinakailangang pagkawala ng katumpakan at nananatiling bilugan kapag nagpaparami o naghahati ng mga halaga ng pera sa pamamagitan ng mga integer o mga kamay (Tom Lane)
- I-tighten ang mga tseke para sa whitespace sa mga function na ma-parse identifier, tulad ng regprocedurein () (Tom Lane)
- Depende sa umiiral na locale, ang mga pag-andar na ito ay maaaring magkasala ng mga fragment ng mga multibyte character bilang whitespace.
- Gamitin ang may-katuturang mga simbolo ng #define mula sa Perl habang pinagsama ang PL / Perl (Ashutosh Sharma, Tom Lane)
- Iniiwasan nito ang mga problema sa portability, na kadalasang nagpapakita bilang & quot; pagkakamay & quot; mismatch sa panahon ng library load, kapag nagtatrabaho sa kamakailang mga bersyon ng Perl.
- Sa libpq, i-reset nang maayos ang estado ng pagpapatunay ng GSS / SASL at SSPI matapos ang isang nabigong pagtatangka ng koneksyon (Michael Paquier)
- Ang pagkabigong gawin ito ay nangangahulugan na kapag bumabalik mula sa SSL sa mga di-SSL na koneksyon, ang isang GSS / SASL failure sa SSL na pagtatangka ay laging magdudulot ng pagkabigo sa pagtatangkang hindi SSL. Ang SSPI ay hindi nabigo, ngunit tumagas ang memorya.
- Ang misbehavior na ito ay sinusunod sa mga platform na nagmula sa BSD (kabilang ang macOS), ngunit hindi sa karamihan ng iba.
- Ayusin ang pg_dump at pg_restore upang humalili ng REFRESH MATERIALIZED VIEW utos na huling (Tom Lane)
- Pinipigilan nito ang mga error sa panahon ng tambakan ng basura / ibalik kapag tumutukoy ang materyalistang pagtingin sa mga talahanayan na pag-aari ng ibang gumagamit.
- Pagbutihin ang pag-uulat ng pg_dump / pg_restore ng mga kondisyon ng error na nagmula sa zlib (Vladimir Kunschikov, Alvaro Herrera)
- Ayusin ang pg_dump gamit ang pagpipiliang --clean upang i-drop ang mga trigger ng kaganapan tulad ng inaasahan (Tom Lane)
- Ito rin ngayon ay tama ang nagtatalaga ng pagmamay-ari ng mga nag-trigger ng kaganapan; bago, sila ay naibalik bilang pag-aari ng superuser na nagpapatakbo ng script na ibalik.
- Ayusin ang pg_dump gamit ang pagpipiliang --clean na hindi mabibigo kapag ang pampublikong panukala ay hindi umiiral (Stephen Frost)
- Ayusin ang pg_dump upang hindi maglabas ng di-wastong SQL para sa isang walang laman na klase ng operator (Daniel Gustafsson)
- Ayusin ang output ng pg_dump sa stdout sa Windows (Kuntal Ghosh)
- Ang naka-compress na plain-text dump na nakasulat sa stdout ay naglalaman ng sira na data dahil sa kabiguang ilagay ang file descriptor sa binary mode.
- Ayusin ang pg_get_ruledef () upang i-print ang tamang output para sa ON PUMILI ng panuntunan ng isang view na ang mga haligi ay pinalitan ng pangalan (Tom Lane)
- Sa ilang mga sulok na kaso, ang pg_dump ay nakasalalay sa pg_get_ruledef () upang mag-dump views, upang ang error na ito ay maaaring magresulta sa dump / reload na pagkabigo.
- Ayusin ang paglalaglag ng mga panlabas na pagsali sa mga walang limitasyong limitasyon, tulad ng resulta ng isang NATURAL LEFT JOIN na walang karaniwang mga haligi (Tom Lane)
- Ayusin ang paglalaglag ng mga expression sa pag-andar sa FROM clause sa mga kaso kung saan ang ekspresyon ay hindi nahahawa sa isang bagay na mukhang isang function call (Tom Lane)
- Ayusin ang output ng pg_basebackup sa stdout sa Windows (Haribabu Kommi)
- Ang isang backup na nakasulat sa stdout ay naglalaman ng sira data dahil sa hindi pagbibigay ng file descriptor sa binary mode.
- Ayusin ang pg_rewind upang maayos na hawakan ang mga file na lumalagpas sa 2GB (Kuntal Ghosh, Michael Paquier)
- Karaniwan ang mga naturang mga file ay hindi lilitaw sa mga direktoryo ng PostgreSQL data, ngunit maaaring naroroon sa ilang mga kaso.
- Ayusin ang pg_upgrade upang matiyak na ang pagtatapos ng WAL record ay walang wal_level = minimum (Bruce Momjian)
- Maaaring maiwasan ng kundisyong ito ang mga naka-upgrade na mga server ng standby mula sa muling pagkonekta.
- Ayusin ang pag-compute ng pg_xlogdump ng WAL haba ng tala (Andres Freund)
- Sa postgres_fdw, muling itatag ang mga koneksyon sa mga remote server pagkatapos ng ALTER SERVER o ALTER USER MAPPING na mga utos (Kyotaro Horiguchi)
- Tinitiyak nito na ang mga pagbabago sa opsyon na nakakaapekto sa mga parameter ng koneksyon ay agad na mailalapat.
- Sa postgres_fdw, payagan ang pagkansela ng mga remote control control commands (Robert Haas, Rafia Sabih)
- Nagbibigay-daan ang pagbabagong ito sa amin na mabilis na makatakas sa isang paghihintay para sa isang hindi nakikitang remote server sa maraming iba pang mga kaso kaysa dati.
- Palakihin ang MAX_SYSCACHE_CALLBACKS upang magbigay ng higit na puwang para sa mga extension (Tom Lane)
- Laging gumamit -fPIC, hindi -fpic, kapag nagtatayo ng mga shared library gamit ang gcc (Tom Lane)
- Sinusuportahan nito ang mas malaking mga aklatang extension sa mga platform kung saan ito ay gumagawa ng isang pagkakaiba.
- Sa MSVC build, hawakan ang kaso kung saan ang openssl library ay wala sa loob ng isang subdirectory ng VC (Andrew Dunstan)
- Sa MSVC build, magdagdag ng tamang isama ang path para sa libxml2 header file (Andrew Dunstan)
- Iniayos ng isang dating pangangailangan upang ilipat ang mga bagay sa paligid sa karaniwang pag-install ng Windows ng libxml2.
- Sa MSVC build, makilala ang isang Tcl library na pinangalanan tcl86.lib (Noah Misch)
- Sa MSVC build, igalang ang mga setting ng PROVE_FLAGS sa command line ng vcregress.pl (Andrew Dunstan)
Gumawa ng mga pag-update ng TYPE ang mga function na I / O na ipinahayag sa estilo na ito na pang-lipas na, ngunit nakalimutan ito upang i-record ang isang dependency sa uri, na nagpapahintulot sa isang kasunod na DROP TYPE upang iwanan ang mga pinaghiwalay na function sa likod.
Sa psql, ayusin ang kabiguan kapag ang COPY FROM STDIN ay natapos na may keyboard signal EOF at pagkatapos ay isa pang COPY FROM STDIN ay sinubukan (Thomas Munro)
Ano ang bago sa bersyon 9.6.4:
- Higit pang paghigpitan ang kakayahang makita ng pg_user_mappings.umoptions, upang maprotektahan ang mga password na naka-imbak bilang mga pagpipilian sa pagma-map ng gumagamit (Noah Misch)
- Ang pag-aayos para sa CVE-2017-7486 ay hindi tama: pinapayagan nito ang isang user na makita ang mga opsyon sa kanyang sariling pagma-map ng gumagamit, kahit na wala siyang pahintulot sa USAGE sa nauugnay na banyagang server. Maaaring may kasamang mga opsiyon ang isang password na ibinigay ng may-ari ng server sa halip na ang gumagamit mismo. Dahil ang information_schema.user_mapping_options ay hindi nagpapakita ng mga opsyon sa mga naturang kaso, hindi dapat alinman sa pg_user_mappings. (CVE-2017-7547)
- Sa pamamagitan mismo nito, ayusin lamang ng patch na ito ang pag-uugali sa mga bagong database ng initdb. Kung nais mong ilapat ang pagbabagong ito sa isang umiiral nang database, kakailanganin mong gawin ang mga sumusunod:
- I-restart ang postmaster pagkatapos idagdag ang allow_system_table_mods = totoo sa postgresql.conf. (Sa mga bersyon na sumusuporta sa ALTER SYSTEM, maaari mong gamitin iyon upang gawin ang pagbabago ng pagsasaayos, ngunit kailangan mo pa ring i-restart.)
- Sa bawat database ng kumpol, patakbuhin ang sumusunod na mga utos bilang superuser:
- SET search_path = pg_catalog;
- LILIKHA O I-REPLACE TINGNAN ang pg_user_mappings AS
- PUMILI
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- CASE WHEN U.umuser = 0 THEN
- 'pampubliko'
- ELSE
- A.rolname
- END AS usename,
- KASO KASO (U.umuser 0 AT A.rolname = current_user
- AT (pg_has_role (S.srvowner, 'USAGE')
- O has_server_privilege (S.oid, 'USAGE')))
- O (U.umuser = 0 AT pg_has_role (S.srvowner, 'USAGE'))
- O (PUMILI rolsuper MULA pg_authid WHERE rolname = current_user)
- THEN U.umoptions
- ELSE NULL END AS umoptions
- MULA sa pg_user_mapping U
- LEFT JOIN pg_authid A ON (A.oid = U.umuser) SUMALI
- pg_foreign_server S ON (U.umserver = S.oid);
- Huwag kalimutan na isama ang template0 at template1 na mga database, o ang kahinaan ay mananatili pa rin sa mga datos na nilikha mo mamaya. Upang ayusin ang template0, kakailanganin mong pansamantalang gawin itong tanggapin ang mga koneksyon. Sa PostgreSQL 9.5 at mas bago, maaari mong gamitin ang
- ALTER DATABASE template0 MAY MGA LARAWAN ng ALLOW_CONNECTIONS;
- at pagkatapos ay matapos ang pag-aayos ng template0, i-undo na may
- ALTER DATABASE template0 MAY MAYROON ng mga ALLOW_CONNECTIONS;
- Sa mga naunang bersyon, halip gamitin
- UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
- UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
- Panghuli, alisin ang setting ng configuration ng allow_system_table_mods, at muling i-restart ang postmaster.
- Huwag pahintulutan ang mga walang laman na password sa lahat ng mga pamamaraan ng pagpapatunay na batay sa password (Heikki Linnakangas)
- Hindi pinapansin ng libpq ang walang laman na mga pagtutukoy ng password, at hindi ipinapadala ito sa server. Kaya, kung naka-set ang password ng user sa walang laman na string, imposibleng mag-log in gamit ang password na iyon sa pamamagitan ng psql o iba pang mga client na nakabase sa libpq. Ang isang administrator ay maaaring maniwala na ang pagtatakda ng password sa walang laman ay katumbas ng hindi pagpapagana ng pag-login ng password. Gayunpaman, sa isang nabagong o non-libpq na nakabatay sa client, ang pag-log in ay posible, depende sa kung anong paraan ng pagpapatunay ay na-configure. Sa partikular ang pinaka-karaniwang paraan, md5, tinanggap ang mga walang laman na password. Baguhin ang server upang tanggihan ang mga walang laman na password sa lahat ng mga kaso. (CVE-2017-7546)
- Gumawa ng lo_put () suriin para sa UPDATE na pribilehiyo sa target na malaking bagay (Tom Lane, Michael Paquier)
- Ang lo_put () ay tiyak na nangangailangan ng parehong mga pahintulot bilang lowrite (), ngunit ang tseke ay nawawala, na nagpapahintulot sa anumang user na baguhin ang data sa isang malaking bagay. (CVE-2017-7548)
- Iwasto ang dokumentasyon tungkol sa proseso para sa pag-upgrade ng mga server ng standby sa pg_upgrade (Bruce Momjian)
- Inilahad ng naunang dokumentasyon ang mga user upang simulan / itigil ang pangunahing server pagkatapos tumakbo pg_upgrade ngunit bago i-sync ang mga standby server. Ang pagkakasunud-sunod na ito ay hindi ligtas.
- Ayusin ang sabay na pagla-lock ng mga tuple update chain (Alvaro Herrera)
- Kung ang ilang mga sesyon ay sabay na naka-lock ang isang tuple update chain kasama ang mga hindi naka-configure na lock mode gamit ang isang lumang snapshot, at lahat sila ay magtagumpay, posible para sa ilan sa kanila na mabigo (at magtapos walang live na tuple version) dahil sa isang lahi kondisyon. Nagkaroon ito ng mga kahihinatnan tulad ng mga tseke sa mga banyagang key na hindi nakakakita ng isang tuple na tiyak na umiiral ngunit ina-update nang kasabay.
- Ayusin ang potensyal na katiwalian ng data kapag nagyeyelo ang isang tuple na ang XMAX ay isang multixact na may eksaktong isa pa ring kagiliw-giliw na miyembro (Teodor Sigaev)
- Iwasan ang integer na pag-apaw at sumunod na pag-crash kapag nag-uuri ng higit sa isang bilyong tuples sa memory (Sergey Koposov)
- Sa Windows, muling subukan ang paglikha ng proseso kung hindi namin inilalaan ang hanay ng address para sa aming nakabahaging memorya sa bagong proseso (Tom Lane, Amit Kapila)
- Ito ay inaasahan na ayusin ang mga madalas na pagkabigo ng bata-proseso-paglunsad na malamang dahil sa pagkagambala sa mga produkto ng antivirus.
- Ayusin ang mababang probabilidad na katiwalian ng nakabahaging hawak na predindado-lock na hash sa Windows build (Thomas Munro, Tom Lane)
- Iwasan ang pag-log ng malinis na pagsasara ng isang koneksyon sa SSL na parang ito ay isang pag-reset ng koneksyon (Michael Paquier)
- Pigilan ang pagpapadala ng mga tiket sa session ng SSL sa mga kliyente (Tom Lane)
- Pinipigilan ng pag-aayos na ito ang mga pagkukulang ng pag-reconnection sa code ng SSL code na may kamalayan ng client.
- Ayusin ang code para sa pagtatakda ng tcp_keepalives_idle sa Solaris (Tom Lane)
- Ayusin ang mga kolektor ng istatistika upang igalang ang mga mensahe ng pagtatanong na ibinigay pagkatapos lamang ng isang postmaster shutdown at agarang restart (Tom Lane)
- Ang mga katanungan sa istatistika na inisyu sa loob ng kalahating segundo ng nakaraang postmaster shutdown ay epektibo na hindi pinansin.
- Tiyaking makatatanggap ng laki ng buffer ang mga tagatala ng tagapii ay hindi bababa sa 100KB (Tom Lane)
- Binabawasan nito ang panganib ng pagbaba ng data ng istatistika sa mas lumang mga platform na ang default na tumanggap ng laki ng buffer ay mas mababa kaysa sa na.
- Ayusin ang posibleng paglikha ng isang hindi balidong WAL na segment kapag ang standby ay na-promote pagkatapos na maiproseso ang record ng XLOG_SWITCH WALA (Andres Freund)
- Ayusin ang walsender upang agad na lumabas kapag hiniling ng pag-shutdown ng client (Tom Lane)
- Ayusin ang SIGHUP at SIGUSR1 na paghawak sa proseso ng walsender (Petr Jelinek, Andres Freund)
- Pigilan ang mga pagnanot ng walsender sa mga checkpoint sa pagsara (Andres Freund, Michael Paquier)
- Ayusin ang mga hindi kinakailangang mabagal na restart ng mga proseso ng walreceiver dahil sa kalagayan ng lahi sa postmaster (Tom Lane)
- Ayusin ang pagtambulin ng mga maliliit na subtransaksiyon sa disk sa panahon ng lohikal na pag-decode (Andres Freund)
- Nagresulta ito sa pansamantalang mga file na kumakain ng labis na puwang sa disk.
- Bawasan ang trabaho na kailangan upang bumuo ng mga snapshot sa paglikha ng mga lohikal na decoding slot (Andres Freund, Petr Jelinek)
- Ang nakaraang algorithm ay sobra-sobra na mahal sa isang server na may maraming mga bukas na transaksyon.
- Ayusin ang kondisyon ng lahi na maaaring walang katapusan na pagkaantala sa paglikha ng mga lohikal na decoding slot (Andres Freund, Petr Jelinek)
- Bawasan ang overhead sa pagproseso ng mga kaganapan ng syscache na hindi wasto (Tom Lane)
- Ito ay kapaki-pakinabang lalo na para sa lohikal na pag-decode, na nagpapalitaw ng madalas na di-wastong cache.
- Alisin ang hindi wastong heuristic na ginagamit sa ilang mga kaso upang matantya sumali sa selectivity batay sa pagkakaroon ng mga banyagang key na mga hadlang (David Rowley)
- Sa ilang mga kaso kung saan umiiral ang isang umiiral na multi-column na pangunahing hadlang ngunit hindi eksakto na tumutugma sa istrakturang sumali sa query, ang tagaplano ay gumagamit ng isang heuristic ng pagtingin na lumalabas na hindi gumagana nang maayos. Ibalik ang mga ganitong kaso sa paraan ng tinantyang mga ito bago ang 9.6.
- Mag-ayos ng mga kaso kung saan ang isang INSERT o UPDATE ay nagtatalaga sa higit sa isang elemento ng haligi na may uri ng domain-over-array (Tom Lane)
- Pahintulutan ang mga function ng window na gagamitin sa sub-SELECT na nasa mga argumento ng isang pinagsama-samang pag-andar (Tom Lane)
- Tiyaking naipapatupad nang wasto ang mga sugnay ng PAGSUSIP sa pagtingin ng tseke kapag ang pinagbabatayan ng talahanayan ay isang banyagang talahanayan (Etsuro Fujita)
- Noong nakaraan, ang pag-update ay maaaring ganap na hunhon sa dayuhang server, ngunit ang pangangailangan upang i-verify ang mga kondisyon ng pagtingin ay napalampas kung gayon.
- Ilipat ang mga uri ng autogenerated na array sa paraan habang ALTER ... RENAME (Vik Fearing)
- Noong nakaraan, papangalanang muli ang pangalan ng isang magkakasalungat na uri ng hanay ng autogenerated sa PARAAN; ang pag-aayos na ito ay umaabot sa pag-uugali na iyon sa pagpapalit ng pangalan ng mga operasyon.
- Ayusin ang nakabitin na pointer sa ALTER TABLE kapag mayroong isang puna sa isang hadlang na kabilang sa talahanayan (David Rowley)
- Ang pag-re-apply ng komento sa reconstructed na pagpilit ay maaaring mabigo sa isang kakaibang mensahe ng error, o kahit na pag-crash.
- Tiyakin na ang ALTER USER ... SET ay tumatanggap ng lahat ng mga variant ng syntax na ALTER ROLE ... SET ay (Peter Eisentraut)
- Pahintulutan ang mga limitasyon ng CHECK sa banyagang talahanayan sa simula ay HINDI TIRAHAN (Amit Langote)
- LILIKHA NG TALAAN ay tahimik na bumababa ang HINDI TINATANGGAP na mga pagtutukoy para sa mga limitasyon ng CHECK, na ang mesa ay dapat na walang laman upang ang bisa ay agad na mapatunayan. Ngunit ito ay mali para gumawa ng FOREIGN TABLE, kung saan walang dahilan upang ipagpalagay na ang pinagbabatayan ng talahanayan ay walang laman, at kahit na ito ay hindi negosyo ng atin upang magpasya na ang pagpilit ay maaaring tratuhin bilang wastong pasulong. Laktawan ang "pag-optimize" na ito para sa mga banyagang mga talahanayan.
- Tumpak na i-update ang impormasyon ng dependency kapag binago ang argumento ng isang function na datatype I / O o uri ng pagbalik mula sa opaque sa tamang uri (Heikki Linnakangas)
- Pahintulutan ang parallelism sa query plan kapag ang COPY na mga kopya mula sa resulta ng query (Andres Freund)
- Bawasan ang paggamit ng memory kapag nagproseso ang ANALYZE ng haligi ng tsvector (Heikki Linnakangas)
- Ayusin ang hindi kinakailangang pagkawala ng katumpakan at nananatiling bilugan kapag nagpaparami o naghahati ng mga halaga ng pera sa pamamagitan ng mga integer o mga kamay (Tom Lane)
- I-tighten ang mga tseke para sa whitespace sa mga function na ma-parse identifier, tulad ng regprocedurein () (Tom Lane)
- Depende sa umiiral na locale, ang mga pag-andar na ito ay maaaring magkasala ng mga fragment ng mga multibyte character bilang whitespace.
- Gamitin ang may-katuturang mga simbolo ng #define mula sa Perl habang pinagsama ang PL / Perl (Ashutosh Sharma, Tom Lane)
- Iniiwasan nito ang mga problema sa pagdudulot, na kadalasang nagpapakita bilang isang "pagkakamay" na hindi pagtutugma sa panahon ng pag-load ng library, kapag nagtatrabaho sa mga pinakabagong bersyon ng Perl.
- Sa libpq, i-reset nang maayos ang estado ng pagpapatunay ng GSS / SASL at SSPI matapos ang isang nabigong pagtatangka ng koneksyon (Michael Paquier)
- Ang pagkabigong gawin ito ay nangangahulugan na kapag bumabalik mula sa SSL sa mga di-SSL na koneksyon, ang isang GSS / SASL failure sa SSL na pagtatangka ay laging magdudulot ng pagkabigo sa pagtatangkang hindi SSL. Ang SSPI ay hindi nabigo, ngunit tumagas ang memorya.
- Ang misbehavior na ito ay sinusunod sa mga platform na nagmula sa BSD (kabilang ang macOS), ngunit hindi sa karamihan ng iba.
- Ayusin ang pg_dump at pg_restore upang humalili ng REFRESH MATERIALIZED VIEW utos na huling (Tom Lane)
- Pinipigilan nito ang mga error sa panahon ng tambakan ng basura / ibalik kapag tumutukoy ang materyalistang pagtingin sa mga talahanayan na pag-aari ng ibang gumagamit.
- Pagbutihin ang pag-uulat ng pg_dump / pg_restore ng mga kondisyon ng error na nagmula sa zlib (Vladimir Kunschikov, Alvaro Herrera)
- Ayusin ang pg_dump gamit ang pagpipiliang --clean upang i-drop ang mga trigger ng kaganapan tulad ng inaasahan (Tom Lane)
- Ito rin ngayon ay tama ang nagtatalaga ng pagmamay-ari ng mga nag-trigger ng kaganapan; bago, sila ay naibalik bilang pag-aari ng superuser na nagpapatakbo ng script na ibalik.
- Ayusin ang pg_dump gamit ang pagpipiliang --clean na hindi mabibigo kapag ang pampublikong panukala ay hindi umiiral (Stephen Frost)
- Ayusin ang pg_dump upang hindi maglabas ng di-wastong SQL para sa isang walang laman na klase ng operator (Daniel Gustafsson)
- Ayusin ang output ng pg_dump sa stdout sa Windows (Kuntal Ghosh)
- Ang naka-compress na plain-text dump na nakasulat sa stdout ay naglalaman ng sira na data dahil sa kabiguang ilagay ang file descriptor sa binary mode.
- Ayusin ang pg_get_ruledef () upang i-print ang tamang output para sa ON PUMILI ng panuntunan ng isang view na ang mga haligi ay pinalitan ng pangalan (Tom Lane)
- Sa ilang mga sulok na kaso, ang pg_dump ay nakasalalay sa pg_get_ruledef () upang mag-dump views, upang ang error na ito ay maaaring magresulta sa dump / reload na pagkabigo.
- Ayusin ang paglalaglag ng mga panlabas na pagsali sa mga walang limitasyong limitasyon, tulad ng resulta ng isang NATURAL LEFT JOIN na walang karaniwang mga haligi (Tom Lane)
- Ayusin ang paglalaglag ng mga expression sa pag-andar sa FROM clause sa mga kaso kung saan ang ekspresyon ay hindi nahahawa sa isang bagay na mukhang isang function call (Tom Lane)
- Ayusin ang output ng pg_basebackup sa stdout sa Windows (Haribabu Kommi)
- Ang isang backup na nakasulat sa stdout ay naglalaman ng sira data dahil sa hindi pagbibigay ng file descriptor sa binary mode.
- Ayusin ang pg_rewind upang maayos na hawakan ang mga file na lumalagpas sa 2GB (Kuntal Ghosh, Michael Paquier)
- Karaniwan ang mga naturang mga file ay hindi lilitaw sa mga direktoryo ng PostgreSQL data, ngunit maaaring naroroon sa ilang mga kaso.
- Ayusin ang pg_upgrade upang matiyak na ang pagtatapos ng WAL record ay walang wal_level = minimum (Bruce Momjian)
- Maaaring maiwasan ng kundisyong ito ang mga naka-upgrade na mga server ng standby mula sa muling pagkonekta.
- Ayusin ang pag-compute ng pg_xlogdump ng WAL haba ng tala (Andres Freund)
- Sa postgres_fdw, muling itatag ang mga koneksyon sa mga remote server pagkatapos ng ALTER SERVER o ALTER USER MAPPING na mga utos (Kyotaro Horiguchi)
- Tinitiyak nito na ang mga pagbabago sa opsyon na nakakaapekto sa mga parameter ng koneksyon ay agad na mailalapat.
- Sa postgres_fdw, payagan ang pagkansela ng mga remote control control commands (Robert Haas, Rafia Sabih)
- Nagbibigay-daan ang pagbabagong ito sa amin na mabilis na makatakas sa isang paghihintay para sa isang hindi nakikitang remote server sa maraming iba pang mga kaso kaysa dati.
- Palakihin ang MAX_SYSCACHE_CALLBACKS upang magbigay ng higit na puwang para sa mga extension (Tom Lane)
- Laging gumamit -fPIC, hindi -fpic, kapag nagtatayo ng mga shared library gamit ang gcc (Tom Lane)
- Sinusuportahan nito ang mas malaking mga aklatang extension sa mga platform kung saan ito ay gumagawa ng isang pagkakaiba.
- Sa MSVC build, hawakan ang kaso kung saan ang openssl library ay wala sa loob ng isang subdirectory ng VC (Andrew Dunstan)
- Sa MSVC build, magdagdag ng tamang isama ang path para sa libxml2 header file (Andrew Dunstan)
- Iniayos ng isang dating pangangailangan upang ilipat ang mga bagay sa paligid sa karaniwang pag-install ng Windows ng libxml2.
- Sa MSVC build, makilala ang isang Tcl library na pinangalanan tcl86.lib (Noah Misch)
- Sa MSVC build, igalang ang mga setting ng PROVE_FLAGS sa command line ng vcregress.pl (Andrew Dunstan)
Gumawa ng mga pag-update ng TYPE ang mga function na I / O na ipinahayag sa estilo na ito na pang-lipas na, ngunit nakalimutan ito upang i-record ang isang dependency sa uri, na nagpapahintulot sa isang kasunod na DROP TYPE upang iwanan ang mga pinaghiwalay na function sa likod.
Sa psql, ayusin ang kabiguan kapag ang COPY FROM STDIN ay natapos na may keyboard signal EOF at pagkatapos ay isa pang COPY FROM STDIN ay sinubukan (Thomas Munro)
Mga Komento hindi natagpuan