{"id":497825,"date":"2026-10-08T09:00:33","date_gmt":"2026-10-08T06:00:33","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=497825"},"modified":"2026-10-08T09:00:33","modified_gmt":"2026-10-08T06:00:33","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=497825","title":{"rendered":"\u0412\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 PostgreSQL 19"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u043d\u0435\u0434\u0435\u043b\u0435 \u044f <a href=\"https:\/\/habr.com\/ru\/articles\/1088264\/\" rel=\"noopener nofollow\">\u043f\u0435\u0440\u0435\u043d\u0435\u0441 \u0444\u043e\u0440\u043a Apache Cloudberry \u043d\u0430 PostgreSQL 19<\/a> \u0432 \u0432\u0438\u0434\u0435 \u043d\u0430\u0431\u043e\u0440\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u0433\u0434\u0435 \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043a\u0443. \u0412\u043f\u0440\u043e\u0447\u0435\u043c \u043a\u0430\u043a \u0438 Cloudberry \u043d\u0430 ClickBench \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0435 \u0434\u0432\u0438\u0436\u043a\u0438 \u043e\u0431\u0433\u043e\u043d\u044f\u044e\u0442 \u0435\u0433\u043e \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0418 \u0434\u0435\u043b\u043e \u0442\u0443\u0442 \u043d\u0435 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 MPP, \u0430 \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0435 PostgreSQL &#8212; \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043a\u043e\u0440\u0442\u0435\u0436\u0430\u043c\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0421\u0423\u0411\u0414. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u0440\u0442\u0435\u0436 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 fmgr, \u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043b\u0438\u0448\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0446\u0438\u043a\u043b \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0448\u0430\u0433 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f &#8212; \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u0432 PostgreSQL. \u0412 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u0434\u0435 Apache Cloudberry \u0435\u0433\u043e \u043d\u0435\u0442: \u043e\u0442 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0435\u0434\u044b &#8212; \u0444\u043b\u0430\u0433 <em>create_vectorization_plan<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043a\u0430\u043a false, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0437\u0435\u043b WindowHashAgg \u0431\u0435\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 PAX \u043f\u043e\u0434 <em>VEC_BUILD<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u043c\u0443 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u043d\u043e\u0432\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430.<\/p>\n<p>\u0422\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f pg_vexec &#8212; \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0434\u043b\u044f PostgreSQL 19:<\/p>\n<ul>\n<li>\n<p><em>vexec<\/em> &#8212; \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435;<\/p>\n<\/li>\n<li>\n<p><em>vexec_flight<\/em> &#8212; endpoint Arrow Flight SQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f, \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 Arrow \u0431\u0443\u0444\u0435\u0440\u0430\u0445, \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c ADBC \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a PostgreSQL \u043f\u043e \u0440\u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443;<\/p>\n<\/li>\n<li>\n<p><em>vexec_pgvector<\/em> \u0438 <em>vexec_postgis<\/em> &#8212; \u043f\u0430\u043a\u0435\u0442\u044b \u044f\u0434\u0435\u0440 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044f\u0434\u0440\u0430 PostgreSQL \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 ORCA \u0432 \u043e\u0434\u043d\u043e\u0443\u0437\u043b\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0435\u0437 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 PostgreSQL. \u041c\u043e\u0434\u0443\u043b\u044c pg_orca \u0438\u0437 \u043f\u043e\u0440\u0442\u0430 Cloudberry \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 pg_core \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043f\u043e\u0442\u0440\u043e\u0445\u043e\u0432 greenplum \u0438 \u043f\u0430\u0442\u0447\u0435\u0439 \u044f\u0434\u0440\u0430 \u0421\u0423\u0411\u0414, \u0430 vexec \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 ORCA \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0441 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0435\u043c \u0432 \u201c\u043e\u0434\u043d\u043e\u043c \u0444\u043b\u0430\u043a\u043e\u043d\u0435\u201d: \u0435\u0433\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432, \u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u0438 \u0443\u0437\u043b\u044b \u0432 \u043f\u043b\u0430\u043d\u0435. \u041f\u0430\u0442\u0447\u0438 \u044f\u0434\u0440\u0430 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438\u0437 Cloudberry. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Cloudberry \u043d\u0430 \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0435\u043d\u043e\u043c \u044f\u0434\u0440\u0435 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430, \u0442\u043e vexec \u043c\u043e\u0436\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0435 PAX \u0438 ao_column, \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0439 \u0438\u0437 \u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 Motion \u0442\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0440\u0430\u0437\u0443 \u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Arrow IPC.<\/p>\n<p>\u0418 \u043a \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043f\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u043c\u0443 pgwire \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443, \u0442\u0430\u043a \u0438 \u043f\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c\u0443 Flight SQL, \u0447\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0442\u0435 \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c ML \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 PostgreSQL. \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 polars \u0441\u043a\u0430\u0436\u0443\u0442 \u043c\u043d\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e!<\/p>\n<p>\u041a\u043e\u0434 \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d LLM Opus 5.5 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0441\u0441\u0438\u044f\u0445, \u043a\u0430\u0436\u0434\u0430\u044f \u0432 \u0441\u0432\u043e\u0435\u043c git worktree, \u0430 \u044f \u0441\u0442\u0430\u0432\u0438\u043b \u0437\u0430\u0434\u0430\u0447\u0438, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0420\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u043f\u043b\u0430\u043d\u043e\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f PG \u043d\u0430\u0447\u0430\u043b 2 \u043e\u043a\u0442\u044f\u0431\u0440\u044f, \u0430 \u043a\u043e\u0434 \u043d\u0430\u0447\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f 5 \u043e\u043a\u0442\u044f\u0431\u0440\u044f, \u0438 \u043a 7 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b \u0442\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 ClickBench \u0434\u043b\u044f \u0431\u0435\u0439\u0437\u043b\u0430\u0439\u043d\u0430 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Arrow \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0421\u0423\u0411\u0414 \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c Motion.<\/p>\n<h3>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b DataFusion<\/h3>\n<p>\u041d\u0430\u0447\u0430\u043b \u044f \u044d\u0442\u0443 \u0437\u0430\u0442\u0435\u044e \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u0437\u0430\u0434 \u0441 \u0438\u0434\u0435\u0438 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 PostgreSQL \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a Apache DataFusion. \u0414\u043e \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0435\u043b\u0430\u043b\u0438 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u0435\u043d\u044f \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b \u0438 \u0445\u043e\u0442\u0435\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043e \u044d\u0442\u043e\u0433\u043e. \u0412 \u043f\u043b\u0430\u043d\u0435 \u0434\u043b\u044f pg_arrow \u0431\u044b\u043b\u043e \u044f\u0434\u0440\u043e \u043d\u0430 Rust \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u043e\u0432\u0430\u043b\u043e \u0441 PostgreSQL \u0447\u0435\u0440\u0435\u0437 \u0435\u0433\u043e C ABI, \u0430 \u0432\u0441\u0435 \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f PostgreSQL \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u0432 \u0442\u043e\u043d\u043a\u043e\u0439 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0435 \u043d\u0430 C. DataFusion \u0436\u0438\u043b \u0431\u044b \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u0443\u043b\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u0432 Tokio. \u0415\u0433\u043e \u0431\u044d\u043a\u0435\u043d\u0434 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0431\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0449\u0438\u043a\u0443 CustomPath-\u044b \u2018ArrowScan\u2019 \u0447\u0435\u0440\u0435\u0437 path-\u0445\u0443\u043a\u0438, \u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043b \u0431\u044b \u0438\u0437 \u2018PlannerInfo\u2019 \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043b\u0430\u043d DataFusion \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b \u0441\u0435\u0440\u0432\u0438\u0441\u0443. \u0421\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 heap \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0421\u0423\u0411\u0414 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b Arrow \u0432 \u043e\u0431\u0449\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u0431\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0432 \u043b\u0435\u0439\u0430\u0443\u0442\u0435 PostgreSQL. Arrow \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0440\u0430\u0437\u0434\u0430\u0432\u0430\u043b FlightSQL \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c \u0432 Iceberg\/Parquet \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c S3 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.<\/p>\n<p>\u0427\u0435\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u044f \u043f\u0440\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u043d \u0441 LLM \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438, \u0442\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043e\u0432. \u0421\u0435\u043c\u0435\u043d\u0442\u0438\u043a\u0430 DataFusion &#8212; \u044d\u0442\u043e \u043d\u0435 PostgreSQL \u0441 \u0435\u0433\u043e collation, numeric scale, NaN, \u0447\u0430\u0441\u043e\u0432\u044b\u0435 \u043f\u043e\u044f\u0441\u0430 \u0438 \u0434\u0430\u0436\u0435 \u2018now()\u2019 \u043e\u0442\u043b\u0438\u0447\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f. JSONB \u0438 \u0433\u0435\u043e\u0442\u0438\u043f\u044b \u0441\u0442\u0430\u043b\u0438 \u0431\u044b \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0438 EWKB \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u043e\u0431\u0438\u0440\u0430\u044f\u0441\u044c \u0437\u0430\u043d\u043e\u0432\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043b\u043e\u0434\u0438\u043b \u0431\u044b \u043b\u0438\u0448\u043d\u0438\u0438 \u043a\u043e\u043f\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c postmaster \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 segfault \u0438\u0437 zstd \u0438\u043b\u0438 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0438\u0439 OOM killer  \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u0431\u044b \u0432\u0435\u0441\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0421\u0423\u0411\u0414. DataFusion 55.1 \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0434\u0438\u0441\u043a Hash join, datafusion-proto \u043c\u043e\u043b\u0447\u0430 \u0442\u0435\u0440\u044f\u043b \u0431\u044b \u043f\u043e\u043b\u044f \u043f\u043b\u0430\u043d\u0430, \u0430 \u043f\u043e\u043a\u0430 SubPlan\/InitPlan\/CTE\/\u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438\/eager aggregation \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u044b, \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u0431\u044b \u043d\u0430 \u043f\u043b\u0430\u043d\u0435 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 \u0438 \u0432 \u0447\u0435\u043c \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u043d\u0435 \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0412\u044b\u0438\u0433\u0440\u044b\u0448 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u044b\u043b \u043f\u043e\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043f\u043e\u043a\u0430 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0448\u044c \u044d\u0442\u0443 \u0441\u0432\u044f\u0437\u043a\u0443 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438. \u0410 \u0441\u0430\u043c\u043e\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u0432 \u0442\u0430\u043a\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 &#8212; \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0441\u043a\u0430\u043d\u044b, \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u044b &#8212; \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 \u0441 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439 \u0421\u0423\u0411\u0414 \u0438 \u0431\u0435\u0437 \u043c\u0435\u0436\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u0430\u043a pg_arrow \u0438 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043f\u043b\u0430\u043d\u043e\u043c \u0431\u0435\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043a\u043e\u0434\u0435, \u0430 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Cloudberry \u0432 \u0432\u0438\u0434\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f PostgreSQL 19, \u0442\u043e \u043e\u043d \u043c\u043d\u0435 \u0434\u0430\u043b \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c ORCA \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u044f\u0434\u0440\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, PAX \u0438 gp_ao \u0432 \u0432\u0438\u0434\u0435 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u043b\u0430\u043d \u043f\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041d\u043e \u043d\u0435 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 PG \u0430 \u0432 \u0432\u0438\u0434\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0421\u0423\u0411\u0414. \u041e\u0442 pg_arrow \u0432 \u043d\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0442\u0438\u043f\u043e\u0432 Arrow&lt;-&gt;PG, \u043b\u0435\u0439\u0430\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 PostgreSQL, \u043a\u043e\u0440\u043f\u0443\u0441 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f FlightSQL \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0411\u0414, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0442\u043e TPC-H Q1 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e COPY.<\/p>\n<p>\u041a\u0430\u043a \u0438 \u0432 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0435 \u043b\u0435\u0433\u0430\u0441\u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0445, \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u0433\u0440\u0435\u0441\u0442\u0438 \u0410\u0432\u0433\u0435\u0435\u0432\u044b \u043a\u043e\u043d\u044e\u0448\u043d\u0438 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 &#8212; \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0412\u0437\u044f\u043b ORCA \u0438 \u0441\u0442\u0430\u043b \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c PostgreSQL \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0434\u0435\u0438 \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 FlightSQL \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a pgwire.<\/p>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f PostgreSQL \u0438\u0434\u0435\u044f \u043d\u0435 \u043d\u043e\u0432\u0430\u044f. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b\u0430 \u0441\u0432\u043e\u044f \u0446\u0435\u043d\u0430. openGauss \u0432\u0441\u0442\u0440\u043e\u0438\u043b \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 82 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0442\u0440\u043e\u043a \u0432 \u0444\u043e\u0440\u043a PostgreSQL 9.2, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441 \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u043e\u043c \u0443\u0436\u0435 \u043d\u0435 \u0441\u043e\u043b\u044c\u0435\u0448\u044c. pg_duckdb \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0434\u0432\u0438\u0436\u043a\u0443 DuckDB \u0432 \u0431\u044d\u043a\u044d\u043d\u0434\u0435 \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0435 \u0443 \u043d\u0435\u0433\u043e \u0442\u0435 \u0436\u0435, \u0447\u0442\u043e \u0431\u044b\u043b\u0438 \u0443 \u043c\u043e\u0435\u0433\u043e \u043f\u043b\u0430\u043d\u0430 pg_arrow. \u041f\u0440\u043e\u0435\u043a\u0442\u044b openGauss, vectorize_engine, Hydra \u0438 VectorAgg \u0438\u0437 TimescaleDB \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u043d \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u0441\u043e\u0440\u0435\u0432\u043d\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0441\u0430\u043c\u043e\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435. \u0423 TimescaleDB \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u0430\u0432\u0430\u043b \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/github.com\/timescale\/timescaledb\/issues\/9902\" rel=\"noopener nofollow\">Wrong result in vector agg &amp; columnar index scan<\/a>.<\/p>\n<p>\u0410\u0433\u0435\u043d\u0442\u0430\u043c \u044f \u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e\u0447\u0442\u0438 \u0442\u0435 \u0436\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u0447\u0442\u043e \u0438 \u043f\u0440\u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 Apache Cloudberry: \u201c\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0445\u0443\u043a\u0438 PostgreSQL, \u0430 \u0431\u0435\u0437 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0435\u0431\u044f \u0432\u0435\u0441\u0442\u0438 \u043a\u0430\u043a \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0439\u201d. \u041f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0442 \u043d\u0438\u0445 \u0448\u0435\u0441\u0442\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043f\u043e \u043a\u043e\u0434\u0443 \u043a\u0430\u0436\u0434\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u043e\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0438 \u043d\u043e\u0432\u044b\u0439 \u0445\u0443\u043a \u0432 \u044f\u0434\u0440\u0435 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u043d\u0435 \u043e\u0434\u043d\u043e\u0439:<\/p>\n<ul>\n<li>\n<p>\u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0430: \u0432 \u0446\u0435\u043b\u043e\u043c \u043c\u043d\u0435 \u043f\u043e\u0432\u0435\u0437\u043b\u043e! \u0412\u0435\u043d\u0434\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438 \u0434\u043b\u044f PostgreSQL, \u0432\u0438\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u0447\u043a\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\/\u0445\u0443\u043a\u0438 \u0432 \u0430\u043f\u0441\u0442\u0440\u0438\u043c \u044f\u0434\u0440\u0430 PostgreSQL, \u043a\u0440\u043e\u043c\u0435 \u0447\u0442\u0435\u043d\u0438\u044f\/\u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432 TableAM. \u0412 \u044f\u0434\u0440\u0435 \u0421\u0423\u0411\u0414 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0443\u0437\u043b\u044b \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443 \u0438 \u0441\u043e\u0440\u0435\u0432\u043d\u0443\u044e\u0442\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u043a\u043e\u0440\u0442\u0435\u0436\u0430\u043c \u043f\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438. \u0413\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u043d \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0434\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u043e\u0431\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430: \u043e\u0434\u0438\u043d \u043e\u0440\u0430\u043a\u0443\u043b, \u043e\u0434\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u0445 PostgreSQL, \u043e\u0434\u0438\u043d \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0443\u0437\u043b\u043e\u0432 \u0432 \u043f\u043b\u0430\u043d\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 PostgreSQL \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0430\u044f \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e SQLSTATE: \u043d\u0435\u0432\u044b\u0447\u0435\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0442\u0432\u0438 CASE, collation, NaN, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f float, \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 kernel \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043d\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u043b\u043d\u043e\u0442\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f fallback \u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 PG;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 Cloudberry (\u043a\u0440\u043e\u043c\u0435 \u2018pg19\/\u2019) \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0438 \u043a\u043e\u0434 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u043d\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0431\u044d\u043a\u0435\u043d\u0434 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u043c \u043d\u0430 C: palloc \u0432 \u043f\u0440\u0438\u0434\u0435\u043b\u0430\u0445 \u2018work_mem\u2019, \u0441\u043f\u0438\u043b\u043b \u0432 BufFile, \u043e\u0448\u0438\u0431\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u2018ereport\u2019.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 Cloudberry. 239 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432 PostgreSQL \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445, \u043a\u043e\u0433\u0434\u0430 vexec \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u2018off\u2019. \u0422\u0430\u043a\u0436\u0435 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 runner \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0441 \u2018off\u2019 \u043e\u0442\u0432\u0435\u0442\u044b \u0441\u0435\u0441\u0441\u0438\u0439 \u2018force\u2019 postgresql, \u2018force\u2019 arrow. \u0418 \u0432\u0441\u0435 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f, \u0432\u0440\u043e\u0434\u0435 \u043f\u043b\u0430\u043d\u043e\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u044e\u0442 \u0441\u0430\u043c\u0438 \u0442\u0435\u0441\u0442\u044b, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u044b \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0433\u043e\u043d \u043d\u0430 \u0442\u0435\u0441\u0442\u0430\u0445 \u0438\u0437 Cloudberry \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0430\u0445 \u2018force\u2019 \u0438 \u2018off\u2019, \u0430 121 \u0437\u0430\u043f\u0440\u043e\u0441 TPC-H \u0438 TPC-DS \u0441\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441 \u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438 DuckDB \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043f\u043b\u0430\u043d \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c \u0443\u0437\u043b\u043e\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442, \u0433\u0434\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430, \u0442\u043e\u0442 \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u0447\u0438\u0441\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 <code>ExtensibleNodeMethods \"VecScan\" was not registered<\/code><\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u0447\u0435\u043c vexec \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u043e Cloudberry \u0438 PostgreSQL.<\/h3>\n<p>PostgreSQL \u0438 Cloudberry \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u043a\u043e\u0440\u0442\u0435\u0436 \u0437\u0430 \u043a\u043e\u0440\u0442\u0435\u0436\u043e\u043c, vexec \u0436\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 1024 \u0441\u0442\u0440\u043e\u043a, \u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u0421\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0435\u0448\u0438 L1\/L2 CPU, \u043f\u043e\u043a\u0430 \u0438\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u044e\u0442, \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u044e\u0442 \u0438 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u044e\u0442. \u041d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u043d\u0435 \u0441\u0430\u043c\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u0442\u043e, \u0433\u0434\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u044d\u0442\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u044d\u0442\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u043f\u043e\u043a\u0438\u0434\u0430\u044e\u0442 \u0435\u0435.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">PostgreSQL 19<\/p>\n<\/th>\n<th>\n<p align=\"left\">Cloudberry \u0431\u0435\u0437 vexec<\/p>\n<\/th>\n<th>\n<p align=\"left\">pg_vexec \u043d\u0430 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c PostgreSQL 19<\/p>\n<\/th>\n<th>\n<p align=\"left\">pg_vexec \u0432 \u043f\u043e\u0440\u0442\u0435 Cloudberry<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0442\u0440\u043e\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0442\u0440\u043e\u043a\u0430: \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0431\u0430\u0442\u0447 \u0434\u043e 1024 \u0441\u0442\u0440\u043e\u043a \u043f\u043e \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c; \u044f\u0434\u0440\u0430 \u043f\u043e OID \u0444\u0443\u043d\u043a\u0446\u0438\u0438, fallback \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0437\u043b\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u043e \u0436\u0435 \u043d\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440\u0435 \u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0443\u0434\u044f \u043f\u043e \u0442\u0435\u0441\u0442\u0430\u043c PAX, \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u043d \u0443\u0437\u0435\u043b \u0432 \u0443\u0437\u0435\u043b, \u0441\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0433\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0431\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430, \u043f\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438: path-\u0445\u0443\u043a\u0438 PostgreSQL \u0438 ORCA<\/p>\n<\/td>\n<td>\n<p align=\"left\">ORCA \u0441\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432 \u0434\u043b\u044f MPP-\u043f\u043b\u0430\u043d\u043e\u0432, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a PostgreSQL \u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0445<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0427\u0442\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446<\/p>\n<\/td>\n<td>\n<p align=\"left\">heap \u0447\u0435\u0440\u0435\u0437 \u0441\u043b\u043e\u0442\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">AOCO \u0438 PAX \u043e\u0442\u0434\u0430\u044e\u0442 \u0441\u043b\u043e\u0442\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">heap \u043f\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e, \u0441 \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 MVCC; \u0434\u0440\u0443\u0433\u0438\u0435 AM \u0447\u0435\u0440\u0435\u0437 \u0441\u043b\u043e\u0442\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">PAX \u0438 ao_column \u043e\u0442\u0434\u0430\u044e\u0442 \u0431\u0430\u0442\u0447\u0438; \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u044b \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 PAX<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0441\u0442\u0430\u0432\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">ModifyTable \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e; <code>multi_insert<\/code> \u0442\u043e\u043b\u044c\u043a\u043e \u0443 COPY FROM<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u043e \u0436\u0435; PAX \u0438 gp_ao \u0441\u0430\u043c\u0438 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c<\/p>\n<\/td>\n<td>\n<p align=\"left\">VecInsert, \u0432 heap \u043f\u043e 1000 \u0441\u0442\u0440\u043e\u043a \u0447\u0435\u0440\u0435\u0437 <code>table_multi_insert<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">VecInsert \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0432 PAX \u0438 ao_column \u0431\u0435\u0437 \u0441\u0442\u0440\u043e\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">Gather: MinimalTuple \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">Motion: MinimalTuple \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 fmgr-\u0445\u0435\u0448 \u043a\u043b\u044e\u0447\u0430 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u0430\u043a \u0432 PostgreSQL<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u0430\u0434\u0440\u044b Arrow IPC, \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 cdbhash, \u043e\u0431\u0449\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u043b\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Arrow \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442: ADBC \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 Arrow \u0438\u0437 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e COPY<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">Flight SQL: \u0432\u044b\u0434\u0430\u0447\u0430 \u0438\u0437 \u0431\u0430\u0442\u0447\u0435\u0439, \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 VecInsert<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u043e \u0436\u0435 \u043d\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0424\u0443\u043d\u043a\u0446\u0438\u0438 PostGIS \u0438 pgvector<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0431\u0430\u0442\u0447 \u0441\u0442\u0440\u043e\u043a \u0437\u0430 \u0432\u044b\u0437\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 fmgr \u043f\u043e \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f\u043c \u043f\u0430\u043a\u0435\u0442\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u043e \u0436\u0435 \u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0445<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0444\u043e\u0440\u043a; \u0432 \u043f\u043e\u0440\u0442\u0435 24 \u043f\u0430\u0442\u0447\u0430-\u0445\u0443\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u044b \u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u043e\u0440\u0442\u0443<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0442\u043e\u0433\u043e, \u0438\u0437 \u043a\u0430\u043a\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432\u0441\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043e.<\/p>\n<h3>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b<\/h3>\n<p>vexec &#8212; \u043c\u043e\u0434\u0443\u043b\u044c \u0438\u0437 \u2018shared_preload_libraries\u2019, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 PGXS \u0434\u043b\u044f \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e PostgreSQL 19, \u0438 \u0441 \u043f\u043e\u0440\u0442\u043e\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Cloudberry. \u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a (\u2018plan\/\u2019) \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u043a\u0430\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u0442\u0430\u043d\u0443\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c\u0438 \u0443\u0437\u043b\u0430\u043c\u0438. \u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c &#8212; \u044d\u0442\u043e CustomScan-\u0443\u0437\u043b\u044b (\u2018exec\/\u2019) \u043f\u043e\u0432\u0435\u0440\u0445 \u0441\u043b\u043e\u044f \u0431\u0430\u0442\u0447\u0435\u0439 (\u2018batch\/\u2019) \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (\u2018expr\/\u2019). \u0420\u044f\u0434\u043e\u043c \u0436\u0438\u0432\u0443\u0442 \u043a\u043e\u0434\u0435\u043a ArrowIPC (\u2018ipc\/\u2019), egress API \u0434\u043b\u044f FlightSQL (\u2018egress\/\u2019) \u0438 \u043a\u0430\u0434\u0440\u044b \u0434\u043b\u044f Motion (\u2018motion\/\u2019).<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/d8\/e9\/e1\/d8e9e1e8663e6bdadf1612df19c587cf.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/d8\/e9\/e1\/d8e9e1e8663e6bdadf1612df19c587cf.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/d8\/e9\/e1\/d8e9e1e8663e6bdadf1612df19c587cf.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0438 vexec \u0438\u0434\u0443\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 rendezvous \u0438\u0437 PostgreSQL \u0441 \u043c\u0430\u0436\u043e\u0440\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0432 \u0438\u043c\u0435\u043d\u0438, \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0442 API gp_core. \u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u0430\u0442\u0447\u0435\u0439 \u0432 \u2018vexec\/source_v1\u2019 \u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u2018vexec\/sink_v1\u2019. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 vexec_flight \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u2019 vexec\/egress_v1\u2019, \u043f\u0430\u043a\u0435\u0442\u044b \u044f\u0434\u0435\u0440 \u2018vexec\/kernels_v1\u2019, \u0430 \u0441\u0430\u043c vexec \u043d\u0430\u0445\u043e\u0434\u0438\u0442 ORCA \u0447\u0435\u0440\u0435\u0437 \u2018Cloudberry\/gp_orca_vec_v1\u2019. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u2018shared_preload_libraries\u2019 \u043d\u0435 \u0432\u0430\u0436\u0435\u043d. \u0411\u0435\u0437 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d.<\/p>\n<h3>\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432\u043d\u0443\u0442\u0440\u0438 \u0421\u0423\u0411\u0414, \u0430 \u043d\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0435\u0439<\/h3>\n<p>\u0412 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435 PostgreSQL vexec \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0443\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0435\u0433\u043e \u0436\u0435 \u0445\u0443\u043a\u0438: \u2018VecScan\u2019 &#8212; \u0432 \u2018set_rel_pathlist_hook\u2019, \u043a\u0430\u043a \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0439 Citus \u0441\u0432\u043e\u0439 \u0441\u043a\u0430\u043d, \u2018VecHashJoin\u2019 &#8212; \u0432 \u2018set_join_pathlist_hook\u2019, \u2018VecAgg\u2019 \u0438 \u2018VecSort\u2019 &#8212; \u0432 \u2018create_upper_paths_hook\u2019. \u0414\u0430\u043b\u044c\u0448\u0435 \u043e\u043d\u0438 \u0441\u043e\u0440\u0435\u0432\u043d\u0443\u044e\u0442\u0441\u044f \u0441\u043e \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u043c\u0438 \u0443\u0437\u043b\u0430\u043c\u0438 \u043f\u043b\u0430\u043d\u043e\u0432 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u2018add_path\u2019. \u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043f\u0443\u0442\u0438 \u0434\u043b\u044f \u043a\u043e\u0440\u0442\u0435\u0436\u0430 \u0441 \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u044f\u0434\u0435\u0440, \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0439\u0442\u044b \u043d\u0443\u0436\u043d\u044b\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a, \u0430 \u0432\u044b\u0431\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0438 \u0431\u0430\u0442\u0447\u0430\u043c\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438. \u041c\u0430\u0441\u043a\u0438 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u2018enable_seqscan=off\u2019 \u0438 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 pg_hint_plan \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0438 \u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u043f\u0443\u0442\u0438. \u0414\u043b\u044f \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0439 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0438 PostgreSQL \u0445\u0443\u043a \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0430\u0440\u0443 \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0438 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e VecAgg \u0432\u043e\u043a\u0440\u0443\u0433 Gather vexec \u0441\u0442\u0440\u043e\u0438\u0442 \u0441\u0430\u043c:<\/p>\n<pre><code class=\"sql\">SET vexec.mode = force;EXPLAIN (COSTS OFF)SELECT hw.k, count(*), sum(hp.b) FROM hp JOIN hw ON hp.id = hw.id GROUP BY hw.k;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<pre><code class=\"bash\"> Vec Finalize HashAggregate   Group Key: k   -&gt;  Gather         Workers Planned: 3         -&gt;  Vec Partial HashAggregate               Group Key: k               -&gt;  Vec Hash Join                     Hash Cond: (hp.id = hw.id)                     -&gt;  Parallel Vec Seq Scan on hp                     -&gt;  Vec Seq Scan on hw<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u043e \u043f\u043b\u0430\u043d\u043e\u0432 ORCA path-\u0445\u0443\u043a\u0438 \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u044e\u0442, \u043e\u043d\u0430 \u0441\u0442\u0440\u043e\u0438\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u2018PlannerInfo\u2019 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u043d. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0440\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 API \u0438\u0437 gp_orca, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 vexec \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0432\u043e\u0439 \u043e\u0440\u0430\u043a\u0443\u043b, \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u043d\u0443\u044e \u043e\u0446\u0435\u043d\u043a\u0443 \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0443\u0437\u043b\u043e\u0432 \u043f\u043b\u0430\u043d\u0430:<\/p>\n<ul>\n<li>\n<p><code>CCostModelVec<\/code>, \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441 <code>CCostModelGPDB<\/code>, \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0443\u043b\u044b ORCA \u0434\u0432\u0430\u0436\u0434\u044b, \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u0438 \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c\u0438 \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044f\u043c\u0438, \u0438 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442 \u0438\u0445. ORCA \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439, \u0441\u0442\u0430\u0434\u0438\u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0438 \u0438 Motion \u0443\u0436\u0435 \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0432 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 vexec \u043a\u0430\u0436\u0434\u044b\u0439 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0443\u0437\u0435\u043b \u0438 \u0442\u043e\u0442 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0435\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c, \u0435\u0441\u043b\u0438 \u043e\u0440\u0430\u043a\u0443\u043b \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d, \u0435\u0449\u0435 \u0434\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 Motion, \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u043b\u0430\u0439\u0441\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438 Cloudberry \u0432\u0438\u0434\u044f\u0442 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e;<\/p>\n<\/li>\n<li>\n<p>\u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043e\u043a\u043e\u043d\u043d\u043e\u0435 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 ORCA, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432 PostgreSQL 19 \u043d\u0435 \u043d\u0430 \u0447\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u2018VecWindowHashAgg\u2019 \u043f\u043e\u0434 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u2018WindowAgg\u2019.<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0435\u0436\u0438\u043c \u2018vexec.mode = explain\u2019 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b, \u043d\u043e \u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0445, \u0430 \u2018EXPLAIN (VEXEC)\u2019 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u0447\u0442\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u0432\u0437\u044f\u0442\u043e:<\/p>\n<pre><code class=\"sql\">SET vexec.mode = explain;EXPLAIN (VEXEC, COSTS OFF)SELECT b, count(*), sum(d) FROM vt WHERE a &gt; 10 GROUP BY b ORDER BY b;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<pre><code class=\"bash\"> Sort   Sort Key: b   -&gt;  HashAggregate         Group Key: b         -&gt;  Seq Scan on vt               Filter: (a &gt; 10) Vexec: mode explain, format postgres   VecScan on vt: not chosen (explain mode)     source: heap's pages; quals: 1 kernel step, 0 fallback steps; target: 0 kernel steps, 0 fallback steps   VecAgg on GROUP BY: not chosen (explain mode)     hashed, 1 grouping column, 2 aggregates, 2 with vector transitions (count(*), numeric sum)   VecSort on ORDER BY: not chosen (explain mode)     1 sort key<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0440\u043e\u0436\u0435: EXPLAIN \u0432\u0441\u0435\u0445 121 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 TPC \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0445 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043f\u043e\u0434 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c ORCA \u0437\u0430\u043d\u044f\u043b 9715\u043c\u0441 \u0431\u0435\u0437 vexec \u0438 9696\u043c\u0441 \u0441 \u043d\u0438\u043c, \u0430 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u043f\u043e\u0434 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c PostgreSQL &#8212; 161 \u0438 166\u043c\u0441.<\/p>\n<p>\u0412 \u0444\u0430\u0437\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 V6 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b ORCA \u043d\u0430 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c PostgreSQL 19. \u0421\u0431\u043e\u0440\u043a\u0430 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u2018-Dorca_single_node\u2019 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 gp_core \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 400\u0441\u0442\u0440\u043e\u043a: \u043e\u043d\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432 \u0435\u0433\u043e API \u0438 \u043d\u0430 14 \u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 ORCA \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0437\u043b\u0435, \u0442\u0430\u043a, \u043a\u0430\u043a \u043e\u0442\u0432\u0435\u0442\u0438\u043b \u0431\u044b gp_orca \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0431\u0435\u0437 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432. \u0421 ORCA \u043d\u0430 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c <code>REL_19_STABLE<\/code> \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u044f postgresql \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0432\u0441\u0435 239 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432, 27 \u0438\u0437 \u043d\u0438\u0445 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f,\u0430 121 \u0437\u0430\u043f\u0440\u043e\u0441 TPC \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 vexec force \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a DuckDB \u044d\u0442\u0430\u043b\u043e\u043d. \u0418\u0437 652 hash join \u0432 \u0438\u0445 \u043f\u043b\u0430\u043d\u0430\u0445 \u0441\u0442\u0430\u043b\u0438 \u0443\u0437\u043b\u044b \u2018VecHashJoin\u2019 \u0432 651, \u043a\u0440\u043e\u043c\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0441 full join \u043a\u043e\u0442\u043e\u0440\u044b\u0439 VecHashJoin \u043f\u043e\u043a\u0430 \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c.<\/p>\n<h3>\u0414\u0432\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438<\/h3>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442 \u0431\u0430\u0442\u0447\u0430 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439, \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043c\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435. \u2018vexec.batch_format = postgres\u2019 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0445\u0440\u0430\u043d\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 PostgreSQL, \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u2018arrow\u2019 &#8212; \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0442\u0438\u043f\u0430\u0445 \u0434\u043b\u044f Arrow:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0422\u0438\u043f<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0424\u043e\u0440\u043c\u0430\u0442 postgres<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0424\u043e\u0440\u043c\u0430\u0442 arrow<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">bool<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0431\u0430\u0439\u0442 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0431\u0438\u0442 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">date, timestamp<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u044d\u043f\u043e\u0445\u0430 PostgreSQL, 2000-01-01<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u044d\u043f\u043e\u0445\u0430 Unix<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">interval<\/p>\n<\/td>\n<td>\n<p align=\"left\">16 \u0431\u0430\u0439\u0442 PostgreSQL<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>month_day_nano<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">text, bytea<\/p>\n<\/td>\n<td>\n<p align=\"left\">Datum \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c varlena<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>utf8_view<\/code> \u0438\u043b\u0438 <code>binary_view<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">int, float, uuid, numeric \u0441 typmod \u0434\u043e 38 \u0446\u0438\u0444\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0432 \u043e\u0431\u043e\u0438\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445: \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435 \u0442\u0438\u043f\u0430, numeric \u043a\u0430\u043a \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 int64 \u0438\u043b\u0438 int128<\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0424\u043e\u0440\u043c\u0430\u0442\u0443 postgres \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0430\u043c\u043e\u0433\u043e PostgreSQL: fmgr, \u0441\u043b\u043e\u0442\u044b, tuplesort, \u0445\u0435\u0448-\u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0442\u0438\u043f\u0430 heap, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u0435 \u043f\u043e \u0442\u0438\u043f\u0430\u043c ao_column \u0438 porc. \u0424\u043e\u0440\u043c\u0430\u0442\u0443 arrow \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u044f\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0433\u0434\u0435 \u0440\u043e\u0434\u043d\u043e\u0439 Arrow: \u044d\u043a\u0441\u043f\u043e\u0440\u0442, FlightSQL, porc_vec \u0438 \u043a\u0430\u0434\u0440\u044b ArrowIPC Motion \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 (\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435 \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435\u0442 \u043c\u0435\u0436\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043d\u043e\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u0430 \u043f\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438). \u041a\u043e\u043d\u0432\u0435\u0440\u0441\u0438\u0438 \u0442\u0438\u043f\u043e\u0432 \u0441\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u0446\u0435\u043d\u0443 \u0434\u043b\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430. \u0411\u0438\u0442\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430 validity \u043e\u0431\u0449\u0430\u044f \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0438 \u0443 \u043d\u0435\u0435 \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u0438\u0442 \u0447\u0442\u043e \u0438 \u0443 \u043a\u0430\u0440\u0442\u044b NULL \u0432 \u043a\u043e\u0440\u0442\u0435\u0436\u0430\u0445 heap. \u042f\u0434\u0440\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043e\u043a, \u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u0435\u043d\u044f\u044e\u0442 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a, bool, \u0434\u0430\u0442 \u0438 numeric. \u041d\u0430 ClickBench \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0440\u0430\u0437\u043e\u0448\u043b\u0438\u0441\u044c \u043d\u0430 2.6% \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043f\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 numeric \u043f\u043e\u0434\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u0443 openGauss, \u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c numeric PostgreSQL \u0438 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0432 TPC-H Q1 \u043f\u043e\u0447\u0442\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0435\u0433\u043e: \u0432 \u043b\u0435\u0439\u0430\u0443\u0442\u0435 varlena Q1 \u0443\u0441\u043a\u043e\u0440\u044f\u043b\u0441\u044f \u043d\u0430 2-9% \u0430 \u0441 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c numeric \u0432 1.8-2.8 \u0440\u0430\u0437\u0430. \u0423 \u044d\u043f\u043e\u0445\u0438 \u0435\u0441\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u0430: \u2018294247-01-10 04:00:54.775807\u2019 \u043f\u043e\u0441\u043b\u0435 \u0441\u0434\u0432\u0438\u0433\u0430 \u043a \u044d\u043f\u043e\u0445\u0435 Unix \u0434\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435  int64, \u043a\u043e\u0442\u043e\u0440\u044b\u043c PostgreSQL \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 +infinity. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0430\u0442\u0447 \u0441 \u0442\u0430\u043a\u0438\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442 \u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u0432 \u044d\u043f\u043e\u0445\u0435 PostgreSQL \u0438 \u044d\u0442\u043e \u043d\u044e\u0430\u043d\u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h3>\u041a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430<\/h3>\n<p>\u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u201c\u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b \u043d\u043e\u0432\u044b\u0435 \u0445\u0443\u043a\u0438 \u0432 TableAM\u201d. \u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 rendezvous \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2018begin\u2019, \u2018next\u2019, \u2018rescan\u2019, \u2018end\u2019 \u0438 \u2018estimate\u2019, \u0430 \u0441\u043a\u0430\u043d \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c  <code>table_beginscan<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u0441\u043d\u0438\u043c\u043e\u043a, \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438, MVCC \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0437\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0423\u0434\u0430\u043b\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043a\u0430\u0440\u0442\u0443 \u043e\u0442\u0431\u043e\u0440\u0430 \u0430 \u043d\u0435 \u0432 validity, \u0438\u043d\u0430\u0447\u0435 \u2018count(*)\u2019 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b \u0431\u044b \u0435\u0435.<\/p>\n<ul>\n<li>\n<p>heap vexec \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0430\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0437\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u2018heap_prepare_pagescan\u2019, \u043a\u0430\u043a \u0438 TABLESAMPLE: \u0447\u0438\u0441\u0442\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430, \u043f\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u2018HeapTupleSatisfiesMVCCBatch\u2019 \u0438\u0437 PostgreSQL 19 \u0438 \u0440\u0430\u0437\u0431\u043e\u0440 \u043d\u0443\u0436\u043d\u044b\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0441\u0440\u0430\u0437\u0443 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0431\u0430\u0442\u0447\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c vexec \u0441\u0432\u043e\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0430 \u0432 Cloudberry \u0430\u0432\u0442\u043e\u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043d\u0438\u043c\u043a\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>ao_column \u043e\u0442\u0434\u0430\u0435\u0442 \u0431\u043b\u043e\u043a\u0438 \u0434\u043e 16384 \u0441\u0442\u0440\u043e\u043a: \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u044b \u0431\u0435\u0437 NULL \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u0440\u0435\u0437\u043e\u043c \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, varlena &#8212; Datum \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e.<\/p>\n<\/li>\n<li>\n<p>PAX \u043e\u0442\u0434\u0430\u0435\u0442 \u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043e 131072 \u0441\u0442\u0440\u043e\u043a, \u043d\u0430\u0440\u0435\u0437\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0431\u0430\u0442\u0447\u0438 \u0431\u0435\u0437 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 porc_vec \u0445\u0440\u0430\u043d\u0438\u0442 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0443 Arrow. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u2018aggregate()\u2019: \u2018count\u2019, \u2018min\u2019, \u2018max\u2019, \u2018sum\u2019 \u0438 \u2018avg\u2019 \u0431\u0435\u0437 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0433\u0440\u0443\u043f\u043f, \u0438 \u2018count(*)\u2019 \u043f\u043e 10\u043c\u043b\u043d \u0441\u0442\u0440\u043e\u043a \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 0.33\u043c\u0441 \u0432\u043c\u0435\u0441\u0442\u043e 265\u043c\u0441. \u0410 \u0447\u0435\u0440\u0435\u0437 \u2018set_keys()\u2019 \u2018VecSort\u2019 c LIMIT \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0441\u043a\u0430\u043d\u0443 \u0440\u0430\u043c\u043a\u0443 \u201c\u0431\u0435\u0433\u0443\u0449\u0435\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u044b\u201d \u0438 PAX \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0433\u0440\u0443\u043f\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u043e\u0442\u0432\u0435\u0442 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0443\u0442. \u041c\u043d\u0435 \u044d\u0442\u043e \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u043e \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 PG-Strom \u0447\u0438\u0442\u0430\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 Arrow, \u0442\u043e\u0447\u043d\u0435\u0435 \u0438\u0445 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435, \u0441\u044e\u0434\u0430 \u0431\u044b \u0435\u0449\u0435 bloom \u0444\u0438\u043b\u044c\u0442\u0440 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c!<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u043e. \u2018VecInsert\u2019 \u0432\u0441\u0442\u0430\u0435\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u043e \u0446\u0438\u043a\u043b\u0430 ModifyTable \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0431\u0430\u0442\u0447\u0430 \u0432 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430, \u0430 \u0435\u0441\u043b\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u2018table_multi_insert\u2019 \u043f\u043e 1000 \u0441\u0442\u0440\u043e\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 COPY. NOT NULL \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u043e validity, \u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u043d\u0435 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0441\u0442\u0440\u043e\u043a\u0430 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u2018ExecConstraints()\u2019 \u0447\u0442\u043e\u0431\u044b \u043e\u0448\u0438\u0431\u043a\u0430 \u0431\u044b\u043b\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u0430 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0443. \u0421\u0435\u043a\u0446\u0438\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 PostgreSQL, \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u0447\u0435\u0440\u0435\u0437 \u2018ExecInsertIndexTuples()\u2019 \u0438 \u044f\u0434\u0440\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c. COPY FROM \u0442\u043e\u0436\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0435\u0437 ModifyTable. \u0412 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u043e\u043c \u0434\u0435\u0439\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u0435 ModifyTable \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e gp_core \u0440\u0430\u0441\u0441\u044b\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e \u043d\u0435\u043c\u0443, \u0430 VecInsert \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 \u043d\u0438\u043c \u0443\u0436\u0435 \u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0445. \u0422\u0440\u0438\u0433\u0433\u0435\u0440\u044b, \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0438, \u2018ON CONFLICT\u2019, \u2018RETURNING\u2019 \u0438 \u2018WITH CHECK\u2019 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 ModifyTable \u0430 EXPLAIN \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u0447\u0438\u043d\u0443.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/f6\/f1\/c1\/f6f1c18d0984b59ebc645cf29d3acc83.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/f6\/f1\/c1\/f6f1c18d0984b59ebc645cf29d3acc83.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/f6\/f1\/c1\/f6f1c18d0984b59ebc645cf29d3acc83.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u0441\u0435, \u0447\u0442\u043e vexec \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u043e\u0440\u0442\u0430 Cloudberry &#8212; \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u2018pg19\/\u2019: API gp_orca \u0438 \u2018CCostModelVec\u2019, \u0432\u0445\u043e\u0434\u044b \u2018GpCoreApi\u2019 1.15, \u0438\u043c\u0435\u043d\u0430 \u2018vexec.*\u2019 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440 \u0440\u0430\u0441\u0441\u044b\u043b\u0430\u0435\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u043c, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 PAX \u0438 gp_ao, \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435 shm. \u0427\u0435\u0442\u044b\u0440\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u044f\u0434\u0440\u0430 ORCA \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438\u0437 \u0434\u0435\u0440\u0435\u0432\u0430 Cloudberry \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041f\u0430\u0442\u0447\u0438 \u044f\u0434\u0440\u0430 \u043f\u043e\u0440\u0442\u0430 vexec \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442: \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f PAX \u0438 gp_ao, \u0438 \u0441 \u0445\u0443\u043a\u043e\u043c \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0431\u0430\u0442\u0447\u0438 \u0432 \u0433\u0440\u0443\u043f\u043f\u0430\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u0430\u043a \u043f\u0430\u043c\u044f\u0442\u044c \u043b\u044e\u0431\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<h3>Arrow IPC \u0432 Motion<\/h3>\n<p>\u041c\u0435\u0436\u0434\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438 Cloudberry \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043a\u043e\u0440\u0442\u0435\u0436\u0438. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 Motion \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 MinimalTuple \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0445\u0435\u0448 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u043b\u044e\u0447\u0430 \u0447\u0435\u0440\u0435\u0437 fmgr, \u0430 \u043d\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0434\u0443\u0442 \u0447\u0435\u0440\u0435\u0437 libpg \u0441 send \u0438 receive \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u043f\u043e \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0432 Motion \u0441\u0442\u043e\u044f\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0443\u0437\u043b\u044b, \u0431\u0430\u0442\u0447 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e.<\/p>\n<p>\u042f \u0441\u043f\u0440\u043e\u0441\u0438\u043b, \u043d\u0435\u043b\u044c\u0437\u044f \u043b\u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043b\u044e\u0447\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 Arrow \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0430\u0442\u0447\u0438 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 \u043f\u043e Arrow Flight SQL. \u041f\u0435\u0440\u0432\u043e\u0435 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b, \u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0430 \u0438 \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043a\u0443\u0449\u0438\u043c Motion \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u043c \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u0431\u044b\u043b\u043e. Interconnect \u043f\u043e\u0440\u0442\u0430 Cloudberry \u0443\u0436\u0435 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u043e\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u043c\u0435\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043c\u0435\u043d\u0438\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0430 Arrow IPC, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u043e\u0434 \u0441\u0430\u043c\u043e\u0433\u043e Motion \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0442\u0435\u043c \u0436\u0435. \u041f\u043b\u044e\u0441 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 Motion \u043f\u043e \u043a\u043e\u043b\u044c\u0446\u0435\u0432\u043e\u043c\u0443 \u0431\u0443\u0444\u0435\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u0432\u043c\u0435\u0441\u0442\u043e tcp.<\/p>\n<ul>\n<li>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 vexec Motion, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c \u0443\u0437\u043b\u043e\u043c, \u0442\u043e vexec \u0441\u0442\u0430\u0432\u0438\u0442 \u043f\u043e\u0434 \u043d\u0438\u043c \u2018VecMotionSend\u2019, \u043d\u0430\u0434 \u043d\u0438\u043c \u2018VecMotionReceive\u2019, \u0430 \u0441\u0430\u043c Motion \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u043c\u0435\u0441\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0442\u0442\u0435\u0440\u044b gp_core: Redistribute \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f Explicit Redistribute \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430. \u0421\u0442\u0440\u043e\u043a\u0430 \u0442\u0430\u043a\u043e\u0433\u043e Motion &#8212; \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430, \u0432\u0441\u0435 NULL, \u043d\u043e\u043c\u0435\u0440 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0438 \u0444\u0440\u0435\u0439\u043c \u0432 bytea;<\/p>\n<\/li>\n<li>\n<p>\u0424\u0440\u0435\u0439\u043c &#8212; 16 \u0431\u0430\u0439\u0442 vexec (\u2018VXF1\u2019, \u0440\u0435\u0437\u0435\u0440\u0432, \u0445\u0435\u0448 \u0441\u0445\u0435\u043c\u044b) \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 Arrow IPC \u0438\u0437 \u043a\u043e\u0434\u0435\u043a\u0430. \u0412 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 arrow \u0431\u0443\u0444\u0435\u0440\u044b \u0443\u0445\u043e\u0434\u044f\u0442 \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 postgresql varlena \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 Datum \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u044f\u043c\u043e \u0432\u043e \u0444\u0440\u0435\u0439\u043c. \u0421\u0445\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0445\u043e\u0434\u0438\u0442 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0442\u0430\u043c \u043f\u043e \u0445\u0435\u0448\u0443, \u0432\u0435\u0434\u044c \u043a\u0430\u0434\u0440\u044b \u0432\u0441\u0435\u0445 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0432\u043f\u0435\u0440\u0435\u043c\u0435\u0448\u043a\u0443;<\/p>\n<\/li>\n<li>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 cdbhash \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u2018GpHashSegment\u2019 \u0431\u0438\u0442 \u0432 \u0431\u0438\u0442, \u0438\u043d\u0430\u0447\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0443\u0448\u043b\u0438 \u0431\u044b \u043d\u0435 \u0432 \u0442\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b: \u044f\u0434\u0440\u0430 \u0434\u043b\u044f \u0446\u0435\u043b\u044b\u0445,float, \u0442\u0435\u043a\u0441\u0442\u0430, uuid \u0438 \u0434\u0430\u0442, \u2018hash_numeric\u2019 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0447\u0435\u0440\u0435\u0437 gp_core \u0434\u043b\u044f legacy \u043a\u043b\u044e\u0447\u0435\u0439;<\/p>\n<\/li>\n<li>\n<p>\u2018VecHashJoin\u2019 \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0441 Motion, \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0435\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u2018squelch_subtree()\u2019, \u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0441 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 EXPLAIN ANALYZE;<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440 \u0444\u0440\u0435\u0439\u043c\u044b \u0438\u0434\u0443\u0442 \u0442\u0435\u043c \u0436\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u043c \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c libpg.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432 \u043f\u0440\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435 \u2018shm\u2019. \u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0447\u0435\u0440\u0435\u0437 \u2018memfd_create\u2019, \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044e \u0447\u0435\u0440\u0435\u0437 \u2018SCM_RIGHTS\u2019 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u043f\u0438\u0448\u0435\u0442 \u0444\u0440\u0435\u0439\u043c\u044b \u0432 \u043a\u043e\u043b\u044c\u0446\u0435\u0432\u043e\u0439 \u0431\u0443\u0444\u0435\u0440, \u043e\u0442\u043a\u0443\u0434\u0430 \u0438\u0445 \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c \u0447\u0438\u0442\u0430\u0435\u0442. \u0418 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043a\u043e\u043b\u044c\u0446\u043e &#8212; \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u0443\u0442\u0438. \u0418 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c \u0437\u0430\u0441\u044b\u043f\u0430\u044e\u0442 \u043d\u0430 \u2018eventfd\u2019 \u0432 \u0441\u0432\u043e\u0435\u043c \u2018WaitEventSet\u2019, \u0438 \u043e\u0442\u043c\u0435\u043d\u0430 \u0441 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u043d\u0430 tcp, \u0430 \u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c, \u0434\u0430\u0436\u0435 \u0443\u043f\u0430\u0432\u0448\u0438\u043c. \u041c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441\u043b\u0430\u0439\u0441 \u0438\u0434\u0435\u0442 \u043f\u043e tcp \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435.<\/p>\n<p>\u041e\u0431\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 &#8212; \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430: \u2018vexec.enable_motion_frames\u2019 \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0441\u043c\u0435\u043d\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u2018ResetPlanCache()\u2019 \u0442\u0430\u043a \u0447\u0442\u043e prepared statement \u0438 PL\/pgSQL \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u0430 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2018gp.interconnect_type\u2019. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043b\u0430\u043d\u0430 \u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432:<\/p>\n<pre><code> Vec Finalize Aggregate   -&gt;  Vec Motion Receive         -&gt;  Gather Motion 3:1  (slice1; segments: 3)               -&gt;  Vec Motion Send                     Frames To: the one gathering                     -&gt;  Vec Partial Aggregate                           -&gt;  Vec Hash Join                                 Hash Cond: (h.n2 = x.n)                                 -&gt;  Vec Motion Receive                                       -&gt;  Explicit Redistribute Motion 3:3  (slice2; segments: 3)                                             -&gt;  Vec Motion Send                                                   Frames To: the segments their keys hash to                                                   Hash Key: n2                                                   -&gt;  Vec Seq Scan on lg_h h                                 -&gt;  Vec Seq Scan on lg_n x Optimizer: GPORCA<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0422\u0435\u0441\u0442\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0438 \u043d\u0430 tcp \u0438 \u043d\u0430 shm, \u0433\u0434\u0435 \u0432\u0441\u0435 2777 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u0439 \u0438 2777 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043b\u044c\u0446\u0435\u0432\u043e\u0439 \u0431\u0443\u0444\u0435\u0440, \u0430 \u043f\u043e\u0441\u043b\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u043d\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u043e\u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0438 \u0444\u0430\u0439\u043b\u044b \u0432 \u2018\/dev\/shm\u2019. \u041d\u0430 \u0448\u0438\u0440\u043e\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043f\u043e 1.8\u041a\u0411 shm \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435 tcp &#8212; \u043e\u043a\u043e\u043b\u043e 80\u043c\u0441 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044f \u0441 93\u043c\u0441 \u043d\u0430 \u043c\u0435\u0436\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043d\u044b\u0439 \u043e\u0431\u043c\u0435\u043d \u043f\u043e tcp.<\/p>\n<h3>Arrow \u043a\u0430\u043a \u0432\u043d\u0443\u0442\u0440\u0438 \u0421\u0423\u0411\u0414, \u0442\u0430\u043a \u0438 \u0432 wire \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 Flight SQL<\/h3>\n<p>Arrow \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0447\u0438\u0442\u0430\u044e\u0442 PostgreSQL \u0447\u0435\u0440\u0435\u0437 ADBC \u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 COPY: \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u0434\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0437 \u043d\u0438\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435. vexec_flight \u043e\u0442\u0434\u0430\u0435\u0442 Arrow \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0431\u0430\u0442\u0447\u0430 \u0438 \u0442\u043e\u043b\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0430\u043a\u0442\u0438\u0432\u0435\u043d \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c. Acceptor \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u043b\u0438\u0448\u044c \u0435\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u043d \u2018vexec_flight.listen_addresses\u2019 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d vexec. \u041f\u0440\u0438 \u2018vexec.mode = off\u2019 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u2018FAILED_PRECONDITION\u2019.<\/p>\n<p>Flight SQL \u0434\u043b\u044f BI \u0438 ML \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442. \u041f\u043e pgwire \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0434\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438: \u043a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u044e send \u0441\u0432\u043e\u0435\u0433\u043e \u0442\u0438\u043f\u0430 \u0438\u043b\u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u0435\u043a\u0441\u0442, \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0432\u0440\u043e\u0434\u0435 psycopg \u0438\u043b\u0438 JDBC \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 pandas, Polars \u0438\u043b\u0438 DuckDB \u043f\u043e\u0442\u043e\u043c \u0435\u0449\u0435 \u0440\u0430\u0437 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u0438\u0445 \u043f\u043e \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c. \u041f\u043e Flight SQL \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 record batch Arrow, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0443 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044d\u0442\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0442\u0430\u043a \u0434\u0435\u0440\u0436\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0435: \u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u044b \u0431\u0435\u0437 NULL pyarrow \u043e\u0442\u0434\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c NumPy \u0431\u0435\u0437 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0445\u0435\u043c\u0430 \u0441 \u0442\u0438\u043f\u0430\u043c\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, decimal &#8212; \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043e\u043c, timestamptz &#8212; \u043a\u0430\u043a \u0432\u0440\u0435\u043c\u044f \u0432 UTC, \u0442\u0430\u043a \u0447\u0442\u043e BI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0442\u0438\u043f\u044b \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443. \u0414\u0440\u0430\u0439\u0432\u0435\u0440\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435: ADBC Flight SQL \u0434\u043b\u044f Python, Go, Java \u0438 C \u0438 Flight SQL JDBC \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 JDBC-\u0434\u0440\u0430\u0439\u0432\u0435\u0440. \u041e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0442\u043e\u0436\u0435 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0439: <code>adbc_ingest()<\/code> \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 DataFrame \u043f\u0440\u044f\u043c\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0447\u0435\u0440\u0435\u0437 VecInsert. \u041c\u0438\u043b\u043b\u0438\u043e\u043d \u0441\u0442\u0440\u043e\u043a lineitem Flight \u043e\u0442\u0434\u0430\u043b \u0432 4,7 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e COPY. Flight SQL \u043b\u0438\u0448\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442, \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442, \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 PostgreSQL \u0434\u043b\u044f pgwire \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/67\/7f\/ae\/677faeaed035b93cf7169322870869e9.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/67\/7f\/ae\/677faeaed035b93cf7169322870869e9.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/67\/7f\/ae\/677faeaed035b93cf7169322870869e9.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0437\u0434\u0435\u0441\u044c \u0442\u0430 \u0436\u0435 \u0447\u0442\u043e \u0438 \u0443 PostgreSQL: acceptor \u0431\u0435\u0437 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043f\u0440\u043e\u0441\u0438\u0442 postmaster \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0435\u043c\u0443 \u0441\u043e\u043a\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u2018SCM_RIGHTS\u2019. \u0421\u0435\u0441\u0441\u0438\u044f \u0441\u0430\u043c\u0430 \u0434\u0435\u0440\u0436\u0438\u0442 TLS, HTTP\/2 \u043d\u0430 nghttp2 \u0438 gRPC \u0438 \u0436\u0434\u0435\u0442 \u043d\u0430 \u0441\u043e\u043a\u0435\u0442\u0435 \u0438 \u0441\u0432\u043e\u0435\u043c latch \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043d\u0435\u0435 \u0434\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u2018pg_cancel_backend()\u2019 \u0438 \u2018CancelFlightInfo\u2019. \u041b\u043e\u0433\u0438\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u2018pg_hba.conf\u2019 \u0441\u0432\u0435\u0440\u044f\u044f \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043f\u0430\u0440\u043e\u043b\u044e \u0440\u043e\u043b\u0438 \u0438 \u043b\u0438\u043c\u0438\u0442\u0430\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439, \u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438\u0434\u0443\u0442 \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u0445\u0443\u043a\u0438, \u043f\u0440\u0430\u0432\u0430, \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0438 \u2018pg_stat_statements\u2019 \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u043f\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430.<\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0438\u0448\u0435\u0442 DestReceiver \u0432 vexec. \u0415\u0441\u043b\u0438 \u043d\u0430\u0432\u0435\u0440\u0445\u0443 \u043f\u043b\u0430\u043d\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0443\u0437\u0435\u043b, \u0442\u043e \u0445\u0443\u043a \u2018ExecutorRun\u2019 \u043e\u0442\u0434\u0430\u0435\u0442 \u0435\u0433\u043e \u0431\u0430\u0442\u0447\u0438 \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0438, \u0435\u0441\u043b\u0438 \u043b\u0435\u0439\u0430\u0443\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0442\u0438\u043f\u043e\u043c Arrow, \u0443\u0445\u043e\u0434\u044f\u0442 \u0432 \u0441\u043e\u043a\u0435\u0442 \u043e\u0434\u043d\u0438\u043c writeev  \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u0431\u0430\u0442\u0447\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438. \u041c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442 \u0441\u0435\u0441\u0441\u0438\u044e &#8212; \u043f\u0440\u0438 \u043d\u0435\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0447\u0442\u0435\u043d\u0438\u0438 20\u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0435\u0433\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u0432\u044b\u0440\u043e\u0441\u043b\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u043d\u0430 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442.<\/p>\n<p>\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0438\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c. \u2018CommandStatementIngest\u2019 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u2018INSERT INTO t \u2026 SELECT \u2026 FROM vexec.ingest_stream(handle)\u2019 \u0438 \u2018VecIngest\u2019 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 DoPut \u0438\u0437 \u0441\u043e\u043a\u0435\u0442\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u043d\u0443\u0436\u0435\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0431\u0430\u0442\u0447. Arrow \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0432\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f: \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f, UTF-8, \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b \u0434\u0430\u0442, \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c decimal, \u0433\u0434\u0435 \u0442\u0438\u043f\u044b \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u044e\u0442 \u0441 \u0442\u0438\u043f\u043e \u0438\u0437 Arrow, \u0431\u0443\u0444\u0435\u0440\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0431\u0443\u0444\u0435\u0440\u0430\u043c\u0438 \u0431\u0430\u0442\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u2018VecInsert\u2019 \u043e\u0442\u0434\u0430\u0435\u0442 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0443 PAX \u0438\u043b\u0438 ao_column.<\/p>\n<h4>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 PostGIS \u0438 pgvector<\/h4>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 vexec \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 fmgr \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e, \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430. \u041d\u043e pgvector \u043d\u0435 \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 leakproof, \u0430 PostGIS \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f btree \u0438 \u2018geometry_hash\u2019, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0441 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438\u043b\u0438 \u2018ST_Intersects\u2019 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u043e\u0441\u044c \u043b\u0435\u043d\u0438\u0432\u044b\u043c. \u041f\u0430\u043a\u0435\u0442 \u044f\u0434\u0435\u0440 \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043d\u0435 \u0432\u0432\u043e\u0434\u0438\u0442 ABI: \u043f\u043e\u0432\u0435\u0440\u0445 fmgr \u0438 \u043e\u0448\u0438\u0431\u043e\u043a PostgreSQL \u043e\u043d \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043d\u0430 \u043a\u0430\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u0431\u044b PostgreSQL:<\/p>\n<ul>\n<li>\n<p>\u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0440\u043e\u0441\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443: \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0431\u0430\u0442\u0447\u0430 &#8212; \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u044c 2-D \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0431\u043e\u043a\u0441\u043e\u0432 PostGIS \u0438 \u2018ST_SRID\u2019;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430: \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u043f\u0440\u043e\u0448\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0430\u043a\u0435\u0442\u0430, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 PostgreSQL \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0441\u0430\u043c, \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 &#8212; \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f pgvector \u043f\u0440\u0438 \u0440\u0430\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438, \u2018ST_X\u2019 \u0438 \u2018ST_Y\u2019 \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0435\u0444\u0438\u043b\u044c\u0442\u0440: \u043e\u0442\u0432\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u0430 \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u043d \u0435\u0441\u0442\u044c, \u0430 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 (\u043c\u044f\u0433\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u2018ereturn\u2019) \u0443\u0445\u043e\u0434\u0438\u0442 \u043a \u0441\u0430\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 &#8212; \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u043e\u0432 PostGIS \u043f\u043e \u0438\u0445 \u0431\u043e\u043a\u0441\u0430\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f \u044f\u0434\u0440\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e, \u0435\u0433\u043e \u0432\u0435\u0440\u0441\u0438\u0438, \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0435 \u0438 C-\u0441\u0438\u043c\u0432\u043e\u043b\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u2018ALTER EXTENSION UPDATE\u2019. \u2018vexec_postgis\u2019 \u0447\u0438\u0442\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0439 \u0441\u0432\u043e\u0438\u043c \u043a\u043e\u0434\u043e\u043c, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u043f\u043e \u2018gserialized.txt\u2019, \u0431\u0435\u0437 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 PostGIS. \u0422\u0435\u0441\u0442\u044b pgvector (14) \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u0435\u0441\u0442\u044b PostGIS (143) \u0434\u0430\u044e\u0442 \u0441 vexec \u0442\u0435 \u0436\u0435 \u043e\u0442\u0432\u0435\u0442\u044b, \u0447\u0442\u043e \u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e, \u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u0435\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u0435 \u0436\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e, \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e.<\/p>\n<h3>\u0422\u0435\u043a\u0443\u0449\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/h3>\n<ul>\n<li>\n<p>\u0423\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 PostgreSQL 19: <\/p>\n<ul>\n<li>\n<p>Gather \u0438 Gather Merge \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u043c\u0438: \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043a\u043e\u0440\u0442\u0435\u0436\u0435\u0439 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u043e\u0434\u0438\u043d MinimalTuple \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443;<\/p>\n<\/li>\n<li>\n<p>\u2018ExecSetTupleBound\u2019 \u043d\u0435 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e CustomScan, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 LIMIT \u2018VecSort\u2019 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u0440\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434 UPDATE, DELETE, MERGE, LockRows \u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430\u043c\u0438 \u2018WHERE CURRENT OF\u2019 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432 \u043d\u0435\u0442: EvalPlanQual \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0441\u043b\u043e\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430, \u0430 \u0434\u043b\u044f heap \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0431\u0443\u0444\u0435\u0440\u043d\u044b\u0439 \u0441\u043b\u043e\u0442.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0412 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 Cloudberry: <\/p>\n<ul>\n<li>\n<p>\u043d\u0430 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c PostgreSQL \u043f\u043b\u0430\u043d\u044b ORCA \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435: \u0435\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u2018gp.enable_parallel\u2019 \u0438\u0437 gp_core;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 Gather Motion \u0444\u0440\u0435\u0439\u043c\u043e\u0432 \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442, \u043e\u043d \u0441\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0443 PAX \u043d\u0435\u0442 \u2018index_delete_tuples\u2019, \u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 btree \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0443\u043f\u0430\u0441\u0442\u044c, \u0447\u0435\u0440\u0435\u0437 ModifyTable \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435: <\/p>\n<ul>\n<li>\n<p>\u2018COUNT(DISTINCT)\u2019 \u0441 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c \u043f\u043e\u0434 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c PostgreSQL \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 auto \u0432 3.1-3.6 \u0440\u0430\u0437\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435: \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0442\u0430\u0432\u0438\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043b\u0430\u043d \u043d\u0438\u0436\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0433\u043e;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0438\u0437 \u0441\u043a\u0430\u043d\u0430 heap \u043e\u0442\u0434\u0430\u044e\u0442\u0441\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u043c \u0441\u043a\u0430\u043d\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>force \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439, \u043a\u0440\u043e\u043c\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c auto \u0431\u044b\u0441\u0442\u0440\u0435\u0435 force.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>\u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0412\u0441\u0435 \u0446\u0438\u0444\u0440\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u043d\u0430 Docker-\u043e\u0431\u0440\u0430\u0437\u0430\u0445 \u0438\u0437 \u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0447\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0442\u043e\u043a, \u043d\u0430 \u043c\u043e\u0435\u043c 16-\u044f\u0434\u0435\u0440\u043d\u043e\u043c Ryzen 9 9955HX3D \u0441 64 \u0413\u0411 \u043f\u0430\u043c\u044f\u0442\u0438, \u0431\u0435\u0437 assert-\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0441\u0432\u0435\u0440\u0435\u043d \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043e\u043c DuckDB.<\/p>\n<p>ClickBench \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u043b\u0441\u044f \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u043d\u0430 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c PostgreSQL 19 \u0441 ORCA, \u043d\u043e \u043d\u0430 10 \u043c\u043b\u043d \u0441\u0442\u0440\u043e\u043a, \u0442\u0430\u043a \u0447\u0442\u043e \u0441 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u043d\u0430 100 \u043c\u043b\u043d \u044d\u0442\u0438 \u0446\u0438\u0444\u0440\u044b \u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c. \u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0442\u0430\u0439\u043c\u0438\u043d\u0433\u043e\u0432 \u00ab\u0433\u043e\u0440\u044f\u0447\u0438\u0445\u00bb 43 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043c\u0441:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/p>\n<\/th>\n<th>\n<p align=\"left\">heap<\/p>\n<\/th>\n<th>\n<p align=\"left\">heap \u0441 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a PostgreSQL<\/p>\n<\/td>\n<td>\n<p align=\"left\">625<\/p>\n<\/td>\n<td>\n<p align=\"left\">402<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a PostgreSQL + vexec, auto<\/p>\n<\/td>\n<td>\n<p align=\"left\">506<\/p>\n<\/td>\n<td>\n<p align=\"left\">311<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a PostgreSQL + vexec, force<\/p>\n<\/td>\n<td>\n<p align=\"left\">498<\/p>\n<\/td>\n<td>\n<p align=\"left\">365<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">ORCA<\/p>\n<\/td>\n<td>\n<p align=\"left\">1647<\/p>\n<\/td>\n<td>\n<p align=\"left\">924<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">ORCA + vexec, auto<\/p>\n<\/td>\n<td>\n<p align=\"left\">1349<\/p>\n<\/td>\n<td>\n<p align=\"left\">745<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>vexec \u0441\u043d\u0438\u043c\u0430\u0435\u0442 19-24% \u0443 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 PostgreSQL \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 auto \u0438 16-19% \u0443 ORCA, \u043b\u0443\u0447\u0448\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0443\u0441\u043a\u043e\u0440\u044f\u044e\u0442\u0441\u044f \u0432 8.8-9.5 \u0440\u0430\u0437\u0430: Q15 \u0438 Q16 \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435, Q29 \u043d\u0430 ORCA. \u041d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435 Q10, Q11 \u0438 Q13 \u0441 \u2018COUNT(DISTINCT)\u2019, \u043d\u0430 ORCA &#8212; Q25 \u0438 Q39, \u0433\u0434\u0435 \u0441\u043a\u0430\u043d \u043e\u0442\u0434\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438. ORCA \u043e\u0442\u0441\u0442\u0430\u0435\u0442 \u043e\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0432 2.3-2.6 \u0440\u0430\u0437\u0430 \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0437-\u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043b\u0430\u043d\u043e\u0432.<\/p>\n<p>Flight SQL, TPC-H Q1 \u043d\u0430 SF1, \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u043f\u044f\u0442\u0438 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u043e\u0442 execute \u0434\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u044b Arrow \u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0435:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0439 PostgreSQL 19<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440 \u043f\u043e\u0440\u0442\u0430, 2 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u2018adbc_driver_postgresql\u2019, vexec \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,743 \u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,115 \u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u2018adbc_driver_postgresql\u2019, vexec auto<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,400 \u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,567 \u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u2018adbc_driver_flightsql\u2019, vexec auto<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,389 \u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,555 \u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u0441\u0442\u0440\u043e\u043a lineitem, \u2018adbc_driver_postgresql\u2019, vexec \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,917 \u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">1,012 \u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0442\u043e \u0436\u0435 \u0447\u0435\u0440\u0435\u0437 \u2018adbc_driver_flightsql\u2019, vexec auto<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,194 \u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">0,748 \u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412\u0440\u0435\u043c\u044f Q1 &#8212; \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f, \u0438 vexec \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0434\u0432\u043e\u0435, \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043a\u043e\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043d\u0438 \u0447\u0438\u0442\u0430\u0439 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0422\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u0432\u0438\u0434\u0435\u043d \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0435 \u0441\u0442\u0440\u043e\u043a: Flight \u043e\u0442\u0434\u0430\u0435\u0442 \u0438\u0445 \u0432 4.7 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e COPY. \u041d\u0430 \u043f\u043e\u0440\u0442\u0435 \u0437\u0430\u043c\u0435\u0440 \u0441\u0434\u0435\u043b\u0430\u043d \u0434\u043e V7, \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0435\u0449\u0435 \u0448\u0435\u043b \u0447\u0435\u0440\u0435\u0437 Gather Motion \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0412\u0441\u0442\u0430\u0432\u043a\u0430 200 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a lineitem, \u0441\u0442\u0440\u043e\u043a \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u0442\u0440\u0435\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u043a (\u0441\u0442\u0440\u043e\u043a \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443):<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0443\u0442\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">porc_vec, \u043e\u0434\u0438\u043d \u0443\u0437\u0435\u043b<\/p>\n<\/th>\n<th>\n<p align=\"left\">ao_column, \u043e\u0434\u0438\u043d \u0443\u0437\u0435\u043b<\/p>\n<\/th>\n<th>\n<p align=\"left\">heap, \u043e\u0434\u0438\u043d \u0443\u0437\u0435\u043b<\/p>\n<\/th>\n<th>\n<p align=\"left\">porc_vec, 2 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">COPY CSV \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">955 491<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 176 792<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 294 406<\/p>\n<\/td>\n<td>\n<p align=\"left\">568 093<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 COPY \u0447\u0435\u0440\u0435\u0437 ADBC<\/p>\n<\/td>\n<td>\n<p align=\"left\">547 494<\/p>\n<\/td>\n<td>\n<p align=\"left\">635 661<\/p>\n<\/td>\n<td>\n<p align=\"left\">651 960<\/p>\n<\/td>\n<td>\n<p align=\"left\">399 412<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Flight SQL \u0434\u043e VI: DoPut, \u043f\u043e\u0440\u0442\u0430\u043b \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">27 466<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<td>\n<p align=\"left\">771<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Flight SQL \u2018adbc_ingest\u2019 \u0447\u0435\u0440\u0435\u0437 VecIngest \u0438 VecInsert<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 580 626<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 826 448<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 545 523<\/p>\n<\/td>\n<td>\n<p align=\"left\">647 592<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 porc_vec Flight \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432 1.65 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 COPY CSV \u0438 \u0432 2.9 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e COPY. \u041d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u043f\u043e\u043a\u0430 1.14 \u0440\u0430\u0437\u0430: \u043f\u043e\u0442\u043e\u043a \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442 Motion \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0438 \u0436\u0434\u0435\u0442 \u0444\u0440\u0435\u0439\u043c\u043e\u0432 V7.<\/p>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0434\u0438: \u043f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043c\u0435\u0440 TPC \u043d\u0430 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0445 \u043f\u043e\u0441\u043b\u0435 V2, \u043a\u043e\u0433\u0434\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c\u0438 \u0431\u044b\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043a\u0430\u043d\u044b \u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044f, \u0434\u0430\u043b \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u043e\u043a\u043e\u043b\u043e \u0435\u0434\u0438\u043d\u0438\u0446\u044b. Q1 \u0443\u0441\u043a\u043e\u0440\u0438\u043b\u0441\u044f \u0432 1.8-2.8 \u0440\u0430\u0437\u0430, \u0430 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0441\u043a\u0430\u043d \u043a\u043e\u0440\u043c\u0438\u0442 \u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439 hash join, \u0442\u0435\u0440\u044f\u043b\u043e\u0441\u044c \u0434\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u0448\u043b\u0438 VecHashJoin \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435 heap. \u0418\u0445 \u0437\u0430\u043c\u0435\u0440 \u0436\u0434\u0435\u0442 \u0442\u0438\u0445\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430.<\/p>\n<h3>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/h3>\n<p>\u0412\u0441\u0435 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a Claude Code: \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u0432\u043d\u0443\u0442\u0440\u0438 PostgreSQL &#8212; \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c ORCA \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0432\u0435\u0440\u0445 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 Cloudberry \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u044f\u0434\u0440\u043e \u0445\u0443\u043a\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0414\u0435\u0432\u044f\u0442\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438 \u043a\u043e\u0434 PostgreSQL 19, \u043f\u043e\u0440\u0442\u0430 Cloudberry, PAX, AOCO, Arrow \u0438 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u043e\u0432. \u041f\u043b\u0430\u043d \u0432\u044b\u0440\u043e\u0441 \u0434\u043e 4,7 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0442\u0440\u043e\u043a \u0438 113 \u0442\u044b\u0441\u044f\u0447 \u0441\u043b\u043e\u0432, \u043a\u0430\u0436\u0434\u043e\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u043d\u0435\u043c &#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u0432\u0438\u0434\u0430 \u2018\u0444\u0430\u0439\u043b:\u0441\u0442\u0440\u043e\u043a\u0438\u2019 \u0438\u043b\u0438 \u0447\u0438\u0441\u043b\u043e, \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u044d\u0442\u043e\u043c \u0445\u043e\u0441\u0442\u0435, \u0430 \u0432 \u0448\u0430\u043f\u043a\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043c\u043e\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0438\u0445 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<p>\u041f\u043e\u043b\u0442\u043e\u0440\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u043c\u043e\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0435\u0449\u0435 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443: \u0434\u0432\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0431\u0430\u0442\u0447\u0430, \u043a\u043b\u044e\u0447\u0438 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 Arrow, \u043e\u0431\u0449\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u043b\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430, Flight SQL \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c, \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u0430\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u044f\u0434\u0440\u0430, \u043f\u0430\u043a\u0435\u0442\u044b \u044f\u0434\u0435\u0440, \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 ClickBench \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041e\u0442 IPC \u0438\u0437 nanoarrow \u044f \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f: \u0435\u0435 \u043a\u043e\u0434 \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u0431\u0430\u0442\u0447\u0430, \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 string view \u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 malloc.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0424\u0430\u0437\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0414\u0430\u0442\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">VB<\/p>\n<\/td>\n<td>\n<p align=\"left\">5 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0431\u0435\u0439\u0437\u043b\u0430\u0439\u043d ClickBench \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 vexec<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">V0<\/p>\n<\/td>\n<td>\n<p align=\"left\">5 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u0430\u0440\u043a\u0430\u0441: \u043e\u0440\u0430\u043a\u0443\u043b, \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438, \u0434\u0432\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0431\u0430\u0442\u0447\u0430, \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">V1<\/p>\n<\/td>\n<td>\n<p align=\"left\">5 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">VecScan, VecResult, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043e\u0431\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430, \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 PAX \u0438 gp_ao<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">V2<\/p>\n<\/td>\n<td>\n<p align=\"left\">6 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">VecAgg, \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u044b \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 PAX, \u043f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043c\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">V3<\/p>\n<\/td>\n<td>\n<p align=\"left\">6 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">VecHashJoin<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">V4<\/p>\n<\/td>\n<td>\n<p align=\"left\">6 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0439 heap, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u0442\u0438, VecSort, VecRepartition, VecBitmapHeapScan<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">V5<\/p>\n<\/td>\n<td>\n<p align=\"left\">6 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">CCostModelVec, VecWindowHashAgg<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">V6<\/p>\n<\/td>\n<td>\n<p align=\"left\">6 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">ORCA \u043d\u0430 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c PostgreSQL 19<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">VK<\/p>\n<\/td>\n<td>\n<p align=\"left\">6 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u0430\u043a\u0435\u0442\u044b \u044f\u0434\u0435\u0440 \u0434\u043b\u044f pgvector \u0438 PostGIS<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">V7_0, V10<\/p>\n<\/td>\n<td>\n<p align=\"left\">6 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u043e\u0434\u0435\u043a Arrow IPC, egress API, vexec_flight<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">VI<\/p>\n<\/td>\n<td>\n<p align=\"left\">7 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, VecInsert, \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0438\u0437 Flight SQL<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">V7<\/p>\n<\/td>\n<td>\n<p align=\"left\">7 \u043e\u043a\u0442.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043a\u0430\u0434\u0440\u044b Arrow \u0447\u0435\u0440\u0435\u0437 Motion, \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 shm<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u0442\u0430\u043a: <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/79\/03\/1d\/79031da3c8a215ebbdc1cc08ce5eb230.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/79\/03\/1d\/79031da3c8a215ebbdc1cc08ce5eb230.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/79\/03\/1d\/79031da3c8a215ebbdc1cc08ce5eb230.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p> \u0438 \u0432\u0441\u0435 \u0435\u0449\u0435 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 \u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f, \u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432. <\/p>\n<h3>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h3>\n<p>\u0417\u0430 \u0442\u0440\u0438 \u0434\u043d\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0432\u0438\u0434\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f PostgreSQL 19, \u043a\u043e\u0442\u043e\u0440\u044b\u0439:<\/p>\n<ul>\n<li>\n<p>\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c \u044f\u0434\u0440\u0435 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430 \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u043f\u0430\u0442\u0447\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441 ORCA, \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u0432\u0441\u044e \u0421\u0423\u0411\u0414;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 ORCA \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432 \u043e\u0434\u043d\u043e\u0443\u0437\u043b\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 MPP-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 PAX \u0438 ao_column \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439\/\u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0431\u0430\u0442\u0447\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043f\u043e Motion \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Arrow;<\/p>\n<\/li>\n<li>\n<p>\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 FlightSQL \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 PostGIS \u0438 pgvector \u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a PostgreSQL \u0430 \u043d\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u043e\u0432\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f: 239 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432 \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u043e\u043a \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0445 \u043e\u0442\u0432\u0435\u0442\u043e\u0432, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 TPC \u0438 ClickBench \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u043c\u0438 \u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043e\u043a\u043e\u043b\u043e 43 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a C \u043a\u043e\u0434\u0430 \u0432 vexec, 7.9 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0442\u0440\u043e\u043a \u0432 vexec_flight, \u0442\u044b\u0441\u044f\u0447\u0430 \u0432 \u043f\u0430\u043a\u0435\u0442\u0430\u0445 \u044f\u0434\u0435\u0440 \u0434\u043b\u044f pgvector\/PostGIS \u0438 \u043e\u043a\u043e\u043b\u043e 13.6 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0442\u0440\u043e\u043a \u0432 \u043c\u043e\u0434\u0443\u043b\u044f\u0445 \u043f\u043e\u0440\u0442\u0430 Cloudberry  \u2018pg19\/\u2019, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 shm \u0438 \u043a\u043e\u043f\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 PAX. \u0412 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u043f\u043b\u0430\u043d\u0430\u0445 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0432 Cloudberry.  \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0435\u0441\u0442\u044c \u043a\u0443\u0434\u0430 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0447\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u0434\u0430\u0436\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f PostgreSQL. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c open source \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043b\u0443\u0447\u0448\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 AI\/ML \u043e\u0431\u0449\u0430\u044f\u0441\u044c \u043d\u0430 Apache Arrow \u043f\u043e FlightSQL \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 PostgreSQL.<\/p>\n<p>\u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430: <a href=\"https:\/\/github.com\/igor-suhorukov\/pg_vexec\" rel=\"noopener nofollow\">pg_vexec (vexec)<\/a>, <a href=\"https:\/\/github.com\/igor-suhorukov\/pg_vexec\/tree\/main\/modules\/vexec_flight\" rel=\"noopener nofollow\">pg_vexec_flight<\/a>, <a href=\"https:\/\/github.com\/igor-suhorukov\/pg_vexec\/tree\/main\/modules\/vexec_pgvector\" rel=\"noopener nofollow\">pg_vexec_pgvector<\/a> and <a href=\"https:\/\/github.com\/igor-suhorukov\/pg_vexec\/tree\/main\/modules\/vexec_postgis\" rel=\"noopener nofollow\">pg_vexec_postgis<\/a>; \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/igor-suhorukov\/cloudberry\/tree\/extension_postgresql_19\/pg19\" rel=\"noopener nofollow\">\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u0430 Cloudberry \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 <code>pg19\/<\/code><\/a>.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1091738\/\">https:\/\/habr.com\/ru\/articles\/1091738\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u043d\u0435\u0434\u0435\u043b\u0435 \u044f \u043f\u0435\u0440\u0435\u043d\u0435\u0441 \u0444\u043e\u0440\u043a Apache Cloudberry \u043d\u0430 PostgreSQL 19 \u0432 \u0432\u0438\u0434\u0435 \u043d\u0430\u0431\u043e\u0440\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u0433\u0434\u0435 \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043a\u0443. \u0412\u043f\u0440\u043e\u0447\u0435\u043c \u043a\u0430\u043a \u0438 Cloudberry \u043d\u0430 ClickBench \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0435 \u0434\u0432\u0438\u0436\u043a\u0438 \u043e\u0431\u0433\u043e\u043d\u044f\u044e\u0442 \u0435\u0433\u043e \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0418 \u0434\u0435\u043b\u043e \u0442\u0443\u0442 \u043d\u0435 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 MPP, \u0430 \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0435 PostgreSQL &#8212; \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043a\u043e\u0440\u0442\u0435\u0436\u0430\u043c\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0421\u0423\u0411\u0414. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u0440\u0442\u0435\u0436 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 fmgr, \u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u043b\u0438\u0448\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0446\u0438\u043a\u043b \u043f\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u044b.\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0448\u0430\u0433 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f &#8212; \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u0432 PostgreSQL. \u0412 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u0434\u0435 Apache Cloudberry \u0435\u0433\u043e \u043d\u0435\u0442: \u043e\u0442 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0435\u0434\u044b &#8212; \u0444\u043b\u0430\u0433 create_vectorization_plan, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043a\u0430\u043a false, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u0437\u0435\u043b WindowHashAgg \u0431\u0435\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 PAX \u043f\u043e\u0434 VEC_BUILD, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u043c\u0443 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u043d\u043e\u0432\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430.\u0422\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f pg_vexec &#8212; \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0434\u043b\u044f PostgreSQL 19:vexec &#8212; \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435;vexec_flight &#8212; endpoint Arrow Flight SQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f, \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 Arrow \u0431\u0443\u0444\u0435\u0440\u0430\u0445, \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c ADBC \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a PostgreSQL \u043f\u043e \u0440\u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443;vexec_pgvector \u0438 vexec_postgis &#8212; \u043f\u0430\u043a\u0435\u0442\u044b \u044f\u0434\u0435\u0440 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.\u041f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044f\u0434\u0440\u0430 PostgreSQL \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 ORCA \u0432 \u043e\u0434\u043d\u043e\u0443\u0437\u043b\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0435\u0437 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 PostgreSQL. \u041c\u043e\u0434\u0443\u043b\u044c pg_orca \u0438\u0437 \u043f\u043e\u0440\u0442\u0430 Cloudberry \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 pg_core \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043f\u043e\u0442\u0440\u043e\u0445\u043e\u0432 greenplum \u0438 \u043f\u0430\u0442\u0447\u0435\u0439 \u044f\u0434\u0440\u0430 \u0421\u0423\u0411\u0414, \u0430 vexec \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 ORCA \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0441 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0435\u043c \u0432 \u201c\u043e\u0434\u043d\u043e\u043c \u0444\u043b\u0430\u043a\u043e\u043d\u0435\u201d: \u0435\u0433\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432, \u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u0438 \u0443\u0437\u043b\u044b \u0432 \u043f\u043b\u0430\u043d\u0435. \u041f\u0430\u0442\u0447\u0438 \u044f\u0434\u0440\u0430 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438\u0437 Cloudberry. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Cloudberry \u043d\u0430 \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0435\u043d\u043e\u043c \u044f\u0434\u0440\u0435 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430, \u0442\u043e vexec \u043c\u043e\u0436\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0435 PAX \u0438 ao_column, \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0439 \u0438\u0437 \u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 Motion \u0442\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0440\u0430\u0437\u0443 \u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Arrow IPC.\u0418 \u043a \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043f\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u043c\u0443 pgwire \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443, \u0442\u0430\u043a \u0438 \u043f\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c\u0443 Flight SQL, \u0447\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0442\u0435 \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c ML \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 PostgreSQL. \u041a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 polars \u0441\u043a\u0430\u0436\u0443\u0442 \u043c\u043d\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e!\u041a\u043e\u0434 \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d LLM Opus 5.5 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0441\u0441\u0438\u044f\u0445, \u043a\u0430\u0436\u0434\u0430\u044f \u0432 \u0441\u0432\u043e\u0435\u043c git worktree, \u0430 \u044f \u0441\u0442\u0430\u0432\u0438\u043b \u0437\u0430\u0434\u0430\u0447\u0438, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0420\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u043f\u043b\u0430\u043d\u043e\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f PG \u043d\u0430\u0447\u0430\u043b 2 \u043e\u043a\u0442\u044f\u0431\u0440\u044f, \u0430 \u043a\u043e\u0434 \u043d\u0430\u0447\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f 5 \u043e\u043a\u0442\u044f\u0431\u0440\u044f, \u0438 \u043a 7 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u044b \u0442\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 ClickBench \u0434\u043b\u044f \u0431\u0435\u0439\u0437\u043b\u0430\u0439\u043d\u0430 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Arrow \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0421\u0423\u0411\u0414 \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c Motion.\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b DataFusion\u041d\u0430\u0447\u0430\u043b \u044f \u044d\u0442\u0443 \u0437\u0430\u0442\u0435\u044e \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u0437\u0430\u0434 \u0441 \u0438\u0434\u0435\u0438 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 PostgreSQL \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a Apache DataFusion. \u0414\u043e \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0435\u043b\u0430\u043b\u0438 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u0435\u043d\u044f \u043d\u0435 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b \u0438 \u0445\u043e\u0442\u0435\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043e \u044d\u0442\u043e\u0433\u043e. \u0412 \u043f\u043b\u0430\u043d\u0435 \u0434\u043b\u044f pg_arrow \u0431\u044b\u043b\u043e \u044f\u0434\u0440\u043e \u043d\u0430 Rust \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u043e\u0432\u0430\u043b\u043e \u0441 PostgreSQL \u0447\u0435\u0440\u0435\u0437 \u0435\u0433\u043e C ABI, \u0430 \u0432\u0441\u0435 \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f PostgreSQL \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u0432 \u0442\u043e\u043d\u043a\u043e\u0439 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0435 \u043d\u0430 C. DataFusion \u0436\u0438\u043b \u0431\u044b \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043d\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u0443\u043b\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u0432 Tokio. \u0415\u0433\u043e \u0431\u044d\u043a\u0435\u043d\u0434 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0431\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0449\u0438\u043a\u0443 CustomPath-\u044b \u2018ArrowScan\u2019 \u0447\u0435\u0440\u0435\u0437 path-\u0445\u0443\u043a\u0438, \u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043b \u0431\u044b \u0438\u0437 \u2018PlannerInfo\u2019 \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043b\u0430\u043d DataFusion \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b \u0441\u0435\u0440\u0432\u0438\u0441\u0443. \u0421\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 heap \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0421\u0423\u0411\u0414 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b Arrow \u0432 \u043e\u0431\u0449\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u0431\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0432 \u043b\u0435\u0439\u0430\u0443\u0442\u0435 PostgreSQL. Arrow \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0440\u0430\u0437\u0434\u0430\u0432\u0430\u043b FlightSQL \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c \u0432 Iceberg\/Parquet \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c S3 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.\u0427\u0435\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u044f \u043f\u0440\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u043d \u0441 LLM \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438, \u0442\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043e\u0432. \u0421\u0435\u043c\u0435\u043d\u0442\u0438\u043a\u0430 DataFusion &#8212; \u044d\u0442\u043e \u043d\u0435 PostgreSQL \u0441 \u0435\u0433\u043e collation, numeric scale, NaN, \u0447\u0430\u0441\u043e\u0432\u044b\u0435 \u043f\u043e\u044f\u0441\u0430 \u0438 \u0434\u0430\u0436\u0435 \u2018now()\u2019 \u043e\u0442\u043b\u0438\u0447\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0442 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f. JSONB \u0438 \u0433\u0435\u043e\u0442\u0438\u043f\u044b \u0441\u0442\u0430\u043b\u0438 \u0431\u044b \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0438 EWKB \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u043e\u0431\u0438\u0440\u0430\u044f\u0441\u044c \u0437\u0430\u043d\u043e\u0432\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043b\u043e\u0434\u0438\u043b \u0431\u044b \u043b\u0438\u0448\u043d\u0438\u0438 \u043a\u043e\u043f\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c postmaster \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 segfault \u0438\u0437 zstd \u0438\u043b\u0438 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0438\u0439 OOM killer  \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u0431\u044b \u0432\u0435\u0441\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0421\u0423\u0411\u0414. DataFusion 55.1 \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0434\u0438\u0441\u043a Hash join, datafusion-proto \u043c\u043e\u043b\u0447\u0430 \u0442\u0435\u0440\u044f\u043b \u0431\u044b \u043f\u043e\u043b\u044f \u043f\u043b\u0430\u043d\u0430, \u0430 \u043f\u043e\u043a\u0430 SubPlan\/InitPlan\/CTE\/\u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0438\/eager aggregation \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u044b, \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u0431\u044b \u043d\u0430 \u043f\u043b\u0430\u043d\u0435 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 \u0438 \u0432 \u0447\u0435\u043c \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u043d\u0435 \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f.\u0412\u044b\u0438\u0433\u0440\u044b\u0448 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u044b\u043b \u043f\u043e\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043f\u043e\u043a\u0430 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0448\u044c \u044d\u0442\u0443 \u0441\u0432\u044f\u0437\u043a\u0443 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438. \u0410 \u0441\u0430\u043c\u043e\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u0432 \u0442\u0430\u043a\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 &#8212; \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0441\u043a\u0430\u043d\u044b, \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u044b &#8212; \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 \u0441 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439 \u0421\u0423\u0411\u0414 \u0438 \u0431\u0435\u0437 \u043c\u0435\u0436\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u0430\u043a pg_arrow \u0438 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043f\u043b\u0430\u043d\u043e\u043c \u0431\u0435\u0437 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043a\u043e\u0434\u0435, \u0430 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c Cloudberry \u0432 \u0432\u0438\u0434\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f PostgreSQL 19, \u0442\u043e \u043e\u043d \u043c\u043d\u0435 \u0434\u0430\u043b \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c ORCA \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u044f\u0434\u0440\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, PAX \u0438 gp_ao \u0432 \u0432\u0438\u0434\u0435 \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u043b\u0430\u043d \u043f\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041d\u043e \u043d\u0435 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 PG \u0430 \u0432 \u0432\u0438\u0434\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0421\u0423\u0411\u0414. \u041e\u0442 pg_arrow \u0432 \u043d\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0442\u0438\u043f\u043e\u0432 Arrow&lt;-&gt;PG, \u043b\u0435\u0439\u0430\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 PostgreSQL, \u043a\u043e\u0440\u043f\u0443\u0441 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f FlightSQL \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0411\u0414, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0442\u043e TPC-H Q1 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e COPY.\u041a\u0430\u043a \u0438 \u0432 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0435 \u043b\u0435\u0433\u0430\u0441\u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0445, \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u0433\u0440\u0435\u0441\u0442\u0438 \u0410\u0432\u0433\u0435\u0435\u0432\u044b \u043a\u043e\u043d\u044e\u0448\u043d\u0438 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 &#8212; \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0412\u0437\u044f\u043b ORCA \u0438 \u0441\u0442\u0430\u043b \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c PostgreSQL \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0434\u0435\u0438 \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 FlightSQL \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a pgwire.\u041f\u043e\u0447\u0435\u043c\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u0412\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f PostgreSQL \u0438\u0434\u0435\u044f \u043d\u0435 \u043d\u043e\u0432\u0430\u044f. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b\u0430 \u0441\u0432\u043e\u044f \u0446\u0435\u043d\u0430. openGauss \u0432\u0441\u0442\u0440\u043e\u0438\u043b \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043d\u0430 82 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0442\u0440\u043e\u043a \u0432 \u0444\u043e\u0440\u043a PostgreSQL 9.2, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441 \u0430\u043f\u0441\u0442\u0440\u0438\u043c\u043e\u043c \u0443\u0436\u0435 \u043d\u0435 \u0441\u043e\u043b\u044c\u0435\u0448\u044c. pg_duckdb \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u0434\u0432\u0438\u0436\u043a\u0443 DuckDB \u0432 \u0431\u044d\u043a\u044d\u043d\u0434\u0435 \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0435 \u0443 \u043d\u0435\u0433\u043e \u0442\u0435 \u0436\u0435, \u0447\u0442\u043e \u0431\u044b\u043b\u0438 \u0443 \u043c\u043e\u0435\u0433\u043e \u043f\u043b\u0430\u043d\u0430 pg_arrow. \u041f\u0440\u043e\u0435\u043a\u0442\u044b openGauss, vectorize_engine, Hydra \u0438 VectorAgg \u0438\u0437 TimescaleDB \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u043d \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u0441\u043e\u0440\u0435\u0432\u043d\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0441\u0430\u043c\u043e\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435. \u0423 TimescaleDB \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u0430\u0432\u0430\u043b \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Wrong result in vector agg &amp; columnar index scan.\u0410\u0433\u0435\u043d\u0442\u0430\u043c \u044f \u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e\u0447\u0442\u0438 \u0442\u0435 \u0436\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u0447\u0442\u043e \u0438 \u043f\u0440\u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 Apache Cloudberry: \u201c\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0445\u0443\u043a\u0438 PostgreSQL, \u0430 \u0431\u0435\u0437 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0435\u0431\u044f \u0432\u0435\u0441\u0442\u0438 \u043a\u0430\u043a \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0439\u201d. \u041f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0442 \u043d\u0438\u0445 \u0448\u0435\u0441\u0442\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043f\u043e \u043a\u043e\u0434\u0443 \u043a\u0430\u0436\u0434\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u043e\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0438 \u043d\u043e\u0432\u044b\u0439 \u0445\u0443\u043a \u0432 \u044f\u0434\u0440\u0435 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u043d\u0435 \u043e\u0434\u043d\u043e\u0439:\u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u044f\u0434\u0440\u0430: \u0432 \u0446\u0435\u043b\u043e\u043c \u043c\u043d\u0435 \u043f\u043e\u0432\u0435\u0437\u043b\u043e! \u0412\u0435\u043d\u0434\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438 \u0434\u043b\u044f PostgreSQL, \u0432\u0438\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u0447\u043a\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\/\u0445\u0443\u043a\u0438 \u0432 \u0430\u043f\u0441\u0442\u0440\u0438\u043c \u044f\u0434\u0440\u0430 PostgreSQL, \u043a\u0440\u043e\u043c\u0435 \u0447\u0442\u0435\u043d\u0438\u044f\/\u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432 TableAM. \u0412 \u044f\u0434\u0440\u0435 \u0421\u0423\u0411\u0414 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f;\u0443\u0437\u043b\u044b \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443 \u0438 \u0441\u043e\u0440\u0435\u0432\u043d\u0443\u044e\u0442\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e \u043a\u043e\u0440\u0442\u0435\u0436\u0430\u043c \u043f\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438. \u0413\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u043d \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442;\u043e\u0434\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u043e\u0431\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430: \u043e\u0434\u0438\u043d \u043e\u0440\u0430\u043a\u0443\u043b, \u043e\u0434\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u0445 PostgreSQL, \u043e\u0434\u0438\u043d \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0443\u0437\u043b\u043e\u0432 \u0432 \u043f\u043b\u0430\u043d\u0435;\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 PostgreSQL \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0430\u044f \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e SQLSTATE: \u043d\u0435\u0432\u044b\u0447\u0435\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0442\u0432\u0438 CASE, collation, NaN, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f float, \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0439 kernel \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043d\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043f\u043e\u043b\u043d\u043e\u0442\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f fallback \u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 PG;\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 Cloudberry (\u043a\u0440\u043e\u043c\u0435 \u2018pg19\/\u2019) \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0438 \u043a\u043e\u0434 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u043d\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f;\u0431\u044d\u043a\u0435\u043d\u0434 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u043c \u043d\u0430 C: palloc \u0432 \u043f\u0440\u0438\u0434\u0435\u043b\u0430\u0445 \u2018work_mem\u2019, \u0441\u043f\u0438\u043b\u043b \u0432 BufFile, \u043e\u0448\u0438\u0431\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u2018ereport\u2019.\u0412\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 Cloudberry. 239 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432 PostgreSQL \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445, \u043a\u043e\u0433\u0434\u0430 vexec \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u2018off\u2019. \u0422\u0430\u043a\u0436\u0435 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 runner \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0441 \u2018off\u2019 \u043e\u0442\u0432\u0435\u0442\u044b \u0441\u0435\u0441\u0441\u0438\u0439 \u2018force\u2019 postgresql, \u2018force\u2019 arrow. \u0418 \u0432\u0441\u0435 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f, \u0432\u0440\u043e\u0434\u0435 \u043f\u043b\u0430\u043d\u043e\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u044e\u0442 \u0441\u0430\u043c\u0438 \u0442\u0435\u0441\u0442\u044b, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u044b \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0433\u043e\u043d \u043d\u0430 \u0442\u0435\u0441\u0442\u0430\u0445 \u0438\u0437 Cloudberry \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0430\u0445 \u2018force\u2019 \u0438 \u2018off\u2019, \u0430 121 \u0437\u0430\u043f\u0440\u043e\u0441 TPC-H \u0438 TPC-DS \u0441\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441 \u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438 DuckDB \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043f\u043b\u0430\u043d \u0441 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u043c \u0443\u0437\u043b\u043e\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442, \u0433\u0434\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430, \u0442\u043e\u0442 \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u0447\u0438\u0441\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 ExtensibleNodeMethods &#171;VecScan&#187; was not registered\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u0447\u0435\u043c vexec \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u043e Cloudberry \u0438 PostgreSQL.PostgreSQL \u0438 Cloudberry \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u043a\u043e\u0440\u0442\u0435\u0436 \u0437\u0430 \u043a\u043e\u0440\u0442\u0435\u0436\u043e\u043c, vexec \u0436\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 1024 \u0441\u0442\u0440\u043e\u043a, \u0432 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u0421\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u0435\u0448\u0438 L1\/L2 CPU, \u043f\u043e\u043a\u0430 \u0438\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u044e\u0442, \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u044e\u0442 \u0438 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u044e\u0442. \u041d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u043d\u0435 \u0441\u0430\u043c\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0430 \u0442\u043e, \u0433\u0434\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u044d\u0442\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u044d\u0442\u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u043f\u043e\u043a\u0438\u0434\u0430\u044e\u0442 \u0435\u0435.PostgreSQL 19Cloudberry \u0431\u0435\u0437 vexecpg_vexec \u043d\u0430 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c PostgreSQL 19pg_vexec \u0432 \u043f\u043e\u0440\u0442\u0435 Cloudberry\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u0441\u0442\u0440\u043e\u043a\u0430\u0441\u0442\u0440\u043e\u043a\u0430: \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043d\u0435\u0442\u0431\u0430\u0442\u0447 \u0434\u043e 1024 \u0441\u0442\u0440\u043e\u043a \u043f\u043e \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c; \u044f\u0434\u0440\u0430 \u043f\u043e OID \u0444\u0443\u043d\u043a\u0446\u0438\u0438, fallback \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0443\u0437\u043b\u0430\u0442\u043e \u0436\u0435 \u043d\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440\u0435 \u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435\u041a\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c-\u0441\u0443\u0434\u044f \u043f\u043e \u0442\u0435\u0441\u0442\u0430\u043c PAX, \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u043b\u0430\u043d \u0443\u0437\u0435\u043b \u0432 \u0443\u0437\u0435\u043b, \u0441\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0433\u043e\u043e\u0431\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430, \u043f\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438: path-\u0445\u0443\u043a\u0438 PostgreSQL \u0438 ORCAORCA \u0441\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0445 \u0443\u0437\u043b\u043e\u0432 \u0434\u043b\u044f MPP-\u043f\u043b\u0430\u043d\u043e\u0432, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a PostgreSQL \u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0445\u0427\u0442\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446heap \u0447\u0435\u0440\u0435\u0437 \u0441\u043b\u043e\u0442\u044bAOCO \u0438 PAX \u043e\u0442\u0434\u0430\u044e\u0442 \u0441\u043b\u043e\u0442\u044bheap \u043f\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e, \u0441 \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 MVCC; \u0434\u0440\u0443\u0433\u0438\u0435 AM&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-497825","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/497825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=497825"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/497825\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=497825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=497825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=497825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}