rpms/dbxml/devel dbxml-bash-include.patch, NONE, 1.1 patch.2.4.16.1, NONE, 1.1 dbxml.spec, 1.7, 1.8 import.log, 1.2, 1.3

Milan Zazrivec mzazrive at fedoraproject.org
Mon Feb 23 09:39:28 UTC 2009


Author: mzazrive

Update of /cvs/pkgs/rpms/dbxml/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv25648/devel

Modified Files:
	dbxml.spec import.log 
Added Files:
	dbxml-bash-include.patch patch.2.4.16.1 
Log Message:
- add patch from oracle
- build for dist-f11


dbxml-bash-include.patch:

--- NEW FILE dbxml-bash-include.patch ---
diff -up ./dist/s_java.orig ./dist/s_java
--- ./dist/s_java.orig	2009-02-23 10:27:21.000000000 +0100
+++ ./dist/s_java	2009-02-23 10:27:28.000000000 +0100
@@ -7,7 +7,7 @@ t=/tmp/__t
 trap 'rm -f $t; exit 0' 0 1 2 3 13 15
 
 msgjava="/* DO NOT EDIT: automatically built by dist/s_java. */"
-. RELEASE
+. ./RELEASE
 
 JAVA_SRCTOP=../src/java
 JAVA_PKGDIR=com/sleepycat/dbxml
diff -up ./dist/s_paths.orig ./dist/s_paths
--- ./dist/s_paths.orig	2009-02-23 10:28:03.000000000 +0100
+++ ./dist/s_paths	2009-02-23 10:28:08.000000000 +0100
@@ -3,7 +3,7 @@
 #
 # Build lib_paths.sed from a template file
 
-. RELEASE
+. ./RELEASE
 
 TMP=/tmp/s_paths$$a
 trap "rm -f $TMPA; exit 1" 1 2 3 15
diff -up ./dist/s_perl.orig ./dist/s_perl
--- ./dist/s_perl.orig	2009-02-23 10:28:22.000000000 +0100
+++ ./dist/s_perl	2009-02-23 10:28:33.000000000 +0100
@@ -3,9 +3,9 @@
 #
 # Build config for the Perl API with our default paths.
 
-. RELEASE
+. ./RELEASE
 
-. s_process
+. ./s_process
 
 PERL_SRCDIR=../src/perl
 PERL_DBDIR=$PERL_SRCDIR/Db
diff -up ./dist/s_php.orig ./dist/s_php
--- ./dist/s_php.orig	2009-02-23 10:29:01.000000000 +0100
+++ ./dist/s_php	2009-02-23 10:29:10.000000000 +0100
@@ -3,7 +3,7 @@
 #
 # Build config.m4 for the PHP API using current configuration.
 
-. s_process
+. ./s_process
 
 PHP_SRCDIR=../src/php
 d=$PHP_SRCDIR/config.m4
diff -up ./dist/s_process.orig ./dist/s_process
--- ./dist/s_process.orig	2008-10-21 23:27:22.000000000 +0200
+++ ./dist/s_process	2009-02-23 10:29:30.000000000 +0100
@@ -2,7 +2,7 @@
 #
 # shell function to process a single template
 
-. RELEASE
+. ./RELEASE
 
 TMP=/tmp/s_process$$a
 trap "rm -f $TMPA; exit 1" 1 2 3 15
diff -up ./dist/s_python.orig ./dist/s_python
--- ./dist/s_python.orig	2008-10-21 23:27:14.000000000 +0200
+++ ./dist/s_python	2009-02-23 10:26:48.000000000 +0100
@@ -4,7 +4,7 @@
 # Build setup.py.in for the Python API with our default library paths.
 # It requires further processing via configure to create setup.py
 
-. s_process
+. ./s_process
 
 PYTHON_SRCDIR=../src/python
 d=$PYTHON_SRCDIR/setup.py.windows
diff -up ./dist/s_readme.orig ./dist/s_readme
--- ./dist/s_readme.orig	2008-10-21 23:27:14.000000000 +0200
+++ ./dist/s_readme	2009-02-23 10:26:02.000000000 +0100
@@ -6,7 +6,7 @@
 t=/tmp/__t
 trap 'rm -f $t; exit 0' 0 1 2 3 13 15
 
-. RELEASE
+. ./RELEASE
 
 (echo "$DBXML_VERSION_STRING" &&
  echo "" &&
diff -up ./dist/s_release.orig ./dist/s_release
--- ./dist/s_release.orig	2009-02-23 10:29:59.000000000 +0100
+++ ./dist/s_release	2009-02-23 10:30:05.000000000 +0100
@@ -5,9 +5,9 @@
 
 ./s_paths
 
-. RELEASE
+. ./RELEASE
 
-. s_process
+. ./s_process
 
 process buildall.sh.template buildall.sh
 process reltools/build.template reltools/build


--- NEW FILE patch.2.4.16.1 ---
diff -ru dist/swig/dbxml_python.i dist/swig/dbxml_python.i
--- dist/swig/dbxml_python.i	2008-10-21 14:27:14.000000000 -0700
+++ dist/swig/dbxml_python.i	2008-12-30 11:57:20.000000000 -0800
@@ -316,7 +316,15 @@
   if ($1)
     $result = PyString_FromString((const char*)$1);
   else
-    $result = NULL;
+    $result = Py_None;
+}
+
+%typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) const unsigned char * {
+  $1 = PyString_Check($input) ? 1 : 0;
+}
+
+%typemap(typecheck,precedence=SWIG_TYPECHECK_STRING) const unsigned char * {
+  $1 = PyString_Check($input) ? 1 : 0;
 }
 
 %typemap(in) Dbt *, Dbt & (Dbt dbt) {
@@ -329,7 +337,7 @@
   if ($1)
     $result = PyString_FromStringAndSize((char *)$1->get_data(), $1->get_size());
   else
-    $result = NULL;
+    $result = Py_None;
 }
 
 %typemap(in) XmlData *, XmlData & (XmlData xml_data) {
@@ -345,7 +353,7 @@
 						   $1->get_size());
 		delete $1; // done with new XmlData
 	} else
-		$result = NULL;
+		$result = Py_None;
 }
 
 %{
@@ -468,14 +476,14 @@
 
 %pythoncode %{
 class XmlException(Exception):
-    """Base class for BDB XML exceptions.
+    """Base class for BDB XML exceptions.  It should never be called directly, and
+    if it is, it's an unknown error
     Attributes:
-        exceptionCode -- integer value
         what -- the exception message
     """
-    def __init__(self, ec, msg):
-        self.exceptionCode = ec
-        self.what = msg
+    def __init__(self, msg):
+        self.exceptionCode = INTERNAL_ERROR
+        self.what = "Unknown exception thrown: ",msg
     def __str__(self):
         return "XmlException %d, %s"%(self.exceptionCode,self.what)
     def getexceptionCode(self):
@@ -488,7 +496,7 @@
     Attributes:
         dbError -- the Berkeley DB errno
     """
-    def __init__(self, dberr, msg):
+    def __init__(self, msg, dberr):
         self.exceptionCode = DATABASE_ERROR
         self.what = msg
         self.dbError = dberr
diff -ru src/dbxml/ConfigurationDatabase.cpp src/dbxml/ConfigurationDatabase.cpp
--- src/dbxml/ConfigurationDatabase.cpp	2008-10-21 14:27:22.000000000 -0700
+++ src/dbxml/ConfigurationDatabase.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -52,7 +52,7 @@
 		dbtxn = txn->getDbTxn();
 
 	// always set DB_CREATE and DB_THREAD
-	flags &= ~(DB_TXN_NOSYNC);
+	flags &= ~(DB_TXN_NOSYNC|DBXML_ENCRYPT|DBXML_CHKSUM);
 	flags |= DB_CREATE|DB_THREAD;
 	DbSequence *seq =  new DbSequence(&db, 0);
 	if (seq) {
diff -ru src/dbxml/Document.cpp src/dbxml/Document.cpp
--- src/dbxml/Document.cpp	2008-10-21 14:27:22.000000000 -0700
+++ src/dbxml/Document.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -571,6 +571,10 @@
 		consumed(getName(), consumed_);
 		ret = new MemBufInputStream(0, 0, getName().c_str(),false);
 	}
+	if(definitiveContent_ == DBT) {
+		dbtContent_ = 0;
+		definitiveContent_ = NONE;
+	}
 	return ret;
 }
 
@@ -680,6 +684,7 @@
 {
 	changeContentToNsDom(isns);
 
+	if (!nsDocument_) return 0; //empty document
 	if (nid.isDocRootNid())
 		return nsDocument_->getDocumentNode();
 	NsNode *nsNode = nsDocument_->getNode(nid, /*getNext*/false);
diff -ru src/dbxml/DocumentDatabase.cpp src/dbxml/DocumentDatabase.cpp
--- src/dbxml/DocumentDatabase.cpp	2008-10-21 14:27:22.000000000 -0700
+++ src/dbxml/DocumentDatabase.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -184,9 +184,6 @@
 			id = ((Document&)old_document).getID();
 			new_document.getIDToSet() = id;
 			resetId = true;
-			// clear modified flag if set on name
-			const_cast<Document*>(&new_document)->
-				clearModified(Name(metaDataName_uri_name));
 		}
 	} else {
 		err = indexer.getContainer()->getDocument(
diff -ru src/dbxml/nodeStore/NsDocumentDatabase.cpp src/dbxml/nodeStore/NsDocumentDatabase.cpp
--- src/dbxml/nodeStore/NsDocumentDatabase.cpp	2008-10-21 14:27:22.000000000 -0700
+++ src/dbxml/nodeStore/NsDocumentDatabase.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -173,9 +173,6 @@
 			id = ((Document&)old_document).getID();
 			new_document.getIDToSet() = id;
 			resetId = true;
-			// clear modified flag if set on name
-			const_cast<Document*>(&new_document)->
-				clearModified(Name(metaDataName_uri_name));
 		}
 
 	} else {
diff -ru src/dbxml/nodeStore/NsNid.cpp src/dbxml/nodeStore/NsNid.cpp
--- src/dbxml/nodeStore/NsNid.cpp	2008-10-21 14:27:17.000000000 -0700
+++ src/dbxml/nodeStore/NsNid.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -62,9 +62,9 @@
  * 3.  Between "1a0" and "1ab" ==> 1aam (cannot use "1aa")
  */
 
-const NsFullNid NsFullNid::docRootFullNid = NsFullNid();
-const NsNid NsNid::docRootNid;
-const NsNid NsNid::docMetaDataNid;
+NsFullNid NsFullNid::docRootFullNid;
+NsNid NsNid::docRootNid;
+NsNid NsNid::docMetaDataNid;
 
 #define NID_BETW_INITIAL_SIZE 4 // must be two or more
 #define NID_INITIAL_DIGIT 0
diff -ru src/dbxml/nodeStore/NsNid.hpp src/dbxml/nodeStore/NsNid.hpp
--- src/dbxml/nodeStore/NsNid.hpp	2008-10-21 14:27:17.000000000 -0700
+++ src/dbxml/nodeStore/NsNid.hpp	2008-12-30 11:57:20.000000000 -0800
@@ -108,23 +108,23 @@
 
 	// static methods
 	static void initDocRoot() {
-		const_cast<NsNid&>(docRootNid) = rootNid;
-		const_cast<NsNid&>(docMetaDataNid) = metadataNid;
+		docRootNid = rootNid;
+		docMetaDataNid = metadataNid;
 	}
 	static void displayNid(std::ostream &out, const char *buf, uint32_t len);
 	static const NsNid *getRootNid() {
-		return &docRootNid;
+		return const_cast<NsNid*>(&docRootNid);
 	}
 	static const NsNid *getMetaDataNid() {
-		return &docMetaDataNid;
+		return const_cast<NsNid*>(&docMetaDataNid);
 	}
 	static int compare(const unsigned char *n1,
 			   const unsigned char *n2);
 	
 protected:
 	const unsigned char *nid_;
-	static const NsNid docRootNid;
-	static const NsNid docMetaDataNid;
+	static NsNid docRootNid;
+	static NsNid docMetaDataNid;
 };
 	
 class NsFullNid {
@@ -215,15 +215,15 @@
 		return 4;
 	}
 	static const NsFullNid *getRootNid() {
-		return &docRootFullNid;
+		return const_cast<const NsFullNid*>(&docRootFullNid);
 	}
 	static void initDocRootNid() {
-		const_cast<NsFullNid&>(docRootFullNid).setDocRootNid();
+		docRootFullNid.setDocRootNid();
 		NsNid::initDocRoot();
 	}
 	static void initNid(xmlbyte_t *buf, xmlbyte_t id);
 private:
-	static const NsFullNid docRootFullNid;
+	static NsFullNid docRootFullNid;
 };
 
 class DBXML_EXPORT NsNidGen {
diff -ru src/dbxml/query/DecisionPointQP.cpp src/dbxml/query/DecisionPointQP.cpp
--- src/dbxml/query/DecisionPointQP.cpp	2008-10-21 14:27:22.000000000 -0700
+++ src/dbxml/query/DecisionPointQP.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -3,7 +3,6 @@
 //
 // Copyright (c) 2002,2008 Oracle.  All rights reserved.
 //
-// $Id$
 //
 
 #include "../DbXmlInternal.hpp"
@@ -274,7 +273,7 @@
 	// **** IMPORTANT - This algorithm is very carefully arranged to avoid
 	// **** deadlocks and race-conditions. Don't rearrange things unless you
 	// **** know what you are doing!
-
+	
 	// Get the runtime configuration
 	DbXmlConfiguration *conf = GET_CONFIGURATION(context);
 
@@ -354,7 +353,8 @@
 	}
 	{
 		OptimizationContext opt(OptimizationContext::ALTERNATIVES, context, 0, container);
-		qp = qp->chooseAlternative(opt, "decision point", container->getContainerID() == 0);
+		opt.setCheckForSS(container->getContainerID() == 0);
+		qp = qp->chooseAlternative(opt, "decision point");
 		qp->logQP(opt.getLog(), "OQP", qp, opt.getPhase());
 	}
 	{
@@ -395,16 +395,27 @@
 {
 	if(arg_ != 0)
 		_src.add(arg_->getStaticAnalysis());
+	
+	bool checkForSS = opt.checkForSS();
+	
+	try {
+		ListItem **li = &qpList_;
+		for(ListItem *oli = o->qpList_; oli != 0; oli = oli->next) {
+			opt.setCheckForSS(oli->container->getContainerID() == 0);
+		
+			*li = new (mm) ListItem(oli->container, 0);
+			(*li)->qp = oli->qp->chooseAlternative(opt, "decision point");
 
-	ListItem **li = &qpList_;
-	for(ListItem *oli = o->qpList_; oli != 0; oli = oli->next) {
-		*li = new (mm) ListItem(oli->container, 0);
-		(*li)->qp = oli->qp->chooseAlternative(opt, "decision point", oli->container->getContainerID() == 0);
+			_src.add((*li)->qp->getStaticAnalysis());
 
-		_src.add((*li)->qp->getStaticAnalysis());
-
-		li = &(*li)->next;
+			li = &(*li)->next;
+		}
+	}
+	catch(...) {
+		opt.setCheckForSS(checkForSS);
+		throw;
 	}
+	opt.setCheckForSS(checkForSS);
 }
 
 DecisionPointQP::DecisionPointQP(const DecisionPointQP *o, XPath2MemoryManager *mm)
diff -ru src/dbxml/query/QueryPlan.cpp src/dbxml/query/QueryPlan.cpp
--- src/dbxml/query/QueryPlan.cpp	2008-10-21 14:27:22.000000000 -0700
+++ src/dbxml/query/QueryPlan.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -3,7 +3,6 @@
 //
 // Copyright (c) 2002,2008 Oracle.  All rights reserved.
 //
-// $Id$
 //
 
 #include "../DbXmlInternal.hpp"
@@ -133,13 +132,44 @@
 	}
 }
 
-CostSortItem::CostSortItem(QueryPlan *qp, OperationContext &oc, QueryExecutionContext &qec)
-	: qp_(qp), cost_(qp->cost(oc, qec))
+class ContainsSequentialScan : public NodeVisitingOptimizer
+{
+public:
+	bool run(QueryPlan *qp)
+	{
+		found = false;
+		optimizeQP(qp);
+		return found;
+	}
+
+private:
+	virtual void resetInternal() {}
+
+	virtual ASTNode *optimize(ASTNode *item)
+	{
+		// Don't look inside ASTNode objects
+		return item;
+	}
+	virtual QueryPlan *optimizeSequentialScan(SequentialScanQP *item)
+	{
+		found = true;
+		return item;
+	}
+
+	bool found;
+};
+
+CostSortItem::CostSortItem(QueryPlan *qp, OperationContext &oc, QueryExecutionContext &qec, bool checkForSS)
+	: qp_(qp), cost_(qp->cost(oc, qec)),
+	  hasSS_(false)
 {
+	if(checkForSS) hasSS_ = ContainsSequentialScan().run(qp);
 }
 
 bool CostSortItem::operator<(const CostSortItem &o) const
 {
+        if(hasSS_ != o.hasSS_) return !hasSS_;
+	
 	if(cost_.totalPages() < o.cost_.totalPages()) return true;
 	if(cost_.totalPages() > o.cost_.totalPages()) return false;
 
@@ -194,12 +224,12 @@
 			}
 
 			++alternativesCount;
-			costSortSet.insert(CostSortItem(*it, oc, qec));
+			costSortSet.insert(CostSortItem(*it, oc, qec, opt.checkForSS()));
 
 			if(costSortSet.size() > ALTERNATIVES_THRESHOLD) {
 				// Trim all QueryPlans outside of a factor of the cost of the lowest cost QueryPlan
 				// TBD Make the specific factor configurable - jpcs
-				set<CostSortItem>::iterator cutPoint = costSortSet.lower_bound(costSortSet.begin()->cost_.totalPages() * cutOffFactor);
+				set<CostSortItem>::iterator cutPoint = costSortSet.lower_bound(CostSortItem(costSortSet.begin()->cost_.totalPages() * cutOffFactor, false));
 				if(cutPoint != costSortSet.begin() && cutPoint != costSortSet.end()) {
 					for(i = cutPoint; i != costSortSet.end(); ++i) {
 						if(Log::isLogEnabled(Log::C_OPTIMIZER, Log::L_DEBUG)) {
@@ -252,36 +282,9 @@
 	}
 }
 
-class ContainsSequentialScan : public NodeVisitingOptimizer
-{
-public:
-	bool run(QueryPlan *qp)
-	{
-		found = false;
-		optimizeQP(qp);
-		return found;
-	}
-
-private:
-	virtual void resetInternal() {}
-
-	virtual ASTNode *optimize(ASTNode *item)
-	{
-		// Don't look inside ASTNode objects
-		return item;
-	}
-	virtual QueryPlan *optimizeSequentialScan(SequentialScanQP *item)
-	{
-		found = true;
-		return item;
-	}
-
-	bool found;
-};
-
-static bool betterAlternativeCost(const Cost &costA, bool ssA, const Cost &costB, bool ssB, bool noSequentialScan)
+static bool betterAlternativeCost(const Cost &costA, bool ssA, const Cost &costB, bool ssB, bool checkForSS)
 {
-	if(ssA != ssB && noSequentialScan) return ssB;
+	if(ssA != ssB && checkForSS) return ssB;
 
 	if(costA.totalPages() < costB.totalPages()) return true;
 	if(costA.totalPages() > costB.totalPages()) return false;
@@ -289,7 +292,7 @@
 	return costA.pagesOverhead < costB.pagesOverhead;
 }
 
-QueryPlan *QueryPlan::chooseAlternative(OptimizationContext &opt, const char *name, bool noSequentialScan) const
+QueryPlan *QueryPlan::chooseAlternative(OptimizationContext &opt, const char *name) const
 {
 	QueryPlans combinations;
 	createCombinations(MAX_ALTERNATIVES, opt, combinations);
@@ -318,7 +321,7 @@
 			Cost itCost = qp->cost(opt.getOperationContext(), qec);
 			bool itSS = ContainsSequentialScan().run(qp);
 
-			if(bestQP == 0 || betterAlternativeCost(itCost, itSS, bestCost, bestSS, noSequentialScan)) {
+			if(bestQP == 0 || betterAlternativeCost(itCost, itSS, bestCost, bestSS, opt.checkForSS())) {
 				if(bestQP != 0) {
 					log(qec, "Rejected Alternative (not best)");
 					bestQP->logCost(qec, bestCost, 0);
diff -ru src/dbxml/query/QueryPlan.hpp src/dbxml/query/QueryPlan.hpp
--- src/dbxml/query/QueryPlan.hpp	2008-10-21 14:27:22.000000000 -0700
+++ src/dbxml/query/QueryPlan.hpp	2008-12-30 11:57:20.000000000 -0800
@@ -3,7 +3,6 @@
 //
 // Copyright (c) 2002,2008 Oracle.  All rights reserved.
 //
-// $Id$
 //
 
 #ifndef __QUERYPLAN_HPP
@@ -65,7 +64,7 @@
 	};
 
 	OptimizationContext(Phase ph, DynamicContext *cn, QueryPlanOptimizer *qpo, ContainerBase *c = 0)
-		: phase_(ph), context_(cn), qpo_(qpo), container_(c), isFetched_(false) {}
+		: phase_(ph), context_(cn), qpo_(qpo), container_(c), isFetched_(false), checkForSS_(false) {}
 
 	Phase getPhase() const { return phase_; }
 
@@ -82,6 +81,9 @@
 	const IndexSpecification &getIndexSpecification() const;
 	const Log &getLog() const;
 
+	bool checkForSS() const { return checkForSS_; }
+	void setCheckForSS(bool val) { checkForSS_ = val; }
+
 private:
 	Phase phase_;
 	DynamicContext *context_;
@@ -89,6 +91,7 @@
 	ContainerBase *container_;
 	mutable IndexSpecification is_;
 	mutable bool isFetched_;
+	bool checkForSS_;
 };
 
 class QueryPlan : public LocationInfo
@@ -181,7 +184,7 @@
 
 	void createAlternatives(unsigned int maxAlternatives, OptimizationContext &opt, QueryPlans &alternatives) const;
 	void createReducedAlternatives(double cutOffFactor, unsigned int maxAlternatives, OptimizationContext &opt, QueryPlans &alternatives) const;
-	QueryPlan *chooseAlternative(OptimizationContext &opt, const char *name, bool noSequentialScan = false) const;
+	QueryPlan *chooseAlternative(OptimizationContext &opt, const char *name) const;
 
 	virtual NodeIterator *createNodeIterator(DynamicContext *context) const = 0;
 	virtual Cost cost(OperationContext &context, QueryExecutionContext &qec) const = 0;
@@ -541,13 +544,14 @@
 };
 
 struct CostSortItem {
-	CostSortItem(double cost) : qp_(0), cost_(0, cost) {}
-	CostSortItem(QueryPlan *qp, OperationContext &oc, QueryExecutionContext &qec);
+	CostSortItem(double cost, bool hasSS) : qp_(0), cost_(0, cost), hasSS_(hasSS) {}
+	CostSortItem(QueryPlan *qp, OperationContext &oc, QueryExecutionContext &qec, bool checkForSS);
 
 	bool operator<(const CostSortItem &o) const;
 
 	QueryPlan *qp_;
 	Cost cost_;
+	bool hasSS_;
 };
 
 }
diff -ru src/dbxml/query/SequentialScanQP.cpp src/dbxml/query/SequentialScanQP.cpp
--- src/dbxml/query/SequentialScanQP.cpp	2008-10-21 14:27:22.000000000 -0700
+++ src/dbxml/query/SequentialScanQP.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -3,7 +3,6 @@
 //
 // Copyright (c) 2002,2008 Oracle.  All rights reserved.
 //
-// $Id$
 //
 
 #include "../DbXmlInternal.hpp"
@@ -139,6 +138,7 @@
 
 NodeIterator *SequentialScanQP::createNodeIterator(DynamicContext *context) const
 {
+	DBXML_ASSERT(container_->getContainerID() != 0);
 	if(nodeType_ == ImpliedSchemaNode::METADATA) {
 		return container_->createDocumentIterator(context, this);
 	} else {
diff -ru src/dbxml/query/StructuralJoinQP.cpp src/dbxml/query/StructuralJoinQP.cpp
--- src/dbxml/query/StructuralJoinQP.cpp	2008-10-21 14:27:22.000000000 -0700
+++ src/dbxml/query/StructuralJoinQP.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -1070,15 +1070,6 @@
 	if(!SuitableForPredicate().check(sj->getLeftArg()))
 		return 0;
 
-	switch(sj->getRightArg()->getType()) {
-// 	case QueryPlan::PRESENCE:
-// 	case QueryPlan::VALUE:
-// 	case QueryPlan::RANGE:
-// 	case QueryPlan::SEQUENTIAL_SCAN:
-	case QueryPlan::VARIABLE: return 0;
-	default: break;
-	}
-
 	if((sj->getFlags() & QueryPlan::SKIP_LEFT_TO_PREDICATE) != 0) return 0;
 
 	const XMLCh *varName = GET_CONFIGURATION(opt.getContext())->allocateTempVarName(mm);
@@ -1119,15 +1110,6 @@
 	if(!SuitableForPredicate().check(l))
 		return 0;
 
-	switch(r->getType()) {
-	case QueryPlan::PRESENCE:
-	case QueryPlan::VALUE:
-	case QueryPlan::RANGE:
-	case QueryPlan::SEQUENTIAL_SCAN:
-	case QueryPlan::VARIABLE: return 0;
-	default: break;
-	}
-
 	if((flags & QueryPlan::SKIP_LEFT_TO_PREDICATE) != 0) return 0;
 
 	const XMLCh *varName = GET_CONFIGURATION(opt.getContext())->allocateTempVarName(mm);
diff -ru src/dbxml/RawNodeValue.cpp src/dbxml/RawNodeValue.cpp
--- src/dbxml/RawNodeValue.cpp	2008-10-21 14:27:22.000000000 -0700
+++ src/dbxml/RawNodeValue.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -84,6 +84,12 @@
 // it comes from the Container.
 DbWrapper *RawNodeValue::getDocDB() const
 {
+	//Make sure the doc db of this node and the document are the same
+	if (!xdoc_.isNull()) {
+		DbWrapper *docDb = (*xdoc_).getDocDb();
+		if (docDb) return docDb;
+	}
+
 	Results &res = GET_RESULTS();
 	XmlManager &mgr = res.getManager();
 	CacheDatabaseMinder &minder = res.getDbMinder();
diff -ru src/dbxml/Results.cpp src/dbxml/Results.cpp
--- src/dbxml/Results.cpp	2008-10-21 14:27:22.000000000 -0700
+++ src/dbxml/Results.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -241,12 +241,13 @@
 	if (contextItem && (contextItem->getType() == XmlValue::NODE)) {
 		XmlDocument &xdoc = (XmlDocument&)contextItem->asDocument();
 		CacheDatabaseMinder &minder = ((Document *)xdoc)->getDbMinder();
-		if (minder.isNull()) {
+		if (minder.isNull() && !((Document*)xdoc)->getContainerID()) {
 			dbMinder_.findOrAllocate((Manager&)(context->getManager()),
 						 ((Document *)xdoc)->getContainerID());
 			minder = dbMinder_;
 		}else
 			dbMinder_ = minder;
+		if ((*xdoc).isUninitialized()) (*xdoc).changeContentToNsDom(0);
 	}
 	oc_.set(txn);
 	conf_.setMinder(&evaluationMinder_);
diff -ru src/java/com/sleepycat/dbxml/dbxml_javaJNI.java src/java/com/sleepycat/dbxml/dbxml_javaJNI.java
--- src/java/com/sleepycat/dbxml/dbxml_javaJNI.java	2008-10-21 14:28:16.000000000 -0700
+++ src/java/com/sleepycat/dbxml/dbxml_javaJNI.java	2008-12-30 11:57:20.000000000 -0800
@@ -100,7 +100,6 @@
   public final static native void XmlManager_setDefaultContainerType(long jarg1, XmlManager jarg1_, int jarg2);
   public final static native int XmlManager_getDefaultContainerType(long jarg1, XmlManager jarg1_);
   public final static native String XmlManager_getHome(long jarg1, XmlManager jarg1_);
-  public final static native void XmlManager_registerResolver(long jarg1, XmlManager jarg1_, long jarg2, XmlResolver jarg2_);
   public final static native int XmlManager_getImplicitTimezone(long jarg1, XmlManager jarg1_);
   public final static native void XmlManager_setImplicitTimezone(long jarg1, XmlManager jarg1_, int jarg2);
   public final static native int XmlManager_existsContainer(long jarg1, XmlManager jarg1_, String jarg2);
@@ -159,6 +158,7 @@
   public final static native int XmlManager_get_version_patch();
   public final static native String XmlManager_get_version_string();
   public final static native XmlDocument XmlManager_createDocumentInternal(long jarg1, XmlManager jarg1_);
+  public final static native void XmlManager_registerResolverInternal(long jarg1, XmlManager jarg1_, long jarg2, XmlResolver jarg2_);
   public final static native void delete_XmlIndexLookup(long jarg1);
   public final static native boolean XmlIndexLookup_isNull(long jarg1, XmlIndexLookup jarg1_);
   public final static native String XmlIndexLookup_getIndex(long jarg1, XmlIndexLookup jarg1_);
diff -ru src/java/com/sleepycat/dbxml/XmlDocument.java src/java/com/sleepycat/dbxml/XmlDocument.java
--- src/java/com/sleepycat/dbxml/XmlDocument.java	2008-10-21 14:27:22.000000000 -0700
+++ src/java/com/sleepycat/dbxml/XmlDocument.java	2008-12-30 11:57:20.000000000 -0800
@@ -115,9 +115,7 @@
 	    content.stream = null;
 	    content.type = NONE;
 	    return ins;
-	}else if (!content.hasContent() && docID == 0)
-	    return null;
-	else
+	} else
 	    return HelperFunctions.getContentAsXmlInputStream(this);
     }
 
@@ -127,9 +125,7 @@
 	    content.reader = null;
 	    content.type = NONE;
 	    return xer;
-	}else if (!content.hasContent() && docID == 0)
-	    return null;
-	else
+	} else
 	    return HelperFunctions.getContentAsEventReader(this);
     }
 
@@ -214,6 +210,13 @@
     }
 
     //The rest of this class is for internal use.
+    protected boolean isConstructed()
+    {
+    	if(results == null && docID == 0)
+    		return true;
+    	return false;
+    }
+    
     /* If both modified and removed are set to false then the meta data is 
      * only being added if it does not already exist.
      */
@@ -259,11 +262,6 @@
 	content = new Content();
     }
 
-    protected void finalize() throws XmlException {
-	metaData.clear();
-	content.clear();
-    }
-
     protected void copy(XmlDocument o) throws XmlException {
 	docID = o.docID;
 	cid = o.cid;
@@ -360,6 +358,10 @@
     protected void setEventWriter(long writer){
 	eventWriter = writer;
     }
+    
+    protected Content getEmptyContent() {
+    	return new Content();
+    }
 
     class Content {
 	public XmlEventReader reader;
diff -ru src/java/com/sleepycat/dbxml/XmlInputStream.java src/java/com/sleepycat/dbxml/XmlInputStream.java
--- src/java/com/sleepycat/dbxml/XmlInputStream.java	2008-10-21 14:28:16.000000000 -0700
+++ src/java/com/sleepycat/dbxml/XmlInputStream.java	2008-12-30 11:57:20.000000000 -0800
@@ -21,10 +21,6 @@
     return (obj == null) ? 0 : obj.swigCPtr;
   }
 
-  protected void finalize() {
-    delete();
-  }
-
   public void delete() /* no exception */ {
     if(swigCPtr != 0 && swigCMemOwn) {
 	swigCMemOwn = false;
diff -ru src/java/com/sleepycat/dbxml/XmlManager.java src/java/com/sleepycat/dbxml/XmlManager.java
--- src/java/com/sleepycat/dbxml/XmlManager.java	2008-10-21 14:28:16.000000000 -0700
+++ src/java/com/sleepycat/dbxml/XmlManager.java	2008-12-30 11:57:20.000000000 -0800
@@ -16,6 +16,7 @@
     import com.sleepycat.db.internal.DbEnv;
     import com.sleepycat.db.internal.DbConstants;
     import com.sleepycat.db.XmlHelper;
+    import java.util.LinkedList;
     
 public class XmlManager {
   private long swigCPtr;
@@ -49,6 +50,7 @@
     private boolean threaded = true; // default on if no Environment
     private boolean adopted = false;
     private XmlManagerConfig config = null;
+    private LinkedList<XmlResolver> resolverStore;
 
     public XmlManager(final Environment dbenv,
 		      XmlManagerConfig config)
@@ -385,6 +387,18 @@
     public void close() throws XmlException {
 	delete();
     }
+    
+    private synchronized void setResolver(XmlResolver resolver)
+	{
+		if (resolverStore == null) resolverStore = new LinkedList<XmlResolver>();
+    	resolverStore.add(resolver);  //prevents premature garbage collection
+	}
+	
+	public void registerResolver(XmlResolver resolver) throws XmlException
+    {
+    	setResolver(resolver);
+    	registerResolverInternal(resolver);
+    }
 
     public final static int LEVEL_NONE = dbxml_java.LEVEL_NONE;
     public final static int LEVEL_DEBUG = dbxml_java.LEVEL_DEBUG;
@@ -438,10 +452,6 @@
     return dbxml_javaJNI.XmlManager_getHome(swigCPtr, this);
   }
 
-  public void registerResolver(XmlResolver resolver) throws XmlException {
-    dbxml_javaJNI.XmlManager_registerResolver(swigCPtr, this, XmlResolver.getCPtr(resolver), resolver);
-  }
-
   public int getImplicitTimezone() throws XmlException {
     return dbxml_javaJNI.XmlManager_getImplicitTimezone(swigCPtr, this);
   }
@@ -703,4 +713,8 @@
 
   public XmlDocument createDocumentInternal() throws XmlException { return dbxml_javaJNI.XmlManager_createDocumentInternal(swigCPtr, this); }
 
+  public void registerResolverInternal(XmlResolver resolver) throws XmlException {
+    dbxml_javaJNI.XmlManager_registerResolverInternal(swigCPtr, this, XmlResolver.getCPtr(resolver), resolver);
+  }
+
 }
diff -ru src/java/com/sleepycat/dbxml/XmlValue.java src/java/com/sleepycat/dbxml/XmlValue.java
--- src/java/com/sleepycat/dbxml/XmlValue.java	2008-10-21 14:27:22.000000000 -0700
+++ src/java/com/sleepycat/dbxml/XmlValue.java	2008-12-30 11:57:20.000000000 -0800
@@ -10,6 +10,8 @@
 
 import java.util.*;
 
+import com.sleepycat.dbxml.XmlDocument.Content;
+
 public class XmlValue {
     protected Value value;
     protected int valueType;
@@ -69,7 +71,10 @@
 
     public XmlValue(XmlDocument document) throws XmlException
     {
-	XmlValue xmlvalue = HelperFunctions.createDocumentValue(document);
+    Content con = document.content;
+    document.content = document.getEmptyContent(); //Prevents the content from being consumed
+    XmlValue xmlvalue = HelperFunctions.createDocumentValue(document);
+    document.content = con;
 	valueType = xmlvalue.getType();
 	value = new NodeValue((NodeValue)xmlvalue.value);
 	((NodeValue)value).setDocument(document);
diff -ru src/java/dbxml_java_wrap.cpp src/java/dbxml_java_wrap.cpp
--- src/java/dbxml_java_wrap.cpp	2008-10-21 14:28:16.000000000 -0700
+++ src/java/dbxml_java_wrap.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -1516,10 +1516,8 @@
 	    XmlValue value((XmlValue::Type)type, v);
 	}
 SWIGINTERN XmlInputStream *HelperFunctions_getContentAsXmlInputStream(XmlDocument &doc){
-	    XmlEventReader &reader = doc.getContentAsEventReader();
-	    doc.setContentAsEventReader(reader);
-	    return doc.getContentAsXmlInputStream();
-	}
+		return doc.getContentAsXmlInputStream();
+ 	}
 SWIGINTERN XmlEventReader &HelperFunctions_getContentAsEventReader(XmlDocument &doc){
 	    return doc.getContentAsEventReader();
 	}
@@ -1790,6 +1788,9 @@
 SWIGINTERN XmlDocument XmlManager_createDocumentInternal(XmlManager *self){
 	return self->createDocument();
     }
+SWIGINTERN void XmlManager_registerResolverInternal(XmlManager *self,XmlResolver *resolver){ 
+		self->registerResolver(*resolver);
+ 	}
 SWIGINTERN XmlResults *XmlIndexLookup_execute__SWIG_0(XmlIndexLookup const *self,XmlQueryContext &context,u_int32_t flags=0){
 		return new XmlResults(self->execute(context, flags));
 	}
@@ -4365,55 +4366,6 @@
 }
 
 
-SWIGEXPORT void JNICALL Java_com_sleepycat_dbxml_dbxml_1javaJNI_XmlManager_1registerResolver(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) {
-  XmlManager *arg1 = (XmlManager *) 0 ;
-  XmlResolver *arg2 = 0 ;
-  
-  (void)jenv;
-  (void)jcls;
-  (void)jarg1_;
-  (void)jarg2_;
-  arg1 = *(XmlManager **)&jarg1; 
-  arg2 = *(XmlResolver **)&jarg2;
-  if(!arg2) {
-    SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "XmlResolver const & reference is null");
-    return ;
-  } 
-  
-  if (!jarg1) {
-    jenv->Throw((jthrowable)jenv->NewObject(xmlex_class, xmlex_construct,
-        XmlException::INTERNAL_ERROR,
-        jenv->NewStringUTF("null object - call after object destroyed?"),
-        0, 0, 0, 0));					
-    return ;
-  }
-  
-  {
-    jthrowable t = NULL;
-    try {
-      (arg1)->registerResolver((XmlResolver const &)*arg2);
-    }
-    catch (std::exception &se) {
-      t = createException(jenv, &se);
-    }
-    catch(JavaException & /* je */) {
-      // This means there's already an exception waiting in the JVM
-      return ;
-    }
-    catch (...) {
-      t = (jthrowable)jenv->NewObject(xmlex_class, xmlex_construct,
-        XmlException::INTERNAL_ERROR,
-        jenv->NewStringUTF("Uncaught exception from C++ API"), 0, 0, 0, 0);
-    }
-    
-    if (t) {
-      jenv->Throw(t);
-      return ;
-    }
-  }
-}
-
-
 SWIGEXPORT jint JNICALL Java_com_sleepycat_dbxml_dbxml_1javaJNI_XmlManager_1getImplicitTimezone(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
   jint jresult = 0 ;
   XmlManager *arg1 = (XmlManager *) 0 ;
@@ -8088,6 +8040,51 @@
 }
 
 
+SWIGEXPORT void JNICALL Java_com_sleepycat_dbxml_dbxml_1javaJNI_XmlManager_1registerResolverInternal(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) {
+  XmlManager *arg1 = (XmlManager *) 0 ;
+  XmlResolver *arg2 = (XmlResolver *) 0 ;
+  
+  (void)jenv;
+  (void)jcls;
+  (void)jarg1_;
+  (void)jarg2_;
+  arg1 = *(XmlManager **)&jarg1; 
+  arg2 = *(XmlResolver **)&jarg2; 
+  
+  if (!jarg1) {
+    jenv->Throw((jthrowable)jenv->NewObject(xmlex_class, xmlex_construct,
+        XmlException::INTERNAL_ERROR,
+        jenv->NewStringUTF("null object - call after object destroyed?"),
+        0, 0, 0, 0));					
+    return ;
+  }
+  
+  {
+    jthrowable t = NULL;
+    try {
+      XmlManager_registerResolverInternal(arg1,arg2);
+    }
+    catch (std::exception &se) {
+      t = createException(jenv, &se);
+    }
+    catch(JavaException & /* je */) {
+      // This means there's already an exception waiting in the JVM
+      return ;
+    }
+    catch (...) {
+      t = (jthrowable)jenv->NewObject(xmlex_class, xmlex_construct,
+        XmlException::INTERNAL_ERROR,
+        jenv->NewStringUTF("Uncaught exception from C++ API"), 0, 0, 0, 0);
+    }
+    
+    if (t) {
+      jenv->Throw(t);
+      return ;
+    }
+  }
+}
+
+
 SWIGEXPORT void JNICALL Java_com_sleepycat_dbxml_dbxml_1javaJNI_delete_1XmlIndexLookup(JNIEnv *jenv, jclass jcls, jlong jarg1) {
   XmlIndexLookup *arg1 = (XmlIndexLookup *) 0 ;
   
diff -ru src/python/dbxml.py src/python/dbxml.py
--- src/python/dbxml.py	2008-10-21 14:28:13.000000000 -0700
+++ src/python/dbxml.py	2008-12-30 11:57:20.000000000 -0800
@@ -56,14 +56,14 @@
 
 
 class XmlException(Exception):
-    """Base class for BDB XML exceptions.
+    """Base class for BDB XML exceptions.  It should never be called directly, and
+    if it is, it's an unknown error
     Attributes:
-        exceptionCode -- integer value
         what -- the exception message
     """
-    def __init__(self, ec, msg):
-        self.exceptionCode = ec
-        self.what = msg
+    def __init__(self, msg):
+        self.exceptionCode = INTERNAL_ERROR
+        self.what = "Unknown exception thrown: ",msg
     def __str__(self):
         return "XmlException %d, %s"%(self.exceptionCode,self.what)
     def getexceptionCode(self):
@@ -76,7 +76,7 @@
     Attributes:
         dbError -- the Berkeley DB errno
     """
-    def __init__(self, dberr, msg):
+    def __init__(self, msg, dberr):
         self.exceptionCode = DATABASE_ERROR
         self.what = msg
         self.dbError = dberr
diff -ru src/python/dbxml_python_wrap.cpp src/python/dbxml_python_wrap.cpp
--- src/python/dbxml_python_wrap.cpp	2008-10-21 14:28:16.000000000 -0700
+++ src/python/dbxml_python_wrap.cpp	2008-12-30 11:57:20.000000000 -0800
@@ -2994,9 +2994,8 @@
 #define SWIGTYPE_p_XmlValue swig_types[22]
 #define SWIGTYPE_p_char swig_types[23]
 #define SWIGTYPE_p_int swig_types[24]
-#define SWIGTYPE_p_unsigned_char swig_types[25]
-static swig_type_info *swig_types[27];
-static swig_module_info swig_module = {swig_types, 26, 0, 0, 0, 0};
+static swig_type_info *swig_types[26];
+static swig_module_info swig_module = {swig_types, 25, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -23335,7 +23334,7 @@
         result->get_size());
       delete result; // done with new XmlData
     } else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -23408,7 +23407,7 @@
         result->get_size());
       delete result; // done with new XmlData
     } else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   if (SWIG_IsNewObj(res2)) delete arg2;
   if (SWIG_IsNewObj(res3)) delete arg3;
@@ -34216,7 +34215,7 @@
     if (result)
     resultobj = PyString_FromString((const char*)result);
     else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -34258,7 +34257,7 @@
     if (result)
     resultobj = PyString_FromString((const char*)result);
     else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -34300,7 +34299,7 @@
     if (result)
     resultobj = PyString_FromString((const char*)result);
     else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -34342,7 +34341,7 @@
     if (result)
     resultobj = PyString_FromString((const char*)result);
     else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -34513,7 +34512,7 @@
     if (result)
     resultobj = PyString_FromString((const char*)result);
     else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -34564,7 +34563,7 @@
     if (result)
     resultobj = PyString_FromString((const char*)result);
     else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -34615,7 +34614,7 @@
     if (result)
     resultobj = PyString_FromString((const char*)result);
     else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -34666,7 +34665,7 @@
     if (result)
     resultobj = PyString_FromString((const char*)result);
     else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -34708,7 +34707,7 @@
     if (result)
     resultobj = PyString_FromString((const char*)result);
     else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -34750,7 +34749,7 @@
     if (result)
     resultobj = PyString_FromString((const char*)result);
     else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -34792,7 +34791,7 @@
     if (result)
     resultobj = PyString_FromString((const char*)result);
     else
-    resultobj = NULL;
+    resultobj = Py_None;
   }
   SWIG_PYTHON_THREAD_END_BLOCK;
   return resultobj;
@@ -35564,9 +35563,9 @@
         _v = SWIG_CheckState(res);
       }
       if (_v) {
-        void *vptr = 0;
-        int res = SWIG_ConvertPtr(argv[2], &vptr, SWIGTYPE_p_unsigned_char, 0);
-        _v = SWIG_CheckState(res);
+        {
+          _v = PyString_Check(argv[2]) ? 1 : 0;
+        }
         if (_v) {
           SWIG_PYTHON_THREAD_END_BLOCK;
           return _wrap_XmlEventWriter_writeText__SWIG_1(self, args);
@@ -35585,9 +35584,9 @@
         _v = SWIG_CheckState(res);
       }
       if (_v) {
-        void *vptr = 0;
-        int res = SWIG_ConvertPtr(argv[2], &vptr, SWIGTYPE_p_unsigned_char, 0);
-        _v = SWIG_CheckState(res);
+        {
+          _v = PyString_Check(argv[2]) ? 1 : 0;
+        }
         if (_v) {
           {
             int res = SWIG_AsVal_size_t(argv[3], NULL);
@@ -35674,9 +35673,9 @@
     int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_XmlEventWriter, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
-      void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_unsigned_char, 0);
-      _v = SWIG_CheckState(res);
+      {
+        _v = PyString_Check(argv[1]) ? 1 : 0;
+      }
       if (_v) {
         SWIG_PYTHON_THREAD_END_BLOCK;
         return _wrap_XmlEventWriter_writeDTD__SWIG_1(self, args);
@@ -35689,9 +35688,9 @@
     int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_XmlEventWriter, 0);
     _v = SWIG_CheckState(res);
     if (_v) {
-      void *vptr = 0;
-      int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_unsigned_char, 0);
-      _v = SWIG_CheckState(res);
+      {
+        _v = PyString_Check(argv[1]) ? 1 : 0;
+      }
       if (_v) {
         {
           int res = SWIG_AsVal_size_t(argv[2], NULL);
@@ -36782,7 +36781,6 @@
 static swig_type_info _swigt__p_XmlValue = {"_p_XmlValue", "XmlValue *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_int = {"_p_int", "int *|int32_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "unsigned char *", 0, 0, (void*)0, 0};
 
 static swig_type_info *swig_type_initial[] = {
   &_swigt__p_DbTxn,
@@ -36810,7 +36808,6 @@
   &_swigt__p_XmlValue,
   &_swigt__p_char,
   &_swigt__p_int,
-  &_swigt__p_unsigned_char,
 };
 
 static swig_cast_info _swigc__p_DbTxn[] = {  {&_swigt__p_DbTxn, 0, 0, 0},{0, 0, 0, 0}};
@@ -36838,7 +36835,6 @@
 static swig_cast_info _swigc__p_XmlValue[] = {  {&_swigt__p_XmlValue, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_char[] = {  {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_unsigned_char[] = {  {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}};
 
 static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_DbTxn,
@@ -36866,7 +36862,6 @@
   _swigc__p_XmlValue,
   _swigc__p_char,
   _swigc__p_int,
-  _swigc__p_unsigned_char,
 };
 
 


Index: dbxml.spec
===================================================================
RCS file: /cvs/pkgs/rpms/dbxml/devel/dbxml.spec,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- dbxml.spec	29 Nov 2008 16:36:49 -0000	1.7
+++ dbxml.spec	23 Feb 2009 09:38:57 -0000	1.8
@@ -4,7 +4,7 @@
 Summary: An embeddable XML database with XQuery-based access to documents
 Group: System Environment/Libraries
 Version: 2.4.16
-Release: 0.2%{?dist}
+Release: 0.3%{?dist}
 License: BSD
 URL: http://www.oracle.com/technology/software/products/berkeley-db/xml/index.html
 # Source tarball from Oracle containing sources of db4, xercesc, xqilla
@@ -15,6 +15,9 @@
 Source0: dbxml-2.4.16-fedora.tar.gz
 # Fedora specific patches
 Patch1: dbxml-standalone-build.patch
+Patch2: dbxml-bash-include.patch
+# Patches from Oracle
+Patch100: http://www.oracle.com/technology/products/berkeley-db/xml/update/2.4.16/patch.2.4.16.1
 
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-build
 
@@ -118,6 +121,8 @@
 %prep
 %setup -q -n dbxml-%{version}
 %patch1
+%patch2
+%patch100 -p0
 
 %build
 export CPPFLAGS="-I%{_includedir}/xqilla"
@@ -244,6 +249,9 @@
 %{_defaultdocdir}/dbxml-python-%{version}
 
 %changelog
+* Sat Feb 22 2009 Milan Zazrivec <mzazrivec at redhat.com> - 2.4.16-1.2
+- Add patch from Oracle
+
 * Sat Nov 29 2008 Ignacio Vazquez-Abrams <ivazqueznet+rpm at gmail.com> - 2.4.16-0.2
 - Rebuild for Python 2.6
 


Index: import.log
===================================================================
RCS file: /cvs/pkgs/rpms/dbxml/devel/import.log,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- import.log	24 Nov 2008 15:32:35 -0000	1.2
+++ import.log	23 Feb 2009 09:38:57 -0000	1.3
@@ -1,2 +1,3 @@
 dbxml-2_4_13-2_1_fc10:HEAD:dbxml-2.4.13-2.1.fc10.src.rpm:1220176927
 dbxml-2_4_16-0_1:HEAD:dbxml-2.4.16-0.1.src.rpm:1227540633
+dbxml-2_4_16-0_3:HEAD:dbxml-2.4.16-0.3.src.rpm:1235381889




More information about the scm-commits mailing list