FETCH_LAZY not properly supported for "long" columns
Đang mở
Chưa có ai nhận issue này.
Bug
Extension: pdo_odbc
Status: Needs Triage
- Ngôn ngữ chính
- C
- Star
- 40.4k
- Fork
- 8.2k
- Merge trung bình
- 2 ngày 13 giờ
- Pull request đã merge (30 ngày)
- 96
Mô tả
Description
The following code:
<?php
const SIZE = 300;
$pdo = new PDO(DSN, USER, PASS);
$pdo->exec("CREATE TABLE gh9498 (name VARCHAR(" . SIZE . "))");
$pdo->exec("INSERT INTO gh9498 VALUES ('" . str_repeat("a", SIZE) . "')");
$statement = $pdo->prepare("SELECT * FROM gh9498");
$statement->execute();
$row = $statement->fetch(PDO::FETCH_LAZY);
var_dump($row);
var_dump($row);
Resulted in this output:
object(PDORow)#3 (2) {
["queryString"]=>
string(20) "SELECT * FROM gh9498"
["name"]=>
string(300) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}
object(PDORow)#3 (2) {
["queryString"]=>
string(20) "SELECT * FROM gh9498"
["name"]=>
NULL
}
But I expected this output instead:
object(PDORow)#3 (2) {
["queryString"]=>
string(20) "SELECT * FROM gh9498"
["name"]=>
string(300) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}
object(PDORow)#3 (2) {
["queryString"]=>
string(20) "SELECT * FROM gh9498"
["name"]=>
string(300) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}
Obviously, accessing the row for the first time works as expected, but accessing it another time, does not. If SIZE < 256, accessing the row multiple times is properly supported.
PHP Version
PHP-8.0
Operating System
any
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Tái hiện ví dụ với PDO::FETCH_LAZY và một giá trị dài hơn 256 ký tự, sau đó lần theo đường dẫn fetch của PDO đối với việc truy cập lặp lại vào hàng. Thêm một kiểm thử hồi quy bao quát hành vi đã được báo cáo; được coi là hoàn tất khi cột dài vẫn khả dụng ở lần truy cập thứ hai và khớp với đầu ra mong đợi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- c, php
- Lĩnh vực
- database
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 42/100