Nope! It is not the "set" query. I run it by hand, and I got: SET @@session.autocommit = 1; +------------------------------------------+ | no-field-name | +------------------------------------------+ | Ignoring meaningless command (in Qserv). | +------------------------------------------+ and after that Qserv was happily running. --- I don't know how deeply you depend on the query that Tatiana mentioned earlier: show columns from DeepSource from LSST; Because that query will consistently fail right now with something like: ERROR 4110 (Proxy): Qserv error: 'ParseException:ANTLR parse error:unexpected token: show:' we are not supporting "show columns" commands. We are working on code that will make implementing this command easier. Adding support for this is in a quick and dirty way right now would be non-trivial. So, Tatiana / Trey, let us know if you can get away without "show columns" queries in the near term. Jacek On 11/12/2014 02:55 PM, Daniel L. Wang wrote: > Hi John, > > I'm betting that the problem occurs here: > > -> 1291 self._execute_query("SET @@session.autocommit = > {0}".format(switch)) > > "SET..." is not supported right now. > > Qserv doesn't really handle much other than SELECT statements. For the > longest time, we were focused on handling those well. Though they aren't > perfect, we think qserv handles them well enough to support some > practical usage now. One area that has gotten very little attention is > in supporting things other than SQL SELECT queries. There is some > short-circuit code that handles the few extra commands that the > command-line "mysql" binary sends without user intervention, because > that's what we test with. > > I think in this case, the best idea might be to save the proxy logs from > connecting with the JDBC driver and with the mysql-connector. None of us > (AFAIK) have tested with those, but we could see putting in some more > short-circuit code to triage the "extracurricular" queries they send (we > can put in some semi-reasonable canned responses), and that could very > well get things working. We haven't set aside any space in our Nov > sprint to work on this, but we might be able to squeeze it in, deferring > existing tickets (Jacek will have to decide). > > In the meantime, you might be able to workaround this by calling the > mysql binary in a shell process and then processing the output. In > python, this wouldn't be too bad, and I might claim that the code is > only incrementally more complex than using the API, and the performance > (in practice) is mostly indistinguishable for, say, up to 10k or 100k > result rows. > > FYI, qserv internally uses mysqldb when connecting to mysqld through > Python, and the raw mysql C-API when connecting with C++. > > Hope this helps, > -Daniel > > > On 11/11/2014 08:27 PM, John Rector wrote: >> Hi Daniel, >> >> This is a follow-up on my earlier note about trouble accessing Qserv >> with JDBC. I tried a python module as well. (Results are not in the >> logs I sent you, but I can send them if it's helpful.) >> >> ~> pip list | grep mysql >> *mysql-connector-python (2.0.2)* >> >> It worked when I tried to connect to a standard MySQL db, but not when >> I tried to connect to qserv. Immediately following the failure, I cut >> and pasted the qserv connection values I had used into a /mysql/ >> command in the same terminal session. That connect to the LSST db. >> Below is the output from the Python connection attempt. >> >> BTW: is there a preferred Python module to use with qserv? I have a >> few, but tried only one tonight—the one from the MySQL site. One more >> question, has anyone tried to fill a Pandas data frame directly from a >> qserv query? >> >> My ipython session: >> >> In [1]: *import mysql.connector* >> >> In [2]:*cnx = mysql.connector.connect(user='qsmaster', >> host='lsst-db1.ipac.caltech.edu <http://lsst-db1.ipac.caltech.edu>', >> database='LSST', port=4040)* >> >> --------------------------------------------------------------------------- >> InternalError Traceback (most recent call >> last) >> <ipython-input-2-15e0754e8f3a> in <module>() >> ----> 1 cnx = mysql.connector.connect(user='qsmaster', >> host='lsst-db1.ipac.caltech.edu <http://lsst-db1.ipac.caltech.edu>', >> database='LSST', port=4040) >> >> /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/__init__.pyc >> in connect(*args, **kwargs) >> 157 >> 158 # Regular connection >> --> 159 return MySQLConnection(*args, **kwargs) >> 160 Connect = connect # pylint: disable=C0103 >> 161 >> >> /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/connection.pyc >> in __init__(self, *args, **kwargs) >> 127 >> 128 if len(kwargs) > 0: >> --> 129 self.connect(**kwargs) >> 130 >> 131 def _get_self(self): >> >> /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/connection.pyc >> in connect(self, **kwargs) >> 453 self.disconnect() >> 454 self._open_connection() >> --> 455 self._post_connection() >> 456 >> 457 def shutdown(self): >> >> /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/connection.pyc >> in _post_connection(self) >> 433 """ >> 434 self.set_charset_collation(self._charset_id) >> --> 435 self.autocommit = self._autocommit >> 436 if self._time_zone: >> 437 self.time_zone = self._time_zone >> >> /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/connection.pyc >> in set_autocommit(self, value) >> 1289 """Toggle autocommit""" >> 1290 switch = 'ON' if value else 'OFF' >> -> 1291 self._execute_query("SET @@session.autocommit = >> {0}".format(switch)) >> 1292 self._autocommit = value >> 1293 >> >> /Users/johnrector/anaconda/lib/python2.7/site-packages/mysql/connector/connection.pyc >> in _execute_query(self, query) >> 1495 """ >> 1496 if self._unread_result is True: >> -> 1497 raise errors.InternalError("Unread result found.") >> 1498 >> 1499 self.cmd_query(query) >> >> InternalError: Unread result found. >> >> ______________________________ >> John Rector >> IPAC, California Institute of Technology >> MS 100-22 >> 770 S. Wilson Ave. >> Pasadena, CA 91125 >> USA >> Tel: (626) 395—8577 >> >> >> >> >> >> > > > ------------------------------------------------------------------------ > > Use REPLY-ALL to reply to list > > To unsubscribe from the QSERV-L list, click the following link: > https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=QSERV-L&A=1 > ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the QSERV-L list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=QSERV-L&A=1