db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mamta Satoor" <msat...@gmail.com>
Subject Re: svn commit: r619958 - in /db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql: conn/GenericLanguageConnectionContext.java execute/BaseActivation.java
Date Fri, 08 Feb 2008 18:08:22 GMT
When I issued the commit, it didn't let me add the comments for the
log. Later I tried following to attempt to change the revision log
from empty to some meaningful comments, it kept getting "No changes to
property 'svn:log' on revision 619958"
svn propedit --revprop -r 619958 svn:log
No changes to property 'svn:log' on revision 619958

I would like the commit comment to say
Merging changes 618788, 619279 and 619772 into 10.3 codeline for DERBY-3304.

thanks,
Mamta

On 2/8/08, mamta@apache.org <mamta@apache.org> wrote:
> Author: mamta
> Date: Fri Feb  8 09:57:22 2008
> New Revision: 619958
>
> URL: http://svn.apache.org/viewvc?rev=619958&view=rev
> Log: (empty)
>
> Modified:
>    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java
>    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/execute/BaseActivation.java
>
> Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java
> URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java?rev=619958&r1=619957&r2=619958&view=diff
> ==============================================================================
> --- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java
(original)
> +++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java
Fri Feb  8 09:57:22 2008
> @@ -1100,7 +1100,7 @@
>                                                                          "), Committing");
>                }
>
> -               resetActivations(false);
> +               endTransactionActivationHandling(false);
>
>                //do the clean up work required for temporary tables at the commit time.
This cleanup work
>                //can possibly remove entries from allDeclaredGlobalTempTables and that's
why we need to check
> @@ -1347,7 +1347,7 @@
>                                                                          "), Rolling
back");
>                }
>
> -               resetActivations(true);
> +               endTransactionActivationHandling(true);
>
>                currentSavepointLevel = 0; //reset the current savepoint level for the
connection to 0 at the beginning of rollback work for temp tables
>                if (allDeclaredGlobalTempTables != null)
> @@ -1428,7 +1428,7 @@
>                                closeConglomerates = true;
>                                // bug 5145 - don't forget to close the activations while
rolling
>                                // back to a savepoint
> -                               resetActivations(true);
> +                               endTransactionActivationHandling(true);
>                        }
>                        else { closeConglomerates = false; }
>
> @@ -2691,15 +2691,24 @@
>        // class implementation
>        //
>
> -
>        /**
> -               resets all open activations, to close their result sets.
> -               Also cleans up (close()) activations that have been
> +               If we are called as part of rollback code path, then we will reset all
> +               the activations.
> +
> +               If we are called as part of commit code path, then we will do one of
> +               the following if the activation has resultset assoicated with it. Also,
> +               we will clear the conglomerate used while scanning for update/delete
> +               1)Close result sets that return rows and are not held across commit.
> +               2)Clear the current row of the resultsets that return rows and are
> +               held across commit.
> +               3)Leave the result sets untouched if they do not return rows
> +
> +               Additionally, clean up (close()) activations that have been
>                marked as unused during statement finalization.
>
>                @exception StandardException thrown on failure
>         */
> -       private void resetActivations(boolean andClose) throws StandardException {
> +       private void endTransactionActivationHandling(boolean forRollback) throws StandardException
{
>
>                // don't use an enumeration as the activation may remove
>                // itself from the list, thus invalidating the Enumeration
> @@ -2713,15 +2722,6 @@
>
>                        Activation a = (Activation) acts.get(i);
>                        /*
> -                       ** andClose true means we are here for rollback.
> -                       ** In case of rollback, we don't care for holding
> -                       ** cursors and that's why I am resetting holdability
> -                       ** to false for all activations just before rollback
> -                       */
> -                       if (andClose)
> -                               a.setResultSetHoldability(false);
> -
> -                       /*
>                        ** Look for stale activations.  Activations are
>                        ** marked as unused during statement finalization.
>                        ** Here, we sweep and remove this inactive ones.
> @@ -2732,14 +2732,44 @@
>                                continue;
>                        }
>
> -                       a.reset();
> -
> -                       // Only invalidate statements if we performed DDL.
> -                       if (andClose && dataDictionaryInWriteMode()) {
> -                               ExecPreparedStatement ps = a.getPreparedStatement();
> -                               if (ps != null) {
> -                                       ps.makeInvalid(DependencyManager.ROLLBACK, this);
> +                       if (forRollback) {
> +                               //Since we are dealing with rollback, we need to reset
the
> +                               //activation no matter what the holdability might be
or no
> +                               //matter whether the associated resultset returns rows
or not.
> +                               a.reset();
> +                               // Only invalidate statements if we performed DDL.
> +                               if (dataDictionaryInWriteMode()) {
> +                                       ExecPreparedStatement ps = a.getPreparedStatement();
> +                                       if (ps != null) {
> +                                               ps.makeInvalid(DependencyManager.ROLLBACK,
this);
> +                                       }
> +                               }
> +                       } else {
> +                               //We are dealing with commit here.
> +                               if (a.getResultSet() != null) {
> +                                       ResultSet activationResultSet = a.getResultSet();
> +                                       boolean resultsetReturnsRows = activationResultSet.returnsRows();
> +                                       //if the activation has resultset associated
with it, then
> +                                       //use following criteria to take the action
> +                                       if (resultsetReturnsRows){
> +                                               if (a.getResultSetHoldability() == false)
> +                                                       //Close result sets that return
rows and are not held
> +                                                       //across commit. This is to implement
closing JDBC
> +                                                       //result sets that are CLOSE_CURSOR_ON_COMMIT
at commit
> +                                                       //time.
> +                                                       activationResultSet.close();
> +                                               else
> +                                                       //Clear the current row of the
result sets that return
> +                                                       //rows and are held across commit.
This is to implement
> +                                                       //keeping JDBC result sets open
that are
> +                                                       //HOLD_CURSORS_OVER_COMMIT at
commit time and marking
> +                                                       //the resultset to be not on
a valid row position. The
> +                                                       //user will need to reposition
within the resultset
> +                                                       //before doing any row operations.
> +                                                       activationResultSet.clearCurrentRow();
> +                                       }
>                                }
> +                               a.clearHeapConglomerateController();
>                        }
>                }
>        }
>
> Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/execute/BaseActivation.java
> URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/execute/BaseActivation.java?rev=619958&r1=619957&r2=619958&view=diff
> ==============================================================================
> --- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/execute/BaseActivation.java
(original)
> +++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/execute/BaseActivation.java
Fri Feb  8 09:57:22 2008
> @@ -304,16 +304,9 @@
>         */
>        public void reset() throws StandardException
>        {
> -               // if resultset holdability after commit is false, close it
> -               if (resultSet != null) {
> -                       if (!resultSetHoldability || !resultSet.returnsRows()) {
> -                               // would really like to check if it is open,
> -                               // this is as close as we can approximate that.
> -                               resultSet.close();
> -                       } else if (resultSet.returnsRows()) {
> -                               resultSet.clearCurrentRow();
> -                       }
> -               }
> +               if (resultSet != null)
> +                       resultSet.close();
> +
>                updateHeapCC = null;
>                // REMIND: do we need to get them to stop input as well?
>
>
>
>

Mime
View raw message