2016-05-06 13:52:59,319 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'sql_mode'
2016-05-06 13:52:59,319 INFO sqlalchemy.engine.base.Engine {}
2016-05-06 13:52:59,320 INFO sqlalchemy.engine.base.Engine SELECT DATABASE()
2016-05-06 13:52:59,320 INFO sqlalchemy.engine.base.Engine {}
2016-05-06 13:52:59,321 INFO sqlalchemy.engine.base.Engine show collation where `Charset` = 'utf8' and `Collation` = 'utf8_bin'
2016-05-06 13:52:59,321 INFO sqlalchemy.engine.base.Engine {}
2016-05-06 13:52:59,322 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS CHAR(60)) AS anon_1
2016-05-06 13:52:59,322 INFO sqlalchemy.engine.base.Engine {}
2016-05-06 13:52:59,323 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS CHAR(60)) AS anon_1
2016-05-06 13:52:59,323 INFO sqlalchemy.engine.base.Engine {}
2016-05-06 13:52:59,324 INFO sqlalchemy.engine.base.Engine SELECT CAST('test collated returns' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin AS anon_1
2016-05-06 13:52:59,324 INFO sqlalchemy.engine.base.Engine {}
2016-05-06 13:52:59,325 INFO sqlalchemy.engine.base.Engine DESCRIBE `a`
2016-05-06 13:52:59,325 INFO sqlalchemy.engine.base.Engine {}
2016-05-06 13:52:59,326 INFO sqlalchemy.engine.base.Engine
DROP TABLE a
2016-05-06 13:52:59,326 INFO sqlalchemy.engine.base.Engine {}
2016-05-06 13:52:59,444 INFO sqlalchemy.engine.base.Engine COMMIT
2016-05-06 13:52:59,445 INFO sqlalchemy.engine.base.Engine DESCRIBE `a`
2016-05-06 13:52:59,445 INFO sqlalchemy.engine.base.Engine {}
2016-05-06 13:52:59,446 INFO sqlalchemy.engine.base.Engine ROLLBACK
2016-05-06 13:52:59,447 INFO sqlalchemy.engine.base.Engine
CREATE TABLE a (
id INTEGER NOT NULL AUTO_INCREMENT,
subnet VARCHAR(30),
PRIMARY KEY (id)
)
2016-05-06 13:52:59,447 INFO sqlalchemy.engine.base.Engine {}
2016-05-06 13:52:59,661 INFO sqlalchemy.engine.base.Engine COMMIT
2016-05-06 13:52:59,662 INFO sqlalchemy.engine.base.Engine SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE='FUNCTION' AND ROUTINE_SCHEMA=DATABASE() AND ROUTINE_NAME=%s
2016-05-06 13:52:59,662 INFO sqlalchemy.engine.base.Engine ('cidr_overlap',)
2016-05-06 13:52:59,663 INFO sqlalchemy.engine.base.Engine
CREATE FUNCTION cidr_overlap (cidr1 VARCHAR(30), cidr2 VARCHAR(30))
RETURNS TINYINT
BEGIN
DECLARE bitmask INT;
SET bitmask = pow(
2,
(32 - least(
cast(substring_index(cidr1, "/", -1) as integer),
cast(substring_index(cidr2, "/", -1) as integer)
))
) - 1;
RETURN inet_aton(substring_index(cidr1, "/", 1)) & ~bitmask =
inet_aton(substring_index(cidr2, "/", 1)) & ~bitmask;
END
2016-05-06 13:52:59,664 INFO sqlalchemy.engine.base.Engine {}
2016-05-06 13:52:59,664 INFO sqlalchemy.engine.base.Engine ROLLBACK
Traceback (most recent call last):
File "test_overlap.py", line 80, in <module>
Base.metadata.create_all(e)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/schema.py", line 3695, in create_all
tables=tables)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1856, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1481, in _run_visitor
**kwargs).traverse_single(element)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/visitors.py", line 121, in traverse_single
return meth(obj, **kw)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/ddl.py", line 738, in visit_metadata
_ddl_runner=self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/event/attr.py", line 256, in __call__
fn(*args, **kw)
File "test_overlap.py", line 35, in _create_mysql_proc
""")
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, in execute
return meth(self, multiparams, params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/ddl.py", line 68, in _execute_on_connection
return connection._execute_ddl(self, multiparams, params)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 968, in _execute_ddl
compiled
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1341, in _handle_dbapi_exception
exc_info
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 200, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context
context)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 450, in do_execute
cursor.execute(statement, parameters)
File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 158, in execute
result = self._query(query)
File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 308, in _query
conn.query(q)
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 820, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1002, in _read_query_result
result.read()
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1285, in read
first_packet = self.connection._read_packet()
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 966, in _read_packet
packet.check_error()
File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 394, in check_error
err.raise_mysql_exception(self._data)
File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 120, in raise_mysql_exception
_check_mysql_exception(errinfo)
File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 112, in _check_mysql_exception
raise errorclass(errno, errorvalue)
sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1064, u'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'integer),\n cast(substring_index(cidr2, "/", -1) as integer)\n \' at line 8') [SQL: u'\n CREATE FUNCTION cidr_overlap (cidr1 VARCHAR(30), cidr2 VARCHAR(30))\n RETURNS TINYINT\n BEGIN\n DECLARE bitmask INT;\n SET bitmask = pow(\n 2,\n (32 - least(\n cast(substring_index(cidr1, "/", -1) as integer),\n cast(substring_index(cidr2, "/", -1) as integer)\n ))\n ) - 1;\n RETURN inet_aton(substring_index(cidr1, "/", 1)) & ~bitmask =\n inet_aton(substring_index(cidr2, "/", 1)) & ~bitmask;\n END\n ']