O and reading https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp <https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp>
indicates that it can be set on the session level as well. So we could just change the alembic scripts do try it. However MariaDB does not support it in a session so we always need to check the variable. We will also need to set it at *every* alembic script that deals with datetimes in the future. Nevertheless this might be the easiest solution. Does GCP’s MySQL also allow this setting in the session scope? B. > On 19 Oct 2018, at 18:48, Deng Xiaodong <[email protected]> wrote: > > I'm ok to test this. > > @ash, may you kindly give some examples of what exact behaviour the testers > should pay attention to? Since people like me may not know the full > background of having introduced this restriction & check, or what issue it > was trying to address. > > @Feng Lu, may you please advise if you are still interested to prepare this > PR? > > Thanks! > > > XD > > On Sat, Oct 20, 2018 at 12:38 AM Ash Berlin-Taylor <[email protected]> wrote: > >> This sounds sensible and would mean we could also run on GCP's MySQL >> offering too. >> >> This would need someone to try out and check that timezones behave >> sensibly with this change made. >> >> Any volunteers? >> >> -ash >> >>> On 19 Oct 2018, at 17:32, Deng Xiaodong <[email protected]> wrote: >>> >>> Wondering if there is any further thoughts about this proposal kindly >> raised by Feng Lu earlier? >>> >>> If we can skip this check & allow explicit_defaults_for_timestamp to be >> 0, it would be helpful, especially for enterprise users in whose >> environments it’s really hard to ask for a database global variable change >> (like myself…). >>> >>> >>> XD >>> >>> On 2018/08/28 15:23:10, Feng Lu <[email protected]> wrote: >>>> Bolke, a gentle ping..> >>>> Thank you.> >>>> >>>> On Thu, Aug 23, 2018, 23:01 Feng Lu <[email protected]> wrote:> >>>> >>>>> Hi all,> >>>>>> >>>>> After reading the MySQL documentation on the> >>>>> exlicit_defaults_for_timestamp, it appears that we can skip the check >> on explicit_defaults_for_timestamp> >>>>> = 1> >>>>> < >> https://github.com/apache/incubator-airflow/blob/master/airflow/migrations/versions/0e2a74e0fc9f_add_time_zone_awareness.py#L43> >> by> >>>>> setting the column to accept NULL explicitly. For example:> >>>>>> >>>>> op.alter_column(table_name='chart', column_name='last_modified',> >>>>> type_=mysql.TIMESTAMP(fsp=6)) -->> >>>>> op.alter_column(table_name='chart', column_name='last_modified',> >>>>> type_=mysql.TIMESTAMP(fsp=6), nullable=True)> >>>>>> >>>>> Here's why:> >>>>> From MySQL doc (when explicit_defaults_for_timestamp is set to True):> >>>>> "TIMESTAMP columns not explicitly declared with the NOT NULL attribute >> are> >>>>> automatically declared with the NULL attribute and permit NULL >> values.> >>>>> Assigning such a column a value of NULL sets it to NULL, not the >> current> >>>>> timestamp."> >>>>>> >>>>> Thanks and happy to shoot a PR if it makes sense.> >>>>>> >>>>> Feng> >>>>>> >>>>>> >>>>>> >> >>
