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

Fix compatibility for pre-2.7 DateIntervalType format #3097

Merged

Conversation

Majkl578
Copy link
Contributor

@Majkl578 Majkl578 commented Apr 7, 2018

After #2579 DateIntervalType always expects a sign, which is not there for records created by pre-2.7 DBAL.

Fixes #3093.


if (substr($value, 0, 1) === '-') {
if ($value[0] === '+' || $value[0] === '-') {
Copy link
Member

Choose a reason for hiding this comment

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

The value may be an empty string, so before it gets converted to an interval, we'll have a notice. Probably, the previous approach with substr() should be used instead.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Used isset.
Note that using substr('', 1) produces FALSE, not empty string, but no warning. #php

@Majkl578 Majkl578 force-pushed the fix/#3093-dateinterval-legacy-format branch from 82576c6 to 0aa75d8 Compare April 7, 2018 17:59
@morozov morozov merged commit f2d1f37 into doctrine:master Apr 7, 2018
@Majkl578 Majkl578 deleted the fix/#3093-dateinterval-legacy-format branch April 7, 2018 18:40
@morozov
Copy link
Member

morozov commented Apr 7, 2018

Back-ported to 2.7 via f62711a.

rgrellmann added a commit to Rossmann-IT/dbal that referenced this pull request Apr 13, 2018
This release fixes unintentional BC breaks:

1. It was impossible to use deprecated fetch modes with PDO-based drivers.
2. An unsupported option passed to the `Column` object prevented subsequent options from being applied.
3. Date interval values stored prior to upgrade to `v2.7.0` were reported as invalid.

Total issues resolved: **10**

**Backwards Compatibility Fixes:**

- [3082: Custom PDO fetch modes and 2.7.0](doctrine#3082) thanks to @corphi
- [3088: Fix doctrine#3082: Add BC for PDO-only fetch modes](doctrine#3088) thanks to @corphi
- [3089: Don't skip column options.](doctrine#3089) thanks to @andytruong
- [3093: When updating to version v2.7 type DateInterval throws errors](doctrine#3093) thanks to @fnagel
- [3097: Fix compatibility for pre-2.7 DateIntervalType format](doctrine#3097) thanks to @Majkl578

**Documentation Improvements:**

- [3083: Document the correct way of configuring a MariaDB database with serverVersion](doctrine#3083) thanks to @tristanbes
- [3084: README: Add 2.7, drop 2.5](doctrine#3084) thanks to @Majkl578

**Continuous Integration Improvements:**

- [3085: Tests: remove implicit verbose flag](doctrine#3085) thanks to @Majkl578
- [3090: Add symfony tests listener](doctrine#3090) thanks to @greg0ire
- [3095: CI: Add missing listener for MariaDB @ mysqli](doctrine#3095) thanks to @Majkl578

# gpg: directory `/n/.gnupg' created
# gpg: new configuration file `/n/.gnupg/gpg.conf' created
# gpg: WARNING: options in `/n/.gnupg/gpg.conf' are not yet active during this run
# gpg: DBG: locking for `/n/.gnupg/pubring.gpg.lock' done via O_EXCL
# gpg: keyring `/n/.gnupg/pubring.gpg' created
# gpg: Signature made Sun Apr  8 07:24:49 2018     using RSA key ID 543AE995
# gpg: Can't check signature: public key not found

# Conflicts:
#	.gitignore
#	lib/Doctrine/DBAL/Driver/OCI8/Driver.php
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 12, 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.

2 participants