Can not regexp match predicates with newlines

diggy
Wed, 29 Jan 2020 19:23:23 +0000
Dgraph

Moved from GitHub dgraph/4694

Posted by insanitybit:

What version of Dgraph are you using?

Dgraph version : v1.1.0
Dgraph SHA-256 : 7d4294a80f74692695467e2cf17f74648c18087ed7057d798f40e1d3a31d2095
Commit SHA-1 : ef7cdb28
Commit timestamp : 2019-09-04 00:12:51 -0700
Branch : HEAD
Go version : go1.12.7

Name: pydgraph
Version: 2.0.2
Summary: Official Dgraph client implementation for Python
Home-page: GitHub - dgraph-io/pydgraph: Official Dgraph Python client
Author: Dgraph Labs
Author-email: contact@dgraph.io
License: Apache License, Version 2.0
Requires: grpcio, protobuf
Required-by:

Have you tried reproducing the issue with the latest release?

This is the latest ‘standalone’ release.

What is the hardware spec (RAM, OS)?

16GB RAM, 8 core intel.

Ubuntu 18.04.

Steps to reproduce the issue (command/config used to run Dgraph).

docker run --rm -it -p 8000:8000 -p 8080:8080 -p 9080:9080 dgraph/standalone:latest

Create a node with a predicate ‘foo’ and a value ‘00\n0’ .

Attempt to regexp match the newline character.

Here is an example query I have:

node_key = "e3e70682-c209-4cac-629f-6fbed82c07cd"

query = f"""
    {{
        q0(func: eq(node_key, "{node_key}"))
        @filter(regexp(arguments, /(?sm)^00./))
        {{
                uid,
                expand(_all_)
        }}
    }}
    """
json.loads(local_client.txn(read_only=True).query(query).json)

Or
@filter(regexp(arguments, /(?sm)^00\n/))
@filter(regexp(arguments, /00\n/))

etc

Expected behaviour and actual result.

I expect to see the predicate returned, because ‘.’ should match newline with the s/m flags. Or, with an explicit \n I should also see a value returned, but do not.

I can regex just ‘00’ and get the value back, but otherwise I can find no way to actually regexp when newlines are involved.

7 posts - 1 participant