Issue 1:
The attached statement does not run on Neo4j 2.3.x (tested on 2.3.8), and instead issues warnings:

WARNING: Unknown identifier ` INTERNAL_AGGREGATE8d07c913-1eb3-4574-b62b-b2a9dddbd42c`.
Unknown identifier ` INTERNAL_AGGREGATE4ea6739e-f25a-4f19-b099-60519ff03cd1`.
Unknown identifier ` AGGREGATION498`.
Unknown identifier `billUK`.
Unknown identifier `billMobile`.
Unknown identifier `billInternational`.
Unknown identifier ` INTERNAL_AGGREGATEca8affd6-a1f2-47a3-b395-155727b9e713`.
Unknown identifier ` INTERNAL_AGGREGATEb4bf602f-803d-474e-9362-580a25153846`.

The statement is:

WITH "2016-11" AS month, "November" as monthName
MATCH (s:Source),(p:PhoneLine)--(so:SalesOrder)--(i:Invoiceable { state: "DRAFT"})
WHERE s.src = p.msisdn
WITH month, monthName, so, s, i, so.phone_callingPlan = "PAYT" AS billUK, NOT HAS(so.boltOns_mobile) AS billMobile, NOT HAS(so.boltOns_international) AS billInternational
WITH month, monthName, so, s, i, billUK, billMobile, billInternational
MATCH (s)--(c:Call)--(ch:Charge)--(t:Tariff)
WHERE c.start STARTS WITH month
WITH monthName, s, i, t.type AS type, COUNT(c) AS calls, SUM(ch.total) AS chargePence, SUM(c.billsec) AS seconds, ROUND(10 * SUM(TOFLOAT(c.billsec))/60)/10 AS minutes, CASE
WHEN t.type = "UK Landline" AND NOT billUK THEN FALSE
WHEN t.type = "UK Mobile" AND NOT billMobile THEN FALSE
WHEN t.type = "International" AND NOT billInternational THEN FALSE
ELSE true
END AS chargeable
WITH monthName, s, i, type, calls, CASE chargeable WHEN TRUE THEN chargePence ELSE 0 END AS chargePence, seconds, minutes
WITH monthName, type, i, "0" + RIGHT(s.src, SIZE(s.src) - 2) + ": " + calls + " calls, lasting " + minutes + " minutes." as desc, chargePence / 100 AS charge
CREATE (i)-[:HAS_LINEITEM]->(item:LineItem:_LineItem { title: "Phone Calls: " + type + " (" + monthName + ")" })
SET item.id = 101
SET item.price = charge
SET item.description = desc
SET item.frequency = "MONTHLY"
SET item.type = "TELEPHONY"
RETURN item;

It does issues the same warning when run with PROFILE, and emits no profile information.

When I remove the second WITH:

WITH month, monthName, so, s, i, so.phone_callingPlan = "PAYT" AS billUK, NOT HAS(so.boltOns_mobile) AS billMobile, NOT HAS(so.boltOns_international) AS billInternational
WITH month, monthName, so, s, i, billUK, billMobile, billInternational

The statement runs fine.

Is this a bug?

Issue 2:
docker: 3.5.11

API/Driver: import tool

Steps to reproduce

import a csv like:

my:ID(MyNode),:IGNORE
x ,y
x,y

Expected behavior

Two nodes, MyNode {my: 'x '} and MyNode {my: 'x'}.

Actual behavior

Import error for duplicate nodes 'x'

Discussion

The implicit .strip() is problematic in entity resolution, finger printing, etc. use cases as we want the delta. The current behavior is not documented, and the warning is super tough to debug (giving the id, vs. 2 conflicting line numbers). Cleaning up outside of neo4j is likewise inherently tricky: you can see folks online discussing running | sort -u to trim to unique before sending to neo4j, except getting that to work with "" and \s adds even more fun that most solutions won't get into because it's not easy.

Working around by quoting ID columns seems to cause other issues for Neo4j, maybe because there is no character requiring the quote, so the quotes are treated as part of the full IDs? Unclear -- we had issues and gave up.