Skip to content

Commit fa24182

Browse files
committed
Merge pull request #82 from juttle/disallow-null-filter
Disallow filtering on null
2 parents 642f020 + 20eed97 commit fa24182

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

lib/ast/lint.js

+4
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ class Linter extends ASTVisitor {
6868
this[`visit${node.type}`].apply(this, arguments);
6969
}
7070

71+
visitNullLiteral(node, options) {
72+
throw new Error('Filtering null values is not supported');
73+
}
74+
7175
visitSimpleFilterTerm(node, options) {
7276
if (node.expression.type === 'StringLiteral') {
7377
throw new Error('Full text search is not supported');

test/ast/lint.spec.js

+13
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,19 @@ describe('query linting', () => {
158158
});
159159
});
160160

161+
it('doesnt allow null filters', () => {
162+
var tests = [
163+
'field != null',
164+
'field = null',
165+
'field1 = null or field2 = "1"',
166+
];
167+
168+
_.each(tests, (test) => {
169+
var ast = utils.parseFilter(test);
170+
expect(linter.lint.bind(linter, ast, { nameField: 'name' })).to.throw(/Filtering null values is not supported/);
171+
});
172+
});
173+
161174
it('doesnt allow FTS filters', () => {
162175
var tests = [
163176
'"some string"',

test/query/query.spec.js

-5
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,6 @@ describe('influxql query building', () => {
108108
expect(builder.build({ nameField: 'name' }, { filter_ast })).to.equal('SELECT * FROM /.*/ WHERE "key" = 1');
109109
});
110110

111-
it('simple filter null', () => {
112-
var filter_ast = utils.parseFilter('key = null');
113-
expect(builder.build({ nameField: 'name' }, { filter_ast })).to.equal('SELECT * FROM /.*/ WHERE "key" = null');
114-
});
115-
116111
it('implicit and', () => {
117112
var filter_ast = utils.parseFilter('key1 = "val1" key2 = "val2"');
118113
expect(builder.build({ nameField: 'name' }, { filter_ast })).to.equal('SELECT * FROM /.*/ WHERE "key1" = \'val1\' AND "key2" = \'val2\'');

0 commit comments

Comments
 (0)