Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MariaDB improvements, support 10.3 #3283

Merged
merged 1 commit into from
Sep 21, 2018
Merged

MariaDB improvements, support 10.3 #3283

merged 1 commit into from
Sep 21, 2018

Conversation

sidz
Copy link
Contributor

@sidz sidz commented Sep 10, 2018

Support for MariaDB 10.3+

Supported Reserved Keywords List Improvements: (https://mariadb.com/kb/en/library/reserved-words/)

  • Remove unsupported reserved keywords by MariaDB 10.2.
  • Support for MariaDB 10.3 reserved keywords.
  • Added MariaDB 10.3 in travis (both pdo_mysql and mysqli)

Native JSON Support (#3202) ?

MariaDB still doesn't have native support for the JSON type. I mean that it still an alias for the LONGTEXT type: https://mariadb.com/kb/en/library/json-data-type/

So In fact it still doesn't support a native JSON. Do we need to mark it as native and replace LONGTEXT via JSON ?

Work In Progress

Please fill free to let me know what I missed or may miss.

*
* @author Vanvelthem Sébastien
* @link www.doctrine-project.org
*/
final class MariaDb1027Platform extends MySqlPlatform
class MariaDb102Platform extends MySqlPlatform
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The rename is a BC break, and should be reverted: if you need an additional abstract inheritance level, adding it will be more effective than renaming herr 👍

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please keep the class name unchanged.

@sidz
Copy link
Contributor Author

sidz commented Sep 17, 2018

So need an advice. Looks like that is what I really may contribute for MariaDB 10.3 support and I don't see a lot of sense in this PR.

based on @morozov comment here #3103 (comment) it was done on purpose.

Should I separate platforms or may close this PR for now?

@morozov
Copy link
Member

morozov commented Sep 18, 2018

So need an advice. Looks like that is what I really may contribute for MariaDB 10.3 support and I don't see a lot of sense in this PR.

Adding new builds to the matrix makes perfect sense to me.

based on @morozov comment here #3103 (comment) it was done on purpose.

What exactly do you mean by "it"?

Should I separate platforms or may close this PR for now?

You mean, given that support for MariaDB 10.3 doesn't require any code changes besides the keywords, do we need a separate platform at all? I don't know. If there were changes in reserved keywords between the versions (a link would be appreciated) or the original list was inaccurate, having separate platforms would make sense.

@sidz
Copy link
Contributor Author

sidz commented Sep 18, 2018

@morozov

What exactly do you mean by "it"?

ah sorry for that.
"it" is equal to have one keywords class for 10.2 and 10.3. (#3103 (comment))
In the 10.2 INTERSECT and EXCEPT are not a reserved keys. But DBAL thinks that they are.

If there were changes in reserved keywords between the versions (a link would be appreciated) or the original list was inaccurate, having separate platforms would make sense.

proof: https://mariadb.com/kb/en/library/reserved-words/ (try to find by 10.3)
or in the release notes: https://mariadb.com/kb/en/library/mariadb-1030-release-notes/#syntax-general-features

@morozov
Copy link
Member

morozov commented Sep 18, 2018

@sidz I was okay with not having dedicated platform/keywords classes for MariaDB 10.3 at that moment and I still am. But if you think it's important to have them separated — this is fine too. I'm just curious if there are any practically visible consequences of having quotes around an identifier which doesn't have to have the quotes?

.travis.yml Outdated
php: nightly
env: DB=mariadb.mysqli MARIADB_VERSION=10.3
addons:
mariadb: 10.3
Copy link
Member

@morozov morozov Sep 18, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Six new builds for a minor platform version looks too many to me, especially given that those builds don't provide additional code coverage. Maybe having PHP 7.2 with mysqli and PHP 7.2 with pdo_mysqli would be enough?

*
* @author Vanvelthem Sébastien
* @link www.doctrine-project.org
*/
final class MariaDb1027Platform extends MySqlPlatform
class MariaDb102Platform extends MySqlPlatform
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please keep the class name unchanged.

@sidz sidz changed the title [WIP] MariaDB improvements, support 10.3 MariaDB improvements, support 10.3 Sep 19, 2018
@morozov morozov self-assigned this Sep 20, 2018
@morozov
Copy link
Member

morozov commented Sep 20, 2018

@sidz please squash. Looks good to me 👍

…nd extends them for 10.3

revert back MariaDb1027Platform
@sidz
Copy link
Contributor Author

sidz commented Sep 20, 2018

@morozov done

@morozov morozov added the CI label Sep 21, 2018
@morozov morozov dismissed Ocramius’s stale review September 21, 2018 02:31

The rename was reverted.

@morozov morozov merged commit b1f9924 into doctrine:master Sep 21, 2018
@morozov
Copy link
Member

morozov commented Sep 21, 2018

Thank you, @sidz! Merged.

@morozov morozov added this to the 2.9.0 milestone Sep 21, 2018
@sidz sidz deleted the maria-db-improvements branch September 21, 2018 05:32
@javiereguiluz
Copy link
Contributor

@sidz thanks for working on this and thanks @morozov for reviewing and merging!

rgrellmann added a commit to Rossmann-IT/dbal that referenced this pull request Apr 22, 2020
Release v2.9.0

This is a minor release of Doctrine DBAL that aggregates over 40 fixes and improvements developed by 18 contributors over the last 5 months.

This release includes all changes of the 2.8.x series, as well as feature additions and improvements that couldn't land in patch releases.

## Backwards Compatibility Breaks

This doesn't contain any intentional Backwards Compatibility (BC) breaks.

## Deprecations

* The usage of `NULL` to specify the absence of an offset in `LIMIT`ed queries is deprecated. Use `0` instead.
* It's not recommended to rely on the default length specified by implementations of `Type`. These values are not used by the library and will be removed.
* It's not recommended to rely on the string representation of `Type` objects.
* Regular-expression based asset filters are deprecated in favor of callback-based as more extensible.
* Calling `Statement::fetchColumn()` with an invalid column index is deprecated.
* The `dbal:import` CLI command is deprecated. Please use other database client applications for import.

Please see details in the [UPGRADE.md](UPGRADE.md) documentation.

## New Features

* Added support for MariaDB 10.3.
* Added support for Windows authentication for SQL Server.
* Added support for column length in index definitions on MySQL.

## Improvements and Fixes

* Implemented handling BLOB objects represented as streams in the MySQL (`mysqli`) driver.
* Implemented handling BLOB objects represented as streams in the IDM DB2 driver.
* DBAL is now continuously tested with the PDO driver for Oracle.
* Implemented handling of URLs in master-slave and pooling-shard connection configuration.
* The codebase is now fully compatible with the Doctrine Coding Standard v5.0.

Total issues resolved: **45**

**Deprecations:**

- [3244: Deprecated dbal:import CLI command](doctrine#3244) thanks to @morozov
- [3253: Deprecated usage of the NULL offset in LIMITed queries](doctrine#3253) thanks to @morozov
- [3256: Deprecate Doctrine\DBAL\Types\Type::getDefaultLength()](doctrine#3256) thanks to @Majkl578
- [3258: Deprecate Doctrine\DBAL\Types\Type::&doctrine#95;&doctrine#95;toString()](doctrine#3258) thanks to @Majkl578
- [3316: Deprecated regex-based asset filters](doctrine#3316) thanks to @morozov
- [3359: Removed DataAccessTest::testFetchColumnNonExistingIndex() since it covers a bug in PDO](doctrine#3359) thanks to @morozov

**New Features:**

- [2412: Add mysql specific indexes with lengths](doctrine#2412) thanks to @bburnichon
- [3278: Add support for MariaDB 10.3](doctrine#3278) thanks to @javiereguiluz
- [3283: MariaDB improvements, support 10.3](doctrine#3283) thanks to @sidz
- [3333: Allow windows (userless/passwordless) authentication for SQL Server](doctrine#3333) thanks to @odinsey

**Bug Fixes:**

- [3355: Implemented comparison of default values as strings regardless of their PHP types](doctrine#3355) thanks to @morozov and @Majkl578

**Improvements:**

- [3201: Fix support for URL to account for master-slave and pooling-shard connections](doctrine#3201) thanks to @stof
- [3217: Fix that MysqliStatement cannot handle streams](doctrine#3217) thanks to @mpdude
- [3235: Use PSR-4 autoloader](doctrine#3235) thanks to @Majkl578
- [3254: Throw ConversionException when unserialization fail for array and object types](doctrine#3254) thanks to @seferov
- [3259: Update export ignores](doctrine#3259) thanks to @Majkl578
- [3309: Implemented handling BLOBs represented as stream resources for IBM DB2](doctrine#3309) thanks to @morozov and @mpdude
- [3331: Fetch all should use the driver statement's fetchAll method](doctrine#3331) thanks to @michaelcullum

**Documentation Improvements:**

- [3223: GitHub template grammar/spelling fixes](doctrine#3223) thanks to @GawainLynch
- [3232: Removed NOW() from QueryBuilder usage examples](doctrine#3232) thanks to @morozov
- [3239: 2.8 in README & branch alias to 2.9](doctrine#3239) thanks to @Majkl578
- [3269: Fixed type hints in DockBlocks](doctrine#3269) thanks to @marforon
- [3275: Add .doctrine-project.json to root of the project.](doctrine#3275) thanks to @jwage
- [3276: Update homepage](doctrine#3276) thanks to @Majkl578
- [3280: Use behaviuor instead of  behavior](doctrine#3280) thanks to @BackEndTea
- [3285: Remove old comment from MysqliStatement](doctrine#3285) thanks to @mpdude
- [3318: Removed link to www.doctrine-project.org from doc blocks](doctrine#3318) thanks to @morozov
- [3319: remove ClassLoader](doctrine#3319) thanks to @garak
- [3337: Fix of links in documentation](doctrine#3337) thanks to @SenseException
- [3350: Remove pdo&doctrine#95;sqlsrv from known vendor issues list](doctrine#3350) thanks to @ostrolucky
- [3357: Fix typo](doctrine#3357) thanks to @BenMorel
- [3370: Removed 2.7 from README](doctrine#3370) thanks to @morozov

**Code Quality Improvements:**

- [3252: Replaced call&doctrine#95;user&doctrine#95;func&doctrine#95;array() of a fixed method with the usage of variadic arguments](doctrine#3252) thanks to @morozov
- [3306: Fixed coding standard violations in the codebase](doctrine#3306) thanks to @morozov
- [3303: Updated doctrine/coding-standard to 5.0, ](doctrine#3303) thanks to @morozov
- [3317: Implemented proper escaping of string literals in platforms and schema managers](doctrine#3317) thanks to @morozov
- [3363: Remove redundant implements](doctrine#3363) thanks to @BenMorel

**Continuous Integration Improvements:**

- [3307: Test against the latest stable sqlsrv extension](doctrine#3307) thanks to @morozov
- [3320: Trying to fix failing DB builds](doctrine#3320) thanks to @morozov
- [3325: Updated PHPUnit to 7.4](doctrine#3325) thanks to @morozov
- [3339: ContinuousPHP configuration for PDO Oracle driver](doctrine#3339) thanks to @morozov
- [3365: Reorganize Travis build matrix](doctrine#3365) thanks to @BenMorel

# gpg: Signature made Tue Dec  4 05:44:06 2018
# gpg:                using RSA key 374EADAF543AE995
# gpg: Can't check signature: public key not found

# Conflicts:
#	README.md
#	lib/Doctrine/DBAL/Driver/AbstractOracleDriver.php
#	lib/Doctrine/DBAL/Version.php
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 11, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants