Print

Print


> select * from mysql.general_log


| 2014-11-17 11:39:54 | qsmaster[qsmaster] @ localhost []          |        26 |         0 | Connect      | qsmaster@localhost on qservResult                                                                                                                                                     |
| 2014-11-17 11:39:54 | qsmaster[qsmaster] @ localhost []          |        26 |         0 | Query        | set autocommit=0                                                                                                                                                                      |
| 2014-11-17 11:39:54 | qsmaster[qsmaster] @ localhost []          |        26 |         0 | Query        | CREATE TABLE IF NOT EXISTS qservResult.message_28666954 (chunkId INT, code SMALLINT, message CHAR(255), timeStamp FLOAT) ENGINE=MEMORY;LOCK TABLES qservResult.message_28666954 WRITE |
| 2014-11-17 11:39:54 | qsmaster[qsmaster] @ localhost []          |        26 |         0 | Query        | UNLOCK TABLES                                                                                                                                                                         |
| 2014-11-17 11:39:54 | qsmaster[qsmaster] @ localhost []          |        26 |         0 | Quit  


On Nov 14, 2014, at 11:29 PM, Jacek Becla <[log in to unmask]> wrote:

> Tatiana, John
> 
> Can you do the following:
> 
> a) turn on general query log for mysqld by adding
> 
>  general_log=1
>  log-output=TABLE
> 
>  to /etc/my.cnf under [mysqld]
>  and restarting mysql
> 
> b) re-run whatever you are typically running that
>   is having problems via qserv (have it talk to
>   the mysqld with general log enabled)
> 
> c) send us the output from
>   select * from mysql.general_log
> 
> I will try to re-play it on my local qserv instance
> to reproduce things.
> 
> Thanks,
> Jacek
> 
> 
> 
> On 11/14/2014 09:01 PM, Jacek Becla wrote:
>> 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
>>> 
>> 
> 
> 
> 
> -- 
> BEGIN-ANTISPAM-VOTING-LINKS
> ------------------------------------------------------
> 
> Teach CanIt if this mail (ID 04NfHvOH3) is spam:
> Spam:        https://canit.ipac.caltech.edu/canit/b.php?i=04NfHvOH3&m=f032d505f023&c=s
> Not spam:    https://canit.ipac.caltech.edu/canit/b.php?i=04NfHvOH3&m=f032d505f023&c=n
> Forget vote: https://canit.ipac.caltech.edu/canit/b.php?i=04NfHvOH3&m=f032d505f023&c=f
> ------------------------------------------------------
> END-ANTISPAM-VOTING-LINKS
> 

########################################################################
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