Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:130542 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by lists.php.net (Postfix) with ESMTPS id 614F81A00BC for ; Fri, 3 Apr 2026 12:29:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1775219394; bh=9PR88pyrOo6lz1Si0M3g5AslPlwVe9EvrYFzRQfNzDw=; h=From:Date:Subject:To:Cc:From; b=IljFRrnLoe7HQY+ncSWXItkjt0PXoLpJirqw2hnh4XKLyNvM2DM87L7RjbIugXb16 6FKc72kgmoeM37qGayyauHalr/dO4IZOdIQOOfXVJ6LOs0Xf1yunrSTD5eKWoJPIzS r8wxqLA98XhtjlWv0QCvrXlqON5iWZ0X24HuLnKm11eYA/MJz4d9vDjtNblawF5KU8 S1WreLWBBtzeSeBCp84QZu6IqcdSK0/9tGH6NSjQpb8KvErO/b1BL2ma9wsuc8SPfi d9sBPLhsR21et0ta6yfc7PYx2ToOSfAcX1cwk57EQJfIKwQM61cD3klmS7LOZSYRml 5GEO3I19cKgmQ== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 6690118007D for ; Fri, 3 Apr 2026 12:29:53 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_50, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS, HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Fri, 3 Apr 2026 12:29:53 +0000 (UTC) Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-4887fd35e60so11864095e9.2 for ; Fri, 03 Apr 2026 05:29:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775219386; cv=none; d=google.com; s=arc-20240605; b=ftpRKQYYf5C2C0xYkDtF4OvLuGuWXoHTEplUPknRoVn442gkyoCw2hMGw9Khw3kY+h VLaQz6D/dGwTGlalbfubvumIN9FBluCxZ50Wf4RWhV77egLdLRhQr+h3j9TPsRUVEGNs KxNiyfdTSm6pjm6qLRSq302yosGDuFOkL/jA8lAtpOch7QQjwBMoe6PZADxq+sK52i1J lyMnTp+77aNlyt7jabkyIWqHl2fQex87M0f3vzesZdQXCSOVMyAA7A59rFAlK4NCRt/g lFbIb4zl4TX2WjaltFqODuk1+WgkKNh+mPO4on3q7JclgnPCOY+X3fBRtIsHwvMVamts fpHA== 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:mime-version:dkim-signature; bh=LZEu918b+uvHTXI9n9MiD3C3myXE3p+hrSujMu2mILs=; fh=95mhgHiV/s+ScLSU0JW8c02gQMCM4vTRhQHi43XZz9o=; b=MQpdusN7WT6uNRyu/2twkHdPy1dFFT+u0iMcgNtaYUJWV1yOOIzv810prRK11Tc2jl 5vmMXx3ey8Wpx3w/CjrzfuwILDDc52+MDEGb7HKTjwyXACbtiJnA8Y0Z9ftYEBUMmTns 3meZoSu5dwTc16wsqs+eX6zzREXMJ2/0KZE3A3GJtevd4MYW7t+FDpirmjEyKmJyGqZF jF7uIJGe3e9X+ZQlXmGtR0mw2gs4X36fwBOsbIFOePQS18vfCz+jmRDs5XwSQeWq5E1m nmcNbfZfNH+/IR6/d+xHuGXL0uJed3RB3eN15KKkxJKpfw5ObJ/Qo6hIQd66OgsUCwuu 252w==; darn=lists.php.net ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ilia.ws; s=google; t=1775219386; x=1775824186; darn=lists.php.net; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=LZEu918b+uvHTXI9n9MiD3C3myXE3p+hrSujMu2mILs=; b=f9J4YhtkTbc+yzkIpmthPXEFuSnBRUhRt2pYe9ogM7/YigEKgD6RDgbajkMk4KktOX tPJOM5i+V0Hv53v/Xqd6paTKZHP4OyeqonO8OaZC+CIsa6KFXaLTFU3wj9RD8CSZD2nY d9pnwfNA9sRbYvoK2IQ+T41ql9tzgwtbuyrdZyv0zHiwntukrEqw8bEZqSqQq+tIAH5V PkvhSJTI5xHfZ5q0SzAG8H6g9F1jBbEdM8XBnkk5wfKP94AUhhoxQTYH9y5ujTF3LNOr F5xhY+dhuVPgrk2B+OkvErULjm8ExvvKf+A7s20D76fXk3/L+AltP2mE0B9iWo5QlfCV kO1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775219386; x=1775824186; h=cc:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=LZEu918b+uvHTXI9n9MiD3C3myXE3p+hrSujMu2mILs=; b=paO1PAH7EzuWStP1CT6TERWwWR+aEXIKUfx6/SBtiHPt5TFdTwB6eBij03rXYQ4N2s qE4PibFRD3irYusONnTjoAowVHBRAOFSPEBqzu6JWs1uveKsOYEm2fEyOh/CFT29n+ga ubB+K+NOtXYCiNCRdscZVBeY2KzTdPHQ75knFf+iho3n97za4jym5GwDArJBJgYwFTTv ZxLV043YS6vEWfYl55W9uNcOv8QABq+hbWrN+6agJlx2yvp1OeOMfeCYf7BSmLgX29cT IeletIOEvNioXDsltnS4bCkERErY63P/xLYr05rzkdVafKtNIyOxyI1Qj+NcMQKvMDTb d0Eg== X-Gm-Message-State: AOJu0YzKxK/Y14yfTppM28z4EY1pW5zfQG/LrZwgfgV3B0XlWHyeNzzn 2UNxhMyCWDXHSYuHLZpKFBvuGMwh3tuKk7aYyooqGjIbRjKrKO/wONah5t3aSL8Eh2qjcgLYI6Y SiRETJwOH8nQLcE23LWbKEuQNKkWpCE8ZIkA7LBYk0cxqLr42Wz6qxA== X-Gm-Gg: ATEYQzxjQFkWKPuKGg5yrjMM65x1z/BN7bgiCkmDv7ehI1e78dSeyI7lN/tV25Wd/ha 24pCLhD6g0ZTpOwhR88/anfxw0tYIO7J0VsE0Vt/vOEqwrHknohMCSHObBPoimze9wDT0FastWY u4MA4XNRDWqsBKkIoVhajoXDSEIAh0HWJzgY/01Pktrb3Y0taBOIfFqc6ZTTw9UGEeO4WippQdF jyuAUJOZiiYLK+49CYL0JF9LThBeh2adZt+cCyB550F6EN0OqkyqXd2bX5UXtfv776sB5K1S9iq JuafhUt+RhUcrKbadFAK0o2EfQ0QIvYmJcF9p3v/Di5zb0jaYPBuNz0Wezu+XpSXcSfn X-Received: by 2002:a05:600c:c8f:b0:487:243f:dc3e with SMTP id 5b1f17b1804b1-488996d23e7mr38108945e9.6.1775219386314; Fri, 03 Apr 2026 05:29:46 -0700 (PDT) Precedence: list list-help: list-unsubscribe: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 Date: Fri, 3 Apr 2026 08:29:34 -0400 X-Gm-Features: AQROBzBrvXRP-N37gdQ7JrGWp4jvjtj5Lr1nySA3on4RSHK-BgojO_LjkVARQfY Message-ID: Subject: [PHP-DEV] PDO SQLite: statement attributes for SQL text retrieval To: PHP Developers Mailing List Cc: saki@php.net Content-Type: multipart/alternative; boundary="000000000000eb86e0064e8d787c" From: ilia@ilia.ws (Ilia) --000000000000eb86e0064e8d787c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi internals, I'm looking for feedback on a small pdo_sqlite addition. PR: https://github.com/php/php-src/pull/21456 Implements: https://github.com/php/php-src/issues/21322 Two new read-only statement attributes on Pdo\Sqlite: - Pdo\Sqlite::ATTR_SQL =E2=80=94 original SQL text of a prepared statement = (via sqlite3_sql()) - Pdo\Sqlite::ATTR_EXPANDED_SQL =E2=80=94 SQL with bound parameters inlined= (via sqlite3_expanded_sql()) $stmt =3D $db->prepare('SELECT :name AS greeting'); $stmt->bindValue(':name', 'hello'); $stmt->execute(); $stmt->getAttribute(Pdo\Sqlite::ATTR_SQL); // "SELECT :name AS greeting" $stmt->getAttribute(Pdo\Sqlite::ATTR_EXPANDED_SQL); // "SELECT 'hello' AS greeting" This mirrors SQLite3Stmt::getSQL() from the non-PDO API, but uses PDO's getAttribute() mechanism rather than adding a driver-specific method. The attribute system is how PDO drivers expose driver-specific functionality, so it's a natural fit. ATTR_EXPANDED_SQL is gated behind a configure check for sqlite3_expanded_sql availability. I don't think this needs a full RFC given the scope (two read-only attributes, single driver, no BC impact), but I wanted input from the list. Thoughts? --=20 Ilia Alshanetsky Technologist, CTO, Entrepreneur E: ilia@ilia.ws T: @iliaa B: http://ilia.ws --000000000000eb86e0064e8d787c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi internals,

I'm looking for feedback on = a small pdo_sqlite addition.

PR: https://github.com/php/php-src/pull/21456
Impleme= nts: https://github= .com/php/php-src/issues/21322

Two new read-only statement attrib= utes on Pdo\Sqlite:
- Pdo\Sqlite::ATTR_SQL =E2=80=94 original SQL text o= f a prepared statement (via sqlite3_sql())
- Pdo\Sqlite::ATTR_EXPANDED_S= QL =E2=80=94 SQL with bound parameters inlined (via sqlite3_expanded_sql())=

$stmt =3D $db->prepare('SELECT :name AS greeting');
$= stmt->bindValue(':name', 'hello');
$stmt->execute(= );

$stmt->getAttribute(Pdo\Sqlite::ATTR_SQL); =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0// "SELECT :name AS greeting"
$stmt->getAt= tribute(Pdo\Sqlite::ATTR_EXPANDED_SQL); // "SELECT 'hello' AS = greeting"

This mirrors SQLite3Stmt::getSQL() from the non-PDO A= PI, but uses PDO's getAttribute() mechanism rather than adding a driver= -specific method. The attribute system is how PDO drivers expose driver-spe= cific functionality, so it's a natural fit.

ATTR_EXPANDED_SQL is= gated behind a configure check for sqlite3_expanded_sql availability.
<= br>I don't think this needs a full RFC given the scope (two read-only a= ttributes, single driver, no BC impact), but I wanted input from the list.<= br>
Thoughts?

--
Ilia Alshanetsky
Technologist, CTO, Entrepr= eneur
T: @iliaa=C2=A0
--000000000000eb86e0064e8d787c--