>From Peeyush Gupta <[email protected]>:

Peeyush Gupta has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19807 )


Change subject: WIP: Reading gzip file with multiple gzip streams
......................................................................

WIP: Reading gzip file with multiple gzip streams

Change-Id: I47c2eb600dddba1198a92f5ff7dfc7f2da652c3e
---
M 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
1 file changed, 46 insertions(+), 1 deletion(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/07/19807/1

diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
index 77897ea..1309578 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/aws/AwsS3InputStream.java
@@ -21,6 +21,7 @@
 import static org.apache.hyracks.api.util.ExceptionUtils.getMessageOrToString;

 import java.io.IOException;
+import java.io.InputStream;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
@@ -70,7 +71,7 @@
         }
         // Use gzip stream if needed
         if (StringUtils.endsWithIgnoreCase(fileName, ".gz") || 
StringUtils.endsWithIgnoreCase(fileName, ".gzip")) {
-            in = new GZIPInputStream(in, 
ExternalDataConstants.DEFAULT_BUFFER_SIZE);
+            in = new GZIPInputStream(new AvailableInputStream(in), 
ExternalDataConstants.DEFAULT_BUFFER_SIZE);
         }
         return true;
     }
@@ -144,4 +145,39 @@
             throw HyracksDataException.create(ex);
         }
     }
+
+    public class AvailableInputStream extends InputStream {
+        private InputStream is;
+
+        AvailableInputStream(InputStream inputstream) {
+            is = inputstream;
+        }
+
+        public int read() throws IOException {
+            return (is.read());
+        }
+
+        public int read(byte[] b) throws IOException {
+            return (is.read(b));
+        }
+
+        public int read(byte[] b, int off, int len) throws IOException {
+            return (is.read(b, off, len));
+        }
+
+        public void close() throws IOException {
+            is.close();
+        }
+
+        public int available() throws IOException {
+            // Always say that we have 1 more byte in the
+            // buffer, even when we don't
+            int a = is.available();
+            if (a == 0) {
+                return (1);
+            } else {
+                return (a);
+            }
+        }
+    }
 }

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19807
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: trinity
Gerrit-Change-Id: I47c2eb600dddba1198a92f5ff7dfc7f2da652c3e
Gerrit-Change-Number: 19807
Gerrit-PatchSet: 1
Gerrit-Owner: Peeyush Gupta <[email protected]>
Gerrit-MessageType: newchange

Reply via email to