PostgreSQL рдирдП рд╕рд╛рд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ

PVS-Studio, PostgreSQL
рд╕рд╛рд▓ рдЦрддреНрдо рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЦреБрд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдкрд░ рдиреЛрдЯреНрд╕ рдирд╣реАрдВ рд▓рд┐рдЦреЗ рд╣реИрдВред рдореБрдЭреЗ рдмрд╛рд░-рдмрд╛рд░ PostgreSQL рдбрд╛рдЯрд╛рдмреЗрд╕ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣реА рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рднрд╡реНрдп рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрд╛ред рддреЛ рдЗрд╕ рдмрд╛рд░ рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд▓реЗрдЦ рдирд┐рдХрд▓рд╛ред



PostgreSQL рдПрдХ рдирд┐рд╢реБрд▓реНрдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо (DBMS) рд╣реИред PostgreSQL SQL рднрд╛рд╖рд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ SQL: 2003 рдорд╛рдирдХ (ISO / IEC 9075) рдХреА рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╣реА рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

1. рдореЗрдордХреЛрдореНрдк () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЯрд╛рдЗрдкреЛ


Datum pg_stat_get_activity(PG_FUNCTION_ARGS) { .... if (memcmp(&(beentry->st_clientaddr), &zero_clientaddr, sizeof(zero_clientaddr) == 0)) .... } 

PVS-Studio рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдЪреЗрддрд╛рд╡рдиреА: V526 'рдореЗрдордХреИрдВрдк' рдлрд╝рдВрдХреНрд╢рди 0 рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдмрдлрд╝рд░реНрд╕ рд╕рдорд╛рди рд╣реИрдВред рдЧрд▓рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред pgstatfuncs.c 712 рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ

рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рднреА рдЪреЗрддрд╛рд╡рдиреА V575 рдЬрд╛рд░реА рдХреА рдЧрдИ рд╣реИред рд╡реИрд╕реЗ, рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдПрдХ рд╣реА рд▓рд╛рдЗрди рдкрд░ рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рд╣реА рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдПрдХ рдЕрд╡рд╕рд░ рд╣реИред рдмрд╣реБрдд рдмрд╛рд░, рдПрдХ рдЧрд▓рддреА "рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ" рдХреЛрдб рдХреЛ рд╕рдВрджрд┐рдЧреНрдз рдмрдирд╛рддреА рд╣реИред

рдпрджрд┐ рдЖрдк рдХреЛрдб рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдмреНрд░реИрдХреЗрдЯ рдЕрдкрдиреА рдЬрдЧрд╣ рдкрд░ рдирд╣реАрдВ рд╣реИред рдирддреАрдЬрддрди, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рддреАрд╕рд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "sizeof (zero_clientaddr) == 0" рд╣реИред

рдкрдбрд╝реЛрд╕реА рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдкрд╣рдЪрд╛рди рд╕рдВрдмрдВрдзреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐ рдХрдИ рдЧреБрдирд╛ рд╣реЛ рдЧрдИред

рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░:

2. рдЕрд╖реНрдЯрдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕рдВрдЦреНрдпрд╛


 void RestoreArchive(Archive *AHX) { .... AHX->minRemoteVersion = 070100; AHX->maxRemoteVersion = 999999; .... } 

PVS-Studio рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдЪреЗрддрд╛рд╡рдиреА: V536 рдпрд╣ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрдерд┐рд░ рдореВрд▓реНрдп рдХреЛ рдПрдХ рдЕрд╖реНрдЯрдХ рд░реВрдк рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рдПред рдЕрдХреНрдЯреВрдмрд░: 070100, рджрд┐рд╕рдВрдмрд░: 28736. pg_dump pg_backup_archiver.c 301

рдпрджрд┐ рдЖрдк рдкрд╛рд╕ рд╕реНрдерд┐рдд рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдСрдХреНрдЯрд▓ рдирдВрдмрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓рд┐рдЦреЗ рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рдИ рдереАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕реА рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ:
 fout->minRemoteVersion = 70000; 

рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╕реМрдВрджрд░реНрдп рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рд╢реВрдиреНрдп рдХреЗ рдХрд╛рд░рдг, "070100" рд╕рдВрдЦреНрдпрд╛ рдУрдХреНрдЯрд▓ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ рдФрд░ 28736 рд╣реИред

3. рдХреНрд▓рд╛рд╕рд┐рдХред рд╕реЙрдХреЗрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпрд╛рдБ


рд╡рд┐рдВрдбреЛрдЬ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░, рд╕реЙрдХреЗрдЯ рдкреНрд░рдХрд╛рд░ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИред рдХрдИ рд▓реЛрдЧ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдпрд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рддреНрд░реБрдЯрд┐ PostgreSQL рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
 typedef UINT_PTR SOCKET; typedef SOCKET pgsocket; static int ident_inet(hbaPort *port) { .... pgsocket sock_fd; .... sock_fd = socket(ident_serv->ai_family, ident_serv->ai_socktype, ident_serv->ai_protocol); if (sock_fd < 0) { .... } 

PVS-Studio рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдЪреЗрддрд╛рд╡рдиреА: V547 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'sock_fd <0' рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рдХрднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ <0

рдЬрд╛рдБрдЪ (sock_fd <0) рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд░ рд╢реВрдиреНрдп рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдХреЛрдб рдЬреЛ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╕реЙрдХреЗрдЯ рдЦреЛрд▓рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдХрднреА рднреА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдХрдИ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рд╕рдорд╛рди рд╣реИрдВ:

4. рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐


рдирд┐рдЬреА рдбреЗрдЯрд╛ рдпреБрдХреНрдд рдУрд╡рд░рд░рд╛рдЗрдЯрд┐рдВрдЧ рдореЗрдореЛрд░реА рд╕реЗ рдЬреБрдбрд╝реА рдХрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВред рдпрд╣ рддреНрд░реБрдЯрд┐, рд╢рд╛рдпрдж, рд╕реЙрдХреЗрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╣реЛрддреА рд╣реИред
 char * px_crypt_md5(const char *pw, const char *salt, char *passwd, unsigned dstlen) { .... unsigned char final[MD5_SIZE]; .... /* Don't leave anything around in vm they could use. */ memset(final, 0, sizeof final); .... } 

PVS-Studio рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдЪреЗрддрд╛рд╡рдиреА: V597 рд╕рдВрдХрд▓рдХ 'рдореЗрдорд╕реЗрдЯ' рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 'рдЕрдВрддрд┐рдо' рдмрдлрд░ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред RtlSecureZeroMemory () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред pgcrypto crypt-md5.c 157

рдЯрд┐рдкреНрдкрдгреА рд╕реНрдореГрддрд┐ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдЬреЛрд░ рджреЗрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдорд╕реЗрдЯ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдлреЗрдВрдХ рджреЗрдЧрд╛ред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдирд┐рдпрдо рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕реЗ рдмрд╣реБрдд рд╕реЗ рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдБ рдбреЗрдЯрд╛ рдорд┐рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛:

рдРрд╕реА рдкреНрд░рддреНрдпреЗрдХ рдЬрдЧрд╣ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рднреЗрджреНрдпрддрд╛ рд╣реИ! рд╕рдмрд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдорд┐рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдХ рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд▓реЗрдЦ: рдУрд╡рд░рд░рд╛рдЗрдЯрд┐рдВрдЧ рдореЗрдореЛрд░реА - рдХреНрдпреЛрдВ?

5. рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░


 static char * inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size) { .... m = ~0 << (8 - b); .... } 

PVS-Studio рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдЪреЗрддрд╛рд╡рдиреА: V610 рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ред рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрдЯрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ <<ред рдмрд╛рдпрд╛рдВ рд╕рдВрдЪрд╛рд▓рдХ '~ 0' рдЛрдгрд╛рддреНрдордХ рд╣реИред postgres inet_cidr_ntop.c 206

рдЛрдгрд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдкрдврд╝реЗрдВ: " рдмрд┐рдирд╛ рдХрд╛рдВрдЯреЗ рдХреЛ рдЬрд╛рдиреЗ, рдкрд╛рдиреА рдореЗрдВ рдордд рдЬрд╛рдУ - рднрд╛рдЧ рддреАрди ред"

рдЕрдиреНрдп рдЦрддрд░рдирд╛рдХ рдмрджрд▓рд╛рд╡:

6. рдЯрд╛рдЗрдкреЛ


 static void AddNewRelationTuple(....) { .... new_rel_reltup->relfrozenxid = InvalidTransactionId; new_rel_reltup->relfrozenxid = InvalidMultiXactId; .... } 

PVS-Studio рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдЪреЗрддрд╛рд╡рдиреА: V519 'new_rel_reltup-> relfrozenxid' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрди: 912, 913ред heap.c 913 рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ

рдПрдХ рдЪрд░ рдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рди рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЯрд╛рдЗрдкреЛ рд▓рдЧрддрд╛ рд╣реИред рд╢рд╛рдпрдж рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рдорд╛рди рдЪрд░ 'new_rel_reltup-> relminmxid' рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдирд┐рд╖реНрдХрд░реНрд╖


рдпрджрд┐ PostgreSQL рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдХреБрдВрдЬреА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдХреГрдкрдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╕рдорд░реНрдерди рдореЗрдВ рд╣рдореЗрдВ рд▓рд┐рдЦреЗрдВред

рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рдирдпрд╛ рд╕рд╛рд▓ рдореБрдмрд╛рд░рдХ рд╣реЛ!

Source: https://habr.com/ru/post/In207148/


All Articles