Releases: darkain/pudl
Version 3.1.0
Major changes in v.3.1.0:
- Changed primary branch from "master" to "main"
- Experimental forward compatibility with PHP 9.0 4acd807
- Correcting MySQL max_execution_time 66b7c98
- Benchmarking now returns start/stop instead of duration fa4ab59
- Updating $db->explain() to support FORMAT=JSON dac33f6
- Renaming version() to info() to avoid naming conflict 8dccd8c
- Adding handler for empty arrays with eq/neq functions 1ae73cd
Version 3.0.0
FINALLY releasing PUDL 3.0
The most important difference with this update is that it is no longer tied directly to the Altaform release schedule, meaning the PUDL and Altaform version numbers will no longer match. This means that both can be worked on, updated, and published entirely independent of one another!
Major changes:
- Tons of compatibility fixes for PHP 7.x, 8.0 and 8.1 (all officially supported now!)
- $order and $group arguments no longer accept raw string values. Use pudl::raw() instead to show intent: ace095e
- $column values may now express quality: 76851d9
- Simplified Altaform ingegration: 85e07cb
- Added $db->ping() methos: 603d72b
- Transaction "chunk"ing may now be committed based on time, not just the number of inserted rows: ed1337a
- MySQLi interface can now auto-reconnect: 4735a13
- You can now get the parent pudl object from a pudlResult: aba6980
- You can now get the parent pudl object from a pudlSession: c296d88
- pudlSession: Forcing SameSite restriction on PHP 7.3+: 3924f68
- Removed current HHVM version from testing suite, as 4.0 is no longer compatible: b54c0f2
- Added ability to update auth information on the fly: 75fff83
- SQLite: can now get list of tables: ab71c80
- SQLite & PostgreSQL: transaction support: 24615b4
- $autoconnect removed, replaced with "offline" configuration option: 3ca10e4
- Added $pudl->tableStatus() method: 2bd0359
- Added pudl->estimate() - similar to pudl->count() but less accurate: d5ffb10
- Added transaction savepoint support: bafe733
- Converted hard to read error messages into JSON: 96c5676
- Tons of default parameter values changed from false to NULL: cd07443
- More pudlObject functions: f3207e8
- Session status variables are now fully configurable: 68911a0
- Session cookies are now secure by default: 376b8f1
- More CREATE TABLE support: adbf3c2
- SQLite: Added exception handling: c9ef4c4
- pudlSession: add exception handling: 332d6ef
- Exceptions within exceptions no longer create infinite loops: 8ac9891
- Field names are now all lower-case: 25ef1d1
- Better compatibility with generated columns: ce79278
- PUDL configuration options may now be a JSON string instead of PHP Array: 79479ce
- Adding $pudl->exsert(): Similar to upsert, but wont update anything, and wont error on duplicate (but other errors will persist): de8c4b5
- Added pudl->check(table): 3456a9f
- Added pudl->optimize(table): a2d0c92
- Added pudl->analyze(table): 5e455dd
- Added pudl->histogram*(): a38eb9e
- Added pudl->hostname(): b26fce6
- Unit test can now optionally connect to a server: a051aee
- sql_mode is now optional and configurable: a7cc72b
- $value now accepts a "callable" and uses its returned value: 466390c
- pudl can now accept another pudl instance for instantiation, copying its auth data: b666dca
- Table prefix changed to a more advanced "name replacer": 06e30e8
- Added pudl->errors() and pudl->warnings() to query the database and have it return that data: 0bd5272
- Allow a 0 timeout value to disable timeouts entirely: 1cf5b15
- pudl::inSet() and pudl::notInSet() removed: 1d05428
- "connected" value now contains what server pudl is currently connected to (instead of true/false): 2353ab8
Version 2.9.1
MASSIVE update in preparation for Version PUDL 3.0
Besides what is listed below, there have been:
- Countless additions to method comments.
- File reorganization.
- Code formatting cleanup.
PUDL:
- Added specific types of Exceptions that all inherit from pudlException.
- Timeouts are now supported by most database drivers.
- Removed all references to global $db variable.
- pudl::$version (variable) replaced by pudl::version (constant).
- Added several more ::version_ constants.
- chunk() method no longer runs if we're not actively inside of a transaction.
- Removed support for PUDL_INDEX, PUDL_NUMBER, PUDL_BOTH. All methods will now always use PUDL_ARRAY.
- Added insertInto() and replaceInto() methods.
- Fixed JSON support in more cases.
- Added file ownership verification check. This is only used with Altaform for the time being.
- Removed MariaDB dynamic column support. We now only support JSON, since it is more universal.
- Added some UTF-8 validation testing.
- Added support for the newer Microsoft "sqlsrv" SQL Server driver.
- Legacy drivers (MySQL, MSSQL) must now be specified with "-deprecated"
- Database instance type names are now fully case insensitive.
- Added several aliases for database instance type names, such as "mariadb" and "percona"
- Added better security to session cookies in pudlSession.
- Removed HTML from error messages.
- The "prefix" configuration option now takes in an array to handle multiple prefix replacements and automatic prefix adding.
- Removed all references to $die, instead Exceptions are thrown that can be caught in cases where we don't want execution to end.
- Persistent connections are now optional everywhere.
- Changed all references from _clause() to _where() internally.
- All references to external libraries getvar and afUrl have been removed.
- Added class type hints in several locations.
- Removed $pudl->query('SQL QUERY') support, should now only use invoke via $pudl('SQL QUERY').
Query Generator:
- GENERATED columns are better detected now.
- Added method addVersioning($table) to add versioning support to a database table.
- Added experimental new syntax for simplified JOINs.
- Removed support for "LOCK FOR UPDATE" in normal method calls.
- Added support for "LOCK FOR UPDATE" to selex method.
- "UPSERT" now supported in most database engines.
- Selex now supports "HAVING" and "ON".
- Added experimental CTE support.
File Importer:
- Now throws exception instead of silently ignoring errors.
- Errors now report full JSON data, rather than just row number, to help debug data errors.
Unit Tests:
- PUDL object is now passed into every single test, so we can use multiple instances.
MySQL:
- Added check for read-only mode.
Galera:
- Added support for error code 1927 "CONNECTION WAS KILLED"
- Added randomization to connection retry, to help ensure we're not hammering a new server with many connections all at once.
Sqlite, PDO, PostgreSQL, SqlSrv:
- All massively updated to be closer to MySQL variant drivers.
pudlObject:
- Added several more methods:
** exclude()
** search()
** random()
** map()
** values()
** trim()
** ltrim()
** rtrim()
** sum()
** min()
** max()
** chunk()
Version 2.9.0
Cleaning up CLI text output.
Several updates and fixes to JSON APIs across the board.
Changed from utf8 to utf8mb4 wherever possible.
Several updates to unit testing framework to make it more streamlined.
Fixed memory leak with $db->sync().
Fixed PHP stability issues when connecting to and dealing with broken Galera nodes.
All UPDATE API calls now have limit and offset parameters.
Switched references of isset() to array_key_exists().
Switched references from is_a() to instanceof.
Removed all references to TBX.
Added more versions of PHP and HHVM to automated unit testing.
Added isnot(), opposite of is().
Version 2.8.4
pudlObject, pudlData, pudlResult, pudlOrm and others should play MUCH more nicely together now.
$db->selex() greatly improved for use with PUDL ORM
Several ORM methods renamed and updated for consistency
$pudlData->snapshot() now returns another pudlData instead of just an array
pudlOrm::create() now uses LAST_INSERT_ID()
Replaced instances of is_array() with pudl_array() to fix issues with pudlOrm
Minor bugs fixed in Excel importing and exporting.
Version 2.8.3
Added PHP 7.2 to Travis CI test suite
Added support for MariaDB 10.2 and MySQL 5.7 JSON data
Dynamic column support marked as deprecated in favor of JSON format
NOTE: any column name that ends in "_json" will automatically be parsed by JSON parser
Created pudlData interface that both pudlObject and pudlResult use
$pudlResult->tree() now fully implemented
Fixed bug in _clauseRecurse not forwarding parameters to child calls
$autoconnect paremeter is now supported on ALL PUDL instances
notRegexp now accepts variable number of arguments
All references to MD5 removed
HMAC support simplified
Fixed bug where committing a chunk of data wouldn't actually commit
Database connection errors now throw pudlException instead of using a custom error handler
Almost all references to self:: replaced with static:: to enable late static binding
Several small cleanups discovered while using static code analysis
Version 2.8.2
Any area that supported RAW SQL without explicitly using pudl::raw is either marked as deprecated or removed.
$db->datetime() now supports more input formats.
$db->increment() not has proper input data type validation.
pudl::dsc() added as an alias to pudl::desc().
Callbacks are instanced instead of global now.
Extended syntax support for ORDER BY clauses.
Updated JSON support, now has initial support for MariaDB 10.2 JSON functions.
Enhanced CACHE SALT and HASH to prevent against collisions.
Added helper functions to commit transactions in smaller chunks automatically.
$db->insert() now strips table prefix from column identifiers.
Massive updates to pudlObject for cleanup and stability.
Adding most PHP array functions directly into pudlObject.
All references to mcrypt are removed.
XLSX importers and exporters are updated and cleaned up.
Added pudlOrm::instance() to dynamically create a new instance using late static bindings.
Other various updates, see git history for more information
Version 2.8.1
Enabled MySQL "STRICT" SQL mode
pudlObject is now stable and in production use
pudlOrm is now stable and in production use
pudlCollection is now stable and in production use
All data importers/exporters moved from Altaform to PUDL
Version 2.8.0
Updated to BSD 2-clause license
af_object_array moved from Altaform as pudlObject
db_object moved from Altaform as pudlOrm
Added pudlCollection to built lists of pudlOrm objects automatically
Added pudlArrayResult - uses an array for data source instead of database
Removed dependency on HASH PHP module
Added $db->recache() - forces a cache miss and re-pull from source
$db->listFields() now supports recursion and caching
pudlExcel now supports NULL values in fields
$db->extract now verifies keys exist
$db->query() now supports several new syntaxes
Tons of other small bug fixes
Version 2.7.1
Updated XLSX file generator - owner, timestamps, formats, optimization
Removed PHPExcel support
Fixed compatibility issues with PHP 7.0 and HHVM in PHP 7.0 mode
Added new helper functions
PULD server type is no longer case sensitive
Fixed issue where if Redis became unavailable, things would break