Permalink
Browse files

Fixed the case sensitive problem of mysql

  • Loading branch information...
1 parent dd10106 commit 92572a0c70d4c26a618485c7c24edc87025d3819 @Pita committed Dec 10, 2011
Showing with 125 additions and 6 deletions.
  1. +106 −0 caseSensitiveTest.js
  2. +19 −6 mysql_db.js
View
106 caseSensitiveTest.js
@@ -0,0 +1,106 @@
+/**
+ * 2011 Peter 'Pita' Martischka
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS-IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var async = require("async");
+var ueberDB = require("./CloneAndAtomicLayer");
+var log4js = require('log4js');
+var assert = require('assert');
+var util = require("util");
+
+//the default settings for benchmarking
+var test_settings = require("./defaultTestSettings.js");
+var db;
+
+if(process.argv.length == 3)
+{
+ var settings = test_settings[process.argv[2]];
+ test();
+}
+else
+{
+ console.error("wrong parameters");
+}
+
+function test ()
+{
+ async.series([
+ //init first db
+ function(callback)
+ {
+ db = new ueberDB.database(process.argv[2], settings, null, log4js.getLogger("ueberDB"));
+ db.init(callback);
+ },
+ //write first value
+ function(callback)
+ {
+ db.db.wrappedDB.set("test", "test", callback);
+ },
+ //write second value
+ function(callback)
+ {
+ db.db.wrappedDB.set("TEST", "TEST", callback);
+ },
+ //get first value back
+ function(callback)
+ {
+ db.db.wrappedDB.get("test", function(err, value){
+ if(err)
+ {
+ callback(err);
+ return;
+ }
+
+ try{
+ assert.equal(value, "test", "lowercase value got overwritten " + value);
+ }
+ catch(e)
+ {
+ console.error(e.message);
+ }
+
+ callback();
+ });
+ },
+ //get second value back
+ function(callback)
+ {
+ db.db.wrappedDB.get("TEST", function(err, value){
+ if(err)
+ {
+ callback(err);
+ return;
+ }
+
+ try{
+ assert.equal(value, "TEST", "uppercase value got overwritten " + value);
+ }
+ catch(e)
+ {
+ console.error(e.message);
+ }
+
+ callback();
+ });
+ }
+ ], function(err){
+ if(err) throw err;
+
+ process.exit();
+ });
+}
+
+
+
View
25 mysql_db.js
@@ -45,13 +45,26 @@ exports.database = function(settings)
exports.database.prototype.init = function(callback)
{
- var sql = "CREATE TABLE IF NOT EXISTS `store` ( " +
- "`key` VARCHAR( 100 ) NOT NULL , " +
- "`value` LONGTEXT NOT NULL , " +
- "PRIMARY KEY ( `key` ) " +
- ") ENGINE = INNODB;";
+ var sqlCreate = "CREATE TABLE IF NOT EXISTS `store` ( " +
+ "`key` VARCHAR( 100 ) NOT NULL COLLATE latin1_bin, " +
+ "`value` LONGTEXT NOT NULL , " +
+ "PRIMARY KEY ( `key` ) " +
+ ") ENGINE = INNODB;";
+
+ var sqlAlter = "ALTER TABLE store MODIFY `key` VARCHAR(100) COLLATE latin1_bin;";
- this.db.query(sql,[],callback);
+ var db = this.db;
+
+ async.series([
+ function(callback)
+ {
+ db.query(sqlCreate,[],callback);
+ },
+ function(callback)
+ {
+ db.query(sqlAlter,[],callback);
+ }
+ ], callback);
}
exports.database.prototype.get = function (key, callback)

0 comments on commit 92572a0

Please sign in to comment.