mysqljs / mysql Goto Github PK
View Code? Open in Web Editor NEWA pure node.js JavaScript Client implementing the MySQL protocol.
License: MIT License
A pure node.js JavaScript Client implementing the MySQL protocol.
License: MIT License
Mysql uses some homebrew hashing and scrambling code for old passwords which needs to be ported to Javascript.
I have started some initial work here:
http://github.com/felixge/node-mysql/commit/0cb56d994641bad3426fd5cfc7e452f7903bc059
hash_password seems to be successfully ported, but I could need help with:
See this link for details:
client.connect() en client.query() calls are queued up and executed in order, but not so for client.end(). This does not follow the rule of the least surprise.
(See for example http://groups.google.com/group/nodejs/browse_thread/thread/234687feca0b4928/c4883a3a65a5c94d)
If you're interested in fixing this, a patch is here: http://github.com/piscisaureus/node-mysql/commits/client-end
Hello,
I'm having issues while trying to insert strings containing characters like "éèçà" that get converted to something like "éééà çç", how can I change that behavior ? is it because of the stream's encoding ? how to change it ?
Thanks !
would it be okay to add transaction handling to the client as per the following patch, or something along these lines?
Client.prototype.begin = function(callback) {
var client = this;
this.query("SET autocommit=0", function(err, info) {
if(err) {
callback(err);
}
else {
client.query("START TRANSACTION", function(err, info) {
if(err) {
callback(err);
}
else {
callback(null, info);
}
});
}
});
};
Client.prototype.commit = function(callback) {
var client = this;
this.query("COMMIT", function(err, info) {
if(err) {
callback(err);
}
else {
client.query("SET autocommit=1", function(err, info) {
if(err) {
callback(err);
}
else {
callback(null, info);
}
});
}
});
};
Client.prototype.rollback = function(callback) {
var client = this;
this.query("ROLLBACK", function(err, info) {
if(err) {
callback(err);
}
else {
client.query("SET autocommit=1", function(err, info) {
if(err) {
callback(err);
}
else {
callback(null, info);
}
});
}
});
};
Maybe i am missing something, but i can't see any way to get the new id when a row is inserted into an autonumber column in the database. is this possible? if not, would it be a big deal to add it? i can work on a patch if you like...
So, I'd expected that a line like
c.query('INSERT INTO bar SET id = ?', ['baz'], function(err, results) {
console.log(results.insertId);
});
would show either baz
or undefined
; instead, it gives 0
. The behavior is the same if id
is an INT
being set to some arbitrary value—unless AUTO_INCREMENT
is set, in which case the value is returned (whether set by the query or by the server).
Looking at parser.js, I'm guessing that the MySQL protocol simply doesn't provide insertId
at all unless AUTO_INCREMENT
is set, and lengthCoded
is converting that undefined result to 0
. Perhaps in the interest of clarity, it would be better to omit the insertId
key from the results
hash altogether in such cases?
When a SHOW TABLES or SHOW COLUMNS FROM [table] query is performed, the data returning is not in a format that is easy to parse.
When performing SHOW TABLES the field name is undefined, resulting in an object with a series of undefined keys. The values are correct
When performing SHOW COLUMNS FROM [table] the result isn't usable: the contents of results and fields by using sys.inspect:
22 Aug 14:58:28 - results: [ { undefined: 'auto_increment' } ]
22 Aug 14:58:28 - fields: { undefined:
{ length: 39
, received: 39
, number: 7
, type: 4
, catalog: 'def'
, db: '\u0007COLUMNS\u0000\u0005Extra\u0005EXTRA\f\b\u0000\u0014\u0000\u0000\u0000\u00fd\u0001\u0000\u0000\u0000\u0000'
}
}
People may have custom typeCasting needs that could be adressed this way. See #33
It should be possible to pause an incoming data stream, e.g. the query object should cease emitting row/field/whatever events and the tcp connection to the mysql server should be put on hold too.
Case: a project I'm working on has a database with >800k filenames that I need to walk through and perform some file operations on those files. Because file and db operations are asynchronous, node-mysql will spit out a new row while the file operations associated with previous rows are still running. So I end up with way too may callbacks/stacks floating around, which causes out-of-memory errors and extreme slowness.
Currently I'm using a hack that 'just' pauses the underlying tcp stream; that works, but after I pause the tcp stream I still receive 500-some row events before it gets silent. I guess those rows must be buffered up somewhere.
I think the most elegant solution would be to have a pause() and a resume() method on Query objects. A caveat would be that when doing something like ...
var q1 = client.query('SELECT something');
var q2 = client.query('SELECT something');
q2.pause();
... q1 should not be paused, so bluntly pausing the tcp stream when q2.pause() is called is not the way to go.
(IMHO it would be even cooler if we could pause the tcp stream automatically when appropriate, but I don't think there currently is a reliable way to measure stack / event loop pressure within node)
I'm planning on using node-mysql in a project and am wonder when the best time to connect to a server is...
Should I do it once per request, or when I start the server?
Is there a way to check if it is connected before I run a query (like with client.connected
or something) so I can quickly connect if I need to?
What happens if I call client.connect()
multiple times? Does it do nothing if the server it is connecting to it is already connected to?
Any advice would be great!
Can you document how to get the ID of the row inserted by a INSERT query?
By looking through the code it even seems like this is not yet possible, even though it is implemented in the Parser. Could you add this feature if it is not present yet?
Also, as a side question, is it possible to make a blocking/synchronous query (e.g. function does an insert and returns the id of the inserted row)?
In a complex log parse/insert script, I have queries that look approximately like this:
BEGIN TRANSACTION
COMMIT TRANSACTION
When there are only few insert statements, the callback for the duplicate key failure insert contains the error object, but when there are lots of them, the err value will be null
and node-mysql proceeds to commit transaction, also calls it without an error object and at some later point fires an error event on the global database object.
By default the blob fields are encoded in utf8 (query.js: row[field.name] += buffer.toString('utf-8');).
You can't safely convert a binary to UTF8 without loss of data. To convert binary data to text, use Base64 encoding instead:
For TINY_BLOB,MEDIUM_BLOB, LONG_BLOB,TYPE_BLOB :
row[field.name] += buffer.toString('base64');)
Am I doing something wrong? Thanks!
Server version: 5.1.31-1ubuntu2 (Ubuntu)
reproducing code:
var Client = require('./node-mysql/lib/mysql').Client,
client = new Client();
client.user = 'root';
client.password = 'password';
client.host = 'localhost';
client.port = 3306;
client.connect();
output:
crypto:3638
return new Hash(hash);
^
TypeError: undefined is not a function
at CALL_NON_FUNCTION_AS_CONSTRUCTOR (native)
at Object.createHash (crypto:3638:10)
at sha1 (/usr/local/Singularity/node-mysql/lib/mysql/auth.js:5:21)
at Object.token (/usr/local/Singularity/node-mysql/lib/mysql/auth.js:28:16)
at Client._sendAuth (/usr/local/Singularity/node-mysql/lib/mysql/client.js:230:20)
at Client._handlePacket (/usr/local/Singularity/node-mysql/lib/mysql/client.js:194:10)
at Parser. (/usr/local/Singularity/node-mysql/lib/mysql/client.js:58:14)
at Parser.emit (events:26:26)
at /usr/local/Singularity/node-mysql/lib/mysql/parser.js:72:14
at Parser.write (/usr/local/Singularity/node-mysql/lib/mysql/parser.js:545:7)
Hi Felix,
I'm running into weird behavior where the expected second argument to a db.query('select…') callback isn't an array of result rows when I execute a drop/create table before hand.
Here's a reduced reproduction: https://gist.github.com/674861
And here's a couple of runs:
$ NO_TABLE=1 node node-mysql-bug-repro.js
[ { id: 3
, c_string: 'hello'
, c_number: 42
, c_date: null
, c_boolean: null
}
]
success!
$ node node-mysql-bug-repro.js
{ affectedRows: 1
, insertId: 1
, serverStatus: 2
, warningCount: 0
, message: ''
, emit: [Function]
, addListener: [Function]
, on: [Function]
, removeListener: [Function]
, removeAllListeners: [Function]
, listeners: [Function]
}
assert:80
throw new assert.AssertionError({
^
AssertionError: true == false
at /Users/wolf/code/github/node-mysql-oil/test/node-mysql-bug-repro.js:19:18
at Query.<anonymous> (/usr/local/lib/node/.npm/mysql/0.8.0-1-LINK-a7d29606/package/lib/mysql/client.js:117:11)
at Query.emit (events:27:15)
at Query._handlePacket (/usr/local/lib/node/.npm/mysql/0.8.0-1-LINK-a7d29606/package/lib/mysql/query.js:31:12)
at Client._handlePacket (/usr/local/lib/node/.npm/mysql/0.8.0-1-LINK-a7d29606/package/lib/mysql/client.js:290:14)
at Parser.<anonymous> (/usr/local/lib/node/.npm/mysql/0.8.0-1-LINK-a7d29606/package/lib/mysql/client.js:83:14)
at Parser.emit (events:27:15)
at /usr/local/lib/node/.npm/mysql/0.8.0-1-LINK-a7d29606/package/lib/mysql/parser.js:75:14
at Parser.write (/usr/local/lib/node/.npm/mysql/0.8.0-1-LINK-a7d29606/package/lib/mysql/parser.js:580:7)
at Stream.<anonymous> (/usr/local/lib/node/.npm/mysql/0.8.0-1-LINK-a7d29606/package/lib/mysql/client.js:63:16)
I'm on node v0.2.4 and this commit of node-mysql
The client does not work at all for me - the tests fail. When I turn on debug mode, I see a "Bad handshake" error.
<- GREETING_PACKET: {"length":52,"received":52,"number":0,"type":0,"protocolVersion":10,"serverVersion":"5.0.77","threadId":3315809,"scrambleBuffer":{"0":94,"1":85,"2":109,"3":73,"4":96,"5":43,"6":81,"7":56,"8":98,"9":103,"10":95,"11":40,"12":69,"13":97,"14":60,"15":69,"16":39,"17":51,"18":106,"19":62,"length":20},"serverCapabilities":41516,"serverLanguage":8,"serverStatus":2}
-> <Buffer 47 00 00 01 cf f7 03 00 00 00 00 01 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 14 3a 38 b0 b9 00 90 e0 06 f3 1e 5f 63 95 08 5e e0 e2 03 4c 72 6e 6f 64 65 6a 73 5f 6d 79 73 71 6c 00>
<- RESULT_SET_HEADER_PACKET: {"length":1,"received":1,"number":2,"type":3,"fieldCount":0}
-> <Buffer 11 00 00 00 03 55 53 45 20 6e 6f 64 65 6a 73 5f 6d 79 73 71 6c>
<- FIELD_PACKET: {"length":22,"received":22,"number":3,"type":4,"catalog":"Bad handshake"}
My test code looks like this:
var Client = require('mysql').Client;
var client = new Client();
client.user = 'root';
client.password = 'root';
client.database = 'nodejs_mysql';
client.debug = true;
client.on('error', function(){ console.log('error'); });
client.connect(function(){ console.log('connect'); });
client.query('USE nodejs_mysql', function(){ console.log('query'); });
None of the callbacks fire.
Seriously, what the fuck is going on? this code was working properly and suddenly the weirdest thing happends..
Well, the actual code uses a real user and password... but still does not work.
[email protected] and [email protected]
var mysql = require('mysql'); var db = new mysql.Client(); db.debug = true; db.user = 'nonexistenuser'; db.password = 'asgjv5h3i6hvb3k643'; db.host = 'wtf?'; db.database = 'nonexistentdatabase'; db.on('error', function(err) { console.log(err) }); db.connect(function() { console.log('Mysql connection established.'); db.query("SELECT * FROM Campaigns", [], function(err, result) { console.log(result) }) });
And the output is "Mysql connection established."
?????????
Connections often became stale and so as a result I was recreating / restarting connections before timeout to ensure freshness, over time the following error occurred:
20 Nov 20:15:01 - Error: EMFILE, Too many open files
at net:907:19
at Object.lookup (dns:138:5)
at Stream.connect (net:902:9)
at connect (/usr/local/lib/node/.npm/mysql/0.8.0/package/lib/mysql/client.js:79:16)
at Client._prequeue (/usr/local/lib/node/.npm/mysql/0.8.0/package/lib/mysql/client.js:245:3)
at Stream. (/usr/local/lib/node/.npm/mysql/0.8.0/package/lib/mysql/client.js:77:14)
at Stream.emit (events:27:15)
at IOWatcher.callback (net:471:53)
at node.js:772:9
Here is the code that was resetting the connection:
var sphinx = new Client(),
client = new Client(),
mysqlReset = 300000;
sphinx.user = 'XXXXX';
sphinx.port = '9306';
sphinx.host = '127.0.0.1';
sphinx.connect();
client.user = 'xxxxxxx';
client.password = 'XXXXXX;
client.database = 'XXXXXX';
client.host = '127.0.0.1';
client.connect();
setInterval(function() {
resetMysql(client,function(newClient) {
client = newClient;
});
resetMysql(sphinx,function(newClient) {
sphinx = newClient;
});
}, mysqlReset);
function resetMysql(old, cb) {
var temp = new Client();
for (var i in old) {
if (old.hasOwnProperty(i) && typeof old[i] != 'undefined' && old[i] !== null && old[i].constructor != Function) {
temp[i] = old[i];
}
};
temp.connect(function() {
cb(temp);
old.end();
});
}
Hello Felix,
how difficult would it be to support multiple statements in one query, like BEGIN; SELECT 1; SELECT 2; COMMIT
?
I think both having query(...)
invoke the callback function multiple times and introduce something like multiQuery(...)
, where the callback gets arrays of rows and fields, would work fine.
Best regards,
René
The numbers returned are all strings. They ought to be converted into numbers.
Calculated fields do not have a db name, original table name, table name, or original field name. The parser reads the count of characters for the db name, then assumes that the next byte is the first character in the db name, adds it to a buffer, then checks to see if the character count has been reached, but now it is past the character count and so the packet contents are assigned to the db name.
I've created a patch and submitted a pull request.
I'm trying to do something like:
client.query(
'SELECT uid FROM sessions WHERE sid="?"',
[sid, function selectCb(err, results, fields) {
//...
}]
);
but it throws an exception:
$PATH/.npm/mysql/0.9.0/package/lib/mysql/client.js:167
throw new Error('too many parameters given');
Am I missing something?
(node v0.2.4, node-mysql v0.9.0)
Hey Felix,
I sarted using your lib just yesterday, and it worked perfectly on my Macbook, but when trying to move it to my stage environment, it's returning an ECONNREFUSED, Connection refused error (errno: 111).
Tried using different users (even root) and same thing.
I am using Ubuntu Karmic Koala with mysql 5.0.
Do you have an idea of what can it be?, should I upgrade mysql?
Regards
Juan Silva
The newest changes to the parser and query seem to break the query callback at some point.
Last working commit is 4a93056.
What happens in my case is that a series of fetches have been done, then a query for a single record is performed, but the callback for that query never fires, nor does it for any subsequent query.
The only thing that I have been able to find out about this problem is that it is introduced in commit 09df6f9, in parser.js, the new code included from line 496.
Please convert the project to the new Wiki system. I was going to start taking notes on issues I was encountering, but adding to the old Wiki system only creates problems.
Hi,
NULLs values (dates/numbers/integers) are not properly handled.
Try:
select date_column from table where date_column is null;
In query.js :
row[field.name] = new Date(row[field.name]+'Z'); // row[field.name] is null !
Seems like yet another undocumented gem in the mysql protocol:
<- GREETING_PACKET: {"length":135,"received":135,"number":0,"type":0,"protocolVersion":255,"serverVersion":"i\u0004Host 'domU-12-31-39-10-71-32.compute-1.intern
al' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"}
/usr/local/lib/node/.npm/mysql/0.7.0/package/lib/mysql/auth.js:30
var stage3 = sha1(scramble.toString('binary') + stage2);
^
TypeError: Cannot call method 'toString' of undefined
at Object.token (/usr/local/lib/node/.npm/mysql/0.7.0/package/lib/mysql/auth.js:30:30)
at Client._sendAuth (/usr/local/lib/node/.npm/mysql/0.7.0/package/lib/mysql/client.js:308:20)
at Client._handlePacket (/usr/local/lib/node/.npm/mysql/0.7.0/package/lib/mysql/client.js:271:10)
at Parser.<anonymous> (/usr/local/lib/node/.npm/mysql/0.7.0/package/lib/mysql/client.js:83:14)
at Parser.emit (events:27:15)
at /usr/local/lib/node/.npm/mysql/0.7.0/package/lib/mysql/parser.js:75:14
at Parser.write (/usr/local/lib/node/.npm/mysql/0.7.0/package/lib/mysql/parser.js:565:7)
at Stream.<anonymous> (/usr/local/lib/node/.npm/mysql/0.7.0/package/lib/mysql/client.js:64:16)
at Stream.emit (events:27:15)
at IOWatcher.callback (net:489:16)
Is is possible to run query in sync mode? Some tricks?
Is there a way to capture mysql error code when an error occurs? I need to detect errors for duplicate inserts. thanks.
Hi, I'm doing a bit of testing. In my server I open a MySQL connection when a client connects and close it again when the request ends. Simple enough. This seem to work fine for about 7000 requests (sequential, no concurrent requests), but then I get an "Address already in use" exception:
node.js:60
throw e;
^
Error: EADDRINUSE, Address already in use
at doConnect (net:821:19)
at net:892:9
at dns:165:36
at Object.lookup (dns:163:17)
at Stream.connect (net:886:9)
at connect (/Users/zef/.node_libraries/.npm/mysql/0.4.0/package/lib/mysql/client.js:47:16)
at Client._enqueue (/Users/zef/.node_libraries/.npm/mysql/0.4.0/package/lib/mysql/client.js:174:5)
at Client.connect (/Users/zef/.node_libraries/.npm/mysql/0.4.0/package/lib/mysql/client.js:43:8)
Any clues as for why this may happen? Maybe the connections don't really get closed? Although my mysqladmin processlist doesn't show any open connections.
According to the readme, the client's 'error' event is emitted when a query has no callback / delegate for an error.
This works fine for queries that have been created with a callback. However if a delegate is attached through client.on('error', cb), the client's error event is emitted anyway.
Try:
query = client.query('this must be wrong');
query.on('error', function(err) {
console.log('Failing gracefully: ' + error);
});
Detect stale connections and automatically re-connect.
If I do a SELECT *
query on a certain table, the parser chokes.
/cygdrive/d/nodejs/node-mysql/lib/mysql/parser.js:517
packet.emit('data', buffer.slice(i, i + remaining), 0);
^
TypeError: Bad argument.
I find it difficult to follow the execution flow of the parser, so I haven't been able to track down the origin of the bug, other than that lengthCoded raises 256 by -1 which results in a non-integer value being decoded. Below is a table export of a table that causes the same error.
In the meantime I wrote my own little parser (http://github.com/piscisaureus/node-mysql/commits/alt-parser) which does work fine but is way slower than yours...
Bert
/*Table structure for table `test` */
CREATE TABLE `test` (
`id` bigint(20) unsigned NOT NULL DEFAULT '0',
`contactId` bigint(20) unsigned NOT NULL DEFAULT '0',
`objectId` bigint(20) unsigned NOT NULL DEFAULT '0',
`action` int(11) NOT NULL DEFAULT '0',
`description1` text NOT NULL,
`description2` text NOT NULL,
`comment` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*Data for the table `test` */
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2040211,2040021,1036909,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2044174,1371280,561523,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2044202,2044199,364256,20,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','zzzzzzz');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2044238,184385,1036579,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2045763,2040021,1015982,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2047577,2040021,2047578,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2047581,2040021,386892,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2047582,2040021,2047578,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2050978,179420,176278,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2052501,184385,166606,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2054090,184385,1065201,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2055134,184385,1077968,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2057343,1463197,2016982,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2057344,1463197,2057345,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2057358,1463197,2057345,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2057359,1463197,2057360,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2057363,1463197,2057348,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2058964,184385,163536,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2061354,1414175,388915,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2061432,184385,2061433,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2061707,2061704,2060549,20,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','zzzzzzz');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2061784,2061781,170921,20,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','zzzzzzz');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2062953,170918,170918,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2064796,2064793,896653,20,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','zzzzzzz');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2068129,178774,1121609,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2073522,1595377,2073523,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2073526,1595377,2073527,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2073530,1595377,2073531,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2073920,1291266,2073921,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2073962,1291266,2073963,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2081135,1595377,2081136,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2081139,1595377,1270731,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2081791,2081788,1205754,20,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','zzzzzzz');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2081841,1414175,170638,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2081842,1414175,1810599,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2081843,1414175,1647740,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2081981,1414175,1647740,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2091288,303082,2091289,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2094622,178774,186536,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2095304,2095301,236644,20,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','zzzzzzz');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2095308,2095305,236605,20,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','zzzzzzz');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2096354,236594,2095305,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2096772,1414175,168272,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2098608,184385,1830520,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2098609,184385,334553,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2098750,2098747,452918,20,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','zzzzzzz');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2098751,1291260,2073921,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2098752,1291260,1534493,3,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2099469,1725755,1096303,2,'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
insert into `test`(`id`,`contactId`,`objectId`,`action`,`description1`,`description2`,`comment`) values (2102576,1725755,2102577,1,'','yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy','');
This may be related to #43 - the symptom in my app was that I ran out of file descriptors. lsof revealed that I was leaking mysql connections.
I have traced the origins of this issue to changes made between the npm 0.6.0 and 0.7.0 releases. 0.7.0 and 0.8.0 appear to have this issue.
Here's some examples (my app code is unchanged across these runs):
james@ubuntu:~/nook$ npm install [email protected]
james@ubuntu:~/nook$ node app.js &
(access webapp in browser)
james@ubuntu:~/nook$ sudo lsof -p 4981 -P -n | grep 3306
node 4981 james 8u IPv4 825503 0t0 TCP 127.0.0.1:53629->127.0.0.1:3306 (CLOSE_WAIT)
(make another request in browser)
james@ubuntu:~/nook$ sudo lsof -p 4981 -P -n | grep 3306
node 4981 james 8u IPv4 825503 0t0 TCP 127.0.0.1:53629->127.0.0.1:3306 (CLOSE_WAIT)
node 4981 james 9u IPv4 825662 0t0 TCP 127.0.0.1:53630->127.0.0.1:3306 (CLOSE_WAIT)
Downgrade to 0.6.0:
james@ubuntu:~/nook$ npm install [email protected]
james@ubuntu:~/nook$ node app.js &
(access webapp in browser)
james@ubuntu:~/nook$ sudo lsof -p 5013 -P -n | grep 3306
(no output - as expected)
(access webapp 10x times in browser)
james@ubuntu:~/nook$ sudo lsof -p 5013 -P -n | grep 3306
(no output - as expected)
I will see if I can figure out what changed between releases. My guess is the conn.end() behavior has changed. From the documentation it sounds like end() attempts to gracefully close the connection. Perhaps another packet needs to be sent after the COM_QUIT?
thank you
-- James
Hello,
I tried to insert multiple rows with one insert. Syntax like this: "INSERT INTO foo VALUES ('a'), ('b'), ('c')". I got the following Error, this looks for me like a bug:
node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: too few parameters given at /usr/local/lib/node/.npm/mysql/0.9.1/package/lib/mysql/client.js:160:13 at String.replace (native) at Client.format (/usr/local/lib/node/.npm/mysql/0.9.1/package/lib/mysql/client.js:158:13) at Client.query (/usr/local/lib/node/.npm/mysql/0.9.1/package/lib/mysql/client.js:92:16) at /home/node/primarywall/dbMigration.js:70:12 at /usr/local/lib/node/.npm/async/0.1.8/package/lib/async.js:484:34 at Array. (/usr/local/lib/node/.npm/async/0.1.8/package/lib/async.js:408:34) at EventEmitter._tickCallback (node.js:126:26)
Upon issuing a query with a parameter array, sometimes node crashes on line 183 of client.js:
val = val.replace(/[\0\n\r\b\t\\\'\"\x1a]/g, function(s) {
with the exception that the object has no replace method. Wrapping this whole thing in a check if the object has a replace method is keeping my server running.
im not sure what happen but everything seem working fine except the node-mysql
anyone know how to resolve this?
thx
$ node sql.js
events:12
throw arguments[1];
^
Error: ENOTFOUND, Domain name not found
at IOWatcher.callback (dns:53:15)
at node.js:772:9
Ok, this is not specific to this module, but I came across it while trying to build something meaningful with it:
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var html = "<h1>Demo</h1>";
getSomeDate(client, function(someData) {
html += "<p>"+ someData +"</p>";
getSomeOtherDate(client, function(someOtherData) {
html += "<p>"+ someOtherData +"</p>";
getMoreData(client, function(moreData) {
html += "<p>"+ moreData +"</p>";
res.write(html);
res.end();
});
});
});
where:
getSomeData = function(client, callback) {
client.query(...);
}
How can I avoid this long nesting in cases like the above where I want to do multiple consecutive queries that depend on each other, like: get id, then get username for later id, ..., then get X for later Y,...
Hey,
I'm now running node-mysql in a socketserver with ~15 requests per second. Every request I'm fetching information from a table called "servers" which contains columns called id, subdomain, cpu and workdir. And sometimes when I want to use the value of the workdir column it gives me the value of the cpu column. So server.workdir then contains the value of the cpu column.
Did anyone experience something like that yet?
Hello there,
I created a table with one longtext column and put in the following string (just for testing)
It is 250 characters long.
This is my node.js code for selecting the data from the database:
this.client.query('SELECT * FROM tickets LIMIT 1', function(err, results, fields) {
console.log("ticket available");
return null;
});
Works fine for the 250 character string. As soon as I add another 0 the query will not load and be stuck in a kind of infinite loop.
To replicate the problem:
Call a stored procedure using the module, then in the callback for the stored procedure perform another query. The results of that inner query seems to be status information related to the outer stored procedure call. If you run yet another query inside that callback, you will get the results of the first inner query.
First run the following code to setup the test database:
-- CREATE TEST DATABASE
DROP DATABASE IF EXISTS testdb123;
CREATE DATABASE testdb123;
USE testdb123;
-- DEFINE A BASIC STORED PROCEDURE
DELIMITER $$
CREATE PROCEDURE testproc() BEGIN
SELECT 'sproc result';
END $$
DELIMITER ;
Then run the following code in Node.js to replicate the problem:
// Connect to MySQL
var MySqlClient = require('mysql').Client;
var client = new MySqlClient(
{
user: 'root',
password: 'letmein',
database: 'testdb123'
});
client.connect();
client.query(
'CALL testproc()',
function(inError, inResult) {
console.log('Stored procedure result:');
console.log(inResult);
client.query(
"SELECT 'one'",
function(inError, inResult) {
console.log('First query result (should be one):')
console.log(inResult);
client.query(
"SELECT 'two'",
function(inError, inResult) {
console.log('Second query result (should be two):')
console.log(inResult);
}
);
}
);
}
);
setTimeout(
function() {
client.query(
"SELECT 'three'",
function(inError, inResult) {
console.log('Third query result (should be three):')
console.log(inResult);
}
);
},
2500
);
The output is:
Stored procedure result:
[ { 'sproc result': 'sproc result' } ]
First query result (should be one):
{ affectedRows: 0
, insertId: 0
, serverStatus: 2
, warningCount: 0
, message: ''
, emit: [Function]
, addListener: [Function]
, on: [Function]
, removeListener: [Function]
, removeAllListeners: [Function]
, listeners: [Function]
}
Second query result (should be two):
[ { one: 'one' } ]
Third query result (should be three):
[ { three: 'three' } ]
I'm connecting to a database that has latin1 as charset on all tables, but when I send the data via nodejs to the client, the extended characters are broken (I suppose because nodejs and javascript in general user utf-8 as default encoding).
I try to change the client.charsetNumber but I'm not sure what the number means (and what are valida ones). I take a look at the mysql protocol without luck.
The working demo is running at [1], and basically is pulling all post from a vbulletin database and creating a 'timeline' in realtime, with nodejs on the server.
Any help is appreciated :)
Hi,
I found using "/var/run/mysqld/mysqld.sock" being 10 to 20 % faster than a local TCP connection. Esp. connecting is almost immediately.
I'd suggest setting host = null
and setting port
appropriately (if different from default) should open a local IPC connection. My diffs and it's follow up would do the trick.
I guess windows' named pipes should be usable the same way. Having no windows installation, I cannot help you with that. ;)
Greetings
René
Hello to all,
Felix thanks for your work, I heard about nodejs first time at the chaosradio podcast, so I tried it.
At the point, when I select more than 100 rows, the program does not work properly.
Sometimes i got rows sometimes not.
client.query(
//'SELECT id,a,b FROM '+TABLE+' limit 0,400',
'SELECT 1+1 as sum FROM '+TABLE,
function selectCb(err, results, fields) {
console.log('result handler start');
if (err) {
console.log("ERROR: " + err.message);
throw err;
}
console.log("Got "+results.length+" Rows:");
//console.log(results);
client.end();
console.log('finished.');
}
);
When I set the limit to more than 1001 rows, i never get any result.
Note: I never get an error, but the result handler is not executed. Whenever I expect an empty result (seen at the example above), the result handler is also not executed.
Are there any limits for js-Arrays, or what happens there?
Best regards
Jirko Kegler
The characters returned by the client.query call is not utf8. Resulting in a scrambled output using special foreign language characters. Wouldn't it be good to use utf8 as standard charset ?
/usr/local/lib/node/.npm/mysql/0.3.0/package/lib/mysql/client.js:229
this.database.length + 1
^
TypeError: Cannot read property 'length' of null
at Client._sendAuth (/usr/local/lib/node/.npm/mysql/0.3.0/package/lib/mysql/client.js:229:22)
at Client._handlePacket (/usr/local/lib/node/.npm/mysql/0.3.0/package/lib/mysql/client.js:193:10)
at Parser. (/usr/local/lib/node/.npm/mysql/0.3.0/package/lib/mysql/client.js:57:14)
at Parser.emit (events:26:26)
at /usr/local/lib/node/.npm/mysql/0.3.0/package/lib/mysql/parser.js:71:14
at Parser.write (/usr/local/lib/node/.npm/mysql/0.3.0/package/lib/mysql/parser.js:537:7)
at Stream. (/usr/local/lib/node/.npm/mysql/0.3.0/package/lib/mysql/client.js:52:16)
at Stream.emit (events:26:26)
at IOWatcher.callback (net:489:16)
at node.js:772:9
$ sudo npm install mysql
npm info it worked if it ends with ok
npm info version 0.1.27-12
npm ERR! Error: ucs {bad_utf8_character_code}: mysql
npm ERR! at IncomingMessage. (/usr/local/lib/node/.npm/npm/0.1.27-12/package/lib/utils/registry/request.js:83:19)
npm ERR! at IncomingMessage.emit (events:43:20)
npm ERR! at HTTPParser.onMessageComplete (http:107:23)
npm ERR! at Client.ondata (http:882:22)
npm ERR! at IOWatcher.callback (net:494:29)
npm ERR! at node.js:764:9
npm ERR! try running: 'npm help install'
npm ERR! Report this entire log at http://github.com/isaacs/npm/issues
npm ERR! or email it to [email protected]
npm not ok
Also posted this on npm site
On osx 10.6
Regards
Juan silva
Hi,
I am at a loss, I am doing a simple SELECT query and the javascript continues on its merry way before the query has a chance to return.
mysql.query('SELECT roles, IP, user_id FROM user WHERE user_name = \''+ username +'\'',
function(err, results)
{
if (err) {
throw err;
sys.log('Error ' +err);
}
else
{
user_role = results[0].roles;
cip = results[0].IP;
uid = results[0].user_id;
sys.log('got result from sql');
}
});
sys.log(user_role+' '+cip+' '+uid);
This is inside a function and the last line always displays before 'got result from sql' and the function has already returned empty results.
Am I doing something wrong?
var db = new Client();
db.user = 'root';
db.password = 'root';
db.database = 'test';
db.connect();
db.query("SELECT SLEEP(1)",function(){console.log("First sleep");});
db.query("SELECT SLEEP(2)",function(){console.log("Second sleep");});
db.end();
Above script give below error;
itunali@itunali:~/nodejs$ ./bin/node my2.js
First sleep
/home/itunali/.node_libraries/mysql/query.js:42
field = this._fields[0];
^
TypeError: Cannot read property '0' of undefined
at Query._handlePacket (/home/itunali/.node_libraries/mysql/query.js:42:31)
at Client._handlePacket (/home/itunali/.node_libraries/mysql/client.js:194:14)
at Parser. (/home/itunali/.node_libraries/mysql/client.js:56:14)
at Parser.emit (events:26:26)
at Parser.write (/home/itunali/.node_libraries/mysql/parser.js:479:16)
at Stream. (/home/itunali/.node_libraries/mysql/client.js:51:16)
at Stream.emit (events:26:26)
at IOWatcher.callback (net:489:16)
at node.js:762:9
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.