@@ -2,9 +2,9 @@ package mysql
22
33import (
44 "fmt"
5- "strconv"
65 "strings"
76
7+ "github.com/hashicorp/go-version"
88 mysqlc "github.com/ziutek/mymysql/mysql"
99 mysqlts "github.com/ziutek/mymysql/thrsafe"
1010
@@ -13,10 +13,8 @@ import (
1313)
1414
1515type providerConfiguration struct {
16- Conn mysqlc.Conn
17- VersionMajor uint
18- VersionMinor uint
19- VersionPatch uint
16+ Conn mysqlc.Conn
17+ ServerVersion * version.Version
2018}
2119
2220func Provider () terraform.ResourceProvider {
@@ -88,16 +86,14 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) {
8886 return nil , err
8987 }
9088
91- major , minor , patch , err := mysqlVersion (conn )
89+ ver , err := serverVersion (conn )
9290 if err != nil {
9391 return nil , err
9492 }
9593
9694 return & providerConfiguration {
97- Conn : conn ,
98- VersionMajor : major ,
99- VersionMinor : minor ,
100- VersionPatch : patch ,
95+ Conn : conn ,
96+ ServerVersion : ver ,
10197 }, nil
10298}
10399
@@ -107,36 +103,14 @@ func quoteIdentifier(in string) string {
107103 return fmt .Sprintf ("`%s`" , identQuoteReplacer .Replace (in ))
108104}
109105
110- func mysqlVersion (conn mysqlc.Conn ) (uint , uint , uint , error ) {
106+ func serverVersion (conn mysqlc.Conn ) (* version. Version , error ) {
111107 rows , _ , err := conn .Query ("SELECT VERSION()" )
112108 if err != nil {
113- return 0 , 0 , 0 , err
109+ return nil , err
114110 }
115111 if len (rows ) == 0 {
116- return 0 , 0 , 0 , fmt .Errorf ("SELECT VERSION() returned an empty set" )
117- }
118-
119- versionString := rows [0 ].Str (0 )
120- version := strings .Split (versionString , "." )
121- invalidVersionErr := fmt .Errorf ("Invalid major.minor.patch in %q" , versionString )
122- if len (version ) != 3 {
123- return 0 , 0 , 0 , invalidVersionErr
124- }
125-
126- major , err := strconv .ParseUint (version [0 ], 10 , 32 )
127- if err != nil {
128- return 0 , 0 , 0 , invalidVersionErr
129- }
130-
131- minor , err := strconv .ParseUint (version [1 ], 10 , 32 )
132- if err != nil {
133- return 0 , 0 , 0 , invalidVersionErr
134- }
135-
136- patch , err := strconv .ParseUint (version [2 ], 10 , 32 )
137- if err != nil {
138- return 0 , 0 , 0 , invalidVersionErr
112+ return nil , fmt .Errorf ("SELECT VERSION() returned an empty set" )
139113 }
140114
141- return uint ( major ), uint ( minor ), uint ( patch ), nil
115+ return version . NewVersion ( rows [ 0 ]. Str ( 0 ))
142116}
0 commit comments