Skip to content

Commit 6cbfe82

Browse files
committed
HPCC-33278 Fix //version race condition in parquetType.ecl
Signed-off-by: Jack Del Vecchio <jack.delvecchio@lexisnexisrisk.com>
1 parent c61a656 commit 6cbfe82

File tree

2 files changed

+63
-54
lines changed

2 files changed

+63
-54
lines changed

testing/regress/ecl/key/parquetTypes.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
<Dataset name='SetTest'>
2-
<Row><testid>1100</testid><testname>empty</testname><s0></s0><s1></s1><s2></s2><s3></s3><s4></s4><s5></s5><s6></s6><s7></s7><s8></s8><s9></s9><s10></s10></Row>
3-
<Row><testid>1101</testid><testname>single</testname><s0><Item>true</Item></s0><s1><Item>1</Item></s1><s2><Item>1</Item></s2><s3><Item>1.0</Item></s3><s4><Item>1</Item></s4><s5><Item>a</Item></s5><s6><Item>a</Item></s6><s7><Item>A</Item></s7><s8><Item>a</Item></s8><s9><Item>a</Item></s9><s10><Item>FFFF</Item></s10></Row>
4-
<Row><testid>1102</testid><testname>multiple</testname><s0><Item>true</Item><Item>false</Item></s0><s1><Item>1</Item><Item>2</Item></s1><s2><Item>1</Item><Item>2</Item></s2><s3><Item>1.0</Item><Item>2.0</Item></s3><s4><Item>1</Item><Item>2</Item></s4><s5><Item>a</Item><Item>b</Item></s5><s6><Item>a</Item><Item>b</Item></s6><s7><Item>A</Item><Item>B</Item></s7><s8><Item>a</Item><Item>b</Item></s8><s9><Item>a</Item><Item>b</Item></s9><s10><Item>0000</Item><Item>FFFF</Item></s10></Row>
5-
</Dataset>
61
<Dataset name='BooleanTest'>
72
<Row><BooleanTest>Pass</BooleanTest></Row>
83
</Dataset>
@@ -36,3 +31,8 @@
3631
<Dataset name='UnicodeTest'>
3732
<Row><UnicodeTest>Pass</UnicodeTest></Row>
3833
</Dataset>
34+
<Dataset name='SetTest'>
35+
<Row><testid>1100</testid><testname>empty</testname><s0></s0><s1></s1><s2></s2><s3></s3><s4></s4><s5></s5><s6></s6><s7></s7><s8></s8><s9></s9><s10></s10></Row>
36+
<Row><testid>1101</testid><testname>single</testname><s0><Item>true</Item></s0><s1><Item>1</Item></s1><s2><Item>1</Item></s2><s3><Item>1.0</Item></s3><s4><Item>1</Item></s4><s5><Item>a</Item></s5><s6><Item>a</Item></s6><s7><Item>A</Item></s7><s8><Item>a</Item></s8><s9><Item>a</Item></s9><s10><Item>FFFF</Item></s10></Row>
37+
<Row><testid>1102</testid><testname>multiple</testname><s0><Item>true</Item><Item>false</Item></s0><s1><Item>1</Item><Item>2</Item></s1><s2><Item>1</Item><Item>2</Item></s2><s3><Item>1.0</Item><Item>2.0</Item></s3><s4><Item>1</Item><Item>2</Item></s4><s5><Item>a</Item><Item>b</Item></s5><s6><Item>a</Item><Item>b</Item></s6><s7><Item>A</Item><Item>B</Item></s7><s8><Item>a</Item><Item>b</Item></s8><s9><Item>a</Item><Item>b</Item></s9><s10><Item>0000</Item><Item>FFFF</Item></s10></Row>
38+
</Dataset>

testing/regress/ecl/parquetTypes.ecl

Lines changed: 58 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,14 @@
2121
//version compressionType='LZ4'
2222
//version compressionType='ZSTD'
2323

24+
import STD.File AS FileServices;
2425
import ^ as root;
2526
compressionType := #IFDEFINED(root.compressionType, 'UNCOMPRESSED');
2627

2728
IMPORT Std;
2829
IMPORT Parquet;
2930

30-
dropzoneDirectory := Std.File.GetDefaultDropZone() + '/regress/parquet';
31+
dropzoneDirectory := Std.File.GetDefaultDropZone() + '/regress/parquet/' + WORKUNIT + '-';
3132

3233
// Covers data types supported by ECL and Arrow
3334

@@ -40,9 +41,7 @@ booleanDatasetOut := DATASET([
4041
{001, 'aab', FALSE}
4142
], booleanRecord);
4243

43-
ParquetIO.Write(booleanDatasetOut, dropzoneDirectory + '/BooleanTest.parquet', TRUE, compressionType);
44-
45-
booleanDatasetIn := ParquetIO.Read(booleanRecord, dropzoneDirectory + '/BooleanTest.parquet');
44+
booleanDatasetIn := ParquetIO.Read(booleanRecord, dropzoneDirectory + 'BooleanTest.parquet');
4645

4746
{UNSIGNED testid, STRING3 testname, BOOLEAN isEqual} booleanJoin (booleanDatasetOut a, booleanDatasetIn b) := TRANSFORM
4847
SELF.testid := a.testid;
@@ -63,9 +62,7 @@ integerDatasetOut := DATASET([
6362
{101, 'maxvalues', 127, 32767, 8388607, 2147483647, 549755813887, 140737488355327, 36028797018963967, 9223372036854775807}
6463
], integerRecord);
6564

66-
ParquetIO.Write(integerDatasetOut, dropzoneDirectory + '/IntegerTest.parquet', TRUE, compressionType);
67-
68-
integerDatasetIn := ParquetIO.Read(integerRecord, dropzoneDirectory + '/IntegerTest.parquet');
65+
integerDatasetIn := ParquetIO.Read(integerRecord, dropzoneDirectory + 'IntegerTest.parquet');
6966

7067
{UNSIGNED testid, STRING testname, BOOLEAN isEqual} integerJoin (integerDatasetOut a, integerDatasetIn b) := TRANSFORM
7168
SELF.testid := a.testid;
@@ -93,9 +90,7 @@ unsignedDatasetOut := DATASET([
9390
{201, 'maxvalues', 255, 65535, 16777215, 4294967295, 1099511627775, 281474976710655, 72057594037927935, 18446744073709551615}
9491
], unsignedRecord);
9592

96-
ParquetIO.Write(unsignedDatasetOut, dropzoneDirectory + '/UnsignedTest.parquet', TRUE, compressionType);
97-
98-
unsignedDatasetIn := ParquetIO.Read(unsignedRecord, dropzoneDirectory + '/UnsignedTest.parquet');
93+
unsignedDatasetIn := ParquetIO.Read(unsignedRecord, dropzoneDirectory + 'UnsignedTest.parquet');
9994

10095
{UNSIGNED testid, STRING testname, BOOLEAN isEqual} unsignedJoin (unsignedDatasetOut a, unsignedDatasetIn b) := TRANSFORM
10196
SELF.testid := a.testid;
@@ -127,9 +122,7 @@ realDatasetOut := DATASET([
127122
{305, 'negative', -9.87D, -234.853D}
128123
], realRecord);
129124

130-
ParquetIO.Write(realDatasetOut, dropzoneDirectory + '/RealTest.parquet', TRUE, compressionType);
131-
132-
realDatasetIn := ParquetIO.Read(realRecord, dropzoneDirectory + '/RealTest.parquet');
125+
realDatasetIn := ParquetIO.Read(realRecord, dropzoneDirectory + 'RealTest.parquet');
133126

134127
{UNSIGNED testid, STRING testname, BOOLEAN isEqual} realJoin (realDatasetOut a, realDatasetIn b) := TRANSFORM
135128
SELF.testid := a.testid;
@@ -152,9 +145,7 @@ decimalDatasetOut := DATASET([
152145
{402, 'abb', 0.00D}
153146
], decimalRecord);
154147

155-
ParquetIO.Write(decimalDatasetOut, dropzoneDirectory + '/DecimalTest.parquet', TRUE, compressionType);
156-
157-
decimalDatasetIn := ParquetIO.Read(decimalRecord, dropzoneDirectory + '/DecimalTest.parquet');
148+
decimalDatasetIn := ParquetIO.Read(decimalRecord, dropzoneDirectory + 'DecimalTest.parquet');
158149

159150
{UNSIGNED testid, STRING3 testname, BOOLEAN isEqual} decimalJoin (decimalDatasetOut a, decimalDatasetIn b) := TRANSFORM
160151
SELF.testid := a.testid;
@@ -180,9 +171,7 @@ stringDatasetOut := DATASET([
180171
{506, 'data1', (STRING)X'00FF00FF00FF00FF'}
181172
], stringRecord);
182173

183-
ParquetIO.Write(stringDatasetOut, dropzoneDirectory + '/StringTest.parquet', TRUE, compressionType);
184-
185-
stringDatasetIn := ParquetIO.Read(stringRecord, dropzoneDirectory + '/StringTest.parquet');
174+
stringDatasetIn := ParquetIO.Read(stringRecord, dropzoneDirectory + 'StringTest.parquet');
186175

187176
{STRING5 name, BOOLEAN value} stringJoin (stringDatasetOut a, stringDatasetIn b) := TRANSFORM
188177
SELF.name := a.name;
@@ -214,9 +203,7 @@ dataDatasetOut := DATASET([
214203
{604, 'neg', X'0000000000000000', REALToBinary(-2.71828), REALToLargeBinary(-2.71828)}
215204
], dataRecord);
216205

217-
ParquetIO.Write(dataDatasetOut, dropzoneDirectory + '/DataTest.parquet', TRUE, compressionType);
218-
219-
dataDatasetIn := ParquetIO.Read(dataRecord, dropzoneDirectory + '/DataTest.parquet');
206+
dataDatasetIn := ParquetIO.Read(dataRecord, dropzoneDirectory + 'DataTest.parquet');
220207

221208
{UNSIGNED testid, STRING5 name, BOOLEAN allEqual} dataJoin(dataDatasetOut a, dataDatasetIn b) := TRANSFORM
222209
SELF.testid := a.testid;
@@ -243,9 +230,7 @@ varStringDatasetOut := DATASET([
243230
{706, 'data1', (STRING)X'00FF00FF00FF00FF'}
244231
], varstringRecord);
245232

246-
ParquetIO.Write(varStringDatasetOut, dropzoneDirectory + '/VarStringTest.parquet', TRUE, compressionType);
247-
248-
varStringDatasetIn := ParquetIO.Read(varstringRecord, dropzoneDirectory + '/VarStringTest.parquet');
233+
varStringDatasetIn := ParquetIO.Read(varstringRecord, dropzoneDirectory + 'VarStringTest.parquet');
249234

250235
{UNSIGNED testid, STRING testname, BOOLEAN isEqual} varstringJoin (varStringDatasetOut a, varStringDatasetIn b) := TRANSFORM
251236
SELF.testid := a.testid;
@@ -270,9 +255,7 @@ qStringDatasetOut := DATASET([
270255
{805, 'data1', (STRING)X'00FF00FF00FF00FF'}
271256
], qstringRecord);
272257

273-
ParquetIO.Write(qStringDatasetOut, dropzoneDirectory + '/QStringTest.parquet', TRUE, compressionType);
274-
275-
qStringDatasetIn := ParquetIO.Read(qstringRecord, dropzoneDirectory + '/QStringTest.parquet');
258+
qStringDatasetIn := ParquetIO.Read(qstringRecord, dropzoneDirectory + 'QStringTest.parquet');
276259

277260
{UNSIGNED testid, STRING testname, BOOLEAN isEqual} qstringJoin (qStringDatasetOut a, qStringDatasetIn b) := TRANSFORM
278261
SELF.testid := a.testid;
@@ -294,9 +277,7 @@ utf8DatasetOut := DATASET([
294277
{902, 'extrachars1', U8'\316\221\316\222\316\223\316\224\316\225\316\226\316\227\316\230\316\231\316\232\316\233\316\234'}
295278
], utf8Record);
296279

297-
ParquetIO.Write(utf8DatasetOut, dropzoneDirectory + '/UTF8Test.parquet', TRUE, compressionType);
298-
299-
utf8DatasetIn := ParquetIO.Read(utf8Record, dropzoneDirectory + '/UTF8Test.parquet');
280+
utf8DatasetIn := ParquetIO.Read(utf8Record, dropzoneDirectory + 'UTF8Test.parquet');
300281

301282
{UNSIGNED testid, STRING testname, BOOLEAN isEqual} utf8Join (utf8DatasetOut a, utf8DatasetIn b) := TRANSFORM
302283
SELF.testid := a.testid;
@@ -319,9 +300,7 @@ unicodeDatasetOut := DATASET([
319300
{1003, 'adw', U'ᄠᄡᄢᄣᄤᄥᄦᄨᄩᄪᄫᄬᄭᄮᄯᆰᆱᆲᆳᆴᆵᆶᆷᆸᆹᆼᆽᇲᇳᇴᇵᇶᇷᇸ㈸㋄㋅㋆㋇㋈㋉㋊㋋㋌'}
320301
], unicodeRecord);
321302

322-
ParquetIO.Write(unicodeDatasetOut, dropzoneDirectory + '/UnicodeTest.parquet', TRUE, compressionType);
323-
324-
unicodeDatasetIn := ParquetIO.Read(unicodeRecord, dropzoneDirectory + '/UnicodeTest.parquet');
303+
unicodeDatasetIn := ParquetIO.Read(unicodeRecord, dropzoneDirectory + 'UnicodeTest.parquet');
325304

326305
{UNSIGNED testid, STRING testname, BOOLEAN isEqual} unicodeJoin(unicodeDatasetOut a, unicodeDatasetIn b) := TRANSFORM
327306
SELF.testid := a.testid;
@@ -343,22 +322,52 @@ setDatasetOut := DATASET([
343322
{1102, 'multiple', [TRUE, FALSE], [1, 2], [1, 2], [1.0, 2.0], [1.0, 2.0], ['a', 'b'], ['a', 'b'], ['a', 'b'], [U'a', U'b'], [U'a', U'b'], [X'0000', X'FFFF']}
344323
], setRecord);
345324

346-
ParquetIO.Write(setDatasetOut, dropzoneDirectory + '/SetTest.parquet', TRUE, compressionType);
347-
348-
OUTPUT(ParquetIO.Read(setRecord, dropzoneDirectory + '/SetTest.parquet'), NAMED('SetTest'));
325+
setResult := ParquetIO.Read(setRecord, dropzoneDirectory + 'SetTest.parquet');
349326

350327
// ======================== OUTPUT ========================
351328

352-
PARALLEL(
353-
OUTPUT(booleanResult, NAMED('BooleanTest'), OVERWRITE),
354-
OUTPUT(integerResult, NAMED('IntegerTest'), OVERWRITE),
355-
OUTPUT(unsignedResult, NAMED('UnsignedTest'), OVERWRITE),
356-
OUTPUT(realResult, NAMED('RealTest'), OVERWRITE),
357-
OUTPUT(decimalResult, NAMED('DecimalTest'), OVERWRITE),
358-
OUTPUT(stringResult, NAMED('StringTest'), OVERWRITE),
359-
OUTPUT(dataResult, NAMED('DataTest'), OVERWRITE),
360-
OUTPUT(varStringResult, NAMED('VarStringTest'), OVERWRITE),
361-
OUTPUT(qStringResult, NAMED('QStringTest'), OVERWRITE),
362-
OUTPUT(utf8Result, NAMED('UTF8Test'), OVERWRITE),
363-
OUTPUT(unicodeResult, NAMED('UnicodeTest'), OVERWRITE)
329+
SEQUENTIAL(
330+
// Set up test files
331+
PARALLEL(
332+
ParquetIO.Write(booleanDatasetOut, dropzoneDirectory + 'BooleanTest.parquet', TRUE, compressionType),
333+
ParquetIO.Write(integerDatasetOut, dropzoneDirectory + 'IntegerTest.parquet', TRUE, compressionType),
334+
ParquetIO.Write(unsignedDatasetOut, dropzoneDirectory + 'UnsignedTest.parquet', TRUE, compressionType),
335+
ParquetIO.Write(realDatasetOut, dropzoneDirectory + 'RealTest.parquet', TRUE, compressionType),
336+
ParquetIO.Write(decimalDatasetOut, dropzoneDirectory + 'DecimalTest.parquet', TRUE, compressionType),
337+
ParquetIO.Write(stringDatasetOut, dropzoneDirectory + 'StringTest.parquet', TRUE, compressionType),
338+
ParquetIO.Write(dataDatasetOut, dropzoneDirectory + 'DataTest.parquet', TRUE, compressionType),
339+
ParquetIO.Write(varStringDatasetOut, dropzoneDirectory + 'VarStringTest.parquet', TRUE, compressionType),
340+
ParquetIO.Write(qStringDatasetOut, dropzoneDirectory + 'QStringTest.parquet', TRUE, compressionType),
341+
ParquetIO.Write(utf8DatasetOut, dropzoneDirectory + 'UTF8Test.parquet', TRUE, compressionType),
342+
ParquetIO.Write(unicodeDatasetOut, dropzoneDirectory + 'UnicodeTest.parquet', TRUE, compressionType),
343+
ParquetIO.Write(setDatasetOut, dropzoneDirectory + 'SetTest.parquet', TRUE, compressionType)
344+
),
345+
// Read and compare results
346+
OUTPUT(booleanResult, NAMED('BooleanTest')),
347+
OUTPUT(integerResult, NAMED('IntegerTest')),
348+
OUTPUT(unsignedResult, NAMED('UnsignedTest')),
349+
OUTPUT(realResult, NAMED('RealTest')),
350+
OUTPUT(decimalResult, NAMED('DecimalTest')),
351+
OUTPUT(stringResult, NAMED('StringTest')),
352+
OUTPUT(dataResult, NAMED('DataTest')),
353+
OUTPUT(varStringResult, NAMED('VarStringTest')),
354+
OUTPUT(qStringResult, NAMED('QStringTest')),
355+
OUTPUT(utf8Result, NAMED('UTF8Test')),
356+
OUTPUT(unicodeResult, NAMED('UnicodeTest')),
357+
OUTPUT(setResult, NAMED('SetTest')),
358+
// Clean up temporary files
359+
PARALLEL(
360+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'BooleanTest.parquet'),
361+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'IntegerTest.parquet'),
362+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'UnsignedTest.parquet'),
363+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'RealTest.parquet'),
364+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'DecimalTest.parquet'),
365+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'StringTest.parquet'),
366+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'DataTest.parquet'),
367+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'VarStringTest.parquet'),
368+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'QStringTest.parquet'),
369+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'UTF8Test.parquet'),
370+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'UnicodeTest.parquet'),
371+
FileServices.DeleteExternalFile('.', dropzoneDirectory + 'SetTest.parquet')
372+
)
364373
);

0 commit comments

Comments
 (0)