Package org.apache.derby.impl.store.raw.data

Examples of org.apache.derby.impl.store.raw.data.StoredRecordHeader


            {
        numberFields = row.length;
      }

      // make the record header to have 0 record id
      recordHeader = new StoredRecordHeader(0, numberFields);

      // write the record header once for all the rows, directly to the
            // beginning of the file.
      int rhLen = recordHeader.write(out);
View Full Code Here


    throws StandardException
    {
        return(
            overflowRecordHeader != null ?
                overflowRecordHeader :
                (overflowRecordHeader = new StoredRecordHeader()));
    }
View Full Code Here

        int slot =
            findRecordById(
                parent_recordHeader.getOverflowId(), Page.FIRST_SLOT_NUMBER);

        StoredRecordHeader recordHeader = getHeaderAtSlot(slot);

        try
        {
            int offset_to_row_data =
                getRecordOffset(slot) + recordHeader.size();

            if (SanityManager.DEBUG)
            {
                if (getRecordOffset(slot) <
                        (PAGE_HEADER_OFFSET + PAGE_HEADER_SIZE))
                {
                    SanityManager.THROWASSERT(
                        "Incorrect offset.  offset = " +
                            getRecordOffset(slot) +
                        ", offset should be < " +
                        "(PAGE_HEADER_OFFSET + PAGE_HEADER_SIZE) = " +
                            (PAGE_HEADER_OFFSET + PAGE_HEADER_SIZE) +
                        ", current slot = " + slot +
                        ", total slotsInUse = " + slotsInUse);
                }
            }

            // position the array reading stream at beginning of row data
            // just past the record header.
            ArrayInputStream lrdi = rawDataIn;
            lrdi.setPosition(offset_to_row_data);

            if (fetchDesc != null)
            {
                if (fetchDesc.getQualifierList() != null)
                {
                    fetchDesc.reset();
                }

                readRecordFromArray(
                    row,
                    (fetchDesc.getValidColumns() == null) ?
                        row.length - 1 : fetchDesc.getMaxFetchColumnId(),
                    fetchDesc.getValidColumnsArray(),
                    fetchDesc.getMaterializedColumns(),
                    lrdi,
                    recordHeader,
                    recordToLock);
            }
            else
            {
                readRecordFromArray(
                    row,
                    row.length - 1,
                    (int[]) null,
                    (int[]) null,
                    lrdi,
                    recordHeader,
                    recordToLock);
            }

            return(recordHeader.hasOverflow() ? recordHeader : null);
        }
        catch (IOException ioe)
        {
            if (SanityManager.DEBUG)
            {
View Full Code Here

     *
   * @exception  StandardException  Standard exception policy.
     **/
  public StoredRecordHeader recordHeaderOnDemand(int slot)
  {
    StoredRecordHeader recordHeader =
            new StoredRecordHeader(pageData, getRecordOffset(slot));

    setHeaderAtSlot(slot, recordHeader);

    return recordHeader;
  }
View Full Code Here

    if (SanityManager.DEBUG)
        {
      SanityManager.ASSERT(isLatched());
    }

    StoredRecordHeader recordHeader = getHeaderAtSlot(slot);

    if (recordHeader.hasOverflow())
      return false;

    // the row chain does not overflow, we need to walk all the fields to
    // make sure they are not long columns.

    try
        {

      int offset = getRecordOffset(slot);
   
      if (SanityManager.DEBUG)
            {
        if (offset < (PAGE_HEADER_OFFSET + PAGE_HEADER_SIZE))
                {
          SanityManager.THROWASSERT(
                        "Incorrect offset.  offset = " + offset +
                        ", offset should be < " +
                        "(PAGE_HEADER_OFFSET + PAGE_HEADER_SIZE) = " +
                             (PAGE_HEADER_OFFSET + PAGE_HEADER_SIZE) +
                        ", current slot = " + slot +
                        ", total slotsInUse = " + slotsInUse);
        }

        SanityManager.ASSERT(recordHeader.getFirstField() == 0,
                     "Head row piece should start at field 0 but is not");
      }

      int numberFields = recordHeader.getNumberFields();

      // these reads are always against the page array
      ArrayInputStream lrdi = rawDataIn;

            // position after the record header, at 1st column.
      lrdi.setPosition(offset + recordHeader.size());
   
      for (int i = 0; i < numberFields; i++)
            {
        int fieldStatus = StoredFieldHeader.readStatus(lrdi);
        if (StoredFieldHeader.isOverflow(fieldStatus))
View Full Code Here

    RecordHandle    headRowHandle)
     throws StandardException
  {
    try
    {
      StoredRecordHeader recordHeader = getHeaderAtSlot(slot);

      int numberFields    = recordHeader.getNumberFields();

      // these reads are always against the page array
      ArrayInputStream lrdi = rawDataIn;

            // position the stream to just after record header.
      int offset          = getRecordOffset(slot) + recordHeader.size();
      lrdi.setPosition(offset);

      for (int i = 0; i < numberFields; i++)
            {
        int fieldStatus = StoredFieldHeader.readStatus(lrdi);
View Full Code Here

    // purge the long columns which start on this page.
    purgeColumnChains(t, slot, headRowHandle);

    // drive this loop from the head page. Walk each "long" row piece in
        // the row chain.
    StoredRecordHeader recordHeader = getHeaderAtSlot(slot);

    while (recordHeader.hasOverflow())
        {

      // nextPageInRowChain, is the page with the next row piece
      StoredPage nextPageInRowChain =
                getOverflowPage(recordHeader.getOverflowPage());

      if (nextPageInRowChain == null)
            {
        if (SanityManager.DEBUG)
                {
          SanityManager.THROWASSERT(
              "got null page following long row chain.  " +
              "Head row piece at " + getIdentity() + " slot " +
              slot + " headRecord " + headRowHandle +
              ".  Broken row chain at " +
              recordHeader.getOverflowPage() + ", " +
              recordHeader.getOverflowId());

                }

                break// Don't know what to do here, the row chain is
            // broken.  Don't bomb, just return.
View Full Code Here

      try
            {

        int columnId = work.getColumnId();
        StoredRecordHeader recordHeader = getHeaderAtSlot(slot);

        if (SanityManager.DEBUG)
          SanityManager.ASSERT(recordHeader.getFirstField() == 0,
            "Head row piece should start at field 0 but is not");

        // See if columnId is on pageInRowChain.
        while ((recordHeader.getNumberFields() +
            recordHeader.getFirstField()) <= columnId)
                {
          // The column in question is not on pageInRowChain.

          if (pageInRowChain != this)
                    {
            // Keep the head page latched.
            pageInRowChain.unlatch();
            pageInRowChain = null;
          }

          if (recordHeader.hasOverflow()) 
                    {
            // Go to the next row piece
            pageInRowChain =
                            getOverflowPage(recordHeader.getOverflowPage());
            recordHeader =
                            pageInRowChain.getHeaderAtSlot(
                                getOverflowSlot(pageInRowChain, recordHeader));
          }
                    else
                    {
            //  Don't know why, but this is the last column.
            //  Anyway, the column chain is definite orphaned.
            //  This can happen if the update, or subsequent
            //  updates, shrink the number of columns in the row.
            break;
          }
        }

        if ((recordHeader.getNumberFields() +
                            recordHeader.getFirstField()) > columnId)
                {
          // RecordHeader is the record header of the row piece on
          // pageInRowChain.  The column in question exists and is in
          // that row piece.
          if (!pageInRowChain.isColumnOrphaned(
View Full Code Here

    if (SanityManager.DEBUG)
    {
      String str = new String();
      try
      {
        StoredRecordHeader recordHeader = getHeaderAtSlot(slot);
        int offset = getRecordOffset(slot);
        int numberFields = recordHeader.getNumberFields();
        str = "\nslot " + slot + " offset " + offset + " " +
                         " recordlen " + getTotalSpace(slot) +
                         " (" + getRecordPortionLength(slot) +
                         "," + getReservedCount(slot) + ")"+
                         recordHeader.toString();

        rawDataIn.setPosition(offset + recordHeader.size());

        for (int i = 0; i < numberFields; i++)
        {
          int fieldStatus = StoredFieldHeader.readStatus(rawDataIn);
          int fieldDataLength = StoredFieldHeader.readFieldDataLength(rawDataIn, fieldStatus, slotFieldSize);
View Full Code Here

    long   currentOverflowPageNumber = 0;

slotScan:
    for (int slot = 0; (slot < slotsInUse) && (pageCount < pageList.length); slot++) {

      StoredRecordHeader recordHeader = getHeaderAtSlot(slot);
      if (!recordHeader.hasOverflow())
        continue;

      long overflowPageNumber = recordHeader.getOverflowPage();

      if (slot == currentSlot) {
        currentOverflowPageNumber = overflowPageNumber;
        continue;
      }
View Full Code Here

TOP

Related Classes of org.apache.derby.impl.store.raw.data.StoredRecordHeader

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.