Ted, 
I’m wondering if we’ve uncovered an unsupported, undocumented feature in Drill 
with respect to the BitWriter.  I made the following changes:


To PcapRecordReader.java, I added:


case "ack_flag":
  if (packet.isTcpPacket()) {
    int flag = (packet.getAckFlag()) ? 1 : 0;
    setBooleanColumnValue(flag, pci, count);
  }
  break;
...

private void setBooleanColumnValue(final int data, final ProjectedColumnInfo 
pci, final int count) {
  ((NullableBitVector.Mutator) pci.vv.getMutator())
    .setSafe(count, data);
}

Then I added this to PcapFormatUtils

public static int getBit(final byte[] buf, final int posByte, final int posBit 
) {
  byte valByte = buf[posByte];
  return valByte >> (8 - (posBit + 1)) & 0x0001;
}

I added a column in the Schema.java and a function in Packet.java to get the 
bit.  I was getting NPEs and I’m wondering now if the cause wasn’t my code but 
rather a problem with the bitwriter.  I’m going to play with this and see if I 
can get Drill to write a True/False value at all, and report back.  If the 
BitWriter is throwing NPE, I’ll create a JIRA for it. 

Thanks for your work on the PCAP format reader.
—C 



> On Jan 3, 2018, at 17:33, Ted Dunning <[email protected]> wrote:
> 
> Don't think that will work.
> 
> I tried what seemed obvious and got a NPE. Joys of Drill.
> 
> 
> 
> On Wed, Jan 3, 2018 at 1:31 PM, Charles Givre <[email protected]> wrote:
> 
>> This isn’t the most elegant example, but should do the trick.
>> 
>> https://github.com/cgivre/drill-network-functions/blob/
>> master/src/main/java/org/apache/drill/contrib/function/IsPrivateIP.java <
>> https://github.com/cgivre/drill-network-functions/blob/
>> master/src/main/java/org/apache/drill/contrib/function/IsPrivateIP.java>
>> 
>> 
>> 
>> 
>>> On Jan 3, 2018, at 16:09, Ted Dunning <[email protected]> wrote:
>>> 
>>> On Wed, Jan 3, 2018 at 12:17 PM, Charles Givre <[email protected]> wrote:
>>> 
>>>> HI Ted,
>>>> This is really looking amazing.  Thank you so much for working on
>> this.  I
>>>> wanted to ask whether you’ve tried the BitWriter to write a Boolean
>> value?
>>>> I’ve done that in UDFs.
>>> 
>>> 
>>> Point me to an example. I think booleans would be vastly better.
>> 
>> 

Reply via email to