瀏覽代碼

Don't do value suggestions for numeric and timestamp

Sven Klemm 7 年之前
父節點
當前提交
8ced29a0e7

+ 0 - 1
public/app/plugins/datasource/postgres/meta_query.ts

@@ -143,7 +143,6 @@ WHERE
     ) s
     WHERE EXISTS (SELECT 1 FROM information_schema.schemata WHERE schema_name = s.schema)
   )
-LIMIT 1
 `;
     query += ' AND table_name = ' + this.quoteIdentAsLiteral(this.target.table);
     query += ' AND column_name = ' + this.quoteIdentAsLiteral(column);

+ 21 - 4
public/app/plugins/datasource/postgres/query_ctrl.ts

@@ -474,10 +474,22 @@ export class PostgresQueryCtrl extends QueryCtrl {
               .then(this.transformToSegments({}))
               .catch(this.handleQueryError.bind(this));
           case 'right':
-            return this.datasource
-              .metricFindQuery(this.metaBuilder.buildValueQuery(part.params[0]))
-              .then(this.transformToSegments({ addTemplateVars: true, templateQuoter: this.queryModel.quoteLiteral }))
-              .catch(this.handleQueryError.bind(this));
+            if (['int4', 'int8', 'float4', 'float8', 'timestamp', 'timestamptz'].indexOf(part.datatype) > -1) {
+              // don't do value lookups for numerical fields
+              return this.$q.when([]);
+            } else {
+              return this.datasource
+                .metricFindQuery(this.metaBuilder.buildValueQuery(part.params[0]))
+                .then(
+                  this.transformToSegments({
+                    addTemplateVars: true,
+                    templateQuoter: (v: string) => {
+                      return this.queryModel.quoteLiteral(v);
+                    },
+                  })
+                )
+                .catch(this.handleQueryError.bind(this));
+            }
           case 'op':
             return this.$q.when(this.uiSegmentSrv.newOperators(['=', '!=', '<', '<=', '>', '>=', 'IN', 'NOT IN']));
           default:
@@ -485,6 +497,11 @@ export class PostgresQueryCtrl extends QueryCtrl {
         }
       }
       case 'part-param-changed': {
+        this.datasource.metricFindQuery(this.metaBuilder.buildDatatypeQuery(part.params[0])).then((d: any) => {
+          if (d.length === 1) {
+            part.datatype = d[0].text;
+          }
+        });
         this.panelCtrl.refresh();
         break;
       }