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.94.2) (envelope-from ) id 1to6kQ-006AWg-LN for pgsql-committers@arkaria.postgresql.org; Fri, 28 Feb 2025 20:14:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1to6kR-00F0TU-Hv for pgsql-committers@arkaria.postgresql.org; Fri, 28 Feb 2025 20:14:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1to6kR-00F0TM-AS for pgsql-committers@lists.postgresql.org; Fri, 28 Feb 2025 20:14:13 +0000 Received: from mail-qt1-x834.google.com ([2607:f8b0:4864:20::834]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1to6kL-000EZ7-3B for pgsql-committers@lists.postgresql.org; Fri, 28 Feb 2025 20:14:13 +0000 Received: by mail-qt1-x834.google.com with SMTP id d75a77b69052e-4721aede532so25470461cf.2 for ; Fri, 28 Feb 2025 12:14:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1740773649; x=1741378449; darn=lists.postgresql.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :from:references:cc:to:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=kez3CJlsENxMXphieT+0U6TSkC9igPruvp0wp1sS+pc=; b=w+SDU+QQWiMNXH2J94e5hogaVwuRX2BPlxj0gI9Hv38dgEgNBNK7OKSdDlTU9odvlK NTEGgvfzUDwzfFwfagm+jezunPfr1hUXYF3HdjMGdtJmQK1rn9RfuznOxZeh9mGMu2AR 54bLP7mw1Xz5kU3HuXgdp5s3jfpbFWFW24UOMuwKXsa0izE4Za3RJ4ycepwvJR5yFtr1 ksuSUpgDGORcpHWtlwdLaZO9sFcz12fX4/IhMuymTzBl4ZWRHkAIhbY8hJzU6lire1K+ jEHujp+BUXzEmOmBSLOrzNwVExDCOQRpq3/3MvH4onsJQ+EtjXJDnYAVz8dLW78tfzNx oUUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740773649; x=1741378449; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :from:references:cc:to:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kez3CJlsENxMXphieT+0U6TSkC9igPruvp0wp1sS+pc=; b=edjz/jNsuwthN3b5/P+rVrJ4tCaDfuvhq+31qkA/f+Vt68YdpruwprvslavacZ4oXX noTqjz5sHTX9WJGP05a5GDtEU/YP/KREmdlTWPpDVH/acqwd8JFNxvR/o+lMpvf4DqF3 HsEwyfdcgqYiWE2xhYlmEs+JwINJyv+IAkShF+4XR+LETtw5g4Qp+iqHo7JQWg/tkPSg YqdnUEPomKDN/b3v+LQgTyDJqVN/222wLXxA163XQsY7QFg+Dxsa/8pfUqMScZrc8jex 4vdI2ZA13ZVwJWkOz3FZV+zbvMjXs9vqHtore+0B/5zGm+RygU/mTBT6MkH8LD/qF9UD 2Vkw== X-Forwarded-Encrypted: i=1; AJvYcCX/x6SIR/eij9Mz6hrd1KvkNT71lEjo3CgkB08Z+iBvsUUcOkuvDhlIy6bohlutSLxF7mA/br3s43vT7bQHBu/4@lists.postgresql.org X-Gm-Message-State: AOJu0Yw6n/9EXXeXilAdS5/B5tu0mmX0svwsyhirQFMF8eUNHSKgRLqN /xeJ56DY9CmaZko8nzRa5QXetyiEUjEKhs4N5g2UNxTft83dwQpRuLXj6yZ6NQQ= X-Gm-Gg: ASbGncs7FM7lZFOMtMO9sJTj+tooTGHK7UykyNewpVUd+aZodD3vfnrhR7kfQLZ6nkA E2uk5roi38NfRuGPG75Sxd3mVK729JybA8OBNg5JBsbC+hTQ9N96LcbsqZXjWac9Vktc65S0fsr chcx9bkOtnv1syIe7XSExc0DcD1tEED1llqieCDiypDvWPQ7xfavOj0iCA7+9esqu7EGuimr2lx tb8kTfi/MYRpyvAxjqqbNKt5LRxkfMLtJ/ddYtDb1ueVWG8jQJejeHhunVjqYaVqu8FYisNLjD+ e9LiMbSLe2I1oltLihFD2JiE+rUvMR/kSUdmYwUEcvXxEVbZ37lUr+c= X-Google-Smtp-Source: AGHT+IGxeaFKlOTZAB7Yi4g7IAsF5U9TOm2L/I+HCFu2CGHKAO6MLnZefwrt5ZVfuEpXmuAym8emDg== X-Received: by 2002:a05:622a:1446:b0:472:fa6:ce41 with SMTP id d75a77b69052e-474bc10e3f8mr57996071cf.44.1740773649495; Fri, 28 Feb 2025 12:14:09 -0800 (PST) Received: from ?IPV6:2605:a601:a681:6b00::1cb? ([2605:a601:a681:6b00::1cb]) by smtp.googlemail.com with ESMTPSA id d75a77b69052e-4747243102bsm28013671cf.76.2025.02.28.12.14.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 28 Feb 2025 12:14:09 -0800 (PST) Message-ID: Date: Fri, 28 Feb 2025 15:14:07 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pgsql: Refactor COPY FROM to use format callback functions. To: Masahiko Sawada Cc: Masahiko Sawada , pgsql-committers@lists.postgresql.org References: <5c7e1ac8-5083-4c08-af19-cb9ade2f16ce@dunslane.net> From: Andrew Dunstan Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAmwQTAQgARQIbAwIX gAIZAQULCQgHAgMiAgEGFQoJCAsCBBYCAwECHgcWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUC ZFlxxwUJGVGAbgAKCRCZ+n/LWfw7gXikB/9ZdcUy6CTBFIIuL/bVsc1eLEW/gJBjJBF6HxNY xgEkAgXAp4Lg4A5U+QB9GouFr7+GYxF0BU4hzoGhNPUWltxnHdMWP8nC/38LAqgMi8L/bbsm HW5YPBdWYaAZAPJQVfOAgjTbRUb26KSprpyrrJKW0ZmrZfjhNPcQ72jpWzoPLQqx2X6B0fru 1jq+cBh8lb6r1mJTim1T3JIn+F/v5VpdQS+EL8xqsHkfzKjIPsW3CIXpkypSk6saA55Rkkbl 26AW8ftPVB0Q6Lnn6FLt9CP0MGNixBQ55yq8r1K+nCBvCCjvQjM8RDm0UUum0WNl+ifQgTLO E8TWEnwVtkBf+3QWzsBNBE7KWFkBCADRnOM0FCzsYW6jtncg+dWIagjUZpvaClmqn/sJluLa Q3v1VXMQJzYs3eC1gh386W+XBwLRpDj3jzH81lX+p73Re3d3oJW7X+ffsxuzu5ZVdMUkqBYo nkAbKxr6gyJ12F/+JkUVzLcoTN+d/7YsQvUVi7NaKH8mJgjz112O4fUe3p9wfAaFa0RXHc5S GPzRTYRRlv/XZBIho4J2tkZOnteZJZ+GbxQVlINt6fd8P6al3MWOvpP/ExJPguEfjOsO6Njy xjo3WfpD4lHMOR/Oc3/8mScEF84rF2jXbsFgelWnbPWAvXY+pD0dXOFRkagGmC/viwBDqq5b 5tk76kKmUbZxABEBAAHCwHwEGAEIACYCGwwWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUCZFlx 5wUJGVGAjgAKCRCZ+n/LWfw7gf+iB/4g8CPY5jihf5r/8EsoIGe2H+dpVmpPF8YGBzTIvCz/ fQoOq8AX/pE76QEuFnFZWfjw+wgBXgCVmkox2Eflkk6z4ND3pcwGZ6CfCxTQCDk/dij+2DQ4 6bmDCy/sBgcbz9mTpoLC11HLoPae6YN9nBNQRZDcEFEu54OaVOqlIdbA6m+POIBCXZdHOFc0 WoDTgxHRzC1jgQNidyd6tKqcsVJs0dzF0oKTmFFmUAqTdJO12LBuNA1rlqrR3EtpYk8B/wtS 5dIMD7Q8hwQpL+4C6GNpb6ZKnPkLi47pDOLhz2qBrqN+rqUEsT3YnExYpzj5yOBi+FlmV1Hw 49QYe1sn2ZPs In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 2025-02-28 Fr 2:55 PM, Masahiko Sawada wrote: > On Fri, Feb 28, 2025 at 11:47 AM Andrew Dunstan wrote: >> >> On 2025-02-28 Fr 1:31 PM, Masahiko Sawada wrote: >> >> Refactor COPY FROM to use format callback functions. >> >> This commit introduces a new CopyFromRoutine struct, which is a set of >> callback routines to read tuples in a specific format. It also makes >> COPY FROM with the existing formats (text, CSV, and binary) utilize >> these format callbacks. >> >> This change is a preliminary step towards making the COPY FROM command >> extensible in terms of input formats. >> >> Similar to 2e4127b6d2d, this refactoring contributes to a performance >> improvement by reducing the number of "if" branches that need to be >> checked on a per-row basis when sending field representations in text >> or CSV mode. The performance benchmark results showed ~5% performance >> gain in text or CSV mode. >> >> Author: Sutou Kouhei >> Reviewed-by: Masahiko Sawada >> Reviewed-by: Michael Paquier >> Reviewed-by: Andres Freund >> Reviewed-by: Tomas Vondra >> Reviewed-by: Junwang Zhao >> Discussion: https://postgr.es/m/20231204.153548.2126325458835528809.kou@clear-code.com >> >> >> >> This patch has completely broken the file_textarray fdw, which uses NextCopyFromRawFields(). Removing that from API is not a good thing. >> > Thank you for pointing it out. > > I've just posted my analysis[1] and am planning to revive that API > (Sutou-san already proposed an idea). Could you please check if the > idea would work for file_text_array_fdw? > Looks OK, I think. You could even use the Internal function further down in the file and avoid a function call. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com