call Populate_Geometry_Columns only for PostGIS <2

Returns errors for tables with mixed geometry types (Polygon/MultiPolygon),
but is not required anyway for PostGIS >=2.
master
Oliver Tonnhofer 2015-07-29 11:42:36 +02:00
parent 15911a948b
commit e29be21f51
1 changed files with 18 additions and 1 deletions

View File

@ -81,6 +81,17 @@ func addGeometryColumn(tx *sql.Tx, tableName string, spec TableSpec) error {
return nil
}
func isPostGIS2(tx *sql.Tx) (bool, error) {
sql := fmt.Sprintf("SELECT PostGIS_lib_version();")
row := tx.QueryRow(sql)
var version string
err := row.Scan(&version)
if err != nil {
return false, &SQLError{sql, err}
}
return strings.HasPrefix(version, "2."), nil
}
func populateGeometryColumn(tx *sql.Tx, tableName string, spec TableSpec) error {
sql := fmt.Sprintf("SELECT Populate_Geometry_Columns('%s.%s'::regclass);",
spec.Schema, tableName)
@ -313,10 +324,16 @@ func (pg *PostGIS) generalizeTable(table *GeneralizedTableSpec) error {
return &SQLError{sql, err}
}
err = populateGeometryColumn(tx, table.FullName, *table.Source)
isPG2, err := isPostGIS2(tx)
if err != nil {
return err
}
if !isPG2 {
err = populateGeometryColumn(tx, table.FullName, *table.Source)
if err != nil {
return err
}
}
err = tx.Commit()
if err != nil {