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

Correct timedelta value for negative MySQL TIME datatype #352

Merged
merged 1 commit into from
Aug 30, 2021
Merged

Correct timedelta value for negative MySQL TIME datatype #352

merged 1 commit into from
Aug 30, 2021

Conversation

dongwook-chan
Copy link
Collaborator

  1. minimum value for MySQL TIME datatype:
    '-838:59:59.000000' = ADDTIME('-838:00:00', ADDTIME('-00:59:00', '-00:00:59'))

  2. appropriate timedelta representation of the same value in Python:
    datetime.timedelta(hours=-838, minutes=-59, seconds=-59)
    = -1 * datetime.timedelta(hours=838, minutes=59, seconds=59)

'sign' must be multiplied to the entire timedelta,
not just to the 'hours' timedelta as in the existing code.
https://github.com/noplay/python-mysql-replication/blob/3de6ff499f7695a800409341f4f859cac5b724d0/pymysqlreplication/row_event.py#L287-L292

refer to convert_timedelta() in pymysql:
https://github.com/PyMySQL/PyMySQL/blob/fb10477caf21122a89d7f216a0670d49dd2aa5d2/pymysql/converters.py#L219-L227

Datatype tests were modified to test the correct minimum value for TIME datatype.

1. minimum value for MySQL TIME datatype:
'-838:59:59.000000' = ADDTIME('-838:00:00', ADDTIME('-00:59:00', '-00:00:59'))

2. appropriate timedelta representation of the same value in Python:
datetime.timedelta(hours=-838, minutes=-59, seconds=-59)
= -1 * datetime.timedelta(hours=838, minutes=59, seconds=59)

'sign' must be multiplied to the entire timedelta value,
not just to the 'hours' value as in the existing code.

refer to convert_timedelta() in pymysql:
https://github.com/PyMySQL/PyMySQL/blob/master/pymysql/converters.py#L189

Datatype tests were modified to test the correct minimum value for TIME datatype.
@julien-duponchelle
Copy link
Owner

Sorry for the delay I will review shortly

@dongwook-chan
Copy link
Collaborator Author

No worries, please take your time.

@julien-duponchelle julien-duponchelle merged commit 689c7f7 into julien-duponchelle:main Aug 30, 2021
@julien-duponchelle
Copy link
Owner

Release soon :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants