Print

Print



Tried connecting to a plain MySQL DB. These are the commands executed during the connection.

1. duration: 2 ms, connection-id: 1233, statement-id: 1, resultset-id: 1, message: /* mysql-connector-java-5.1.34 ( Revision: [log in to unmask] ) */SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_timeout' OR Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout' OR Variable_name = 'character_set_client' OR Variable_name = 'character_set_connection' OR Variable_name = 'character_set' OR Variable_name = 'character_set_server' OR Variable_name = 'tx_isolation' OR Variable_name = 'transaction_isolation' OR Variable_name = 'character_set_results' OR Variable_name = 'timezone' OR Variable_name = 'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name = 'lower_case_table_names' OR Variable_name = 'max_allowed_packet' OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode' OR Variable_name = 'query_cache_type' OR Variable_name = 'query_cache_size' OR Variable_name = 'license' OR Variable_name = 'init_connect'

2.  duration: 0 ms, connection-id: 1233, statement-id: 1, resultset-id: 2, message: /* mysql-connector-java-5.1.34 ( Revision: [log in to unmask] ) */SELECT @@session.auto_increment_increment

3.  duration: 0 ms, connection-id: 1233, statement-id: 999, resultset-id: 0, message: SET NAMES latin1

4. duration: 0 ms, connection-id: 1233, statement-id: 999, resultset-id: 0, message: SET character_set_results = NULL

5. duration: 0 ms, connection-id: 1233, statement-id: 999, resultset-id: 0, message: SET autocommit=1

6. duration: 0 ms, connection-id: 1233, statement-id: 999, resultset-id: 0, message: SET sql_mode='STRICT_TRANS_TABLES'


On Nov 17, 2014, at 12:53 PM, Jacek Becla <[log in to unmask]> wrote:

Tatiana, John

It'd still be very useful if you'd run it again vanilla mysql,
*with no qserv in the loop*

Jacek



On 11/17/2014 12:14 PM, Tatiana Goldina wrote:
I tried setting dumpQueriesOnException=true. Here is the query that produces the  mysql.general_log in the previous email:

Connection to LSST DB1 failed
java.sql.SQLException: Qserv error: 'ParseException:ANTLR parse error:unexpected token: /:'

Query being executed when exception was thrown:

/* mysql-connector-java-5.1.6 ( Revision: ${svn.Revision} ) */SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_timeout' OR Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout' OR Variable_name = 'character_set_client' OR Variable_name = 'character_set_connection' OR Variable_name = 'character_set' OR Variable_name = 'character_set_server' OR Variable_name = 'tx_isolation' OR Variable_name = 'transaction_isolation' OR Variable_name = 'character_set_results' OR Variable_name = 'timezone' OR Variable_name = 'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name = 'lower_case_table_names' OR Variable_name = 'max_allowed_packet' OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode' OR Variable_name = 'query_cache_type' OR Variable_name = 'query_cache_size' OR Variable_name = 'init_connect'

On Nov 17, 2014, at 11:53 AM, Tatiana Goldina <[log in to unmask]> wrote:


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 04NgISe9c) is spam:
Spam:        https://canit.ipac.caltech.edu/canit/b.php?i=04NgISe9c&m=593e092d3ae1&c=s
Not spam:    https://canit.ipac.caltech.edu/canit/b.php?i=04NgISe9c&m=593e092d3ae1&c=n
Forget vote: https://canit.ipac.caltech.edu/canit/b.php?i=04NgISe9c&m=593e092d3ae1&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