From 99c4df82222ca9ac50b81927ba3c8dab35f9c79d Mon Sep 17 00:00:00 2001 From: Vsevolod Novikov Date: Wed, 16 Oct 2013 14:45:43 +0400 Subject: [PATCH] Fixed issue#3 --- .gitignore | 2 ++ txmysql/protocol.py | 2 +- txmysql/test/test_txmysql.py | 40 +++++++++++++++++++++++++++++++++++- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index d68ce12..d172e30 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ dist *.tmp *~ #\#* +secrets.py +_trial_temp diff --git a/txmysql/protocol.py b/txmysql/protocol.py index fdd562a..f3becc2 100644 --- a/txmysql/protocol.py +++ b/txmysql/protocol.py @@ -18,7 +18,7 @@ 0x04: 4, 0x05: 8, 0x08: 8, - 0x09: 3, + 0x09: 4, 0x0c: 8 } diff --git a/txmysql/test/test_txmysql.py b/txmysql/test/test_txmysql.py index 51abbec..53ae701 100644 --- a/txmysql/test/test_txmysql.py +++ b/txmysql/test/test_txmysql.py @@ -255,7 +255,7 @@ def test_0400_start_connect_long_query_timeout(self): self.assertTrue(isinstance(e, ConnectionDone)) finally: conn.disconnect() - + @defer.inlineCallbacks def test_0500_retry_on_error(self): """ @@ -382,6 +382,44 @@ def test_0900_autoRepairKeyError(self): conn.disconnect() FREEBSD_TESTS.append(test_0900_autoRepairKeyError.__name__) + @defer.inlineCallbacks + def test_1000_mediumint_fix_issue_3(self): + """ + See https://github.com/hybridlogic/txMySQL/issues/3 + """ + yield self._start_mysql() + conn = self._connect_mysql(retry_on_error=True) + yield conn.selectDb("foo") + yield conn.runOperation("create database if not exists foo") + yield conn.runOperation("drop table if exists users") + yield conn.runOperation(""" +CREATE TABLE `users` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `user` varchar(30) NOT NULL DEFAULT '', + `credit` mediumint(8) unsigned NOT NULL DEFAULT '0', + `class` tinyint(2) unsigned NOT NULL DEFAULT '0', + `first_usage` int(10) unsigned NOT NULL DEFAULT '0', + `last_usage` int(10) unsigned NOT NULL DEFAULT '0', + `enabled` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `idx_uc` (`user`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 + """) + yield conn.runOperation(""" +INSERT INTO `users` (`id`,`user`,`credit`,`class`,`first_usage`,`last_usage`,`enabled`) VALUES (1,'foo',1000000,10,1312417862,0,0) + """) + result = yield conn.runQuery("SELECT id, user, credit, class, first_usage, last_usage, enabled FROM users") + self.assertEquals(result, [[1,'foo',1000000,10,1312417862,0,0]]) + result = yield conn.runQuery("SELECT id, user, credit, first_usage, last_usage, enabled FROM users") + self.assertEquals(result, [[1,'foo',1000000,1312417862,0,0]]) + result = yield conn.runQuery("SELECT first_usage, last_usage, enabled FROM users") + self.assertEquals(result, [[1312417862,0,0]]) + result = yield conn.runQuery("SELECT credit, class FROM users") + self.assertEquals(result, [[1000000,10]]) + result = yield conn.runQuery("SELECT class, credit FROM users") + self.assertEquals(result, [[10,1000000]]) + conn.disconnect() + # Utility functions: def _stop_mysql(self):