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
|