sqlitis icon indicating copy to clipboard operation
sqlitis copied to clipboard

BUG: Failure to convert SQL query

Open ShubhamKaudewar opened this issue 4 years ago • 0 comments

Description

I tried using sqlitis to convert a SQL query and received an error.

Failing command (required)

[BUG] Failed to convert CONCAT(distributorToUserFund.fundName, '__' ,distributorToUserFund.adviserUsername) to model

Debug Logs (required)

Instructions: Re-run the sqlitis command with the --debug flag. For example, sqlitis --debug <YOUR_SQL_QUERY>.

DEBUG:sqlitis.cli:Version info
DEBUG:sqlitis.cli:  sqlitis: 0.0.5
DEBUG:sqlitis.cli:  python: 3.9.4
DEBUG:sqlitis.cli:  platform: Windows-10-10.0.19041-SP0
DEBUG:sqlitis.debug:to_sqla "SELECT SUM(IF(userFundTransaction.fundAction = 'EQUITYSUBSCRIPTION', 1, 0)) AS totalBoxes,SUM(IF(userFundTransaction.fundAction = 'UNSUBSCRIPTION', 1, 0)) AS exitedBoxes,SUM(IF(userFundTransaction.fundAction = 'PARTIALWITHDRAWAL', 1, 0)) AS partiallyExitedBoxes,COUNT(userFundTransaction.fundAction) AS total_actions FROM distributorToUserFund JOIN userFundTransaction ON userFundTransaction.fundNameWithAdviserUsername = CONCAT(distributorToUserFund.fundName, '__' ,distributorToUserFund.adviserUsername) AND  userFundTransaction.investingMode = 'REAL' WHERE distributorToUserFund.username='WD112';"
DEBUG:sqlitis.debug:tokens_to_sqla [<11 tokens>]
DEBUG:sqlitis.debug:  <DML 'SELECT' at 0x1BA3B7700A0> <class 'sqlparse.sql.Token'>
DEBUG:sqlitis.debug:  <IdentifierList 'SUM(IF...' at 0x1BA3B787740> <class 'sqlparse.sql.IdentifierList'>
DEBUG:sqlitis.debug:  <Keyword 'FROM' at 0x1BA3B77E340> <class 'sqlparse.sql.Token'>
DEBUG:sqlitis.debug:  <Identifier 'distri...' at 0x1BA3B784F20> <class 'sqlparse.sql.Identifier'>
DEBUG:sqlitis.debug:  <Keyword 'JOIN' at 0x1BA3B77E4C0> <class 'sqlparse.sql.Token'>
DEBUG:sqlitis.debug:  <Identifier 'userFu...' at 0x1BA3B784F90> <class 'sqlparse.sql.Identifier'>
DEBUG:sqlitis.debug:  <Keyword 'ON' at 0x1BA3B77E640> <class 'sqlparse.sql.Token'>
DEBUG:sqlitis.debug:  <Comparison 'userFu...' at 0x1BA3B787270> <class 'sqlparse.sql.Comparison'>
DEBUG:sqlitis.debug:  <Keyword 'AND' at 0x1BA3B77EEE0> <class 'sqlparse.sql.Token'>
DEBUG:sqlitis.debug:  <Comparison 'userFu...' at 0x1BA3B787350> <class 'sqlparse.sql.Comparison'>
DEBUG:sqlitis.debug:  <Where 'WHERE ...' at 0x1BA3B784580> <class 'sqlparse.sql.Where'>
DEBUG:sqlitis.convert:0 <class 'sqlitis.models.Select'>
DEBUG:sqlitis.convert:1 <class 'sqlitis.models.Select'>
DEBUG:sqlitis.convert:2 <class 'sqlitis.models.SelectFrom'>
DEBUG:sqlitis.convert:3 <class 'sqlitis.models.SelectFrom'>
DEBUG:sqlitis.convert:5 <class 'sqlitis.models.SelectFrom'>
DEBUG:sqlitis.debug:comparison_to_sqla [<4 tokens>]
DEBUG:sqlitis.debug:  <Comparison 'userFu...' at 0x1BA3B787270> <class 'sqlparse.sql.Comparison'>
DEBUG:sqlitis.debug:  <Keyword 'AND' at 0x1BA3B77EEE0> <class 'sqlparse.sql.Token'>
DEBUG:sqlitis.debug:  <Comparison 'userFu...' at 0x1BA3B787350> <class 'sqlparse.sql.Comparison'>
DEBUG:sqlitis.debug:  <Where 'WHERE ...' at 0x1BA3B784580> <class 'sqlparse.sql.Where'>
DEBUG:sqlitis.debug:build_comparison <Comparison 'userFu...' at 0x1BA3B787270>
DEBUG:sqlitis.convert:  userFundTransaction.fundNameWithAdviserUsername <class 'sqlparse.sql.Identifier'>
DEBUG:sqlitis.debug:sql_literal_to_model <Identifier 'userFu...' at 0x1BA3B7847B0> <sqlitis.models.Comparison object at 0x000001BA3B78C3D0>
DEBUG:sqlitis.debug:sql_literal_to_model returned <sqlitis.models.Comparison object at 0x000001BA3B78C3D0>
DEBUG:sqlitis.convert:  = <class 'sqlparse.sql.Token'>
DEBUG:sqlitis.debug:sql_literal_to_model <Comparison '=' at 0x1BA3B77E880> <sqlitis.models.Comparison object at 0x000001BA3B78C3D0>
DEBUG:sqlitis.debug:sql_literal_to_model returned <sqlitis.models.Comparison object at 0x000001BA3B78C3D0>
DEBUG:sqlitis.convert:  CONCAT(distributorToUserFund.fundName, '__' ,distributorToUserFund.adviserUsername) <class 'sqlparse.sql.Function'>
DEBUG:sqlitis.debug:sql_literal_to_model <Function 'CONCAT...' at 0x1BA3B784510> <sqlitis.models.Comparison object at 0x000001BA3B78C3D0>
ERROR: Failed to convert SQL: SELECT SUM(IF(userFundTransaction.fundAction = 'EQUITYSUBSCRIPTION', 1, 0)) AS totalBoxes,SUM(IF(userFundTransaction.fundAction = 'UNSUBSCRIPTION', 1, 0)) AS exitedBoxes,SUM(IF(userFundTransaction.fundAction = 'PARTIALWITHDRAWAL', 1, 0)) AS partiallyExitedBoxes,COUNT(userFundTransaction.fundAction) AS total_actions FROM distributorToUserFund JOIN userFundTransaction ON userFundTransaction.fundNameWithAdviserUsername = CONCAT(distributorToUserFund.fundName, '__' ,distributorToUserFund.adviserUsername) AND  userFundTransaction.investingMode = 'REAL' WHERE distributorToUserFund.username='WD112';
[BUG] Failed to convert CONCAT(distributorToUserFund.fundName, '__' ,distributorToUserFund.adviserUsername) to model
Traceback (most recent call last):
  File "c:\users\kaude\appdata\local\programs\python\python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\kaude\appdata\local\programs\python\python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\kaude\AppData\Local\Programs\Python\Python39\Scripts\sqlitis.exe\__main__.py", line 7, in <module>
  File "c:\users\kaude\appdata\local\programs\python\python39\lib\site-packages\sqlitis\cli.py", line 45, in main
    result = to_sqla(sql_string)
  File "c:\users\kaude\appdata\local\programs\python\python39\lib\site-packages\sqlitis\debug.py", line 51, in wrapped
    result = f(*args, **kwargs)
  File "c:\users\kaude\appdata\local\programs\python\python39\lib\site-packages\sqlitis\convert.py", line 25, in to_sqla
    return tokens_to_sqla(tokens).render()
  File "c:\users\kaude\appdata\local\programs\python\python39\lib\site-packages\sqlitis\debug.py", line 51, in wrapped
    result = f(*args, **kwargs)
  File "c:\users\kaude\appdata\local\programs\python\python39\lib\site-packages\sqlitis\convert.py", line 79, in tokens_to_sqla
    clause, length = comparison_to_sqla(tokens[i + 1 :])
  File "c:\users\kaude\appdata\local\programs\python\python39\lib\site-packages\sqlitis\debug.py", line 51, in wrapped
    result = f(*args, **kwargs)
  File "c:\users\kaude\appdata\local\programs\python\python39\lib\site-packages\sqlitis\convert.py", line 194, in comparison_to_sqla
    m = build_comparison(tok)
  File "c:\users\kaude\appdata\local\programs\python\python39\lib\site-packages\sqlitis\debug.py", line 51, in wrapped
    result = f(*args, **kwargs)
  File "c:\users\kaude\appdata\local\programs\python\python39\lib\site-packages\sqlitis\convert.py", line 268, in build_comparison
    raise Exception("[BUG] Failed to convert %s to model" % tok)
Exception: [BUG] Failed to convert CONCAT(distributorToUserFund.fundName, '__' ,distributorToUserFund.adviserUsername) to model

Additional details (optional)

Include any additional details about your issue here

ShubhamKaudewar avatar Jun 22 '21 08:06 ShubhamKaudewar