1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- var assert = require('assert');
- var FieldFlags = require('../../../lib/constants/field_flags.js');
- var common = require('../../common');
- var conn = common.createConnection();
- // it's possible to receive null values for columns marked with NOT_NULL flag
- // see https://github.com/sidorares/node-mysql2/issues/178 for info
- conn.query('CREATE TEMPORARY TABLE `tmp_account` ( ' +
- ' `id` int(11) NOT NULL AUTO_INCREMENT, ' +
- ' `username` varchar(64) NOT NULL, ' +
- ' `auth_code` varchar(30) NOT NULL, ' +
- ' `access_token` varchar(30) NOT NULL, ' +
- ' `refresh_token` tinytext NOT NULL, ' +
- ' PRIMARY KEY (`id`) ' +
- ' ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8');
- conn.query("INSERT INTO `tmp_account` VALUES ('1', 'xgredx', '', '', '')");
- conn.query('CREATE TEMPORARY TABLE `tmp_account_flags` ( ' +
- ' `account` int(11) NOT NULL, ' +
- ' `flag` tinyint(3) NOT NULL, ' +
- ' PRIMARY KEY (`account`,`flag`) ' +
- ' ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8');
- conn.query("INSERT INTO `tmp_account_flags` VALUES ('1', '100')")
- conn.query('CREATE TEMPORARY TABLE `tmp_account_session` ( ' +
- ' `account` int(11) NOT NULL, ' +
- ' `ip` varchar(15) NOT NULL, ' +
- ' `session` varchar(114) NOT NULL, ' +
- ' `time` int(11) NOT NULL, ' +
- ' PRIMARY KEY (`account`,`ip`) ' +
- ' ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8');
- conn.query("INSERT INTO `tmp_account_session` VALUES ('1', '::1', '75efb145482ce22f4544390cad233c749c1b43e4', '1')")
- conn.connect(function(err) {
- if (err) {
- console.error(err);
- return;
- }
- conn.execute("SELECT `ac`.`username`, CONCAT('[', GROUP_CONCAT(DISTINCT `acf`.`flag` SEPARATOR ','), ']') flags FROM tmp_account ac LEFT JOIN tmp_account_flags acf ON `acf`.account = `ac`.id LEFT JOIN tmp_account_session acs ON `acs`.account = `ac`.id WHERE `acs`.`session`=?", ["asid=75efb145482ce22f4544390cad233c749c1b43e4"], function(err, rows, fields) {
- var flagNotNull = fields[0].flags & FieldFlags.NOT_NULL;
- var valueIsNull = rows[0][fields[0].name] === null;
- assert( flagNotNull && valueIsNull );
- conn.end();
- });
- });
|