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.98.2) (envelope-from ) id 1x9OAJ-00000001yGG-0mcT for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Sep 2026 14:41:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1x9OAI-000000061T6-1aTY for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Sep 2026 14:41:42 +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.98.2) (envelope-from ) id 1x9OAI-000000061Sy-0JaN for pgsql-hackers@lists.postgresql.org; Wed, 23 Sep 2026 14:41:42 +0000 Received: from mail-qk2-x11.google.com ([2607:f8b0:4864:34::11]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1x9OAF-00000000rxs-1nFF for pgsql-hackers@postgresql.org; Wed, 23 Sep 2026 14:41:40 +0000 Received: by mail-qk2-x11.google.com with SMTP id d75a77b69052e-52fb76906adso18400511cf.0 for ; Wed, 23 Sep 2026 07:41:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790174498; x=1790779298; darn=postgresql.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=K1H+i1Yu0ITvLNyX8bjcQBgzB3L12FMuNju5rkKJyVI=; b=NmcRc6EHyrOR3E+8/GsDX7T7aZNj9yRLAKfg59Mjb/BubpGFWuZ8hBh5ZAy1E9qSBM XE2C0bUvp4PZGbF85PWBVSSlXNMvzE0EYUYxJNgRTWGXFgLnhrXTGYDdopSAMSVsOHs3 fZL8aR/6Y7jMd3T+GJzfx8ibFNu8Jt0BLv9atkAD8AWPidvTMKYTGq1w5uPin0AEdXOV L6GKFOuDUaWSWqtjIMcls6Blvh9x5nrk/0Q4+h22WCHMLel/aIj9mqZrwBNdK9fCnQkj cdHfuIRGmD0+TUUzf1yTre1LDxgb1/2me0w1oGjZ5ug0Cbfq23Po46i3DaMy6aLQq4tE e0iA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790174498; x=1790779298; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=K1H+i1Yu0ITvLNyX8bjcQBgzB3L12FMuNju5rkKJyVI=; b=TxYY6RzN6h+5ZiTZNWXIwM96wkF7ty4TqgrmaC29qZwzytt5RtoVtT6ZBJCfop7sIv 9EiHB4WdKWvoj8em1vVfHQSydf+Vbgsgrhk1A9lDZ6S0rsKZFhwC/ZIIxHKFtSlLmjU9 VDNc+AY4K6Y0kpxL0MhmLJY12owuQOSYh+7X4pYMeJP3am9HeWSFY15EQn8D3a3Eg8DP WJ+LASovecPSwaAXWuymwa6sMLiEY1SVqdZtYB5ECZMCdaqiybbhTfl2KqS8w9/fJ+qK IutzHyhfK2jQBNAjS1H63zh2ZVYSeLholNeSeKkdU8E1/STjMHPBycJBzs1++ZlUpxvH iayA== X-Gm-Message-State: AFuF++nuuxHtgG6yRzqO5S60pL969YjgCOYQ6QYenNxbTd6Pv+ehE04a 1fROJ/ojncS+fMeagsl0iVAc3943qk/RJAZ0F8E4RGGDL5ml5tF1W9t9 X-Gm-Gg: AYBFou1jKrR0f+x0WuPuFxWSQJq7ENF9cogGxp7gfFljvWRU1dnDcKzwdAUbJlwD6N7 Q2Bx6oykt2SzbQkDCIo5UfhVEvY3CBf35gpqbBbNRzf9pNOveaZN6k2tGR+2zckcJJHFFVHt9/x weWIRORDxUkYeYPLbgYCWr5YO/mUNZzfu3QOWd5FENaAh2Wd9kL8bs6Hh+5LXFggL7FWFt8EZiC dCBUSXzG8T1P5oNnpiaiwnYAZpA2xj2ek5fFd1e5TGcHdoo6CuQwByhuzbrHw5SPobIoFWmC/Zz T+bU5sqszd7X3AguiduQk/A+bqym36izqvQYajViwH1KNkbl9EmT1o3SC3pCLSPV6WyMOKuZN6N RCNxGGGLxm2gOM0mfkbvSCT1CdnDCZqgJ2DgO3ykVs0Cm1lBszh2DlYnYB06GdqhwS3/xzeIRYu OtkBOl3XZWj04l2AUHFN5+lNzukUDlQ8Ct2YHZIB91GoWekwwAdDT3l4WLgmXQ+jSnQWzCJr5RU 5XzX0BuZnVrw9aW5Vxo9iKMvLFF5dHo/LRTl+MJmwgwVDdzFd8Q8BizAUiuM5amO3t4DaT6hHwk ys7WZvd28XkiW8bW4cSUD9HsjA== X-Received: by 2002:a05:622a:180a:b0:532:91e0:bca8 with SMTP id d75a77b69052e-532eacf590emr43116921cf.40.1790174498463; Wed, 23 Sep 2026 07:41:38 -0700 (PDT) Received: from nathan (162-195-168-172.lightspeed.stlsmo.sbcglobal.net. [162.195.168.172]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-532eb1e29a8sm20823951cf.7.2026.09.23.07.41.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Sep 2026 07:41:37 -0700 (PDT) Date: Wed, 23 Sep 2026 09:41:36 -0500 From: Nathan Bossart To: Sehrope Sarkuni Cc: Pg Hackers Subject: Re: Speed up lpad() and rpad() for one-byte padding strings Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Wed, Sep 23, 2026 at 10:10:09AM -0400, Sehrope Sarkuni wrote: > lpad() and rpad() pad one character at a time, calling > pg_mblen_range() and memcpy() once per padding char. When the padding > string is a single byte, e.g., lpad(x, n, '0') or rpad(x, n, ' '), > the padding is that byte repeated, so the attached patch fills it with > one memset(). I wonder if we could expand these gains by using SIMD whenever the vector length is divisible by the padding string length. My hunch is that's where a lot of the memset() gains come from. -- nathan