From e00836f8df00670e8c02daad7e02a13283ddb92f Mon Sep 17 00:00:00 2001 From: Florian Orben Date: Thu, 5 Nov 2015 23:55:31 +0100 Subject: postgres needs another query to get table information... --- store/sql_post_store.go | 4 ++-- store/sql_store.go | 21 ++++++--------------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/store/sql_post_store.go b/store/sql_post_store.go index 61cd109a1..7978408a2 100644 --- a/store/sql_post_store.go +++ b/store/sql_post_store.go @@ -40,8 +40,8 @@ func NewSqlPostStore(sqlStore *SqlStore) PostStore { } func (s SqlPostStore) UpgradeSchemaIfNeeded() { - col := s.GetColumnInformation("Posts", "Props") - if col.Type != "text" { + colType := s.GetColumnDataType("Posts", "Props") + if colType != "text" { _, err := s.GetMaster().Exec("ALTER TABLE Posts MODIFY COLUMN Props TEXT") if err != nil { l4g.Critical("Failed to alter column Posts.Props to TEXT: " + err.Error()) diff --git a/store/sql_store.go b/store/sql_store.go index d2cca21d0..697c89589 100644 --- a/store/sql_store.go +++ b/store/sql_store.go @@ -50,15 +50,6 @@ type SqlStore struct { preference PreferenceStore } -type Column struct { - Field string - Type string - Null string - Key interface{} - Default interface{} - Extra interface{} -} - func NewSqlStore() Store { sqlStore := &SqlStore{} @@ -464,18 +455,18 @@ func IsUniqueConstraintError(err string, mysql string, postgres string) bool { return unique && field } -func (ss SqlStore) GetColumnInformation(tableName, columnName string) Column { - var col Column - err := ss.GetMaster().SelectOne(&col, "SHOW COLUMNS FROM "+tableName+" WHERE Field = :Columnname", map[string]interface{}{ +func (ss SqlStore) GetColumnDataType(tableName, columnName string) string { + dataType, err := ss.GetMaster().SelectStr("SELECT data_type FROM INFORMATION_SCHEMA.COLUMNS where table_name = :Tablename AND column_name = :Columnname", map[string]interface{}{ + "Tablename": tableName, "Columnname": columnName, }) if err != nil { - l4g.Critical("Failed to get information for column %s from table %s: %v", tableName, columnName, err.Error()) + l4g.Critical("Failed to get data type for column %s from table %s: %v", tableName, columnName, err.Error()) time.Sleep(time.Second) - panic("Failed to get information for column " + tableName + " from table " + columnName + ": " + err.Error()) + panic("Failed to get get data type for column " + tableName + " from table " + columnName + ": " + err.Error()) } - return col + return dataType } func (ss SqlStore) GetMaster() *gorp.DbMap { -- cgit v1.2.3-1-g7c22