powa-team / powa-web

PoWA user interface
http://powa.readthedocs.io/
73 stars 30 forks source link

Powa-web not quoting table and column names in queries #20

Closed SonicGD closed 7 years ago

SonicGD commented 7 years ago

Powa-web getting 500 response while doing 'Checking solution with hypopg...'. From container logs:

Feb 10 08:38:40 my docker/ffb278d718cc[531]:     HTTPServerRequest(protocol='http', host='....', method='POST', uri='/database/.../suggest/', version='HTTP/1.1', remote_ip='...', headers={..some headers..})
Feb 10 08:38:40 my docker/ffb278d718cc[531]:     Traceback (most recent call last):
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/tornado/web.py", line 1467, in _execute
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         result = method(*self.path_args, **self.path_kwargs)
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/powa/wizard.py", line 52, in post
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         database=database).first()[1]
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/powa/framework.py", line 182, in execute
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         return engine.execute(query, **params)
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2055, in execute
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         return connection.execute(statement, *multiparams, **params)
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 945, in execute
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         return meth(self, multiparams, params)
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         return connection._execute_clauseelement(self, multiparams, params)
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         compiled_sql, distilled_params
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         context)
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1393, in _handle_dbapi_exception
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         exc_info
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         reraise(type(exception), exception, tb=exc_tb, cause=cause)
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         context)
Feb 10 08:38:40 my docker/ffb278d718cc[531]:       File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 470, in do_execute
Feb 10 08:38:40 my docker/ffb278d718cc[531]:         cursor.execute(statement, parameters)
Feb 10 08:38:40 my docker/ffb278d718cc[531]:     ProgrammingError: (psycopg2.ProgrammingError) relation "public.financeorders" does not exist
Feb 10 08:38:40 my docker/ffb278d718cc[531]:      [SQL: 'SELECT * \nFROM hypopg_create_index(%(hypopg_create_index_1)s)'] [parameters: {'hypopg_create_index_1': u'CREATE INDEX ON public.FinanceOrders USING btree(state,isCMLExported,status,fullCMLNumber)'}]
Feb 10 08:38:40 my docker/ffb278d718cc[531]: [E 170210 05:38:40 web:1971] 500 POST /database/.../suggest/ (172.19.0.45) 34.23ms

So the problem is powa not quoting table and column names and we have some of them in camelCase. Should be

CREATE INDEX ON public."FinanceOrders" USING btree("state","isCMLExported","status","fullCMLNumber")
rjuju commented 7 years ago

Hi,

Indeed, thanks a lot for the report!

Commit https://github.com/dalibo/powa-web/commit/b1d9195a0abd58626e2d3d7765caea82e6702ef7 should fix this issue.