Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vzmro-001Jhw-2Z for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Mar 2026 02:30:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vzmrm-001Q0a-0D for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Mar 2026 02:30:38 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vzmrl-001Q0R-1d for pgsql-hackers@lists.postgresql.org; Tue, 10 Mar 2026 02:30:38 +0000 Received: from mail-dy1-x1335.google.com ([2607:f8b0:4864:20::1335]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vzmri-00000001NvN-0hV8 for pgsql-hackers@postgresql.org; Tue, 10 Mar 2026 02:30:35 +0000 Received: by mail-dy1-x1335.google.com with SMTP id 5a478bee46e88-2bdd40d3c61so10604091eec.1 for ; Mon, 09 Mar 2026 19:30:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773109833; cv=none; d=google.com; s=arc-20240605; b=H42WbRT10QEnP+xsDkQfeczJGu2Wtq+NCGkHnDhPgf1fl0HwCXszVWO0CfD8hasrEn rRPGFWkdSG29c1WrfW0gU0fdmw4r4T9FpQM6xqNo7klWauZt2AJArQcLPC87PY1wm1qS zPpmp1HHR8qX9ljxjdwhlkFHc33GW8hknGbpuyEvn7W+u9Ik/10KO0l+W1u3e02f5PiK borjhmziA5MmP0c5rMsedSCH5kuGrAonvCt2MNSl5OT+jHISDhWm62h2JdOn/yEUldLW 5yjoFava2k7QPzuszFWPwmn1DzlaQlbods/8owI7mvVOQaoHUhw7eYO0ckIB+n1ipGyG O2UQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=RCESHfg/OaXF8Mm2GdvyVBrsvG9YX0OTyMXlC8Es40s=; fh=hn0vWvUPABT0LRh1d/y6ymbJSVOvssGVBVdsKSm1K1g=; b=JWj1K0+c9GEOz8bc/spCa4xPt2RlKq4e2Oedk18zRVpjokZJiF5qtXOUvYdmQzsIPW fu5uHypN/Lvn8WGcULKp0/c2YpOPEo6MVi0DmsKT2pp1TSVDgwDsJ8uJe8ctxNoFGzq2 TcNqD8AzLWjTaLX1CzLxhdAupO4m4M4vHHruP9eEv4ks92m/hd8d4HYpEZk+mB1PdsUy jIdRzMlPjuDb3QvC9znjmcQJYhHotEBHBYr12ZnLoSXVOfkgAjs47PFILqGO3fNG/uzq 4nT1z2a/uSl4IIl/RvJFfbc9OH6XiaJco+gHjYM+Cq1tDkq+0yeW6N9atAaRWbKfg3/W c2Xg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1773109833; x=1773714633; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=RCESHfg/OaXF8Mm2GdvyVBrsvG9YX0OTyMXlC8Es40s=; b=VJwdOdTbB875S2akJ6XfdpUeXoEVzfkTNyC6v8WEDmx2iDcLCb8xESLni6/JpwKfpc aqYYcRBz1Q8ZqyZITdoxWl0s2owWSCgZwNCHz2oSXYMFV954HAQ73vkTdxqO6oVpbgYS p9YiriO9271KhjcnH9rsa7hwfReDfl84/DT6F1Hp8bmZ1PtSLLS6sOSJ4xmDje4mishe ntF1671+zeAl5CKHca3UF3LMtCDVQxHuhSDYWS68uQaSe+A6G/QR7nGGniivyiHgSxsr G+A2wwg0XydGHWRNGi9m8miKPEx/5Q374UsvJEh98QFX6iVJnw+kVD8O8XUYlxGA8TZw 3mjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773109833; x=1773714633; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=RCESHfg/OaXF8Mm2GdvyVBrsvG9YX0OTyMXlC8Es40s=; b=pJ1+9H+JM+ACybYnKM+GKuoSji6CpZuUsJ9B8CRyRKGqNaaaGhDGykDVFMNGAzqMLk tZXxOopRTgkGmeHR9yFuMUD2vrguHIgAQVbB69xqHCZooJ+nHyECLzIF5UQTTVLU/Mq9 7II4V9d6kkcrQuD4rmSC1qw7SG5+NM48HJ/FiK/ct5yFBrd4CsWoXetP56REXpYp6xQD 1p9ihDPalOY136xoT9+LTk4l8NhUe33oSwZrtKW8gPPyldl0fxUtkSFP9tGQeHYfpD4J qb87+tHPPvLOlT60HQFl1MPhxe777YtuxI2FC0EzqWd2g6jdKMSzqF8KEdilzmgsN7gv +dbg== X-Forwarded-Encrypted: i=1; AJvYcCVbbWexlxkwLBoTMQ6KH2WSMnWj6UNugOk2JxIzXYo3ic9avzY5p2QRHQFZx24S52koT1uB7vSGQW3hvusT@postgresql.org X-Gm-Message-State: AOJu0Ywm3md0agB1So3Sy2QY9+15cGYzNhn0PIWihU3jLYxxhjqR1uDR upiIvaOasjFTyZHhUamzl/Na7gC+o/R0f0d0Ima2DF9JzTwFkPSezLRNefgP09xXHwOC2FMjjkK G4fIdU8LAYrh6ozqiO6PAhIRxX8VJvQW80xNIEnnp X-Gm-Gg: ATEYQzzgwhrUqeo77nICIh50S+gJmpzdinr6bTI2buxoiiAWeeoQVADFL8kyawRwxZa y4liU1PlO05AV6SjD+KAgw1thq5iJ04P1x3/SwmEuWtC8w1O4z4RsAImFji2s80EEIE0lXx5TXb 5WjvVV7AP3X0oxmAWgKyuGPHC62iNsiLpGcXSugQo3E1bwS8BjUS8Eg2q0BKs3M3a+kKpqLZLHx h55zhbzQGjZvhTzqWpIhFOtw9km6GbWFLW/lXl2ExOYdWmdVt4N78hrMkB1PD3r4AysQMRTZF7N 7igQYkC/ X-Received: by 2002:a05:7300:148b:b0:2be:1f56:ecf6 with SMTP id 5a478bee46e88-2be4de93525mr4759762eec.6.1773109832860; Mon, 09 Mar 2026 19:30:32 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Manni Wood Date: Mon, 9 Mar 2026 21:30:21 -0500 X-Gm-Features: AaiRm52j8IJ-O-6EtO0pl7hVfGsB7KxSfr4aZms_3maDBUVfoiQd1NoSmq6IErg Message-ID: Subject: Re: Speed up COPY FROM text/CSV parsing using SIMD To: Nathan Bossart Cc: Nazir Bilal Yavuz , KAZAR Ayoub , Neil Conway , Andrew Dunstan , Shinya Kato , PostgreSQL-development Content-Type: multipart/alternative; boundary="000000000000bc55e7064ca24dbc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bc55e7064ca24dbc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 9, 2026 at 1:25=E2=80=AFPM Nathan Bossart wrote: > On Wed, Mar 04, 2026 at 06:15:53PM +0300, Nazir Bilal Yavuz wrote: > > +#ifndef USE_NO_SIMD > > +static bool CopyReadLineTextSIMDHelper(CopyFromState cstate, bool > is_csv, > > + > bool *temp_hit_eof, int *temp_input_buf_ptr); > > +#endif > > Should we inline this, too? > > > + /* > > + * Do not disable SIMD when we hit EOL or > EOF characters. In > > + * practice, it does not matter for EOF > because parsing ends > > + * there, but we keep the behavior > consistent. > > + */ > > + if (!(simd_hit_eof || simd_hit_eol)) > > + cstate->simd_enabled =3D false; > > nitpick: I would personally avoid disabling it for EOF. It probably > doesn't amount to much, but I don't see any point in the extra > complexity/work solely for consistency. > > > + /* > > + * We encountered a EOL or EOF on the > first vector. This means > > + * lines are not long enough to skip full= y > sized vector. If > > + * this happens two times consecutively, > then disable the > > + * SIMD. > > + */ > > + if (first_vector) > > + { > > + if > (cstate->simd_failed_first_vector) > > + cstate->simd_enabled =3D > false; > > + > > + cstate->simd_failed_first_vector = =3D > true; > > + } > > The first time I saw this, my mind immediately went to the extreme case > where this likely regresses: alternating long and short lines. We might > just want to disable it the first time we see a short line, like we do fo= r > special characters. This is another thing that we can improve > independently later on. > > > + /* First try to run SIMD, then continue with the scalar path */ > > + if (cstate->simd_enabled) > > + { > > + int temp_input_buf_ptr =3D input_buf_= ptr; > > + bool temp_hit_eof =3D false; > > + > > + result =3D CopyReadLineTextSIMDHelper(cstate, is_csv, > &temp_hit_eof, > > + > &temp_input_buf_ptr); > > + input_buf_ptr =3D temp_input_buf_ptr; > > + hit_eof =3D temp_hit_eof; > > Given CopyReadLineTextSIMDHelper() doesn't have too much duplicated code, > moving the SIMD stuff to its own function is nice. The temp variables se= em > a bit too magical to me, though. If those really make a difference, IMHO > there ought to be a big comment explaining why. > > -- > nathan > Here are some benchmarks showing what performance will look like for users who continue to use default_toast_compression =3D pglz. all compiled by meson with debugoptimized (-g -O2) arm NARROW master without inline (git revert dc592a41557b072178f1798700bf9c69cd8e4235) default_toast_compression =3D pgl= z TXT : 10055.141000 ms CSV : 10549.174500 ms TXT with 1/3 escapes: 10213.864750 ms CSV with 1/3 quotes: 12188.039000 ms arm NARROW master with inline with v11patch default_toast_compression =3D p= glz TXT : 10070.153750 ms -0.149304% regression CSV : 10161.348750 ms 3.676361% improvement TXT with 1/3 escapes: 10618.005000 ms -3.956781% regression CSV with 1/3 quotes: 12279.366250 ms -0.749319% regression arm WIDE master without inline (git revert dc592a41557b072178f1798700bf9c69cd8e4235) default_toast_compression =3D pgl= z TXT : 11355.602750 ms CSV : 13893.110500 ms TXT with 1/3 escapes: 12872.690500 ms CSV with 1/3 quotes: 16722.262500 ms arm WIDE master with inline with v11patch default_toast_compression =3D pgl= z TXT : 9001.007250 ms 20.735099% improvement CSV : 8988.679750 ms 35.301171% improvement TXT with 1/3 escapes: 12191.137000 ms 5.294569% improvement CSV with 1/3 quotes: 16297.541500 ms 2.539854% improvement x86 NARROW master without inline (git revert dc592a41557b072178f1798700bf9c69cd8e4235) default_toast_compression =3D pgl= z TXT : 26243.084500 ms CSV : 27719.564000 ms TXT with 1/3 escapes: 29578.192750 ms CSV with 1/3 quotes: 34467.571250 ms x86 NARROW master with inline with v11patch default_toast_compression =3D p= glz TXT : 26371.996750 ms -0.491224% regression CSV : 26137.186500 ms 5.708522% improvement TXT with 1/3 escapes: 28080.201000 ms 5.064514% improvement CSV with 1/3 quotes: 32557.377500 ms 5.542003% improvement x86 WIDE master without inline (git revert dc592a41557b072178f1798700bf9c69cd8e4235) default_toast_compression =3D pgl= z TXT : 28734.774750 ms CSV : 35700.485000 ms TXT with 1/3 escapes: 32376.878250 ms CSV with 1/3 quotes: 47024.985750 ms x86 WIDE master with inline with v11patch default_toast_compression =3D pgl= z TXT : 22753.755750 ms 20.814567% improvement CSV : 22977.195500 ms 35.638982% improvement TXT with 1/3 escapes: 29526.887000 ms 8.802551% improvement CSV with 1/3 quotes: 40298.196750 ms 14.304712% improvement --=20 -- Manni Wood EDB: https://www.enterprisedb.com --000000000000bc55e7064ca24dbc Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Mon, Mar 9, = 2026 at 1:25=E2=80=AFPM Nathan Bossart <nathandbossart@gmail.com> wrote:
On Wed, Mar 04, 2026 at 06:15:53PM +030= 0, Nazir Bilal Yavuz wrote:
> +#ifndef USE_NO_SIMD
> +static bool CopyReadLineTextSIMDHelper(CopyFromState cstate, bool is_= csv,
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 bool *temp_hit_eof, int *temp_input_buf_= ptr);
> +#endif

Should we inline this, too?

> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/*
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * Do not disable SIMD when we hit EOL o= r EOF characters. In
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * practice, it does not matter for EOF = because parsing ends
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * there, but we keep the behavior consi= stent.
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 */
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (!(simd_hit_eof || simd_hit_eol))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cstate->s= imd_enabled =3D false;

nitpick: I would personally avoid disabling it for EOF.=C2=A0 It probably doesn't amount to much, but I don't see any point in the extra
complexity/work solely for consistency.

> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/*
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * We encountered a EOL or EOF on the fi= rst vector. This means
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * lines are not long enough to skip ful= ly sized vector. If
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * this happens two times consecutively,= then disable the
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 * SIMD.
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 */
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (first_vector)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (cstate-&= gt;simd_failed_first_vector)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0cstate->simd_enabled =3D false;
> +
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cstate->s= imd_failed_first_vector =3D true;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0}

The first time I saw this, my mind immediately went to the extreme case
where this likely regresses: alternating long and short lines.=C2=A0 We mig= ht
just want to disable it the first time we see a short line, like we do for<= br> special characters.=C2=A0 This is another thing that we can improve
independently later on.

> +=C2=A0 =C2=A0 =C2=A0/* First try to run SIMD, then continue with the = scalar path */
> +=C2=A0 =C2=A0 =C2=A0if (cstate->simd_enabled)
> +=C2=A0 =C2=A0 =C2=A0{
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0int=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0temp_input_buf_p= tr =3D input_buf_ptr;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bool=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 temp_hit_eof =3D false;
> +
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0result =3D CopyReadLi= neTextSIMDHelper(cstate, is_csv, &temp_hit_eof,
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0&temp_input_buf_ptr);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0input_buf_ptr =3D tem= p_input_buf_ptr;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0hit_eof =3D temp_hit_= eof;

Given CopyReadLineTextSIMDHelper() doesn't have too much duplicated cod= e,
moving the SIMD stuff to its own function is nice.=C2=A0 The temp variables= seem
a bit too magical to me, though.=C2=A0 If those really make a difference, I= MHO
there ought to be a big comment explaining why.

--
nathan

Here are some benchmar= ks showing what performance will look like for users who continue to use de= fault_toast_compression =3D pglz.

all compiled by = meson with debugoptimized (-g -O2)

arm NARROW master without inline = (git revert dc592a41557b072178f1798700bf9c69cd8e4235) default_toast_compres= sion =3D pglz
TXT : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 10055.141000 ms
CSV : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 10549.174500 ms
TXT with 1/3 escapes: 10213.864750 ms
CSV = with 1/3 quotes: =C2=A012188.039000 ms

arm NARROW master with inline= with v11patch default_toast_compression =3D pglz
TXT : =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 10070.153750 ms =C2=A0-0.149304% = regression
CSV : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= 10161.348750 ms =C2=A0 3.676361% improvement
TXT with 1/3 escapes: 1061= 8.005000 ms =C2=A0-3.956781% regression
CSV with 1/3 quotes: =C2=A012279= .366250 ms =C2=A0-0.749319% regression

arm WIDE master without inlin= e (git revert dc592a41557b072178f1798700bf9c69cd8e4235) default_toast_compr= ession =3D pglz
TXT : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 11355.602750 ms
CSV : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 13893.110500 ms
TXT with 1/3 escapes: 12872.690500 ms
C= SV with 1/3 quotes: =C2=A016722.262500 ms

arm WIDE master with inlin= e with v11patch default_toast_compression =3D pglz
TXT : =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 9001.007250 ms =C2=A020.735099% i= mprovement
CSV : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= 8988.679750 ms =C2=A035.301171% improvement
TXT with 1/3 escapes: 12191= .137000 ms =C2=A05.294569% improvement
CSV with 1/3 quotes: =C2=A016297.= 541500 ms =C2=A02.539854% improvement


x86 NARROW master without = inline (git revert dc592a41557b072178f1798700bf9c69cd8e4235) default_toast_= compression =3D pglz
TXT : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 26243.084500 ms
CSV : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 27719.564000 ms
TXT with 1/3 escapes: 29578.192750 ms<= br>CSV with 1/3 quotes: =C2=A034467.571250 ms

x86 NARROW master with= inline with v11patch default_toast_compression =3D pglz
TXT : =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 26371.996750 ms =C2=A0-0.4= 91224% regression
CSV : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 26137.186500 ms =C2=A0 5.708522% improvement
TXT with 1/3 escape= s: 28080.201000 ms =C2=A0 5.064514% improvement
CSV with 1/3 quotes: =C2= =A032557.377500 ms =C2=A0 5.542003% improvement

x86 WIDE master with= out inline (git revert dc592a41557b072178f1798700bf9c69cd8e4235) default_to= ast_compression =3D pglz
TXT : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 28734.774750 ms
CSV : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 35700.485000 ms
TXT with 1/3 escapes: 32376.878250 = ms
CSV with 1/3 quotes: =C2=A047024.985750 ms

x86 WIDE master wit= h inline with v11patch default_toast_compression =3D pglz
TXT : =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 22753.755750 ms =C2=A020.8= 14567% improvement
CSV : =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 22977.195500 ms =C2=A035.638982% improvement
TXT with 1/3 esc= apes: 29526.887000 ms =C2=A0 8.802551% improvement
CSV with 1/3 quotes: = =C2=A040298.196750 ms =C2=A014.304712% improvement
--
-- Manni Wood EDB: https://www.enterprisedb.com
--000000000000bc55e7064ca24dbc--