Print

Print


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