Code

analyzer: Check types of comparison operands.
[sysdb.git] / src / frontend / analyzer.c
index 894cc22f706376ac5df8fff483803a612ea07284..607015c233ce15cd4df4129b32024b95e7c735e1 100644 (file)
@@ -212,9 +212,13 @@ analyze_matcher(int context, sdb_store_matcher_t *m, sdb_strbuf_t *errbuf)
                                return -1;
 
                        if ((CMP_M(m)->left->data_type > 0)
-                                       && (CMP_M(m)->right->data_type > 0)
-                                       && (CMP_M(m)->left->data_type == CMP_M(m)->right->data_type))
-                               return 0;
+                                       && (CMP_M(m)->right->data_type > 0)) {
+                               if (CMP_M(m)->left->data_type == CMP_M(m)->right->data_type)
+                                       return 0;
+                               cmp_error(errbuf, m->type, CMP_M(m)->left->data_type,
+                                               CMP_M(m)->right->data_type);
+                               return -1;
+                       }
                        if ((CMP_M(m)->left->data_type > 0)
                                        && (CMP_M(m)->left->data_type & SDB_TYPE_ARRAY)) {
                                cmp_error(errbuf, m->type, CMP_M(m)->left->data_type,