Package org.apache.derby.iapi.sql.dictionary

Examples of org.apache.derby.iapi.sql.dictionary.TriggerDescriptor


      executorLists[i] = new Vector();
    }

    for (int i = 0; i < triggerInfo.triggerArray.length; i++)
    {
      TriggerDescriptor td = triggerInfo.triggerArray[i];
      switch (td.getTriggerEventMask())
      {
        case TriggerDescriptor.TRIGGER_EVENT_INSERT:
          if (td.isBeforeTrigger())
          {
            executorLists[TriggerEvent.BEFORE_INSERT].addElement(td);
          }
          else
          {
            executorLists[TriggerEvent.AFTER_INSERT].addElement(td);
          }
          break;


        case TriggerDescriptor.TRIGGER_EVENT_DELETE:
          if (td.isBeforeTrigger())
          {
            executorLists[TriggerEvent.BEFORE_DELETE].addElement(td);
          }
          else
          {
            executorLists[TriggerEvent.AFTER_DELETE].addElement(td);
          }
          break;

        case TriggerDescriptor.TRIGGER_EVENT_UPDATE:
          if (td.isBeforeTrigger())
          {
            executorLists[TriggerEvent.BEFORE_UPDATE].addElement(td);
          }
          else
          {
            executorLists[TriggerEvent.AFTER_UPDATE].addElement(td);
          }
          break;
        default:
          if (SanityManager.DEBUG)
          {
            SanityManager.THROWASSERT("bad trigger event "+td.getTriggerEventMask());
          }
      }
    }

    for (int i = 0; i < executorLists.length; i++)
    {
      int size = executorLists[i].size();
      if (size > 0)
      {
        executors[i] = new GenericTriggerExecutor[size];
        for (int j = 0; j < size; j++)
        {
          TriggerDescriptor td = (TriggerDescriptor)executorLists[i].elementAt(j);
          executors[i][j] (td.isRowTrigger()) ?
                (GenericTriggerExecutor)new RowTriggerExecutor(tec, td, activation, lcc) :
                (GenericTriggerExecutor)new StatementTriggerExecutor(tec, td, activation, lcc);
        }
      }
    }
View Full Code Here


    /* Drop the triggers */
    GenericDescriptorList tdl = dd.getTriggerDescriptors(td);
    Enumeration descs = tdl.elements();
    while (descs.hasMoreElements())
    {
      TriggerDescriptor trd = (TriggerDescriptor) descs.nextElement();
            trd.drop(lcc);
    }

    /* Drop all defaults */
    ColumnDescriptorList cdl = td.getColumnDescriptorList();
    int           cdlSize = cdl.size();
View Full Code Here

        ** For now, we don't allow bulk insert replace when
        ** there is a trigger.
        */
        if (triggerInfo != null)
        {
          TriggerDescriptor td = triggerInfo.getTriggerArray()[0];
          throw StandardException.newException(SQLState.LANG_NO_BULK_INSERT_REPLACE_WITH_TRIGGER_DURING_EXECUTION, constants.getTableName(), td.getName());
        }
      }
    }

    //System.out.println("new InsertResultSet " + sourceResultSet.getClass());
View Full Code Here

      executorLists[i] = new Vector();
    }

    for (int i = 0; i < triggerInfo.triggerArray.length; i++)
    {
      TriggerDescriptor td = triggerInfo.triggerArray[i];
      switch (td.getTriggerEventMask())
      {
        case TriggerDescriptor.TRIGGER_EVENT_INSERT:
          if (td.isBeforeTrigger())
          {
            executorLists[TriggerEvent.BEFORE_INSERT].addElement(td);
          }
          else
          {
            executorLists[TriggerEvent.AFTER_INSERT].addElement(td);
          }
          break;


        case TriggerDescriptor.TRIGGER_EVENT_DELETE:
          if (td.isBeforeTrigger())
          {
            executorLists[TriggerEvent.BEFORE_DELETE].addElement(td);
          }
          else
          {
            executorLists[TriggerEvent.AFTER_DELETE].addElement(td);
          }
          break;

        case TriggerDescriptor.TRIGGER_EVENT_UPDATE:
          if (td.isBeforeTrigger())
          {
            executorLists[TriggerEvent.BEFORE_UPDATE].addElement(td);
          }
          else
          {
            executorLists[TriggerEvent.AFTER_UPDATE].addElement(td);
          }
          break;
        default:
          if (SanityManager.DEBUG)
          {
            SanityManager.THROWASSERT("bad trigger event "+td.getTriggerEventMask());
          }
      }
    }

    for (int i = 0; i < executorLists.length; i++)
    {
      int size = executorLists[i].size();
      if (size > 0)
      {
        executors[i] = new GenericTriggerExecutor[size];
        for (int j = 0; j < size; j++)
        {
          TriggerDescriptor td = (TriggerDescriptor)executorLists[i].elementAt(j);
          executors[i][j] (td.isRowTrigger()) ?
                (GenericTriggerExecutor)new RowTriggerExecutor(tec, td, activation, lcc) :
                (GenericTriggerExecutor)new StatementTriggerExecutor(tec, td, activation, lcc);
        }
      }
    }
View Full Code Here

    Enumeration descs = tdl.elements();

    while (descs.hasMoreElements())
    {
      TriggerDescriptor td = (TriggerDescriptor)descs.nextElement();

      /*
      ** The dependent now depends on this trigger.
      ** the default dependent is the statement
      ** being compiled.
View Full Code Here

   * @exception StandardException    Thrown on failure
   */
  public void  executeConstantAction( Activation activation )
            throws StandardException
  {
    TriggerDescriptor       triggerd;

    LanguageConnectionContext lcc = activation.getLanguageConnectionContext();
    DataDictionary dd = lcc.getDataDictionary();
    DependencyManager dm = dd.getDependencyManager();

View Full Code Here

    boolean          referencingOld = false;
    boolean          referencingNew = false;

    if (td != null)
    {
      TriggerDescriptor triggerDescriptor = (TriggerDescriptor)td;
      name = triggerDescriptor.getName();
      uuid = triggerDescriptor.getUUID();
      suuid = triggerDescriptor.getSchemaDescriptor().getUUID();
      createTime = triggerDescriptor.getCreationTimestamp();
      // for now we are assuming that a trigger can only listen to a single event
      event = triggerDescriptor.listensForEvent(TriggerDescriptor.TRIGGER_EVENT_UPDATE) ? "U" :
          triggerDescriptor.listensForEvent(TriggerDescriptor.TRIGGER_EVENT_DELETE) ? "D" : "I";
      time = triggerDescriptor.isBeforeTrigger() ? "B" : "A";
      type = triggerDescriptor.isRowTrigger() ? "R" : "S";
      enabled = triggerDescriptor.isEnabled() ? "E" : "D";
      tuuid = triggerDescriptor.getTableDescriptor().getUUID();
      int[] refCols = triggerDescriptor.getReferencedCols();
      rcd = (refCols != null) ? new
        ReferencedColumnsDescriptorImpl(refCols) : null;

      actionSPSID =  triggerDescriptor.getActionId();
      whenSPSID =  triggerDescriptor.getWhenClauseId();
      triggerDefinition = triggerDescriptor.getTriggerDefinition();
      referencingOld = triggerDescriptor.getReferencingOld();
      referencingNew = triggerDescriptor.getReferencingNew();
      oldReferencingName = triggerDescriptor.getOldReferencingName();
      newReferencingName = triggerDescriptor.getNewReferencingName();
    }

    /* Build the row to insert */
    row = getExecutionFactory().getValueRow(SYSTRIGGERS_COLUMN_COUNT);

View Full Code Here

    boolean          isRow;
    boolean          isEnabled;
    boolean          referencingOld;
    boolean          referencingNew;
    ReferencedColumns rcd;
    TriggerDescriptor    descriptor;
    DataDescriptorGenerator  ddg = dd.getDataDescriptorGenerator();

    if (SanityManager.DEBUG)
    {
      SanityManager.ASSERT(row.nColumns() == SYSTRIGGERS_COLUMN_COUNT,
                 "Wrong number of columns for a SYSTRIGGERS row");
    }

    // 1st column is TRIGGERID (UUID - char(36))
    col = row.getColumn(1);
    uuidStr = col.getString();
    uuid = getUUIDFactory().recreateUUID(uuidStr);

    // 2nd column is TRIGGERNAME (varchar(128))
    col = row.getColumn(2);
    name = col.getString();

    // 3rd column is SCHEMAID (UUID - char(36))
    col = row.getColumn(3);
    uuidStr = col.getString();
    suuid = getUUIDFactory().recreateUUID(uuidStr);

    // 4th column is CREATIONTIMESTAMP (TIMESTAMP)
    col = row.getColumn(4);
    createTime = (Timestamp) col.getObject();

    // 5th column is EVENT (char(1))
    col = row.getColumn(5);
    theChar = col.getString().charAt(0);
    switch (theChar)
    {
      case 'U':
            eventMask = TriggerDescriptor.TRIGGER_EVENT_UPDATE;
            break;

      case 'I':
            eventMask = TriggerDescriptor.TRIGGER_EVENT_INSERT;
            break;

      case 'D':
            eventMask = TriggerDescriptor.TRIGGER_EVENT_DELETE;
            break;

      default:
          if (SanityManager.DEBUG
          {
            SanityManager.THROWASSERT("bad event mask: "+theChar);
          }
    }
   
    // 6th column is FIRINGTIME (char(1))
    isBefore = getCharBoolean(row.getColumn(6), 'B', 'A');

    // 7th column is TYPE (char(1))
    isRow = getCharBoolean(row.getColumn(7), 'R', 'S');

    // 8th column is STATE (char(1))
    isEnabled = getCharBoolean(row.getColumn(8), 'E', 'D');

    // 9th column is TABLEID (UUID - char(36))
    col = row.getColumn(9);
    uuidStr = col.getString();
    tuuid = getUUIDFactory().recreateUUID(uuidStr);

    // 10th column is WHENSTMTID (UUID - char(36))
    col = row.getColumn(10);
    uuidStr = col.getString();
    if (uuidStr != null)
      whenSPSID = getUUIDFactory().recreateUUID(uuidStr);

    // 11th column is ACTIONSTMTID (UUID - char(36))
    col = row.getColumn(11);
    uuidStr = col.getString();
    if (uuidStr != null)
      actionSPSID = getUUIDFactory().recreateUUID(uuidStr);

    // 12th column is REFERENCEDCOLUMNS user type org.apache.derby.catalog.ReferencedColumns
    col = row.getColumn(12);
    rcd = (ReferencedColumns) col.getObject();

    // 13th column is TRIGGERDEFINITION (longvarhar)
    col = row.getColumn(13);
    triggerDefinition = col.getString();

    // 14th column is REFERENCINGOLD (boolean)
    col = row.getColumn(14);
    referencingOld = col.getBoolean();

    // 15th column is REFERENCINGNEW (boolean)
    col = row.getColumn(15);
    referencingNew = col.getBoolean();

    // 16th column is REFERENCINGNAME (varchar(128))
    col = row.getColumn(16);
    oldReferencingName = col.getString();

    // 17th column is REFERENCINGNAME (varchar(128))
    col = row.getColumn(17);
    newReferencingName = col.getString();

    descriptor = new TriggerDescriptor(
                  dd,
                  dd.getSchemaDescriptor(suuid, null),
                  uuid,
                  name,
                  eventMask,
View Full Code Here

        ** For now, we don't allow bulk insert replace when
        ** there is a trigger.
        */
        if (triggerInfo != null)
        {
          TriggerDescriptor td = triggerInfo.getTriggerArray()[0];
          throw StandardException.newException(SQLState.LANG_NO_BULK_INSERT_REPLACE_WITH_TRIGGER_DURING_EXECUTION, constants.getTableName(), td.getName());
        }
      }
    }

    //System.out.println("new InsertResultSet " + sourceResultSet.getClass());
View Full Code Here

    CompilerContext      cc = getCompilerContext();
    DataDictionary      dd = getDataDictionary();

    SchemaDescriptor sd = getSchemaDescriptor();

    TriggerDescriptor triggerDescriptor = null;
   
    if (sd.getUUID() != null)
      triggerDescriptor = dd.getTriggerDescriptor(getRelativeName(), sd);

    if (triggerDescriptor == null)
    {
      throw StandardException.newException(SQLState.LANG_OBJECT_NOT_FOUND, "TRIGGER", getFullName());
    }

    /* Get the table descriptor */
    td = triggerDescriptor.getTableDescriptor();
    cc.createDependency(td);
    cc.createDependency(triggerDescriptor);
     
    return this;
  }
View Full Code Here

TOP

Related Classes of org.apache.derby.iapi.sql.dictionary.TriggerDescriptor

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.