diff --git a/web/pgadmin/static/js/selection/range_boundary_navigator.js b/web/pgadmin/static/js/selection/range_boundary_navigator.js index aed5ae60c..f1416b987 100644 --- a/web/pgadmin/static/js/selection/range_boundary_navigator.js +++ b/web/pgadmin/static/js/selection/range_boundary_navigator.js @@ -7,8 +7,8 @@ // ////////////////////////////////////////////////////////////// -define(['sources/selection/range_selection_helper'], - function (RangeSelectionHelper) { +define(['sources/selection/range_selection_helper', 'json-bignumber'], + function (RangeSelectionHelper, JSONBigNumber) { return { getUnion: function (allRanges) { if (_.isEmpty(allRanges)) { @@ -135,12 +135,13 @@ define(['sources/selection/range_selection_helper'], csvCell: function (data, columnDefinitions, CSVOptions, rowId, colId) { var val = data[rowId][columnDefinitions[colId].field], + cell_type = columnDefinitions[colId].cell || '', quoting = CSVOptions.quoting || 'strings', quote_char = CSVOptions.quote_char || '"'; if (quoting == 'all') { if (val && _.isObject(val)) { - val = quote_char + JSON.stringify(val) + quote_char; + val = quote_char + JSONBigNumber.stringify(val) + quote_char; } else if (val) { val = quote_char + val.toString() + quote_char; } else if (_.isNull(val) || _.isUndefined(val)) { @@ -149,8 +150,8 @@ define(['sources/selection/range_selection_helper'], } else if(quoting == 'strings') { if (val && _.isObject(val)) { - val = quote_char + JSON.stringify(val) + quote_char; - } else if (val && typeof val != 'number' && typeof val != 'boolean') { + val = quote_char + JSONBigNumber.stringify(val) + quote_char; + } else if (val && cell_type != 'number' && cell_type != 'boolean') { val = quote_char + val.toString() + quote_char; } else if (_.isNull(val) || _.isUndefined(val)) { val = ''; diff --git a/web/pgadmin/static/js/slickgrid/editors.js b/web/pgadmin/static/js/slickgrid/editors.js index 22bd86bae..9852d7398 100644 --- a/web/pgadmin/static/js/slickgrid/editors.js +++ b/web/pgadmin/static/js/slickgrid/editors.js @@ -411,6 +411,7 @@ import gettext from 'sources/gettext'; $input.addClass('pg-text-invalid'); return { valid: false, + msg: e.message, }; } } diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js index 5bfcc3487..ee370a262 100644 --- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js +++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js @@ -768,6 +768,7 @@ define('tools.querytool', [ display_name: c.display_name, column_type: c.column_type, column_type_internal: c.column_type_internal, + cell: c.cell, not_null: c.not_null, has_default_val: c.has_default_val, is_array: c.is_array, diff --git a/web/regression/javascript/selection/range_boundary_navigator_spec.js b/web/regression/javascript/selection/range_boundary_navigator_spec.js index bdc79999f..0a3fa3f15 100644 --- a/web/regression/javascript/selection/range_boundary_navigator_spec.js +++ b/web/regression/javascript/selection/range_boundary_navigator_spec.js @@ -139,9 +139,9 @@ describe('RangeBoundaryNavigator', function () { {'id':3, 'animal':'cougar', 'size':'9'}, {'id':4, 'animal':'tiger', 'size':'10'}]; - columnDefinitions = [{name: 'id', field: 'id', pos: 0}, - {name: 'animal', field: 'animal', pos: 1}, - {name: 'size', field: 'size', pos: 2}]; + columnDefinitions = [{name: 'id', field: 'id', pos: 0, cell:'number'}, + {name: 'animal', field: 'animal', pos: 1, cell:'string'}, + {name: 'size', field: 'size', pos: 2, cell:'string'}]; ranges = [new Slick.Range(0, 0, 0, 2), new Slick.Range(3, 0, 3, 2)]; CSVOptions = [{'quoting': 'all', 'quote_char': '"', 'field_separator': ','}, @@ -166,9 +166,9 @@ describe('RangeBoundaryNavigator', function () { describe('when there is an extra column with checkboxes', function () { beforeEach(function () { columnDefinitions = [{name: 'not-a-data-column'}, - {name: 'id', field: 'id', pos: 0}, - {name: 'animal', field: 'animal', pos: 1}, - {name: 'size', field: 'size',pos: 2}]; + {name: 'id', field: 'id', pos: 0, cell:'number'}, + {name: 'animal', field: 'animal', pos: 1, cell:'string'}, + {name: 'size', field: 'size',pos: 2, cell:'string'}]; ranges = [new Slick.Range(0, 0, 0, 3), new Slick.Range(3, 0, 3, 3)]; });