Kevin Campbell created AIRFLOW-2799:
---------------------------------------

             Summary: Filtering UI objects by datetime is broken 
                 Key: AIRFLOW-2799
                 URL: https://issues.apache.org/jira/browse/AIRFLOW-2799
             Project: Apache Airflow
          Issue Type: Bug
          Components: ui, webserver
    Affects Versions: Airflow 2.0
         Environment: Debian Stretch, Python 3.5.3
            Reporter: Kevin Campbell


On master (49fd23a3ee0269e2b974648f4a823c1d0b6c12ec) searching objects via the 
user interface is broken for datetime fields.

Create a new installation
 Create a test dag (example_bash_operator)
 Start webserver and scheduler
 Enable dag

On web UI, go to Browse > Task Instances
 Search for task instances with execution_date greater than 5 days ago
 You will get an exception
{code:java}
                          ____/ (  (    )   )  \___
                         /( (  (  )   _    ))  )   )\
                       ((     (   )(    )  )   (   )  )
                     ((/  ( _(   )   (   _) ) (  () )  )
                    ( (  ( (_)   ((    (   )  .((_ ) .  )_
                   ( (  )    (      (  )    )   ) . ) (   )
                  (  (   (  (   ) (  _  ( _) ).  ) . ) ) ( )
                  ( (  (   ) (  )   (  ))     ) _)(   )  )  )
                 ( (  ( \ ) (    (_  ( ) ( )  )   ) )  )) ( )
                  (  (   (  (   (_ ( ) ( _    )  ) (  )  )   )
                 ( (  ( (  (  )     (_  )  ) )  _)   ) _( ( )
                  ((  (   )(    (     _    )   _) _(_ (  (_ )
                   (_((__(_(__(( ( ( |  ) ) ) )_))__))_)___)
                   ((__)        \\||lll|l||///          \_))
                            (   /(/ (  )  ) )\   )
                          (    ( ( ( | | ) ) )\   )
                           (   /(| / ( )) ) ) )) )
                         (     ( ((((_(|)_)))))     )
                          (      ||\(|(|)|/||     )
                        (        |(||(||)||||        )
                          (     //|/l|||)|\\ \     )
                        (/ / //  /|//||||\\  \ \  \ _)
-------------------------------------------------------------------------------
Node: wave.diffractive.io
-------------------------------------------------------------------------------
Traceback (most recent call last):
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py",
 line 1116, in _execute_context
    context = constructor(dialect, self, conn, *args)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/engine/default.py",
 line 649, in _init_compiled
    for key in compiled_params
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/engine/default.py",
 line 649, in <genexpr>
    for key in compiled_params
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/sql/type_api.py",
 line 1078, in process
    return process_param(value, dialect)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy_utc/sqltypes.py",
 line 30, in process_bind_param
    raise ValueError('naive datetime is disallowed')
ValueError: naive datetime is disallowed

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/flask/app.py",
 line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/flask/app.py",
 line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/flask/app.py",
 line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/flask/_compat.py",
 line 33, in reraise
    raise value
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/flask/app.py",
 line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/flask/app.py",
 line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/flask_admin/base.py",
 line 69, in inner
    return self._run_view(f, *args, **kwargs)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/flask_admin/base.py",
 line 368, in _run_view
    return fn(self, *args, **kwargs)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/flask_admin/model/base.py",
 line 1818, in index_view
    view_args.search, view_args.filters)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/flask_admin/contrib/sqla/view.py",
 line 969, in get_list
    count = count_query.scalar() if count_query else None
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/orm/query.py",
 line 2843, in scalar
    ret = self.one()
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/orm/query.py",
 line 2814, in one
    ret = self.one_or_none()
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/orm/query.py",
 line 2784, in one_or_none
    ret = list(self)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/orm/query.py",
 line 2855, in __iter__
    return self._execute_and_instances(context)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/orm/query.py",
 line 2878, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py",
 line 945, in execute
    return meth(self, multiparams, params)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/sql/elements.py",
 line 263, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py",
 line 1053, in _execute_clauseelement
    compiled_sql, distilled_params
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py",
 line 1121, in _execute_context
    None, None)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py",
 line 1402, in _handle_dbapi_exception
    exc_info
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/util/compat.py",
 line 203, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/util/compat.py",
 line 186, in reraise
    raise value.with_traceback(tb)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/engine/base.py",
 line 1116, in _execute_context
    context = constructor(dialect, self, conn, *args)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/engine/default.py",
 line 649, in _init_compiled
    for key in compiled_params
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/engine/default.py",
 line 649, in <genexpr>
    for key in compiled_params
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy/sql/type_api.py",
 line 1078, in process
    return process_param(value, dialect)
  File 
"/home/kev/.virtualenvs/airflow/local/lib/python3.5/site-packages/sqlalchemy_utc/sqltypes.py",
 line 30, in process_bind_param
    raise ValueError('naive datetime is disallowed')
sqlalchemy.exc.StatementError: (builtins.ValueError) naive datetime is 
disallowed [SQL: 'SELECT count(%(count_2)s) AS count_1 \nFROM task_instance 
\nWHERE task_instance.execution_date > %(execution_date_1)s'] [parameters: [{}]]
{code}

This appears to have been introduced in 
https://issues.apache.org/jira/browse/AIRFLOW-288

I've written a patch for this, which appears to resolve the issue. Will raise a 
PR.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to