不要怂,就是干,撸起袖子干!

Commit 401adaf2 by Jan Aagaard Meier

feat(datatypes) Select oids dynamically for hstore and geometry in postgres

1 parent 2ab9439d
......@@ -6,8 +6,7 @@ var AbstractConnectionManager = require('../abstract/connection-manager')
, Promise = require('../../promise')
, sequelizeErrors = require('../../errors')
, semver = require('semver')
, dataTypes = require('../../data-types').postgres
, _ = require('lodash');
, dataTypes = require('../../data-types');
ConnectionManager = function(dialect, sequelize) {
AbstractConnectionManager.call(this, dialect, sequelize);
......@@ -20,7 +19,7 @@ ConnectionManager = function(dialect, sequelize) {
throw new Error('Please install \'' + (sequelize.config.dialectModulePath || 'pg') + '\' module manually');
}
this.refreshTypeParser(dataTypes);
this.refreshTypeParser(dataTypes.postgres);
};
Utils._.extend(ConnectionManager.prototype, AbstractConnectionManager.prototype);
......@@ -130,12 +129,27 @@ ConnectionManager.prototype.connect = function(config) {
}
if (!self.sequelize.config.keepDefaultTimezone) {
query += 'SET client_min_messages TO warning; SET TIME ZONE INTERVAL \'' + self.sequelize.options.timezone + '\' HOUR TO MINUTE';
query += 'SET client_min_messages TO warning; SET TIME ZONE INTERVAL \'' + self.sequelize.options.timezone + '\' HOUR TO MINUTE;';
}
// oids for hstore and geometry are dynamic - so select them at connection time
if (dataTypes.HSTORE.types.postgres.oids.length === 0) {
query += 'SELECT typname, oid, typarray FROM pg_type WHERE typtype = \'b\' AND typname IN (\'hstore\', \'geometry\')';
}
return new Promise(function (resolve, reject) {
connection.query(query).on('error', function (err) {
reject(err);
}).on('row', function (row) {
var type;
if (row.typname === 'geometry') {
type = dataTypes.GEOMETRY;
} else if (row.typname === 'hstore') {
type = dataTypes.HSTORE;
}
type.types.postgres.oids.push(row.oid);
type.types.postgres.array_oids.push(row.typarray);
}).on('end', function () {
resolve();
});
......
......@@ -257,7 +257,8 @@ module.exports = function (BaseTypes) {
};
BaseTypes.GEOMETRY.types.postgres = {
oids: [2163225]
oids: [],
array_oids: []
};
GEOMETRY.parse = GEOMETRY.prototype.parse = function(value) {
......@@ -276,8 +277,8 @@ module.exports = function (BaseTypes) {
};
BaseTypes.HSTORE.types.postgres = {
oids: [2164508],
array_oids: [2164513]
oids: [],
array_oids: []
};
var RANGE = BaseTypes.RANGE.inherits();
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!