Thanks for your considered response Andrew. I'm satisfied with points 2 and 3. On point 1, I do appreciate the concern for backward compatibility and not breaking the contract with users. So let me ask what exactly that contract is? Imagine an input file with 1000 rows. It contains exactly one quote character (that is, an unmatched quote), in a field in the middle of row 500. Is the contract to parse and return the first 499 rows, plus the first few fields of row 500, and then to silently discard...
Improve handling of unmatched opening quotes