Package org.apache.derby.iapi.store.access

Examples of org.apache.derby.iapi.store.access.TransactionController


      AccessFactory af =
            (AccessFactory)Monitor.getServiceModule(this, AccessFactory.MODULE);

      if (af != null)
      {
        TransactionController tc = null;
        tc = af.getTransaction(
                        ContextService.getFactory().getCurrentContextManager());
        tc.setProperty(Property.LOG_ARCHIVE_MODE , "true", true);
      }
    }
  }
View Full Code Here


  {
    AccessFactory af =
            (AccessFactory)Monitor.getServiceModule(this, AccessFactory.MODULE);
    if (af != null)
    {
      TransactionController tc = null;
      tc = af.getTransaction(ContextService.getFactory().getCurrentContextManager());
      tc.setProperty(Property.LOG_ARCHIVE_MODE , "false", true);
    }
        logArchived = false;
  }
View Full Code Here

    try
    {
      if (af != null)
      {
        TransactionController tc = null;
        try
        {
          tc = af.getAndNameTransaction(
                            context, AccessFactoryGlobals.SYS_TRANS_NAME);

          getLogFactoryProperties(tc);
        }
        finally
        {
          if (tc != null)
            tc.commit();
        }
      }

      // checkpoint will start its own internal transaction on the current
      // context.
View Full Code Here

      AccessFactory af =
            (AccessFactory)Monitor.getServiceModule(this, AccessFactory.MODULE);

      if (af != null)
      {
        TransactionController tc = null;
        tc = af.getTransaction(
                        ContextService.getFactory().getCurrentContextManager());
        tc.setProperty(Property.LOG_ARCHIVE_MODE , "true", true);
      }
    }
  }
View Full Code Here

  {
    AccessFactory af =
            (AccessFactory)Monitor.getServiceModule(this, AccessFactory.MODULE);
    if (af != null)
    {
      TransactionController tc = null;
      tc = af.getTransaction(ContextService.getFactory().getCurrentContextManager());
      tc.setProperty(Property.LOG_ARCHIVE_MODE , "false", true);
    }
        logArchived = false;
  }
View Full Code Here

        int[][]                  index_col_map       =  null;
        ScanController[]         index_scan          =  null;
        ConglomerateController[] index_cc            =  null;
        DataValueDescriptor[][]  index_row           =  null;

    TransactionController     nested_tc = null;

    try {

            nested_tc =
                tc.startNestedUserTransaction(false);

            switch (td.getTableType())
            {
            /* Skip views and vti tables */
            case TableDescriptor.VIEW_TYPE:
            case TableDescriptor.VTI_TYPE:
              return;
            // other types give various errors here
            // DERBY-719,DERBY-720
            default:
              break;
            }

      /* Get a row template for the base table */
      ExecRow baseRow =
                lcc.getLanguageConnectionFactory().getExecutionFactory().getValueRow(
                    td.getNumberOfColumns());


      /* Fill the row with nulls of the correct type */
      ColumnDescriptorList cdl = td.getColumnDescriptorList();
      int           cdlSize = cdl.size();

      for (int index = 0; index < cdlSize; index++)
      {
        ColumnDescriptor cd = (ColumnDescriptor) cdl.elementAt(index);
        baseRow.setColumn(cd.getPosition(), cd.getType().getNull());
      }

            DataValueDescriptor[][] row_array = new DataValueDescriptor[100][];
            row_array[0] = baseRow.getRowArray();
            RowLocation[] old_row_location_array = new RowLocation[100];
            RowLocation[] new_row_location_array = new RowLocation[100];

            // Create the following 3 arrays which will be used to update
            // each index as the scan moves rows about the heap as part of
            // the compress:
            //     index_col_map - map location of index cols in the base row,
            //                     ie. index_col_map[0] is column offset of 1st
            //                     key column in base row.  All offsets are 0
            //                     based.
            //     index_scan - open ScanController used to delete old index row
            //     index_cc   - open ConglomerateController used to insert new
            //                  row

            ConglomerateDescriptor[] conglom_descriptors =
                td.getConglomerateDescriptors();

            // conglom_descriptors has an entry for the conglomerate and each
            // one of it's indexes.
            num_indexes = conglom_descriptors.length - 1;

            // if indexes exist, set up data structures to update them
            if (num_indexes > 0)
            {
                // allocate arrays
                index_col_map   = new int[num_indexes][];
                index_scan      = new ScanController[num_indexes];
                index_cc        = new ConglomerateController[num_indexes];
                index_row       = new DataValueDescriptor[num_indexes][];

                setup_indexes(
                    nested_tc,
                    td,
                    index_col_map,
                    index_scan,
                    index_cc,
                    index_row);

            }

      /* Open the heap for reading */
      base_group_fetch_cc =
                nested_tc.defragmentConglomerate(
                    td.getHeapConglomerateId(),
                    false,
                    true,
                    TransactionController.OPENMODE_FORUPDATE,
            TransactionController.MODE_TABLE,
          TransactionController.ISOLATION_SERIALIZABLE);

            int num_rows_fetched = 0;
            while ((num_rows_fetched =
                        base_group_fetch_cc.fetchNextGroup(
                            row_array,
                            old_row_location_array,
                            new_row_location_array)) != 0)
            {
                if (num_indexes > 0)
                {
                    for (int row = 0; row < num_rows_fetched; row++)
                    {
                        for (int index = 0; index < num_indexes; index++)
                        {
                            fixIndex(
                                row_array[row],
                                index_row[index],
                                old_row_location_array[row],
                                new_row_location_array[row],
                                index_cc[index],
                                index_scan[index],
                                index_col_map[index]);
                        }
                    }
                }
            }

            // TODO - It would be better if commits happened more frequently
            // in the nested transaction, but to do that there has to be more
            // logic to catch a ddl that might jump in the middle of the
            // above loop and invalidate the various table control structures
            // which are needed to properly update the indexes.  For example
            // the above loop would corrupt an index added midway through
            // the loop if not properly handled.  See DERBY-1188. 
            nested_tc.commit();
     
    }
    finally
    {
                /* Clean up before we leave */
                if (base_group_fetch_cc != null)
                {
                    base_group_fetch_cc.close();
                    base_group_fetch_cc = null;
                }

                if (num_indexes > 0)
                {
                    for (int i = 0; i < num_indexes; i++)
                    {
                        if (index_scan != null && index_scan[i] != null)
                        {
                            index_scan[i].close();
                            index_scan[i] = null;
                        }
                        if (index_cc != null && index_cc[i] != null)
                        {
                            index_cc[i].close();
                            index_cc[i] = null;
                        }
                    }
                }

                if (nested_tc != null)
                {
                    nested_tc.destroy();
                }

    }

    return;
View Full Code Here

     *  setted up by the system properties.
     */
    private long getDefaultXATransactionTimeout() throws XAException {
        try {
            LanguageConnectionContext lcc = con.getLanguageConnection();
            TransactionController tc = lcc.getTransactionExecute();

            long timeoutMillis = 1000 * (long) PropertyUtil.getServiceInt(
                tc,
                Property.PROP_XA_TRANSACTION_TIMEOUT,
                0,
View Full Code Here

            deferred, changedColumnIds);
    }

    int lockMode = resultSet.updateTargetLockMode();
    long heapConglomId = targetTableDescriptor.getHeapConglomerateId();
    TransactionController tc =
      getLanguageConnectionContext().getTransactionCompile();
    StaticCompiledOpenConglomInfo[] indexSCOCIs =
      new StaticCompiledOpenConglomInfo[indexConglomerateNumbers.length];

    for (int index = 0; index < indexSCOCIs.length; index++)
    {
      indexSCOCIs[index] = tc.getStaticCompiledConglomInfo(indexConglomerateNumbers[index]);
    }

    /*
    ** Do table locking if the table's lock granularity is
    ** set to table.
    */
    if (targetTableDescriptor.getLockGranularity() == TableDescriptor.TABLE_LOCK_GRANULARITY)
    {
      lockMode = TransactionController.MODE_TABLE;
    }


    return  getGenericConstantActionFactory().getUpdateConstantAction
      ( heapConglomId,
        targetTableDescriptor.getTableType(),
        tc.getStaticCompiledConglomInfo(heapConglomId),
        indicesToMaintain,
        indexConglomerateNumbers,
        indexSCOCIs,
        indexNames,
        emptyHeapRow,
View Full Code Here

            readOnlyNestedTransaction = null;
            queryNestingDepth = 0;
        }

        // now rollback the Store transaction
        TransactionController tc = getTransactionExecute();
        if (tc != null)
        {  
            if (xa)
                ((XATransactionController)tc).xa_rollback();
            else
                tc.abort();
           
            // reset the savepoints to the new
            // location, since any outer nesting
            // levels expet there to be a savepoint
            resetSavepoints();
View Full Code Here

     */
    public void internalRollbackToSavepoint( String savepointName, boolean refreshStyle, Object kindOfSavepoint )
        throws StandardException
    {
        // now rollback the Store transaction to the savepoint
        TransactionController tc = getTransactionExecute();
        if (tc != null)
        {
            boolean     closeConglomerates;

            if ( refreshStyle )
            {
                closeConglomerates = true;
                // bug 5145 - don't forget to close the activations while rolling
                // back to a savepoint
                endTransactionActivationHandling(true);
            }
            else { closeConglomerates = false; }

            currentSavepointLevel = tc.rollbackToSavePoint( savepointName, closeConglomerates, kindOfSavepoint );
        }

        if (tc != null && refreshStyle && allDeclaredGlobalTempTables != null)
            tempTablesAndRollback();
    }
View Full Code Here

TOP

Related Classes of org.apache.derby.iapi.store.access.TransactionController

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.