Mazars-Tech/AD_Miner

neo4j.exceptions.CypherSyntaxError: {code: Neo.ClientError.Statement.SyntaxError} {message: The property existence syntax `... exists(variable.property)` is no longer supported. Please use `variable.property IS NOT NULL` instead.

Closed this issue · 1 comments

Neo4j Version 1.5.8 (1.5.8.105)
Collected with bloodhound.py

AD-miner -c -cf My_Report -u neo4j -p password -b bolt://localhost:7687
Traceback (most recent call last):
  File "/opt/homebrew/bin/AD-miner", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/opt/homebrew/lib/python3.12/site-packages/ad_miner/__main__.py", line 144, in main
    extract_date, total_objects, number_relations, boolean_azure = pre_request(arguments)
                                                                   ^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.12/site-packages/ad_miner/sources/modules/neo4j_class.py", line 90, in pre_request
    for record in tx.run(
                  ^^^^^^^
  File "/opt/homebrew/lib/python3.12/site-packages/neo4j/_sync/work/transaction.py", line 156, in run
    result._tx_ready_run(query, parameters)
  File "/opt/homebrew/lib/python3.12/site-packages/neo4j/_sync/work/result.py", line 120, in _tx_ready_run
    self._run(query, parameters, None, None, None, None)
  File "/opt/homebrew/lib/python3.12/site-packages/neo4j/_sync/work/result.py", line 166, in _run
    self._attach()
  File "/opt/homebrew/lib/python3.12/site-packages/neo4j/_sync/work/result.py", line 274, in _attach
    self._connection.fetch_message()
  File "/opt/homebrew/lib/python3.12/site-packages/neo4j/_sync/io/_common.py", line 180, in inner
    func(*args, **kwargs)
  File "/opt/homebrew/lib/python3.12/site-packages/neo4j/_sync/io/_bolt.py", line 658, in fetch_message
    res = self._process_message(tag, fields)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.12/site-packages/neo4j/_sync/io/_bolt5.py", line 317, in _process_message
    response.on_failure(summary_metadata or {})
  File "/opt/homebrew/lib/python3.12/site-packages/neo4j/_sync/io/_common.py", line 247, in on_failure
    raise Neo4jError.hydrate(**metadata)
neo4j.exceptions.CypherSyntaxError: {code: Neo.ClientError.Statement.SyntaxError} {message: The property existence syntax `... exists(variable.property)` is no longer supported. Please use `variable.property IS NOT NULL` instead. (line 1, column 17 (offset: 16))
"MATCH (n) WHERE EXISTS(n.tenantid) return n LIMIT 1"
                 ^}

Hi,

Bloodhound requires you to use Neo4j 4.x (and not 5.x). You are coming across this issue because the EXISTS() function no longer allows in 5.x to check if an attribute exists.