You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by om...@apache.org on 2016/05/20 21:22:53 UTC
[15/27] hive git commit: HIVE-11417. Move the ReaderImpl and
RowReaderImpl to the ORC module,
by making shims for the row by row reader. (omalley reviewed by prasanth_j)
http://git-wip-us.apache.org/repos/asf/hive/blob/ffb79509/orc/src/test/resources/orc-file-dump.json
----------------------------------------------------------------------
diff --git a/orc/src/test/resources/orc-file-dump.json b/orc/src/test/resources/orc-file-dump.json
new file mode 100644
index 0000000..bf654a1
--- /dev/null
+++ b/orc/src/test/resources/orc-file-dump.json
@@ -0,0 +1,1355 @@
+{
+ "fileName": "TestFileDump.testDump.orc",
+ "fileVersion": "0.12",
+ "writerVersion": "HIVE_13083",
+ "numberOfRows": 21000,
+ "compression": "ZLIB",
+ "compressionBufferSize": 4096,
+ "schemaString": "struct<i:int,l:bigint,s:string>",
+ "schema": [
+ {
+ "columnId": 0,
+ "columnType": "STRUCT",
+ "childColumnNames": [
+ "i",
+ "l",
+ "s"
+ ],
+ "childColumnIds": [
+ 1,
+ 2,
+ 3
+ ]
+ },
+ {
+ "columnId": 1,
+ "columnType": "INT"
+ },
+ {
+ "columnId": 2,
+ "columnType": "LONG"
+ },
+ {
+ "columnId": 3,
+ "columnType": "STRING"
+ }
+ ],
+ "stripeStatistics": [
+ {
+ "stripeNumber": 1,
+ "columnStatistics": [
+ {
+ "columnId": 0,
+ "count": 5000,
+ "hasNull": false
+ },
+ {
+ "columnId": 1,
+ "count": 5000,
+ "hasNull": false,
+ "min": -2147115959,
+ "max": 2145210552,
+ "sum": 50111854553,
+ "type": "LONG"
+ },
+ {
+ "columnId": 2,
+ "count": 5000,
+ "hasNull": false,
+ "min": -9223180583305557329,
+ "max": 9221614132680747961,
+ "type": "LONG"
+ },
+ {
+ "columnId": 3,
+ "count": 4950,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 19283,
+ "type": "STRING"
+ }
+ ]
+ },
+ {
+ "stripeNumber": 2,
+ "columnStatistics": [
+ {
+ "columnId": 0,
+ "count": 5000,
+ "hasNull": false
+ },
+ {
+ "columnId": 1,
+ "count": 5000,
+ "hasNull": false,
+ "min": -2147390285,
+ "max": 2147224606,
+ "sum": -22290798217,
+ "type": "LONG"
+ },
+ {
+ "columnId": 2,
+ "count": 5000,
+ "hasNull": false,
+ "min": -9219295160509160427,
+ "max": 9217571024994660020,
+ "type": "LONG"
+ },
+ {
+ "columnId": 3,
+ "count": 4950,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 19397,
+ "type": "STRING"
+ }
+ ]
+ },
+ {
+ "stripeNumber": 3,
+ "columnStatistics": [
+ {
+ "columnId": 0,
+ "count": 5000,
+ "hasNull": false
+ },
+ {
+ "columnId": 1,
+ "count": 5000,
+ "hasNull": false,
+ "min": -2146954065,
+ "max": 2146722468,
+ "sum": 20639652136,
+ "type": "LONG"
+ },
+ {
+ "columnId": 2,
+ "count": 5000,
+ "hasNull": false,
+ "min": -9214076359988107846,
+ "max": 9222919052987871506,
+ "type": "LONG"
+ },
+ {
+ "columnId": 3,
+ "count": 4950,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 19031,
+ "type": "STRING"
+ }
+ ]
+ },
+ {
+ "stripeNumber": 4,
+ "columnStatistics": [
+ {
+ "columnId": 0,
+ "count": 5000,
+ "hasNull": false
+ },
+ {
+ "columnId": 1,
+ "count": 5000,
+ "hasNull": false,
+ "min": -2146969085,
+ "max": 2146025044,
+ "sum": -5156814387,
+ "type": "LONG"
+ },
+ {
+ "columnId": 2,
+ "count": 5000,
+ "hasNull": false,
+ "min": -9222731174895935707,
+ "max": 9220625004936875965,
+ "type": "LONG"
+ },
+ {
+ "columnId": 3,
+ "count": 4950,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 19459,
+ "type": "STRING"
+ }
+ ]
+ },
+ {
+ "stripeNumber": 5,
+ "columnStatistics": [
+ {
+ "columnId": 0,
+ "count": 1000,
+ "hasNull": false
+ },
+ {
+ "columnId": 1,
+ "count": 1000,
+ "hasNull": false,
+ "min": -2144303438,
+ "max": 2127599049,
+ "sum": 62841564778,
+ "type": "LONG"
+ },
+ {
+ "columnId": 2,
+ "count": 1000,
+ "hasNull": false,
+ "min": -9195133638801798919,
+ "max": 9218626063131504414,
+ "type": "LONG"
+ },
+ {
+ "columnId": 3,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3963,
+ "type": "STRING"
+ }
+ ]
+ }
+ ],
+ "fileStatistics": [
+ {
+ "columnId": 0,
+ "count": 21000,
+ "hasNull": false
+ },
+ {
+ "columnId": 1,
+ "count": 21000,
+ "hasNull": false,
+ "min": -2147390285,
+ "max": 2147224606,
+ "sum": 106145458863,
+ "type": "LONG"
+ },
+ {
+ "columnId": 2,
+ "count": 21000,
+ "hasNull": false,
+ "min": -9223180583305557329,
+ "max": 9222919052987871506,
+ "type": "LONG"
+ },
+ {
+ "columnId": 3,
+ "count": 20790,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 81133,
+ "type": "STRING"
+ }
+ ],
+ "stripes": [
+ {
+ "stripeNumber": 1,
+ "stripeInformation": {
+ "offset": 3,
+ "indexLength": 970,
+ "dataLength": 63770,
+ "footerLength": 90,
+ "rowCount": 5000
+ },
+ "streams": [
+ {
+ "columnId": 0,
+ "section": "ROW_INDEX",
+ "startOffset": 3,
+ "length": 17
+ },
+ {
+ "columnId": 1,
+ "section": "ROW_INDEX",
+ "startOffset": 20,
+ "length": 167
+ },
+ {
+ "columnId": 2,
+ "section": "ROW_INDEX",
+ "startOffset": 187,
+ "length": 171
+ },
+ {
+ "columnId": 3,
+ "section": "ROW_INDEX",
+ "startOffset": 358,
+ "length": 103
+ },
+ {
+ "columnId": 3,
+ "section": "BLOOM_FILTER",
+ "startOffset": 461,
+ "length": 512
+ },
+ {
+ "columnId": 1,
+ "section": "DATA",
+ "startOffset": 973,
+ "length": 20035
+ },
+ {
+ "columnId": 2,
+ "section": "DATA",
+ "startOffset": 21008,
+ "length": 40050
+ },
+ {
+ "columnId": 3,
+ "section": "PRESENT",
+ "startOffset": 61058,
+ "length": 17
+ },
+ {
+ "columnId": 3,
+ "section": "DATA",
+ "startOffset": 61075,
+ "length": 3510
+ },
+ {
+ "columnId": 3,
+ "section": "LENGTH",
+ "startOffset": 64585,
+ "length": 25
+ },
+ {
+ "columnId": 3,
+ "section": "DICTIONARY_DATA",
+ "startOffset": 64610,
+ "length": 133
+ }
+ ],
+ "encodings": [
+ {
+ "columnId": 0,
+ "kind": "DIRECT"
+ },
+ {
+ "columnId": 1,
+ "kind": "DIRECT_V2"
+ },
+ {
+ "columnId": 2,
+ "kind": "DIRECT_V2"
+ },
+ {
+ "columnId": 3,
+ "kind": "DICTIONARY_V2",
+ "dictionarySize": 35
+ }
+ ],
+ "indexes": [{
+ "columnId": 3,
+ "rowGroupIndexes": [
+ {
+ "entryId": 0,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3873,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ },
+ {
+ "entryId": 1,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3861,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 38,
+ 12,
+ 0,
+ 0,
+ 736,
+ 23
+ ]
+ },
+ {
+ "entryId": 2,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3946,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 78,
+ 12,
+ 0,
+ 0,
+ 1473,
+ 43
+ ]
+ },
+ {
+ "entryId": 3,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3774,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 118,
+ 12,
+ 0,
+ 0,
+ 2067,
+ 261
+ ]
+ },
+ {
+ "entryId": 4,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3829,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 158,
+ 12,
+ 0,
+ 0,
+ 2992,
+ 35
+ ]
+ }
+ ],
+ "bloomFilterIndexes": [
+ {
+ "entryId": 0,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 1,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 2,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 3,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 4,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ }
+ ],
+ "stripeLevelBloomFilter": {
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ }
+ }]
+ },
+ {
+ "stripeNumber": 2,
+ "stripeInformation": {
+ "offset": 64833,
+ "indexLength": 961,
+ "dataLength": 63763,
+ "footerLength": 88,
+ "rowCount": 5000
+ },
+ "streams": [
+ {
+ "columnId": 0,
+ "section": "ROW_INDEX",
+ "startOffset": 64833,
+ "length": 17
+ },
+ {
+ "columnId": 1,
+ "section": "ROW_INDEX",
+ "startOffset": 64850,
+ "length": 166
+ },
+ {
+ "columnId": 2,
+ "section": "ROW_INDEX",
+ "startOffset": 65016,
+ "length": 166
+ },
+ {
+ "columnId": 3,
+ "section": "ROW_INDEX",
+ "startOffset": 65182,
+ "length": 100
+ },
+ {
+ "columnId": 3,
+ "section": "BLOOM_FILTER",
+ "startOffset": 65282,
+ "length": 512
+ },
+ {
+ "columnId": 1,
+ "section": "DATA",
+ "startOffset": 65794,
+ "length": 20035
+ },
+ {
+ "columnId": 2,
+ "section": "DATA",
+ "startOffset": 85829,
+ "length": 40050
+ },
+ {
+ "columnId": 3,
+ "section": "PRESENT",
+ "startOffset": 125879,
+ "length": 17
+ },
+ {
+ "columnId": 3,
+ "section": "DATA",
+ "startOffset": 125896,
+ "length": 3503
+ },
+ {
+ "columnId": 3,
+ "section": "LENGTH",
+ "startOffset": 129399,
+ "length": 25
+ },
+ {
+ "columnId": 3,
+ "section": "DICTIONARY_DATA",
+ "startOffset": 129424,
+ "length": 133
+ }
+ ],
+ "encodings": [
+ {
+ "columnId": 0,
+ "kind": "DIRECT"
+ },
+ {
+ "columnId": 1,
+ "kind": "DIRECT_V2"
+ },
+ {
+ "columnId": 2,
+ "kind": "DIRECT_V2"
+ },
+ {
+ "columnId": 3,
+ "kind": "DICTIONARY_V2",
+ "dictionarySize": 35
+ }
+ ],
+ "indexes": [{
+ "columnId": 3,
+ "rowGroupIndexes": [
+ {
+ "entryId": 0,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3946,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ },
+ {
+ "entryId": 1,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3836,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 38,
+ 12,
+ 0,
+ 0,
+ 746,
+ 11
+ ]
+ },
+ {
+ "entryId": 2,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3791,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 78,
+ 12,
+ 0,
+ 0,
+ 1430,
+ 95
+ ]
+ },
+ {
+ "entryId": 3,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3904,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 118,
+ 12,
+ 0,
+ 0,
+ 2239,
+ 23
+ ]
+ },
+ {
+ "entryId": 4,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3920,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 158,
+ 12,
+ 0,
+ 0,
+ 2994,
+ 17
+ ]
+ }
+ ],
+ "bloomFilterIndexes": [
+ {
+ "entryId": 0,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 1,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 2,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 3,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 4,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ }
+ ],
+ "stripeLevelBloomFilter": {
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ }
+ }]
+ },
+ {
+ "stripeNumber": 3,
+ "stripeInformation": {
+ "offset": 129645,
+ "indexLength": 962,
+ "dataLength": 63770,
+ "footerLength": 91,
+ "rowCount": 5000
+ },
+ "streams": [
+ {
+ "columnId": 0,
+ "section": "ROW_INDEX",
+ "startOffset": 129645,
+ "length": 17
+ },
+ {
+ "columnId": 1,
+ "section": "ROW_INDEX",
+ "startOffset": 129662,
+ "length": 164
+ },
+ {
+ "columnId": 2,
+ "section": "ROW_INDEX",
+ "startOffset": 129826,
+ "length": 167
+ },
+ {
+ "columnId": 3,
+ "section": "ROW_INDEX",
+ "startOffset": 129993,
+ "length": 102
+ },
+ {
+ "columnId": 3,
+ "section": "BLOOM_FILTER",
+ "startOffset": 130095,
+ "length": 512
+ },
+ {
+ "columnId": 1,
+ "section": "DATA",
+ "startOffset": 130607,
+ "length": 20035
+ },
+ {
+ "columnId": 2,
+ "section": "DATA",
+ "startOffset": 150642,
+ "length": 40050
+ },
+ {
+ "columnId": 3,
+ "section": "PRESENT",
+ "startOffset": 190692,
+ "length": 17
+ },
+ {
+ "columnId": 3,
+ "section": "DATA",
+ "startOffset": 190709,
+ "length": 3510
+ },
+ {
+ "columnId": 3,
+ "section": "LENGTH",
+ "startOffset": 194219,
+ "length": 25
+ },
+ {
+ "columnId": 3,
+ "section": "DICTIONARY_DATA",
+ "startOffset": 194244,
+ "length": 133
+ }
+ ],
+ "encodings": [
+ {
+ "columnId": 0,
+ "kind": "DIRECT"
+ },
+ {
+ "columnId": 1,
+ "kind": "DIRECT_V2"
+ },
+ {
+ "columnId": 2,
+ "kind": "DIRECT_V2"
+ },
+ {
+ "columnId": 3,
+ "kind": "DICTIONARY_V2",
+ "dictionarySize": 35
+ }
+ ],
+ "indexes": [{
+ "columnId": 3,
+ "rowGroupIndexes": [
+ {
+ "entryId": 0,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3829,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ },
+ {
+ "entryId": 1,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3853,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 38,
+ 12,
+ 0,
+ 0,
+ 698,
+ 74
+ ]
+ },
+ {
+ "entryId": 2,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3796,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 78,
+ 12,
+ 0,
+ 0,
+ 1483,
+ 39
+ ]
+ },
+ {
+ "entryId": 3,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3736,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 118,
+ 12,
+ 0,
+ 0,
+ 2148,
+ 155
+ ]
+ },
+ {
+ "entryId": 4,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3817,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 158,
+ 12,
+ 0,
+ 0,
+ 3018,
+ 8
+ ]
+ }
+ ],
+ "bloomFilterIndexes": [
+ {
+ "entryId": 0,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 1,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 2,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 3,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 4,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ }
+ ],
+ "stripeLevelBloomFilter": {
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ }
+ }]
+ },
+ {
+ "stripeNumber": 4,
+ "stripeInformation": {
+ "offset": 194468,
+ "indexLength": 973,
+ "dataLength": 63756,
+ "footerLength": 91,
+ "rowCount": 5000
+ },
+ "streams": [
+ {
+ "columnId": 0,
+ "section": "ROW_INDEX",
+ "startOffset": 194468,
+ "length": 17
+ },
+ {
+ "columnId": 1,
+ "section": "ROW_INDEX",
+ "startOffset": 194485,
+ "length": 166
+ },
+ {
+ "columnId": 2,
+ "section": "ROW_INDEX",
+ "startOffset": 194651,
+ "length": 171
+ },
+ {
+ "columnId": 3,
+ "section": "ROW_INDEX",
+ "startOffset": 194822,
+ "length": 107
+ },
+ {
+ "columnId": 3,
+ "section": "BLOOM_FILTER",
+ "startOffset": 194929,
+ "length": 512
+ },
+ {
+ "columnId": 1,
+ "section": "DATA",
+ "startOffset": 195441,
+ "length": 20035
+ },
+ {
+ "columnId": 2,
+ "section": "DATA",
+ "startOffset": 215476,
+ "length": 40050
+ },
+ {
+ "columnId": 3,
+ "section": "PRESENT",
+ "startOffset": 255526,
+ "length": 17
+ },
+ {
+ "columnId": 3,
+ "section": "DATA",
+ "startOffset": 255543,
+ "length": 3496
+ },
+ {
+ "columnId": 3,
+ "section": "LENGTH",
+ "startOffset": 259039,
+ "length": 25
+ },
+ {
+ "columnId": 3,
+ "section": "DICTIONARY_DATA",
+ "startOffset": 259064,
+ "length": 133
+ }
+ ],
+ "encodings": [
+ {
+ "columnId": 0,
+ "kind": "DIRECT"
+ },
+ {
+ "columnId": 1,
+ "kind": "DIRECT_V2"
+ },
+ {
+ "columnId": 2,
+ "kind": "DIRECT_V2"
+ },
+ {
+ "columnId": 3,
+ "kind": "DICTIONARY_V2",
+ "dictionarySize": 35
+ }
+ ],
+ "indexes": [{
+ "columnId": 3,
+ "rowGroupIndexes": [
+ {
+ "entryId": 0,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3959,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ },
+ {
+ "entryId": 1,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3816,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 38,
+ 12,
+ 0,
+ 0,
+ 495,
+ 338
+ ]
+ },
+ {
+ "entryId": 2,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3883,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 78,
+ 12,
+ 0,
+ 0,
+ 1449,
+ 71
+ ]
+ },
+ {
+ "entryId": 3,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3938,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 118,
+ 12,
+ 0,
+ 0,
+ 2207,
+ 59
+ ]
+ },
+ {
+ "entryId": 4,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3863,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 158,
+ 12,
+ 0,
+ 0,
+ 2838,
+ 223
+ ]
+ }
+ ],
+ "bloomFilterIndexes": [
+ {
+ "entryId": 0,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 1,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 2,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 3,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ },
+ {
+ "entryId": 4,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ }
+ ],
+ "stripeLevelBloomFilter": {
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ }
+ }]
+ },
+ {
+ "stripeNumber": 5,
+ "stripeInformation": {
+ "offset": 259288,
+ "indexLength": 433,
+ "dataLength": 12943,
+ "footerLength": 83,
+ "rowCount": 1000
+ },
+ "streams": [
+ {
+ "columnId": 0,
+ "section": "ROW_INDEX",
+ "startOffset": 259288,
+ "length": 12
+ },
+ {
+ "columnId": 1,
+ "section": "ROW_INDEX",
+ "startOffset": 259300,
+ "length": 38
+ },
+ {
+ "columnId": 2,
+ "section": "ROW_INDEX",
+ "startOffset": 259338,
+ "length": 41
+ },
+ {
+ "columnId": 3,
+ "section": "ROW_INDEX",
+ "startOffset": 259379,
+ "length": 41
+ },
+ {
+ "columnId": 3,
+ "section": "BLOOM_FILTER",
+ "startOffset": 259420,
+ "length": 301
+ },
+ {
+ "columnId": 1,
+ "section": "DATA",
+ "startOffset": 259721,
+ "length": 4007
+ },
+ {
+ "columnId": 2,
+ "section": "DATA",
+ "startOffset": 263728,
+ "length": 8010
+ },
+ {
+ "columnId": 3,
+ "section": "PRESENT",
+ "startOffset": 271738,
+ "length": 16
+ },
+ {
+ "columnId": 3,
+ "section": "DATA",
+ "startOffset": 271754,
+ "length": 752
+ },
+ {
+ "columnId": 3,
+ "section": "LENGTH",
+ "startOffset": 272506,
+ "length": 25
+ },
+ {
+ "columnId": 3,
+ "section": "DICTIONARY_DATA",
+ "startOffset": 272531,
+ "length": 133
+ }
+ ],
+ "encodings": [
+ {
+ "columnId": 0,
+ "kind": "DIRECT"
+ },
+ {
+ "columnId": 1,
+ "kind": "DIRECT_V2"
+ },
+ {
+ "columnId": 2,
+ "kind": "DIRECT_V2"
+ },
+ {
+ "columnId": 3,
+ "kind": "DICTIONARY_V2",
+ "dictionarySize": 35
+ }
+ ],
+ "indexes": [{
+ "columnId": 3,
+ "rowGroupIndexes": [{
+ "entryId": 0,
+ "count": 990,
+ "hasNull": true,
+ "min": "Darkness,",
+ "max": "worst",
+ "totalLength": 3963,
+ "type": "STRING",
+ "positions": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+ }],
+ "bloomFilterIndexes": [{
+ "entryId": 0,
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ }],
+ "stripeLevelBloomFilter": {
+ "numHashFunctions": 4,
+ "bitCount": 6272,
+ "popCount": 138,
+ "loadFactor": 0.022002551704645157,
+ "expectedFpp": 2.3436470542037569E-7
+ }
+ }]
+ }
+ ],
+ "fileLength": 273300,
+ "paddingLength": 0,
+ "paddingRatio": 0,
+ "status": "OK"
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/ffb79509/orc/src/test/resources/orc-file-dump.out
----------------------------------------------------------------------
diff --git a/orc/src/test/resources/orc-file-dump.out b/orc/src/test/resources/orc-file-dump.out
new file mode 100644
index 0000000..70f7fbd
--- /dev/null
+++ b/orc/src/test/resources/orc-file-dump.out
@@ -0,0 +1,195 @@
+Structure for TestFileDump.testDump.orc
+File Version: 0.12 with HIVE_13083
+Rows: 21000
+Compression: ZLIB
+Compression size: 4096
+Type: struct<i:int,l:bigint,s:string>
+
+Stripe Statistics:
+ Stripe 1:
+ Column 0: count: 5000 hasNull: false
+ Column 1: count: 5000 hasNull: false min: -2146021688 max: 2147223299 sum: 515792826
+ Column 2: count: 5000 hasNull: false min: -9218592812243954469 max: 9221614132680747961
+ Column 3: count: 5000 hasNull: false min: Darkness, max: worst sum: 19280
+ Stripe 2:
+ Column 0: count: 5000 hasNull: false
+ Column 1: count: 5000 hasNull: false min: -2146733128 max: 2147001622 sum: 7673427
+ Column 2: count: 5000 hasNull: false min: -9220818777591257749 max: 9222259462014003839
+ Column 3: count: 5000 hasNull: false min: Darkness, max: worst sum: 19504
+ Stripe 3:
+ Column 0: count: 5000 hasNull: false
+ Column 1: count: 5000 hasNull: false min: -2146993718 max: 2147378179 sum: 132660742551
+ Column 2: count: 5000 hasNull: false min: -9218342074710552826 max: 9222303228623055266
+ Column 3: count: 5000 hasNull: false min: Darkness, max: worst sum: 19641
+ Stripe 4:
+ Column 0: count: 5000 hasNull: false
+ Column 1: count: 5000 hasNull: false min: -2146658006 max: 2145520931 sum: 8533549236
+ Column 2: count: 5000 hasNull: false min: -9222758097219661129 max: 9221043130193737406
+ Column 3: count: 5000 hasNull: false min: Darkness, max: worst sum: 19470
+ Stripe 5:
+ Column 0: count: 1000 hasNull: false
+ Column 1: count: 1000 hasNull: false min: -2146245500 max: 2146378640 sum: 51299706363
+ Column 2: count: 1000 hasNull: false min: -9208193203370316142 max: 9218567213558056476
+ Column 3: count: 1000 hasNull: false min: Darkness, max: worst sum: 3866
+
+File Statistics:
+ Column 0: count: 21000 hasNull: false
+ Column 1: count: 21000 hasNull: false min: -2146993718 max: 2147378179 sum: 193017464403
+ Column 2: count: 21000 hasNull: false min: -9222758097219661129 max: 9222303228623055266
+ Column 3: count: 21000 hasNull: false min: Darkness, max: worst sum: 81761
+
+Stripes:
+ Stripe: offset: 3 data: 63786 rows: 5000 tail: 79 index: 439
+ Stream: column 0 section ROW_INDEX start: 3 length 17
+ Stream: column 1 section ROW_INDEX start: 20 length 166
+ Stream: column 2 section ROW_INDEX start: 186 length 169
+ Stream: column 3 section ROW_INDEX start: 355 length 87
+ Stream: column 1 section DATA start: 442 length 20035
+ Stream: column 2 section DATA start: 20477 length 40050
+ Stream: column 3 section DATA start: 60527 length 3543
+ Stream: column 3 section LENGTH start: 64070 length 25
+ Stream: column 3 section DICTIONARY_DATA start: 64095 length 133
+ Encoding column 0: DIRECT
+ Encoding column 1: DIRECT_V2
+ Encoding column 2: DIRECT_V2
+ Encoding column 3: DICTIONARY_V2[35]
+ Row group indices for column 1:
+ Entry 0: count: 1000 hasNull: false min: -2145365268 max: 2135491313 sum: 7521792925 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: -2139452528 max: 2147223299 sum: -12923774313 positions: 0,2050,488
+ Entry 2: count: 1000 hasNull: false min: -2142420586 max: 2143898386 sum: -25521983511 positions: 4099,2054,464
+ Entry 3: count: 1000 hasNull: false min: -2137233441 max: 2144267163 sum: 40993386199 positions: 8198,2058,440
+ Entry 4: count: 1000 hasNull: false min: -2146021688 max: 2146838901 sum: -9553628474 positions: 12297,2062,416
+ Row group indices for column 2:
+ Entry 0: count: 1000 hasNull: false min: -9200577545527640566 max: 9175500305011173751 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: -9203618157670445774 max: 9208123824411178101 positions: 4099,2,488
+ Entry 2: count: 1000 hasNull: false min: -9218592812243954469 max: 9221351515892923972 positions: 12297,6,464
+ Entry 3: count: 1000 hasNull: false min: -9206585617947511272 max: 9167703224425685487 positions: 20495,10,440
+ Entry 4: count: 1000 hasNull: false min: -9206645795733282496 max: 9221614132680747961 positions: 28693,14,416
+ Row group indices for column 3:
+ Entry 0: count: 1000 hasNull: false min: Darkness, max: worst sum: 3862 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: Darkness, max: worst sum: 3884 positions: 0,659,149
+ Entry 2: count: 1000 hasNull: false min: Darkness, max: worst sum: 3893 positions: 0,1531,3
+ Entry 3: count: 1000 hasNull: false min: Darkness, max: worst sum: 3798 positions: 0,2281,32
+ Entry 4: count: 1000 hasNull: false min: Darkness, max: worst sum: 3843 positions: 0,3033,45
+ Stripe: offset: 64307 data: 63775 rows: 5000 tail: 79 index: 432
+ Stream: column 0 section ROW_INDEX start: 64307 length 17
+ Stream: column 1 section ROW_INDEX start: 64324 length 164
+ Stream: column 2 section ROW_INDEX start: 64488 length 168
+ Stream: column 3 section ROW_INDEX start: 64656 length 83
+ Stream: column 1 section DATA start: 64739 length 20035
+ Stream: column 2 section DATA start: 84774 length 40050
+ Stream: column 3 section DATA start: 124824 length 3532
+ Stream: column 3 section LENGTH start: 128356 length 25
+ Stream: column 3 section DICTIONARY_DATA start: 128381 length 133
+ Encoding column 0: DIRECT
+ Encoding column 1: DIRECT_V2
+ Encoding column 2: DIRECT_V2
+ Encoding column 3: DICTIONARY_V2[35]
+ Row group indices for column 1:
+ Entry 0: count: 1000 hasNull: false min: -2143799121 max: 2145249879 sum: -6966266181 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: -2146733128 max: 2147001622 sum: -35930106333 positions: 0,2050,488
+ Entry 2: count: 1000 hasNull: false min: -2144302712 max: 2146299933 sum: 6944230435 positions: 4099,2054,464
+ Entry 3: count: 1000 hasNull: false min: -2145172948 max: 2144335014 sum: -29624404959 positions: 8198,2058,440
+ Entry 4: count: 1000 hasNull: false min: -2146428427 max: 2144067253 sum: 65584220465 positions: 12297,2062,416
+ Row group indices for column 2:
+ Entry 0: count: 1000 hasNull: false min: -9218450653857701562 max: 9189819526332228512 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: -9220818777591257749 max: 9178821722829648113 positions: 4099,2,488
+ Entry 2: count: 1000 hasNull: false min: -9220031433030423388 max: 9210838931786956852 positions: 12297,6,464
+ Entry 3: count: 1000 hasNull: false min: -9208195729739635607 max: 9222259462014003839 positions: 20495,10,440
+ Entry 4: count: 1000 hasNull: false min: -9174271499932339698 max: 9212277876771676916 positions: 28693,14,416
+ Row group indices for column 3:
+ Entry 0: count: 1000 hasNull: false min: Darkness, max: worst sum: 3923 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: Darkness, max: worst sum: 3869 positions: 0,761,12
+ Entry 2: count: 1000 hasNull: false min: Darkness, max: worst sum: 3817 positions: 0,1472,70
+ Entry 3: count: 1000 hasNull: false min: Darkness, max: worst sum: 3931 positions: 0,2250,43
+ Entry 4: count: 1000 hasNull: false min: Darkness, max: worst sum: 3964 positions: 0,2978,88
+ Stripe: offset: 128593 data: 63787 rows: 5000 tail: 79 index: 438
+ Stream: column 0 section ROW_INDEX start: 128593 length 17
+ Stream: column 1 section ROW_INDEX start: 128610 length 163
+ Stream: column 2 section ROW_INDEX start: 128773 length 168
+ Stream: column 3 section ROW_INDEX start: 128941 length 90
+ Stream: column 1 section DATA start: 129031 length 20035
+ Stream: column 2 section DATA start: 149066 length 40050
+ Stream: column 3 section DATA start: 189116 length 3544
+ Stream: column 3 section LENGTH start: 192660 length 25
+ Stream: column 3 section DICTIONARY_DATA start: 192685 length 133
+ Encoding column 0: DIRECT
+ Encoding column 1: DIRECT_V2
+ Encoding column 2: DIRECT_V2
+ Encoding column 3: DICTIONARY_V2[35]
+ Row group indices for column 1:
+ Entry 0: count: 1000 hasNull: false min: -2146993718 max: 2144179881 sum: -7829543271 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: -2144095505 max: 2144883384 sum: 51623839692 positions: 0,2050,488
+ Entry 2: count: 1000 hasNull: false min: -2144113995 max: 2143773575 sum: 56574412741 positions: 4099,2054,464
+ Entry 3: count: 1000 hasNull: false min: -2146954065 max: 2146794873 sum: 4336083432 positions: 8198,2058,440
+ Entry 4: count: 1000 hasNull: false min: -2135511523 max: 2147378179 sum: 27955949957 positions: 12297,2062,416
+ Row group indices for column 2:
+ Entry 0: count: 1000 hasNull: false min: -9211978436552246208 max: 9179058898902097152 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: -9195645160817780503 max: 9189147759444307708 positions: 4099,2,488
+ Entry 2: count: 1000 hasNull: false min: -9202888157616520823 max: 9193561362676960747 positions: 12297,6,464
+ Entry 3: count: 1000 hasNull: false min: -9216318198067839390 max: 9221286760675829363 positions: 20495,10,440
+ Entry 4: count: 1000 hasNull: false min: -9218342074710552826 max: 9222303228623055266 positions: 28693,14,416
+ Row group indices for column 3:
+ Entry 0: count: 1000 hasNull: false min: Darkness, max: worst sum: 3817 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: Darkness, max: worst sum: 4008 positions: 0,634,174
+ Entry 2: count: 1000 hasNull: false min: Darkness, max: worst sum: 3999 positions: 0,1469,69
+ Entry 3: count: 1000 hasNull: false min: Darkness, max: worst sum: 3817 positions: 0,2133,194
+ Entry 4: count: 1000 hasNull: false min: Darkness, max: worst sum: 4000 positions: 0,3005,43
+ Stripe: offset: 192897 data: 63817 rows: 5000 tail: 79 index: 440
+ Stream: column 0 section ROW_INDEX start: 192897 length 17
+ Stream: column 1 section ROW_INDEX start: 192914 length 165
+ Stream: column 2 section ROW_INDEX start: 193079 length 167
+ Stream: column 3 section ROW_INDEX start: 193246 length 91
+ Stream: column 1 section DATA start: 193337 length 20035
+ Stream: column 2 section DATA start: 213372 length 40050
+ Stream: column 3 section DATA start: 253422 length 3574
+ Stream: column 3 section LENGTH start: 256996 length 25
+ Stream: column 3 section DICTIONARY_DATA start: 257021 length 133
+ Encoding column 0: DIRECT
+ Encoding column 1: DIRECT_V2
+ Encoding column 2: DIRECT_V2
+ Encoding column 3: DICTIONARY_V2[35]
+ Row group indices for column 1:
+ Entry 0: count: 1000 hasNull: false min: -2141355639 max: 2145520931 sum: 2726719912 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: -2138324170 max: 2140167376 sum: -23606674002 positions: 0,2050,488
+ Entry 2: count: 1000 hasNull: false min: -2146658006 max: 2144329742 sum: -41530109703 positions: 4099,2054,464
+ Entry 3: count: 1000 hasNull: false min: -2144207593 max: 2139456355 sum: 13559842458 positions: 8198,2058,440
+ Entry 4: count: 1000 hasNull: false min: -2145744719 max: 2145417153 sum: 57383770571 positions: 12297,2062,416
+ Row group indices for column 2:
+ Entry 0: count: 1000 hasNull: false min: -9222731174895935707 max: 9214167447015056056 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: -9222758097219661129 max: 9221043130193737406 positions: 4099,2,488
+ Entry 2: count: 1000 hasNull: false min: -9174483776261243438 max: 9208134757538374043 positions: 12297,6,464
+ Entry 3: count: 1000 hasNull: false min: -9174329712613510612 max: 9197412874152820822 positions: 20495,10,440
+ Entry 4: count: 1000 hasNull: false min: -9221162005892422758 max: 9220625004936875965 positions: 28693,14,416
+ Row group indices for column 3:
+ Entry 0: count: 1000 hasNull: false min: Darkness, max: worst sum: 3901 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: Darkness, max: worst sum: 3900 positions: 0,431,431
+ Entry 2: count: 1000 hasNull: false min: Darkness, max: worst sum: 3909 positions: 0,1485,52
+ Entry 3: count: 1000 hasNull: false min: Darkness, max: worst sum: 3947 positions: 0,2196,104
+ Entry 4: count: 1000 hasNull: false min: Darkness, max: worst sum: 3813 positions: 0,2934,131
+ Stripe: offset: 257233 data: 12943 rows: 1000 tail: 71 index: 131
+ Stream: column 0 section ROW_INDEX start: 257233 length 12
+ Stream: column 1 section ROW_INDEX start: 257245 length 38
+ Stream: column 2 section ROW_INDEX start: 257283 length 41
+ Stream: column 3 section ROW_INDEX start: 257324 length 40
+ Stream: column 1 section DATA start: 257364 length 4007
+ Stream: column 2 section DATA start: 261371 length 8010
+ Stream: column 3 section DATA start: 269381 length 768
+ Stream: column 3 section LENGTH start: 270149 length 25
+ Stream: column 3 section DICTIONARY_DATA start: 270174 length 133
+ Encoding column 0: DIRECT
+ Encoding column 1: DIRECT_V2
+ Encoding column 2: DIRECT_V2
+ Encoding column 3: DICTIONARY_V2[35]
+ Row group indices for column 1:
+ Entry 0: count: 1000 hasNull: false min: -2146245500 max: 2146378640 sum: 51299706363 positions: 0,0,0
+ Row group indices for column 2:
+ Entry 0: count: 1000 hasNull: false min: -9208193203370316142 max: 9218567213558056476 positions: 0,0,0
+ Row group indices for column 3:
+ Entry 0: count: 1000 hasNull: false min: Darkness, max: worst sum: 3866 positions: 0,0,0
+
+File length: 270923 bytes
+Padding length: 0 bytes
+Padding ratio: 0%
+________________________________________________________________________________________________________________________
+
http://git-wip-us.apache.org/repos/asf/hive/blob/ffb79509/orc/src/test/resources/orc-file-has-null.out
----------------------------------------------------------------------
diff --git a/orc/src/test/resources/orc-file-has-null.out b/orc/src/test/resources/orc-file-has-null.out
new file mode 100644
index 0000000..e98a73f
--- /dev/null
+++ b/orc/src/test/resources/orc-file-has-null.out
@@ -0,0 +1,112 @@
+Structure for TestOrcFile.testHasNull.orc
+File Version: 0.12 with HIVE_13083
+Rows: 20000
+Compression: ZLIB
+Compression size: 4096
+Type: struct<bytes1:binary,string1:string>
+
+Stripe Statistics:
+ Stripe 1:
+ Column 0: count: 5000 hasNull: false
+ Column 1: count: 5000 hasNull: false sum: 15000
+ Column 2: count: 2000 hasNull: true min: RG1 max: RG3 sum: 6000
+ Stripe 2:
+ Column 0: count: 5000 hasNull: false
+ Column 1: count: 5000 hasNull: false sum: 15000
+ Column 2: count: 0 hasNull: true
+ Stripe 3:
+ Column 0: count: 5000 hasNull: false
+ Column 1: count: 5000 hasNull: false sum: 15000
+ Column 2: count: 5000 hasNull: false min: STRIPE-3 max: STRIPE-3 sum: 40000
+ Stripe 4:
+ Column 0: count: 5000 hasNull: false
+ Column 1: count: 5000 hasNull: false sum: 15000
+ Column 2: count: 0 hasNull: true
+
+File Statistics:
+ Column 0: count: 20000 hasNull: false
+ Column 1: count: 20000 hasNull: false sum: 60000
+ Column 2: count: 7000 hasNull: true min: RG1 max: STRIPE-3 sum: 46000
+
+Stripes:
+ Stripe: offset: 3 data: 220 rows: 5000 tail: 65 index: 154
+ Stream: column 0 section ROW_INDEX start: 3 length 17
+ Stream: column 1 section ROW_INDEX start: 20 length 60
+ Stream: column 2 section ROW_INDEX start: 80 length 77
+ Stream: column 1 section DATA start: 157 length 159
+ Stream: column 1 section LENGTH start: 316 length 15
+ Stream: column 2 section PRESENT start: 331 length 13
+ Stream: column 2 section DATA start: 344 length 18
+ Stream: column 2 section LENGTH start: 362 length 6
+ Stream: column 2 section DICTIONARY_DATA start: 368 length 9
+ Encoding column 0: DIRECT
+ Encoding column 1: DIRECT_V2
+ Encoding column 2: DICTIONARY_V2[2]
+ Row group indices for column 2:
+ Entry 0: count: 1000 hasNull: false min: RG1 max: RG1 sum: 3000 positions: 0,0,0,0,0,0,0
+ Entry 1: count: 0 hasNull: true positions: 0,0,125,0,0,4,488
+ Entry 2: count: 1000 hasNull: false min: RG3 max: RG3 sum: 3000 positions: 0,2,125,0,0,4,488
+ Entry 3: count: 0 hasNull: true positions: 0,4,125,0,0,12,488
+ Entry 4: count: 0 hasNull: true positions: 0,6,125,0,0,12,488
+ Stripe: offset: 442 data: 185 rows: 5000 tail: 64 index: 116
+ Stream: column 0 section ROW_INDEX start: 442 length 17
+ Stream: column 1 section ROW_INDEX start: 459 length 60
+ Stream: column 2 section ROW_INDEX start: 519 length 39
+ Stream: column 1 section DATA start: 558 length 159
+ Stream: column 1 section LENGTH start: 717 length 15
+ Stream: column 2 section PRESENT start: 732 length 11
+ Stream: column 2 section DATA start: 743 length 0
+ Stream: column 2 section LENGTH start: 743 length 0
+ Stream: column 2 section DICTIONARY_DATA start: 743 length 0
+ Encoding column 0: DIRECT
+ Encoding column 1: DIRECT_V2
+ Encoding column 2: DICTIONARY_V2[0]
+ Row group indices for column 2:
+ Entry 0: count: 0 hasNull: true positions: 0,0,0,0,0,0,0
+ Entry 1: count: 0 hasNull: true positions: 0,0,125,0,0,0,0
+ Entry 2: count: 0 hasNull: true positions: 0,2,120,0,0,0,0
+ Entry 3: count: 0 hasNull: true positions: 0,4,115,0,0,0,0
+ Entry 4: count: 0 hasNull: true positions: 0,6,110,0,0,0,0
+ Stripe: offset: 807 data: 206 rows: 5000 tail: 60 index: 137
+ Stream: column 0 section ROW_INDEX start: 807 length 17
+ Stream: column 1 section ROW_INDEX start: 824 length 60
+ Stream: column 2 section ROW_INDEX start: 884 length 60
+ Stream: column 1 section DATA start: 944 length 159
+ Stream: column 1 section LENGTH start: 1103 length 15
+ Stream: column 2 section DATA start: 1118 length 15
+ Stream: column 2 section LENGTH start: 1133 length 6
+ Stream: column 2 section DICTIONARY_DATA start: 1139 length 11
+ Encoding column 0: DIRECT
+ Encoding column 1: DIRECT_V2
+ Encoding column 2: DICTIONARY_V2[1]
+ Row group indices for column 2:
+ Entry 0: count: 1000 hasNull: false min: STRIPE-3 max: STRIPE-3 sum: 8000 positions: 0,0,0
+ Entry 1: count: 1000 hasNull: false min: STRIPE-3 max: STRIPE-3 sum: 8000 positions: 0,4,488
+ Entry 2: count: 1000 hasNull: false min: STRIPE-3 max: STRIPE-3 sum: 8000 positions: 0,12,464
+ Entry 3: count: 1000 hasNull: false min: STRIPE-3 max: STRIPE-3 sum: 8000 positions: 0,20,440
+ Entry 4: count: 1000 hasNull: false min: STRIPE-3 max: STRIPE-3 sum: 8000 positions: 0,28,416
+ Stripe: offset: 1210 data: 185 rows: 5000 tail: 64 index: 116
+ Stream: column 0 section ROW_INDEX start: 1210 length 17
+ Stream: column 1 section ROW_INDEX start: 1227 length 60
+ Stream: column 2 section ROW_INDEX start: 1287 length 39
+ Stream: column 1 section DATA start: 1326 length 159
+ Stream: column 1 section LENGTH start: 1485 length 15
+ Stream: column 2 section PRESENT start: 1500 length 11
+ Stream: column 2 section DATA start: 1511 length 0
+ Stream: column 2 section LENGTH start: 1511 length 0
+ Stream: column 2 section DICTIONARY_DATA start: 1511 length 0
+ Encoding column 0: DIRECT
+ Encoding column 1: DIRECT_V2
+ Encoding column 2: DICTIONARY_V2[0]
+ Row group indices for column 2:
+ Entry 0: count: 0 hasNull: true positions: 0,0,0,0,0,0,0
+ Entry 1: count: 0 hasNull: true positions: 0,0,125,0,0,0,0
+ Entry 2: count: 0 hasNull: true positions: 0,2,120,0,0,0,0
+ Entry 3: count: 0 hasNull: true positions: 0,4,115,0,0,0,0
+ Entry 4: count: 0 hasNull: true positions: 0,6,110,0,0,0,0
+
+File length: 1823 bytes
+Padding length: 0 bytes
+Padding ratio: 0%
+________________________________________________________________________________________________________________________
+
http://git-wip-us.apache.org/repos/asf/hive/blob/ffb79509/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java
index 6225ade..8963449 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDecimalToTimestamp.java
@@ -20,12 +20,9 @@ package org.apache.hadoop.hive.ql.exec.vector.expressions;
import java.sql.Timestamp;
-import org.apache.hadoop.hive.common.type.HiveDecimal;
import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector;
-import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
-import org.apache.hadoop.hive.ql.exec.vector.TimestampUtils;
-import org.apache.hadoop.hive.serde2.io.TimestampWritable;
+import org.apache.hadoop.hive.ql.util.TimestampUtils;
/**
* Type cast decimal to timestamp. The decimal value is interpreted
@@ -44,6 +41,7 @@ public class CastDecimalToTimestamp extends FuncDecimalToTimestamp {
@Override
protected void func(TimestampColumnVector outV, DecimalColumnVector inV, int i) {
- outV.set(i, TimestampWritable.decimalToTimestamp(inV.vector[i].getHiveDecimal()));
+ Timestamp timestamp = TimestampUtils.decimalToTimestamp(inV.vector[i].getHiveDecimal());
+ outV.set(i, timestamp);
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/ffb79509/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToTimestamp.java
index 31d2f78..07f94f5 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastDoubleToTimestamp.java
@@ -18,9 +18,11 @@
package org.apache.hadoop.hive.ql.exec.vector.expressions;
-import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
-import org.apache.hadoop.hive.ql.exec.vector.*;
-import org.apache.hadoop.hive.serde2.io.TimestampWritable;
+import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+import org.apache.hadoop.hive.ql.util.TimestampUtils;
public class CastDoubleToTimestamp extends VectorExpression {
private static final long serialVersionUID = 1L;
@@ -40,9 +42,8 @@ public class CastDoubleToTimestamp extends VectorExpression {
private void setDouble(TimestampColumnVector timestampColVector,
double[] vector, int elementNum) {
- TimestampWritable.setTimestampFromDouble(
- timestampColVector.getScratchTimestamp(), vector[elementNum]);
- timestampColVector.setFromScratchTimestamp(elementNum);
+ timestampColVector.set(elementNum,
+ TimestampUtils.doubleToTimestamp(vector[elementNum]));
}
@Override
http://git-wip-us.apache.org/repos/asf/hive/blob/ffb79509/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToTimestamp.java
index a2ee52d..4de95a5 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastLongToTimestamp.java
@@ -39,9 +39,7 @@ public class CastLongToTimestamp extends VectorExpression {
}
private void setSeconds(TimestampColumnVector timestampColVector, long[] vector, int elementNum) {
- TimestampWritable.setTimestampFromLong(
- timestampColVector.getScratchTimestamp(), vector[elementNum],
- /* intToTimestampInSeconds */ true);
+ timestampColVector.getScratchTimestamp().setTime(vector[elementNum] * 1000);
timestampColVector.setFromScratchTimestamp(elementNum);
}
http://git-wip-us.apache.org/repos/asf/hive/blob/ffb79509/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastMillisecondsLongToTimestamp.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastMillisecondsLongToTimestamp.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastMillisecondsLongToTimestamp.java
index 01c8810..b1c6b2d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastMillisecondsLongToTimestamp.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/CastMillisecondsLongToTimestamp.java
@@ -38,10 +38,9 @@ public class CastMillisecondsLongToTimestamp extends VectorExpression {
super();
}
- private void setMilliseconds(TimestampColumnVector timestampColVector, long[] vector, int elementNum) {
- TimestampWritable.setTimestampFromLong(
- timestampColVector.getScratchTimestamp(), vector[elementNum],
- /* intToTimestampInSeconds */ false);
+ private void setMilliseconds(TimestampColumnVector timestampColVector,
+ long[] vector, int elementNum) {
+ timestampColVector.getScratchTimestamp().setTime(vector[elementNum]);
timestampColVector.setFromScratchTimestamp(elementNum);
}
http://git-wip-us.apache.org/repos/asf/hive/blob/ffb79509/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringExpr.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringExpr.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringExpr.java
deleted file mode 100644
index 90817a5..0000000
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/StringExpr.java
+++ /dev/null
@@ -1,354 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hive.ql.exec.vector.expressions;
-
-import java.util.Arrays;
-
-import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
-
-/**
- * String expression evaluation helper functions.
- */
-public class StringExpr {
-
- /* Compare two strings from two byte arrays each
- * with their own start position and length.
- * Use lexicographic unsigned byte value order.
- * This is what's used for UTF-8 sort order.
- * Return negative value if arg1 < arg2, 0 if arg1 = arg2,
- * positive if arg1 > arg2.
- */
- public static int compare(byte[] arg1, int start1, int len1, byte[] arg2, int start2, int len2) {
- for (int i = 0; i < len1 && i < len2; i++) {
- // Note the "& 0xff" is just a way to convert unsigned bytes to signed integer.
- int b1 = arg1[i + start1] & 0xff;
- int b2 = arg2[i + start2] & 0xff;
- if (b1 != b2) {
- return b1 - b2;
- }
- }
- return len1 - len2;
- }
-
- /* Determine if two strings are equal from two byte arrays each
- * with their own start position and length.
- * Use lexicographic unsigned byte value order.
- * This is what's used for UTF-8 sort order.
- */
- public static boolean equal(byte[] arg1, final int start1, final int len1,
- byte[] arg2, final int start2, final int len2) {
- if (len1 != len2) {
- return false;
- }
- if (len1 == 0) {
- return true;
- }
-
- // do bounds check for OOB exception
- if (arg1[start1] != arg2[start2]
- || arg1[start1 + len1 - 1] != arg2[start2 + len2 - 1]) {
- return false;
- }
-
- if (len1 == len2) {
- // prove invariant to the compiler: len1 = len2
- // all array access between (start1, start1+len1)
- // and (start2, start2+len2) are valid
- // no more OOB exceptions are possible
- final int step = 8;
- final int remainder = len1 % step;
- final int wlen = len1 - remainder;
- // suffix first
- for (int i = wlen; i < len1; i++) {
- if (arg1[start1 + i] != arg2[start2 + i]) {
- return false;
- }
- }
- // SIMD loop
- for (int i = 0; i < wlen; i += step) {
- final int s1 = start1 + i;
- final int s2 = start2 + i;
- boolean neq = false;
- for (int j = 0; j < step; j++) {
- neq = (arg1[s1 + j] != arg2[s2 + j]) || neq;
- }
- if (neq) {
- return false;
- }
- }
- }
-
- return true;
- }
-
- public static int characterCount(byte[] bytes) {
- int end = bytes.length;
-
- // count characters
- int j = 0;
- int charCount = 0;
- while(j < end) {
- // UTF-8 continuation bytes have 2 high bits equal to 0x80.
- if ((bytes[j] & 0xc0) != 0x80) {
- ++charCount;
- }
- j++;
- }
- return charCount;
- }
-
- public static int characterCount(byte[] bytes, int start, int length) {
- int end = start + length;
-
- // count characters
- int j = start;
- int charCount = 0;
- while(j < end) {
- // UTF-8 continuation bytes have 2 high bits equal to 0x80.
- if ((bytes[j] & 0xc0) != 0x80) {
- ++charCount;
- }
- j++;
- }
- return charCount;
- }
-
- // A setVal with the same function signature as rightTrim, leftTrim, truncate, etc, below.
- // Useful for class generation via templates.
- public static void assign(BytesColumnVector outV, int i, byte[] bytes, int start, int length) {
- // set output vector
- outV.setVal(i, bytes, start, length);
- }
-
- /*
- * Right trim a slice of a byte array and return the new byte length.
- */
- public static int rightTrim(byte[] bytes, int start, int length) {
- // skip trailing blank characters
- int j = start + length - 1;
- while(j >= start && bytes[j] == 0x20) {
- j--;
- }
-
- return (j - start) + 1;
- }
-
- /*
- * Right trim a slice of a byte array and place the result into element i of a vector.
- */
- public static void rightTrim(BytesColumnVector outV, int i, byte[] bytes, int start, int length) {
- // skip trailing blank characters
- int j = start + length - 1;
- while(j >= start && bytes[j] == 0x20) {
- j--;
- }
-
- // set output vector
- outV.setVal(i, bytes, start, (j - start) + 1);
- }
-
- /*
- * Truncate a slice of a byte array to a maximum number of characters and
- * return the new byte length.
- */
- public static int truncate(byte[] bytes, int start, int length, int maxLength) {
- int end = start + length;
-
- // count characters forward
- int j = start;
- int charCount = 0;
- while(j < end) {
- // UTF-8 continuation bytes have 2 high bits equal to 0x80.
- if ((bytes[j] & 0xc0) != 0x80) {
- if (charCount == maxLength) {
- break;
- }
- ++charCount;
- }
- j++;
- }
- return (j - start);
- }
-
- /*
- * Truncate a slice of a byte array to a maximum number of characters and
- * place the result into element i of a vector.
- */
- public static void truncate(BytesColumnVector outV, int i, byte[] bytes, int start, int length, int maxLength) {
- int end = start + length;
-
- // count characters forward
- int j = start;
- int charCount = 0;
- while(j < end) {
- // UTF-8 continuation bytes have 2 high bits equal to 0x80.
- if ((bytes[j] & 0xc0) != 0x80) {
- if (charCount == maxLength) {
- break;
- }
- ++charCount;
- }
- j++;
- }
-
- // set output vector
- outV.setVal(i, bytes, start, (j - start));
- }
-
- /*
- * Truncate a byte array to a maximum number of characters and
- * return a byte array with only truncated bytes.
- */
- public static byte[] truncateScalar(byte[] bytes, int maxLength) {
- int end = bytes.length;
-
- // count characters forward
- int j = 0;
- int charCount = 0;
- while(j < end) {
- // UTF-8 continuation bytes have 2 high bits equal to 0x80.
- if ((bytes[j] & 0xc0) != 0x80) {
- if (charCount == maxLength) {
- break;
- }
- ++charCount;
- }
- j++;
- }
- if (j == end) {
- return bytes;
- } else {
- return Arrays.copyOf(bytes, j);
- }
- }
-
- /*
- * Right trim and truncate a slice of a byte array to a maximum number of characters and
- * return the new byte length.
- */
- public static int rightTrimAndTruncate(byte[] bytes, int start, int length, int maxLength) {
- int end = start + length;
-
- // count characters forward and watch for final run of pads
- int j = start;
- int charCount = 0;
- int padRunStart = -1;
- while(j < end) {
- // UTF-8 continuation bytes have 2 high bits equal to 0x80.
- if ((bytes[j] & 0xc0) != 0x80) {
- if (charCount == maxLength) {
- break;
- }
- if (bytes[j] == 0x20) {
- if (padRunStart == -1) {
- padRunStart = j;
- }
- } else {
- padRunStart = -1;
- }
- ++charCount;
- } else {
- padRunStart = -1;
- }
- j++;
- }
- if (padRunStart != -1) {
- return (padRunStart - start);
- } else {
- return (j - start);
- }
- }
-
- /*
- * Right trim and truncate a slice of a byte array to a maximum number of characters and
- * place the result into element i of a vector.
- */
- public static void rightTrimAndTruncate(BytesColumnVector outV, int i, byte[] bytes, int start, int length, int maxLength) {
- int end = start + length;
-
- // count characters forward and watch for final run of pads
- int j = start;
- int charCount = 0;
- int padRunStart = -1;
- while(j < end) {
- // UTF-8 continuation bytes have 2 high bits equal to 0x80.
- if ((bytes[j] & 0xc0) != 0x80) {
- if (charCount == maxLength) {
- break;
- }
- if (bytes[j] == 0x20) {
- if (padRunStart == -1) {
- padRunStart = j;
- }
- } else {
- padRunStart = -1;
- }
- ++charCount;
- } else {
- padRunStart = -1;
- }
- j++;
- }
- // set output vector
- if (padRunStart != -1) {
- outV.setVal(i, bytes, start, (padRunStart - start));
- } else {
- outV.setVal(i, bytes, start, (j - start) );
- }
- }
-
- /*
- * Right trim and truncate a byte array to a maximum number of characters and
- * return a byte array with only the trimmed and truncated bytes.
- */
- public static byte[] rightTrimAndTruncateScalar(byte[] bytes, int maxLength) {
- int end = bytes.length;
-
- // count characters forward and watch for final run of pads
- int j = 0;
- int charCount = 0;
- int padRunStart = -1;
- while(j < end) {
- // UTF-8 continuation bytes have 2 high bits equal to 0x80.
- if ((bytes[j] & 0xc0) != 0x80) {
- if (charCount == maxLength) {
- break;
- }
- if (bytes[j] == 0x20) {
- if (padRunStart == -1) {
- padRunStart = j;
- }
- } else {
- padRunStart = -1;
- }
- ++charCount;
- } else {
- padRunStart = -1;
- }
- j++;
- }
- if (padRunStart != -1) {
- return Arrays.copyOf(bytes, padRunStart);
- } else if (j == end) {
- return bytes;
- } else {
- return Arrays.copyOf(bytes, j);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/hive/blob/ffb79509/ql/src/java/org/apache/hadoop/hive/ql/hooks/PostExecOrcFileDump.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/hooks/PostExecOrcFileDump.java b/ql/src/java/org/apache/hadoop/hive/ql/hooks/PostExecOrcFileDump.java
index d5d1370..e184fcb 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/hooks/PostExecOrcFileDump.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/hooks/PostExecOrcFileDump.java
@@ -30,8 +30,8 @@ import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.ql.QueryPlan;
import org.apache.hadoop.hive.ql.exec.FetchTask;
-import org.apache.hadoop.hive.ql.io.FileFormatException;
-import org.apache.hadoop.hive.ql.io.orc.FileDump;
+import org.apache.orc.FileFormatException;
+import org.apache.orc.tools.FileDump;
import org.apache.hadoop.hive.ql.io.orc.OrcFile;
import org.apache.hadoop.hive.ql.plan.FetchWork;
import org.apache.hadoop.hive.ql.session.SessionState;
http://git-wip-us.apache.org/repos/asf/hive/blob/ffb79509/ql/src/java/org/apache/hadoop/hive/ql/io/FileFormatException.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/FileFormatException.java b/ql/src/java/org/apache/hadoop/hive/ql/io/FileFormatException.java
deleted file mode 100644
index 12417aa..0000000
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/FileFormatException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * <p/>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hive.ql.io;
-
-import java.io.IOException;
-
-/**
- * Thrown when an invalid file format is encountered.
- */
-public class FileFormatException extends IOException {
-
- public FileFormatException(String errMsg) {
- super(errMsg);
- }
-}