You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by ka...@apache.org on 2009/03/15 10:15:34 UTC

svn commit: r754638 - in /labs/bananadb/trunk: FILES.txt src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java

Author: kalle
Date: Sun Mar 15 09:15:31 2009
New Revision: 754638

URL: http://svn.apache.org/viewvc?rev=754638&view=rev
Log:
BananaDB  

ValuePostingsPartitionHeader


Modified:
    labs/bananadb/trunk/FILES.txt
    labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java

Modified: labs/bananadb/trunk/FILES.txt
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/FILES.txt?rev=754638&r1=754637&r2=754638&view=diff
==============================================================================
--- labs/bananadb/trunk/FILES.txt (original)
+++ labs/bananadb/trunk/FILES.txt Sun Mar 15 09:15:31 2009
@@ -8,7 +8,7 @@
 Header: 1024 bytes
 {{{
 
-int         postings start offset -- will change after rehash
+int         next value postings start offset
 int         capacity
 
 }}}
@@ -64,8 +64,8 @@
 Header: 1024 bytes
 {{{
 
-int         postings start offset
-int         bytes left
+int         hash posting start offset -- will change after rehash
+int         capacity
 
 }}}
 

Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java?rev=754638&r1=754637&r2=754638&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/hashtable/Hashtable.java Sun Mar 15 09:15:31 2009
@@ -165,7 +165,6 @@
           log.info("Creating first value partition file");
           Partition partition = new Partition();
           partition.format(partitionSize);
-          partition.open();
 
           return true;
         }
@@ -202,7 +201,6 @@
           throw new FileNotFoundException("Expected partition " + valuePostingsFileName + "." + i + " but found " + valueFiles[i].getName());
         }
         Partition partition = new Partition(i);
-        partition.open();
       }
 
     }
@@ -623,7 +621,9 @@
     if (valueBuf != null) {
 
       Partition partition = partitions.get(partitions.size() - 1);
-      if (partition.bytesLeft < valueBuf.length) {
+
+      ValuePostingsFileHeader valueHeader = new ValuePostingsFileHeader(accessor.getPartitionRAF(partition));
+      if (valueHeader.bytesLeft < valueBuf.length) {
         partition = this.new Partition();
         partition.format(partitionSize);
 
@@ -1092,10 +1092,6 @@
     private int partitionNumber;
     private File file;
 
-    // todo use header class!! read from file each time we access values!!
-
-    private long nextPosition = -1;
-    private long bytesLeft = -1;
 
     private Partition() {
       this(partitions.size());
@@ -1117,16 +1113,15 @@
 
     public long append(HashtableAccessor accessor, byte[] bytes, int length) throws IOException {
 
-      bytesLeft -= length;
-
       RandomAccessFile raf = accessor.getPartitionRAF(this);
 
-      long offset = nextPosition;
-      nextPosition += 4 + length;
+      ValuePostingsFileHeader header = new ValuePostingsFileHeader(raf);
 
-      raf.seek(0);
-      raf.writeLong(nextPosition);
-      raf.writeLong(bytesLeft);
+      int offset = header.getNextOffset();
+
+      header.decreaseBytesLeft(length);
+      header.increaseNextOffset(4 + length);
+      header.save(raf);
 
       raf.seek(offset);
       raf.writeInt(length);
@@ -1149,24 +1144,12 @@
       return null;
     }
 
-    public void format(long sizeInBytes) throws IOException {
+    public void format(int sizeInBytes) throws IOException {
       Hashtable.this.format(file, sizeInBytes);
-      nextPosition = 1024; // save 1K for partition header
-      bytesLeft = sizeInBytes;
 
       RandomAccessFile raf = new RandomAccessFile(file, "rw");
-      raf.seek(0);
-      raf.writeLong(nextPosition);
-      raf.writeLong(bytesLeft);
-      raf.close();
-    }
-
-    public void open() throws IOException {
-
-      RandomAccessFile raf = new RandomAccessFile(file, "r");
-      raf.seek(0);
-      nextPosition = raf.readLong();
-      bytesLeft = raf.readLong();
+      ValuePostingsFileHeader header = new ValuePostingsFileHeader(1024, sizeInBytes - 1024);
+      header.save(raf);
       raf.close();
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org