powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / PDO Firebird bugs
25 сообщений из 222, страница 7 из 9
PDO Firebird bugs
    #39671076
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поздравляю! :)

Анатолий (weltling) там человек добрый, русский, работает в MS, Германии.
Наверное отвечает за php под windows, во многом помогал при правке багов.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
PDO Firebird bugs
    #39859977
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наконец-то в ветку PHP 7.4 приняли мой патч для нативной поддержки типа BOOLEAN во входных параметрах

PDO firebird support type Boolean in input parameters
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39859990
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисНаконец-то в ветку PHP 7.4 приняли мой патч для нативной поддержки типа BOOLEAN во входных параметрах

PDO firebird support type Boolean in input parameters
Поздравляю
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39882551
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В PHP 7.4 PDO будет поддерживать базы данных в 1 диалекте. Мой патчи применили

Add support for Interbase 1 dialect
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39882636
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень хорошо!
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39890196
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci
Насчет execute block и обработка параметров, вот что есть щас: https://gist.github.com/madorin/83300eaf3d9044bc6e56a710b3700368
new_sql - полученный результат, в хэш списке - именные параметры.
Логика там простая и быстрая, но есть проколы, например не учитывает и комменты (--, /* */).
Супер навороченный парсер/лексер врядли там понадобится но хочется красивое решение.
Нужно в начале определить если "execute block (" и обработать до ")" с существующем алгортиме и все что после передать как есть.
Надо еще учитывать комменты, пробелы, табы и ретурны LF/CRLF.
Все гики и параноики по оптимизации приветствуется :)


hvlad
Dorin MarcociНасчет execute block и обработка параметров
Возможно, будет полезным посмотреть на аналогичный код из поддержки EXECUTE STATEMENT:

https://github.com/FirebirdSQL/firebird/blob/master/src/jrd/extds/ExtDS.cpp

см. Statement::preprocess() и getToken() строки с 1001 по 1240

сделал https://github.com/php/php-src/pull/4920
вроде работает. Осталось дождаться ревьювера и оформить по их правилам, и написать тесты. Владу спасибо за подсказку
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39890630
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
;) Денис, это невероятно круто, спасибо за труд!

Есть еще какие-то косяки помню с транзакциями (параметры и несколько паралельных) и вообще получится конфетка.
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39890639
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci,

ну пока это не приняли, я ничего нового делать не буду.
Там это рихтовать скорее всего ещё придётся.

Если вспомнишь в чём именно косяки посмотрю потом.
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39890644
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci,

если ты про несколько транзакций внутри соединения, то на это проще забить. PDO архитектурно этого не поддерживает, ибо интерфейс у него обобщённый на разные СУБД. А такое поддерживает только 2 (IB и FB). Впрочем в пыхе оно и не сильно надо
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39890670
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
если ты про несколько транзакций внутри соединения, то на это проще забить. PDO архитектурно этого не поддерживает, ибо интерфейс у него обобщённый на разные СУБД. А такое поддерживает только 2 (IB и FB). Впрочем в пыхе оно и не сильно надо

Это я знаю ) но думал теоретически может как в файрдаке добавить какой-то PDOTransaction обьект

Еще параметры транзакций были вшиты как read-commited или точно помню что там было что-то, проверю )
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39890717
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociЭто я знаю ) но думал теоретически может как в файрдаке добавить какой-то PDOTransaction обьект

теоретически можно, но боюсь коммунити такое изменение зарежет на корню. Ибо этот PDOTransaction надо передавать в PDOStatement::execute. А не так как сделали в ibase_ (они к prepare привязали)

Лучше уж тогда написать нормальный нативный драйвер.

Dorin MarcociЕще параметры транзакций были вшиты как read-commited или точно помню что там было что-то, проверю )

там SNAPSHOT. Если нужны другие уровни изолированности, то можно стартовать транзакцию через

Код: php
1.
$dbh->exec('SET TRANSACTION ...')



по идее. Надо проверить кстати работает ли.
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39890769
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было бы удобно передать изолированность транзакции в конструкторе PDO обьекта. Другие драйверы делают что-то подобное.

public PDO::__construct ( string $dsn [, string $username [, string $passwd [, array $options ]]] ) << здесь

Кто-то даже начал очень давно такое:
https://github.com/php/php-src/blob/e208d236b3f8af855e219ea3abc796b8dd9d0d5d/ext/pdo_firebird/firebird_driver.c#L276
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39890815
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
теоретически можно, но боюсь коммунити такое изменение зарежет на корню. Ибо этот PDOTransaction надо передавать в PDOStatement::execute. А не так как сделали в ibase_ (они к prepare привязали)

Можно же менее хардкорно, например
Код: php
1.
2.
PDO->transaction(params)  // creates a new PDOTransaction
PDOTransaction->prepare // creates a new PDOStatement


И весь существующий код будет работать и не мешать другим :)
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39890831
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci,

а толку то? Ещё повторю подготовленные запросы не привязаны к транзакции и далее могут выполняться сколько угодно раз в разных транзакциях
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #39890990
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
подготовленные запросы не привязаны к транзакции

ок, а так? тоже не ломает совместимость.
Код: php
1.
2.
3.
$transaction = PDO->transaction(params);
$statement->setTransaction($transaction);
$statement->execute();
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #40002412
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну наконец-то применили мой патч

Fix #64937: Firebird PDO preprocessing sql

Теперь в PHP 8.0

- параметры внутри однострочных и многострочных комментариев игнорируются
- можно выполнять операторы {CREATE [OR ALTER] |ALTER|RECREATE} {PROCEDURE|FUNCTION}. Двоеточие внутри тела процедуры, функции, триггера, анонимного блока или пакета не рассматривается как маркер параметра. Для заголовков EXECUTE BLOCK происходит отдельная обработка (параметры обрабатываются только между EXECUTE BLOCK и AS). Теперь этот оператор можно смело использовать.
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #40002443
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
ну наконец-то применили мой патч
Это радует :)
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #40002447
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

молодец
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #40002643
inoremap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
Для заголовков EXECUTE BLOCK происходит отдельная обработка (параметры обрабатываются только между EXECUTE BLOCK и AS)
Спасибо, уберу, наконец, смайлики /*'*/ после begin
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #40072482
avp_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Осваиваю работу с FB через PDO. Пока не понял как правильно работать с транзакциями. Можно ли по дефлоту всегда использовать режим read commited, nowait?
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #40072488
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp_
Можно ли по дефлоту всегда использовать режим read commited, nowait?
машина может быть любого цвета, если она чОрная! (С)

ответ: нет.
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #40072491
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp_,

можно, а зачем?

Чем не устраивает стандартный SNAPSHOT?
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #40072492
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тут писал как задавать уровень изолированности транзакции

https://habr.com/ru/post/317458/
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #40072559
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp_,

собственно, Денис уже ответил, а вся другая дока по ФБ на русском (включая его статью) есть тут
http://www.ibase.ru/develop/
...
Рейтинг: 0 / 0
PDO Firebird bugs
    #40072585
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> есть тут http://ibase.ru/develop/

Ты бы когда дизайн менял лучше
бы контент (структуру) причесал:

- почему раздел (адрес) документация
называется "develop", а не doc[umentaion]?
сделай редирект, это ведь несложно;
- почему он вообще идёт подразделом
раздела "Статьи", а не отдельным пунктом?
- почему библиотеки, драйверы (не статьи о
них, а ссылки) и пр. идут в разделе "Статьи"?

Ну и т.д.

Понятно, что так колхоз исторически
сложился, но таки 2021 год на дворе...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 222, страница 7 из 9
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / PDO Firebird bugs
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]