Список изменений

Версия Дата Изменения
v2.1.2 01.07.2022
  1. Логи:
    • Функция $log->message($txt) переименована в $log->setMessage($txt).
    • Добавлена функция $log->getMessage().
    • Добавлена функция $log->getType().
  2. Улучшена нумерация генерируемых псевдонимов, теперь номера идут равномерно, без “дырок”.
  3. Если БД выкидывала ошибку и мы с помощью исключений обрабатывали ее и дальше пытались делать запросы, то обнуления массива биндов (и не только) не происходило и как следствие следующие запросы падали с ошибкой из-за лишних биндов. Теперь в случае ошибки идет корректная внутренняя очистка.
  4. По идеи ошибки описанной выше происходить не должно было, т.к. реализован механизм, при котором в запрос идут только те бинды, которые есть в запросе. Но из-за кривой регулярки иногда попадали лишние бинды. Исправлено.
v2.1.1 28.06.2022
  1. В Oracle не может быть больше 1000 элементов у оператора in. Теперь при передаче массива в where запрос с количеством элементов более 1000 ошибки не будет.
                                        $arr = [ больше 1000 элементов ];
                                        $db->sql('...')->where('/*wh*/', ['id', 'in', $arr])->all();
                                    
  2. В Log добавлена функция $log->setType($type).
  3. Добавлен второй необязательный параметр $binds для функции sql().
v2.1.0 05.05.2022
  1. Добавлена функция linkBind().
  2. Добавлена функция GP::scriptRunningTime().
  3. Добавлена функция GP::isAjax().
  4. В сокращенной записи where() параметр id обязательно должен был быть числом, теперь допускается передавать число с типом строки, справедливо и для массива id: where('/*wh*/', ['23', '42']).
  5. Добавил возможность для Oracle биндить коллекции и булевский тип.
  6. Частично исправил ошибки Deprecated для php 8.1
  7. Сделал порядок вызова функций binds() и where/whereJoin() независимым. Раньше если сначала был вызов where(), а затем binds(), то последняя функция затирала бинды сгенеренные where().
  8. Сделал имя коннекции в instance() регистронезависимым.
  9. Логи:
    • Избавился от функций: sqlBasicLog(), sqlFullLog() и getDataLog(). Вместо них появились функции: getLog() и getCanonLog().
    • Исправлен баг при котором в функции deleteLog(), если удалять нечего - вылетает ошибка.
v2.0.0 28.12.2021
  1. Исправлены inout бинды, избавился от множества дублирующих функций linkBind*
  2. Добавлены хелперы Array (GP::getVal()) и Encoding (GP::utf8() и GP::cp1251()), а также функция GP::trim().
  3. Добавлена функция insertUpdate()
  4. Добавлена функция getBind()
Версия Дата Изменения
v2.0.0-beta8 26.11.2021 Исправлен баг, при котором если ваша БД Oracle и вы одновременно используете пагинацию и агрегацию на очень тяжелых запросах, то запрос выполнялся десятки минут. Например в реальной задаче запрос без пагинации и агрегации выполнялся 11 секунд, с агрегацией и пагинацией 31 минуту, после исправления - так же 11 секунд (проблема была в операторе in).
v2.0.0-beta7 16.11.2021 Багфиксы:
  1. Для windows у GP::varDump() и у $gp->newLog() теперь правильно формируется относительный путь до php файла.
  2. Теперь у класса Log функция save() работает и для php5.4 (до этого работало только для php7).
  3. Исправлена функция createTablesForLog()
  4. Прочие небольшие правки.
v2.0.0-beta6 15.11.2021 Багфикс GP::varDumpExport().
v2.0.0-beta5 15.11.2021
  1. Добавил библиотеку "логирование процессов".
  2. Добавил хелпер Debug (функции GP::varDump() и GP::varDumpExport()).
  3. Багфикс для секретной функции whereDetailedSearch().
  4. Если в массиве биндов значений больше чем нужно, то больше ошибки не возникает, игнорируем лишние.
  5. Исправлена ошибка в функции update(), когда у нас есть ручные бинды как для where части, так и для update части.
  6. В getDebugInfo не попадали промежуточные запросы - исправил.
  7. Функции column() и map() теперь возвращают вместо false пустой массив.
  8. Добавил еще один вариант сокращенной записи для ->where('/*wh*/', [1,2,3,4]) (также для update() и delete()), если передать обычный массив с числами то он преобразуется в id in (1,2,3,4).
  9. Теперь если в update или delete для where передается пустой массив, то вызывается исключение, а не удаляются/изменяются все записи в таблице.
v2.0.0-beta4 31.08.2021
  1. Багфиксы
    • Если у php версия была ниже 8, то в функции all([...]) не работала агрегация (из за того, что 0 == ‘любой текст’ это true).
    • Если вызываются функции column() и map(), а предыдущий запрос вернул просто цифру (например при insert, update или delete), то теперь вместо ошибки функция возвращает false.
  2. У функций delete() и update() из-за предварительного select'а всех удаляемых/изменяемых записей (при большом их количестве) происходило переполнение памяти. Теперь функции возвращают просто количество этих удаляемых/изменяемых строк.
  3. Если функции delete('nameTable', true) передать вторым параметром именно true (===), то удаляются все записи из таблицы.
  4. Изменилась настройка дебага, теперь вместо 'debug' => ['isDebug' => true, 'maxNumberQuery' => 100] нужно писать 'debugQuery' => 100 или если необходимо отключить сбор информации для отладки, то указываем 'debugQuery' => 0.
    Так же можно изменить настройку в любом месте, вызвав функцию GP::configDebugQuery($numberQuery, $nameConnection).
  5. Реализована упрощенная запись функции where: where('/*wh*/', 2) === where('/*wh*/', ['id', '=', 2])
  6. Добавлена функция whereJoin()
  7. Добавлена функция inserts()
  8. Добавлена секретная функция whereDetailedSearch()
v2.0.0-beta3 13.07.2021
  1. Исправлена ошибка переполнения памяти. Если к БД идут десятки тысяч обращение, (например при синхронизации таблиц между разными БД) то была утечка памяти, связанная с пухнущим массивом логов для отладки (debugInfo()). Исправил, теперь в конфигах можно либо отключить сбор логов, либо ограничить, например по умолчанию сохраняются последние 100 запросов.
  2. Функция all() всегда возвращала массив с ключами в нижнем регистре. Исправил, теперь функция all() возвращает так как пришло из БД. Единственное исключение - агригация, в этом случае ключи массива всегда будут в нижнем регистре.
  3. Если библиотека GreenPig используется со старыми проектами у которых кодировка windows-1251, то с отображением сообщений об ошибках (от Exception) на русском будут проблемы. Самый безболезненные способ, это перевести все сообщения на английский, что и было сделано.
  4. Теперь функция count() возвращает числовой тип, а не строковый.
  5. Исправлен баг, при котором в функциях first/oneOrError('nameColumn'), если указать nameColumn, и значение ячейки будет 0 или '', то функция вернет null.
v2.0.0-beta2 02.07.2021 Убрал из зависимостей в composer.json: ext-pdo и ext-oci8. Т.к. может быть востребована только одна из зависимостей, а не обе сразу (мешает установке через composer).
v2.0.0-beta1 02.07.2021 Запуск проекта.