- for f in doc:
- if not f in fields:
- self._create_field(f)
- table_f = '%s$%s' % (self.table_name, f)
- self._insert_field(doc_id, table_f, f, doc[f])
+ self.database.connection.savepoint("insert_document")
+ try:
+ for f in doc:
+ if not f in fields:
+ self._create_field(f)
+ table_f = '%s$%s' % (self.table_name, f)
+ self._insert_field(doc_id, table_f, f, doc[f])
+ self.database.connection.commit_savepoint("insert_document")
+ except:
+ self.database.connection.rollback_savepoint("insert_document")
+ raise