Opened 2 months ago

Closed 2 months ago

#1577 closed defect (fixed)

CSV has incorrect syntax in 1D

Reported by: pbaumann Owned by: bbell
Priority: critical Milestone:
Component: rasserver Version: development
Keywords: Cc: dmisev, vmerticariu
Complexity: Easy


in the WCPS console of earthlook when sending this query

for c in ( AvgLandTemp ) return encode(c[Lat(53.08), Long(8.80),
ansi("2014-01":"2014-12")], "csv")

I get this:


Now, CSV does not have curlies on the outermost dimension so this should be corrected.

Change History (6)

comment:1 Changed 2 months ago by dmisev

Sure, removing the brackets will work just fine for 1D as in this case, and 2D as well. But how do you suggest we represent nD arrays with "standard" CSV?

It will not work for anything more than 2D, unless we are ok with losing all information about the dimensions / sdom.

comment:2 Changed 2 months ago by pbaumann

We had this discussion in the past :) Actually, I am fine with disallowing 3+D in CSV, throwing an exception. We just need to come to something that is conforming in the dimensions covered by CSV.

comment:3 Changed 2 months ago by dmisev

So it seems like the outermost curly braces were removed already, see ticket #1505 (where Brennan is suggesting to re-introduce them :)) But for some reason they were NOT removed for 1D. So for consistency we should make sure they are removed for 1D as well, which will fix this ticket too.

For backwards compatibility disallowing it in 3D+ is a bad idea. We use this CSV encode in petascope for example for generating GML output, and some other client libraries are surely parsing it as well. We should migrate those to JSON first.

comment:4 Changed 2 months ago by pbaumann

good point about bw compatibility.

comment:5 Changed 2 months ago by bbell

I opened that ticket because we only created outerParens for 1-D outputs for csv outputs,

        if (rank == 0) 
            outerParens = false;
        //honestly, this should be a simple else statement, but *.csv files lack outer
        //parens while json files possess them. Ideally, both would have them, but
        //it would require changing hundreds, possibly thousands, of oracle files in the systemtest
        //directory to fix, so for now, we will leave this as is.
        else if (rank == 1) 
            outerParens = true;
        if (outerParens) 
            csvtemp << leftParen;

but anyways, the fix to get the desired output here is quite trivial, and won't affect json outputs at all since json initializes the outerParens variable to "true".

comment:6 Changed 2 months ago by bbell

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.