mudasirmirza opened a new issue, #29574:
URL: https://github.com/apache/superset/issues/29574

   ### Bug description
   
   I have added 2 data source. One ElaticSearch (named as es) and one MySQL 
(named as mysql).
   I have enabled the "querying across database" feature using the feature FLAG 
as described in 
"https://superset.apache.org/docs/configuration/databases/#querying-across-databases";
 and named the meta db as "superset_meta"
   
   Now when I go to sqllab and select "superset_meta" and then a simple query 
like below
   ```
   SELECT
       customer_id as CustomerID,
       customer_name as CustomerName
   FROM
       "es.customer_availability"
   ```
   
   I get below error
   
   ```
   Superset meta database Error
   superset error: 'str' object has no attribute 'tzinfo'
   
   This may be triggered by:
   Issue 1002 - The database returned an unexpected error. 
   ```
   
   And in the docker-compose logs, I see below
   ```
   superset_app          | 2024-07-12 
09:52:20,424:DEBUG:superset.stats_logger:[stats_logger] (timing) 
sqllab.query.time_executing_query | 1077.662841796875 
   superset_app          | 2024-07-12 09:52:20,427:DEBUG:superset.sql_lab:Query 
92: 'str' object has no attribute 'tzinfo'                                      
                                                   
   superset_app          | 2024-07-12 
09:52:20,450:DEBUG:superset.stats_logger:[stats_logger] (incr) 
SqlLabRestApi.execute_sql_query.error                                           
                              
   superset_app          | 2024-07-12 
09:52:20,451:WARNING:superset.views.base:SupersetErrorsException
   superset_app          | Traceback (most recent call last):                   
                                                                                
                                                   
   superset_app          |   File 
"/usr/local/lib/python3.10/site-packages/flask/app.py", line 1823, in 
full_dispatch_request                                                           
                           
   superset_app          |     rv = self.dispatch_request()                     
                                                                                
                                                   
   superset_app          |   File 
"/usr/local/lib/python3.10/site-packages/flask/app.py", line 1799, in 
dispatch_request                                                                
                           
   superset_app          |     return 
self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)               
                                                                                
             
   superset_app          |   File 
"/usr/local/lib/python3.10/site-packages/flask_appbuilder/security/decorators.py",
 line 95, in wraps
   superset_app          |     return f(self, *args, **kwargs)                  
                                                                                
                                                   
   superset_app          |   File "/app/superset/views/base_api.py", line 127, 
in wraps                                                                        
                                                    
   superset_app          |     raise ex                                         
                                                                                
                                                   
   superset_app          |   File "/app/superset/views/base_api.py", line 121, 
in wraps                                                                        
                                                    
   superset_app          |     duration, response = time_function(f, self, 
*args, **kwargs)                                                                
                                                        
   superset_app          |   File "/app/superset/utils/core.py", line 1463, in 
time_function                                                                   
                                                    
   superset_app          |     response = func(*args, **kwargs)                 
                                                                                
                                                   
   superset_app          |   File "/app/superset/views/base_api.py", line 93, 
in wraps
   superset_app          |     return f(self, *args, **kwargs)                  
                                                                                
                                                   
   superset_app          |   File "/app/superset/utils/log.py", line 255, in 
wrapper                                                                         
                                                      
   superset_app          |     value = f(*args, **kwargs)                       
                                                                                
                                                   
   superset_app          |   File "/app/superset/sqllab/api.py", line 409, in 
execute_sql_query                                                               
                                                     
   superset_app          |     command_result: CommandResult = command.run()    
                                                                                
                                                   
   superset_app          |   File "/app/superset/commands/sql_lab/execute.py", 
line 121, in run                                                                
                                                    
   superset_app          |     raise ex                                         
                                                                                
                                                   
   superset_app          |   File "/app/superset/commands/sql_lab/execute.py", 
line 103, in run                                                                
                                                    
   superset_app          |     status = self._run_sql_json_exec_from_scratch()
   superset_app          |   File "/app/superset/commands/sql_lab/execute.py", 
line 163, in _run_sql_json_exec_from_scratch                                    
                                                    
   superset_app          |     raise ex                                         
                                                                                
                                                   
   superset_app          |   File "/app/superset/commands/sql_lab/execute.py", 
line 158, in _run_sql_json_exec_from_scratch                                    
                                                    
   superset_app          |     return self._sql_json_executor.execute(          
                                                                                
                                                   
   superset_app          |   File "/app/superset/sqllab/sql_json_executer.py", 
line 111, in execute                                                            
                                                    
   superset_app          |     if data["errors"]:  # type: ignore               
                                                                                
                                                   
   superset_app          | superset.exceptions.SupersetErrorsException: 
[SupersetError(message="superset error: 'str' object has no attribute 
'tzinfo'", error_type=<SupersetErrorType.GENERIC_DB_ENGINE_ERROR: 
'GENERIC_DB_ENGINE_ERROR'>, level=<ErrorLevel.ERROR: 'error'>, 
extra={'engine_name': 'Superset meta database', 'issue_codes': [{'code': 1002, 
'message': 'Issue 1002 - The database returned an unexpected error.'}]})]
   superset_app          | 172.18.0.1 - - [12/Jul/2024:09:52:20 +0000] "POST 
/api/v1/sqllab/execute/ HTTP/1.1" 500 297 "http://127.0.0.1:8088/sqllab/"; 
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
Gecko) Chrome/126.0.0.0 Safari/537.36"                                          
                                                                                
                                 
   superset_app          | 2024-07-12 
09:52:21,530:DEBUG:superset.stats_logger:[stats_logger] (incr) log
   superset_app          | 172.18.0.1 - - [12/Jul/2024:09:52:21 +0000] "POST 
/superset/log/?explode=events HTTP/1.1" 200 1 "http://127.0.0.1:8088/sqllab/"; 
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
Gecko) Chrome/126.0.0.0 Safari/537.36"
   ```
   
   In the logs, I can clearly see that it fetched the data but for some reason 
it is trying to find `tzinfo` in the fetched `json` from the elasticsearch data 
source.
   
   Also in the logs, when it stared to process this query, it made a call like 
below
   ```
   superset_app          | 2024-07-12 09:52:20,052:DEBUG:elasticsearch:> 
{"query":"SHOW COLUMNS FROM \"customer_availability\"","fetch_size":10000}
   ```
   
   And after this I see the log showing the fetched columns.
   
   I am not sure why is it still trying to look for `tzinfo`.
   
   Please let me know if any more information is required from my side related 
to this issue.
   
   ### How to reproduce the bug
   
   1. Enable `ENABLE_SUPERSET_META_DB` in `superset_config.py`
   2. Add `elasticsearch-dbapi` in `docker/requirements-local.txt`
   3. Start docker `docker compose -f docker-compose-image-tag.yml up`
   4. Add ElasticSearch data source and MySQL data source and `superset` meta db
   5. Run query as shown in the main description
   
   ### Screenshots/recordings
   
   _No response_
   
   ### Superset version
   
   master / latest-dev
   
   ### Python version
   
   3.9
   
   ### Node version
   
   18 or greater
   
   ### Browser
   
   Chrome
   
   ### Additional context
   
   _No response_
   
   ### Checklist
   
   - [X] I have searched Superset docs and Slack and didn't find a solution to 
my problem.
   - [X] I have searched the GitHub issue tracker and didn't find a similar bug 
report.
   - [X] I have checked Superset's logs for errors and if I found a relevant 
Python stacktrace, I included it here as text in the "additional context" 
section.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to