Browse Source

remove postgresversion and convert unix timestamp in go

Sven Klemm 7 years ago
parent
commit
6d3da9a73d

+ 1 - 9
pkg/tsdb/postgres/macros.go

@@ -83,15 +83,7 @@ func (m *PostgresMacroEngine) evaluateMacro(name string, args []string) (string,
 			return "", fmt.Errorf("missing time column argument for macro %v", name)
 		}
 
-		pg_version := m.Query.DataSource.JsonData.Get("postgresVersion").MustInt(0)
-		if pg_version >= 80100 {
-			// postgres has to_timestamp(double) starting with 8.1
-			return fmt.Sprintf("%s BETWEEN to_timestamp(%d) AND to_timestamp(%d)", args[0], m.TimeRange.GetFromAsSecondsEpoch(), m.TimeRange.GetToAsSecondsEpoch()), nil
-		}
-
-		// dont use to_timestamp in this macro for redshift compatibility #9566
-		return fmt.Sprintf("%s BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", args[0], m.TimeRange.GetFromAsSecondsEpoch(), m.TimeRange.GetToAsSecondsEpoch()), nil
-
+		return fmt.Sprintf("%s BETWEEN '%s' AND '%s'", args[0], m.TimeRange.MustGetFrom().UTC().Format(time.RFC3339), m.TimeRange.MustGetTo().UTC().Format(time.RFC3339)), nil
 	case "__timeFrom":
 		return fmt.Sprintf("to_timestamp(%d)", m.TimeRange.GetFromAsSecondsEpoch()), nil
 	case "__timeTo":

+ 4 - 59
pkg/tsdb/postgres/macros_test.go

@@ -6,8 +6,6 @@ import (
 	"testing"
 	"time"
 
-	"github.com/grafana/grafana/pkg/components/simplejson"
-	"github.com/grafana/grafana/pkg/models"
 	"github.com/grafana/grafana/pkg/tsdb"
 	. "github.com/smartystreets/goconvey/convey"
 )
@@ -15,18 +13,7 @@ import (
 func TestMacroEngine(t *testing.T) {
 	Convey("MacroEngine", t, func() {
 		engine := NewPostgresMacroEngine()
-		// datasource with no pg version specified
-		ds := &models.DataSource{Id: 1, Type: "postgres", JsonData: simplejson.New()}
-		// datasource with postgres 8.0 configured
-		ds_80 := &models.DataSource{Id: 2, Type: "postgres", JsonData: simplejson.New()}
-		ds_80.JsonData.Set("postgresVersion", 80000)
-		// datasource with postgres 8.1 configured
-		ds_81 := &models.DataSource{Id: 3, Type: "postgres", JsonData: simplejson.New()}
-		ds_81.JsonData.Set("postgresVersion", 80100)
-
-		query := &tsdb.Query{RefId: "A", DataSource: ds}
-		query_80 := &tsdb.Query{RefId: "A", DataSource: ds_80}
-		query_81 := &tsdb.Query{RefId: "A", DataSource: ds_81}
+		query := &tsdb.Query{}
 
 		Convey("Given a time range between 2018-04-12 00:00 and 2018-04-12 00:05", func() {
 			from := time.Date(2018, 4, 12, 18, 0, 0, 0, time.UTC)
@@ -51,21 +38,7 @@ func TestMacroEngine(t *testing.T) {
 				sql, err := engine.Interpolate(query, timeRange, "WHERE $__timeFilter(time_column)")
 				So(err, ShouldBeNil)
 
-				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
-			})
-
-			Convey("interpolate __timeFilter function for postgres 8.0", func() {
-				sql, err := engine.Interpolate(query_80, timeRange, "WHERE $__timeFilter(time_column)")
-				So(err, ShouldBeNil)
-
-				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
-			})
-
-			Convey("interpolate __timeFilter function for postgres 8.1", func() {
-				sql, err := engine.Interpolate(query_81, timeRange, "WHERE $__timeFilter(time_column)")
-				So(err, ShouldBeNil)
-
-				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN to_timestamp(%d) AND to_timestamp(%d)", from.Unix(), to.Unix()))
+				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN '%s' AND '%s'", from.Format(time.RFC3339), to.Format(time.RFC3339)))
 			})
 
 			Convey("interpolate __timeFrom function", func() {
@@ -129,21 +102,7 @@ func TestMacroEngine(t *testing.T) {
 				sql, err := engine.Interpolate(query, timeRange, "WHERE $__timeFilter(time_column)")
 				So(err, ShouldBeNil)
 
-				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
-			})
-
-			Convey("interpolate __timeFilter function for 8.0", func() {
-				sql, err := engine.Interpolate(query_80, timeRange, "WHERE $__timeFilter(time_column)")
-				So(err, ShouldBeNil)
-
-				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
-			})
-
-			Convey("interpolate __timeFilter function for 8.1", func() {
-				sql, err := engine.Interpolate(query_81, timeRange, "WHERE $__timeFilter(time_column)")
-				So(err, ShouldBeNil)
-
-				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN to_timestamp(%d) AND to_timestamp(%d)", from.Unix(), to.Unix()))
+				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN '%s' AND '%s'", from.Format(time.RFC3339), to.Format(time.RFC3339)))
 			})
 
 			Convey("interpolate __timeFrom function", func() {
@@ -191,21 +150,7 @@ func TestMacroEngine(t *testing.T) {
 				sql, err := engine.Interpolate(query, timeRange, "WHERE $__timeFilter(time_column)")
 				So(err, ShouldBeNil)
 
-				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
-			})
-
-			Convey("interpolate __timeFilter function for 8.0", func() {
-				sql, err := engine.Interpolate(query_80, timeRange, "WHERE $__timeFilter(time_column)")
-				So(err, ShouldBeNil)
-
-				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN 'epoch'::timestamptz + %d * '1s'::interval AND 'epoch'::timestamptz + %d * '1s'::interval", from.Unix(), to.Unix()))
-			})
-
-			Convey("interpolate __timeFilter function for 8.1", func() {
-				sql, err := engine.Interpolate(query_81, timeRange, "WHERE $__timeFilter(time_column)")
-				So(err, ShouldBeNil)
-
-				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN to_timestamp(%d) AND to_timestamp(%d)", from.Unix(), to.Unix()))
+				So(sql, ShouldEqual, fmt.Sprintf("WHERE time_column BETWEEN '%s' AND '%s'", from.Format(time.RFC3339), to.Format(time.RFC3339)))
 			})
 
 			Convey("interpolate __timeFrom function", func() {

+ 0 - 5
public/app/plugins/datasource/postgres/module.ts

@@ -11,11 +11,6 @@ class PostgresConfigCtrl {
     this.current.jsonData.sslmode = this.current.jsonData.sslmode || 'verify-full';
   }
 
-  /* the values are chosen to be equivalent to `select current_setting('server_version_num');` */
-  postgresVersions = [
-    { name: '8.0+', value: 80000 },
-    { name: '8.1+', value: 80100 },
-  ];
 }
 
 const defaultQuery = `SELECT

+ 0 - 16
public/app/plugins/datasource/postgres/partials/config.html

@@ -38,22 +38,6 @@
 	</div>
 </div>
 
-<h3 class="page-heading">PostgreSQL details</h3>
-
-<div class="gf-form-group">
-	<div class="gf-form">
-		<span class="gf-form-label width-8">
-      Version
-      <info-popover mode="right-normal" position="top center">
-        This option controls what functions are used when expanding grafana macros.
-      </info-popover>
-    </span>
-    <span class="gf-form-select-wrapper">
-        <select class="gf-form-input gf-size-auto" ng-model="ctrl.current.jsonData.postgresVersion" ng-options="f.value as f.name for f in ctrl.postgresVersions"></select>
-    </span>
-	</div>
-</div>
-
 <div class="gf-form-group">
 	<div class="grafana-info-box">
 		<h5>User Permission</h5>