Open iddan opened 4 years ago
Description When applying to exclude on a non-existing node the query crashes.
Steps to reproduce the issue:
g.V().except(g.V(g.IRI("foo"))).all();
Expected results:
null
Output of cayley version or commit hash:
cayley version
Cayley version: v0.8.x-dev Git commit hash: dev snapshot
Logs
panic: runtime error: invalid memory address or nil pointer dereference [recovered] panic: Panic at 87: runtime error: invalid memory address or nil pointer dereference [recovered] panic: Panic at 87: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x44e7349] goroutine 117 [running]: github.com/dop251/goja.(*Runtime).RunProgram.func1(0xc00016bef8) /Users/iddan/go/pkg/mod/github.com/dop251/goja@v0.0.0-20190105122144-6d5bf35058fa/runtime.go:880 +0x98 panic(0x5050a60, 0xc000486050) /usr/local/Cellar/go/1.13.8/libexec/src/runtime/panic.go:679 +0x1b2 github.com/dop251/goja.(*vm).try.func1(0xc0004ac340, 0x0, 0xc00016bdc0, 0x0, 0x0, 0x0, 0xc00016be18) /Users/iddan/go/pkg/mod/github.com/dop251/goja@v0.0.0-20190105122144-6d5bf35058fa/vm.go:364 +0x496 panic(0x5070760, 0x613df30) /usr/local/Cellar/go/1.13.8/libexec/src/runtime/panic.go:679 +0x1b2 github.com/cayleygraph/cayley/query/shape.Except.Optimize(0x0, 0x0, 0x55dba20, 0x617ce38, 0x55f14a0, 0xc000287340, 0x0, 0x0, 0x508ba40, 0xc000129101, ...) /Users/iddan/cayley/query/shape/shape.go:272 +0x29 github.com/cayleygraph/cayley/query/shape.Intersect.Optimize(0xc000129120, 0x2, 0x2, 0x55f14a0, 0xc000287340, 0x0, 0x0, 0x0, 0x0, 0x50c6601) /Users/iddan/cayley/query/shape/shape.go:939 +0x17e github.com/cayleygraph/cayley/query/shape.Optimize(0x55f14a0, 0xc000287340, 0x55dbba0, 0xc000128c20, 0x5609080, 0xc0000dc9a0, 0x0, 0x0, 0xc000389850) /Users/iddan/cayley/query/shape/shape.go:77 +0xb6 github.com/cayleygraph/cayley/query/shape.BuildIterator(0x55f14a0, 0xc000287340, 0x5609080, 0xc0000dc9a0, 0x55dbba0, 0xc000128c20, 0x0, 0x8) /Users/iddan/cayley/query/shape/shape.go:215 +0x123 github.com/cayleygraph/cayley/query/path.(*Path).BuildIteratorOn(0xc00012a0c0, 0x55f14a0, 0xc000287340, 0x5609080, 0xc0000dc9a0, 0xc000128ae0, 0xc00015d648) /Users/iddan/cayley/query/path/path.go:527 +0x87 github.com/cayleygraph/cayley/query/gizmo.(*pathObject).buildIteratorTree(...) /Users/iddan/cayley/query/gizmo/traversals.go:86 github.com/cayleygraph/cayley/query/gizmo.(*pathObject).GetLimit(0xc000128920, 0x64, 0x407f746, 0x4ff0040) /Users/iddan/cayley/query/gizmo/finals.go:28 +0xf4 github.com/cayleygraph/cayley/query/gizmo.(*pathObject).All(0xc000128920, 0x0, 0x0) /Users/iddan/cayley/query/gizmo/finals.go:37 +0x3a reflect.callMethod(0xc00012a100, 0xc00016b780, 0xc00016b768) /usr/local/Cellar/go/1.13.8/libexec/src/reflect/value.go:714 +0x1f0 reflect.methodValueCall(0x0, 0x0, 0xc000128a01, 0xc000389a80, 0xc00016b9c0, 0x4094ae6, 0xc00038aff0, 0xc00012a100, 0xc000389a80, 0x10, ...) /usr/local/Cellar/go/1.13.8/libexec/src/reflect/asm_amd64.s:35 +0x42 reflect.Value.call(0x4fe7540, 0xc00012a100, 0x13, 0x5237e70, 0x4, 0x617ce38, 0x0, 0x0, 0xc00015da40, 0x404812c, ...) /usr/local/Cellar/go/1.13.8/libexec/src/reflect/value.go:460 +0x5f6 reflect.Value.Call(0x4fe7540, 0xc00012a100, 0x13, 0x617ce38, 0x0, 0x0, 0x4d63630, 0xc000564900, 0xc00038b080) /usr/local/Cellar/go/1.13.8/libexec/src/reflect/value.go:321 +0xb4 github.com/dop251/goja.(*Runtime).wrapReflectFunc.func1(0x560ca60, 0xc000128980, 0xc000150800, 0x0, 0xc, 0x560ca60, 0xc000128a60) /Users/iddan/go/pkg/mod/github.com/dop251/goja@v0.0.0-20190105122144-6d5bf35058fa/runtime.go:1153 +0x78b github.com/dop251/goja.(*vm)._nativeCall(0xc0004ac340, 0xc000115d90, 0x0) /Users/iddan/go/pkg/mod/github.com/dop251/goja@v0.0.0-20190105122144-6d5bf35058fa/vm.go:1826 +0x291 github.com/dop251/goja.call.exec(0x0, 0xc0004ac340) /Users/iddan/go/pkg/mod/github.com/dop251/goja@v0.0.0-20190105122144-6d5bf35058fa/vm.go:1810 +0x4a2 github.com/dop251/goja.(*vm).run(0xc0004ac340) /Users/iddan/go/pkg/mod/github.com/dop251/goja@v0.0.0-20190105122144-6d5bf35058fa/vm.go:288 +0x51 github.com/dop251/goja.(*vm).try(0xc0004ac340, 0xc00046be20, 0x0) /Users/iddan/go/pkg/mod/github.com/dop251/goja@v0.0.0-20190105122144-6d5bf35058fa/vm.go:370 +0x147 github.com/dop251/goja.(*vm).runTry(0xc0004ac340, 0x0) /Users/iddan/go/pkg/mod/github.com/dop251/goja@v0.0.0-20190105122144-6d5bf35058fa/vm.go:375 +0x4e github.com/dop251/goja.(*Runtime).RunProgram(0xc000564900, 0xc00003ccc0, 0x0, 0x0, 0x0, 0x0) /Users/iddan/go/pkg/mod/github.com/dop251/goja@v0.0.0-20190105122144-6d5bf35058fa/runtime.go:891 +0x1ec github.com/cayleygraph/cayley/query/gizmo.(*Session).run(0xc00020a320, 0x0, 0x0, 0x0, 0x0) /Users/iddan/cayley/query/gizmo/gizmo.go:274 +0x3c github.com/cayleygraph/cayley/query/gizmo.(*results).Next.func1(0xc0000ceeb0) /Users/iddan/cayley/query/gizmo/gizmo.go:332 +0x89 created by github.com/cayleygraph/cayley/query/gizmo.(*results).Next /Users/iddan/cayley/query/gizmo/gizmo.go:330 +0x2d2
Environment details:
Backend database: memstore and bolt
memstore
bolt
Description When applying to exclude on a non-existing node the query crashes.
Steps to reproduce the issue:
Expected results:
null
Output of
cayley version
or commit hash:Logs
Environment details:
Backend database:
memstore
andbolt