diff --git a/Common/config/default.json b/Common/config/default.json index 21883ad3..3312d088 100644 --- a/Common/config/default.json +++ b/Common/config/default.json @@ -180,7 +180,7 @@ "options": {} }, "pubsub": { - "maxChanges": 1000 + "maxChanges": 0 }, "expire": { "saveLock": 60, diff --git a/DocService/sources/DocsCoServer.js b/DocService/sources/DocsCoServer.js index 68e40c0b..f3a5d925 100644 --- a/DocService/sources/DocsCoServer.js +++ b/DocService/sources/DocsCoServer.js @@ -506,7 +506,7 @@ function fillJwtByConnection(ctx, conn) { } function sendData(ctx, conn, data) { - conn.emit('message', JSON.stringify(data)); + conn.emit('message', data); const type = data ? data.type : null; ctx.logger.debug('sendData: type = %s', type); } @@ -1652,7 +1652,7 @@ exports.install = function(server, callbackFunction) { element = arrayElements[j]; // Добавляем GMT, т.к. в базу данных мы пишем UTC, но сохраняется туда строка без UTC и при зачитывании будет неправильное время - objChangesDocument.push({docid: docId, change: element['change_data'].data, + objChangesDocument.push({docid: docId, change: element['change_data'], time: element['change_date'].getTime(), user: element['user_id'], useridoriginal: element['user_id_original']}); } diff --git a/DocService/sources/postgreSqlBaseConnector.js b/DocService/sources/postgreSqlBaseConnector.js index 3c491f71..54798cbb 100644 --- a/DocService/sources/postgreSqlBaseConnector.js +++ b/DocService/sources/postgreSqlBaseConnector.js @@ -182,7 +182,7 @@ exports.insertChanges = function(ctx, tableChanges, startIndex, objChanges, docI let time = []; //Postgres 9.4 multi-argument unnest let sqlCommand = `INSERT INTO ${tableChanges} (tenant, id, change_id, user_id, user_id_original, user_name, change_data, change_date) `; - sqlCommand += "SELECT * FROM UNNEST ($1::text[], $2::text[], $3::int[], $4::text[], $5::text[], $6::text[], $7::text[], $8::timestamp[]);"; + sqlCommand += "SELECT * FROM UNNEST ($1::text[], $2::text[], $3::int[], $4::text[], $5::text[], $6::text[], $7::bytea[], $8::timestamp[]);"; let values = [tenant, id, changeId, userId, userIdOriginal, username, change, time]; let curLength = sqlCommand.length; for (; i < objChanges.length; ++i) { diff --git a/schema/mysql/upgrade/upgradev730.sql b/schema/mysql/upgrade/upgradev730.sql new file mode 100644 index 00000000..2c144f03 --- /dev/null +++ b/schema/mysql/upgrade/upgradev730.sql @@ -0,0 +1,18 @@ +DELIMITER DLM00 + +DROP PROCEDURE IF EXISTS upgrade730 DLM00 + +CREATE PROCEDURE upgrade730() +BEGIN + + IF (SELECT DATA_TYPE FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'doc_changes' AND COLUMN_NAME = 'change_data') <> 'longblob' THEN + SET SQL_SAFE_UPDATES=0; + ALTER TABLE `doc_changes` CHANGE COLUMN `change_data` `change_data` LONGBLOB NOT NULL ; + SET SQL_SAFE_UPDATES=1; + END IF; + +END DLM00 + +CALL upgrade730() DLM00 + +DELIMITER ; diff --git a/schema/postgresql/upgrade/upgradev730.sql b/schema/postgresql/upgrade/upgradev730.sql new file mode 100644 index 00000000..a13b7ea8 --- /dev/null +++ b/schema/postgresql/upgrade/upgradev730.sql @@ -0,0 +1,9 @@ +DO $$ + BEGIN + BEGIN + ALTER TABLE doc_changes ALTER COLUMN change_data TYPE bytea USING change_data::bytea; + EXCEPTION + WHEN duplicate_column THEN RAISE NOTICE 'cant modify doc_changes.change_data colummn'; + END; + END; +$$