test-insert-bigint.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. var common = require('../../common');
  2. var connection = common.createConnection();
  3. var assert = require('assert');
  4. var bn = require('bn.js');
  5. var table = 'insert_test';
  6. connection.query([
  7. 'CREATE TEMPORARY TABLE `bigs` (',
  8. '`id` bigint NOT NULL AUTO_INCREMENT,',
  9. '`title` varchar(255),',
  10. 'PRIMARY KEY (`id`)',
  11. ') ENGINE=InnoDB DEFAULT CHARSET=utf8'
  12. ].join('\n'));
  13. var result, result2;
  14. connection.query("INSERT INTO bigs SET title='test', id=123");
  15. connection.query("INSERT INTO bigs SET title='test1'", function(err, result) {
  16. if (err) throw err;
  17. assert.strictEqual(result.insertId, 124);
  18. // > 24 bits
  19. connection.query("INSERT INTO bigs SET title='test', id=123456789");
  20. connection.query("INSERT INTO bigs SET title='test2'", function(err, result) {
  21. assert.strictEqual(result.insertId, 123456790);
  22. // big int
  23. connection.query("INSERT INTO bigs SET title='test', id=9007199254740992");
  24. connection.query("INSERT INTO bigs SET title='test3'", function(err, result) {
  25. assert.strictEqual((new bn("9007199254740993")).cmp(result.insertId), 0);
  26. connection.query("INSERT INTO bigs SET title='test', id=90071992547409924");
  27. connection.query("INSERT INTO bigs SET title='test4'", function(err, result) {
  28. assert.strictEqual((new bn("90071992547409925")).cmp(result.insertId), 0);
  29. connection.query("select * from bigs", function(err, result) {
  30. assert.strictEqual(result[0].id, 123);
  31. assert.strictEqual(result[1].id, 124);
  32. assert.strictEqual(result[2].id, 123456789);
  33. assert.strictEqual(result[3].id, 123456790);
  34. assert.strictEqual(result[4].id, 9007199254740992);
  35. assert.strictEqual(result[5].id, "9007199254740993");
  36. assert.strictEqual(result[6].id, "90071992547409924");
  37. assert.strictEqual(result[7].id, "90071992547409925");
  38. connection.end();
  39. });
  40. });
  41. });
  42. });
  43. });