Skip to content

Moved the binary wire format for receiving to the receive func#2458

Merged
Hydrocharged merged 1 commit into
mainfrom
daylon/receive-funcs
Mar 19, 2026
Merged

Moved the binary wire format for receiving to the receive func#2458
Hydrocharged merged 1 commit into
mainfrom
daylon/receive-funcs

Conversation

@Hydrocharged

Copy link
Copy Markdown
Collaborator

No description provided.

@Hydrocharged Hydrocharged requested a review from zachmu March 16, 2026 14:22
@github-actions

github-actions Bot commented Mar 16, 2026

Copy link
Copy Markdown
Contributor
Main PR
covering_index_scan_postgres 575.85/s ${\color{lightgreen}1004.82/s}$ ${\color{lightgreen}+74.4\%}$
index_join_postgres 123.00/s ${\color{lightgreen}148.96/s}$ ${\color{lightgreen}+21.1\%}$
index_join_scan_postgres 180.59/s 187.61/s +3.8%
index_scan_postgres 10.91/s 11.35/s +4.0%
oltp_point_select 2383.85/s 2356.06/s -1.2%
oltp_read_only 1682.11/s 1705.40/s +1.3%
select_random_points 110.71/s 121.05/s +9.3%
select_random_ranges 437.14/s ${\color{lightgreen}771.81/s}$ ${\color{lightgreen}+76.5\%}$
table_scan_postgres 10.64/s 11.19/s +5.1%
types_table_scan_postgres 4.92/s 4.99/s +1.4%

@github-actions

github-actions Bot commented Mar 16, 2026

Copy link
Copy Markdown
Contributor
Main PR
Total 42090 42090
Successful 17713 17783
Failures 24377 24307
Partial Successes1 5563 5573
Main PR
Successful 42.0836% 42.2499%
Failures 57.9164% 57.7501%

${\color{lightgreen}Progressions (71)}$

float4

QUERY: SELECT float4send('5e-20'::float4);
QUERY: SELECT float4send('67e14'::float4);
QUERY: SELECT float4send('985e15'::float4);
QUERY: SELECT float4send('55895e-16'::float4);
QUERY: SELECT float4send('7038531e-32'::float4);
QUERY: SELECT float4send('702990899e-20'::float4);
QUERY: SELECT float4send('3e-23'::float4);
QUERY: SELECT float4send('57e18'::float4);
QUERY: SELECT float4send('789e-35'::float4);
QUERY: SELECT float4send('2539e-18'::float4);
QUERY: SELECT float4send('76173e28'::float4);
QUERY: SELECT float4send('887745e-11'::float4);
QUERY: SELECT float4send('5382571e-37'::float4);
QUERY: SELECT float4send('82381273e-35'::float4);
QUERY: SELECT float4send('750486563e-38'::float4);
QUERY: SELECT float4send('1.17549435e-38'::float4);
QUERY: SELECT float4send('1.1754944e-38'::float4);

float8

QUERY: SELECT float8send('2.2250738585072014E-308'::float8);

random

QUERY: (SELECT unique1 AS random
  FROM onek ORDER BY random() LIMIT 1)
INTERSECT
(SELECT unique1 AS random
  FROM onek ORDER BY random() LIMIT 1)
INTERSECT
(SELECT unique1 AS random
  FROM onek ORDER BY random() LIMIT 1);

rowtypes

QUERY: create temp table quadtable(f1 int, q quad);
QUERY: create temp table people (fn fullname, bd date);
QUERY: create temp table pp (f1 text);
QUERY: insert into pp values (repeat('abcdefghijkl', 100000));
QUERY: select ROW(1,2) < ROW(1,3) as true;
QUERY: select ROW(1,2) < ROW(1,NULL) as null;
QUERY: select ROW(1,2,3) < ROW(1,3,NULL) as true;
QUERY: select ROW(11,'ABC') < ROW(11,'DEF') as true;
QUERY: select ROW(12,'ABC') > ROW(11,'DEF') as true;
QUERY: select ROW(1,2,3) < ROW(1,NULL,4) as null;
QUERY: select ROW(1,2,3) <> ROW(1,NULL,4) as true;
QUERY: select ROW(1,2) = ROW(1,2::int8);
QUERY: select ROW(1,2) in (ROW(3,4), ROW(1,2));
QUERY: select ROW(1,2) in (ROW(3,4), ROW(1,2::int8));
QUERY: select thousand, tenthous from tenk1
where (thousand, tenthous) >= (997, 5000)
order by thousand, tenthous;
QUERY: create temp table test_table (a text, b text);
QUERY: insert into test_table values ('a', 'b');
QUERY: insert into test_table select 'a', null from generate_series(1,1000);
QUERY: insert into test_table values ('b', 'a');
QUERY: create index on test_table (a,b);
QUERY: set enable_sort = off;

Footnotes

  1. These are tests that we're marking as Successful, however they do not match the expected output in some way. This is due to small differences, such as different wording on the error messages, or the column names being incorrect while the data itself is correct.

@zachmu zachmu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall this seems fine.

Where are the tests for the binary wire format? Are those part of an earlier PR, or do we think we get coverage from our normal use the pg connection library?

Ideally there is a way to configure that library to turn the binary protocol on or off, and we run each ScriptTest twice, once for each setting. If not, we should maybe get claude to write something for us, because we really need good coverage for both serialization paths.

Comment thread server/types/type.go
Comment thread server/types/type.go
Comment thread server/functions/char.go
Comment thread server/functions/int2vector.go
Comment thread server/functions/name.go
Comment thread server/functions/oidvector.go
@Hydrocharged Hydrocharged force-pushed the daylon/receive-funcs branch 3 times, most recently from 1614b6d to 413d49a Compare March 18, 2026 10:12

@zachmu zachmu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@Hydrocharged Hydrocharged force-pushed the daylon/receive-funcs branch from 413d49a to ca935f6 Compare March 19, 2026 09:54
@Hydrocharged Hydrocharged enabled auto-merge March 19, 2026 09:54
@Hydrocharged Hydrocharged merged commit 34c4a5a into main Mar 19, 2026
17 of 18 checks passed
@Hydrocharged Hydrocharged deleted the daylon/receive-funcs branch March 19, 2026 10:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants