Преглед изворни кода

suggest operators depending on datatype

Sven Klemm пре 7 година
родитељ
комит
8e4db8cc3a

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

@@ -1,6 +1,23 @@
 export class PostgresMetaQuery {
   constructor(private target, private queryModel) {}
 
+  getOperators(datatype: string) {
+    switch (datatype) {
+      case 'float4':
+      case 'float8': {
+        return ['=', '!=', '<', '<=', '>', '>='];
+      }
+      case 'text':
+      case 'varchar':
+      case 'char': {
+        return ['=', '!=', '<', '<=', '>', '>=', 'IN', 'NOT IN', 'LIKE', 'NOT LIKE', '~', '~*', '!~', '!~*'];
+      }
+      default: {
+        return ['=', '!=', '<', '<=', '>', '>=', 'IN', 'NOT IN'];
+      }
+    }
+  }
+
   // quote identifier as literal to use in metadata queries
   quoteIdentAsLiteral(value) {
     return this.queryModel.quoteLiteral(this.queryModel.unquoteIdentifier(value));

+ 1 - 1
public/app/plugins/datasource/postgres/query_ctrl.ts

@@ -493,7 +493,7 @@ export class PostgresQueryCtrl extends QueryCtrl {
                 .catch(this.handleQueryError.bind(this));
             }
           case 'op':
-            return this.$q.when(this.uiSegmentSrv.newOperators(['=', '!=', '<', '<=', '>', '>=', 'IN', 'NOT IN']));
+            return this.$q.when(this.uiSegmentSrv.newOperators(this.metaBuilder.getOperators(part.datatype)));
           default:
             return this.$q.when([]);
         }