Commit 815bf78f authored by -urso-'s avatar -urso-

qbook docs adjusted to new versions in repos and modified changelogs

darcs-hash:f82bf7004afa6185fef7f60caa080fa8f017bd35
parent a31965f5
Fri May 26 01:20:24 CEST 2006 -urso-@web.de
* fixed some bugs preventing secondary databases to work when db-txn is used as database representation
Thu May 25 22:38:48 CEST 2006 -urso-@web.de
* update-secondary is 'exception-save' now...
Thu May 25 22:35:02 CEST 2006 -urso-@web.de
* db-associate ensures to run in transaction when used with db-txn
Thu May 25 21:40:09 CEST 2006 -urso-@web.de
* if database is db-txn, db-del will ensure that it runs in a transaction
Fri May 19 01:30:03 CEST 2006 -urso-@web.de
* export new symbols
......
Fri May 26 01:16:07 CEST 2006 -urso-@web.de
* renamed clear-flag to clr-flag. clf-flag and set-flag may use lists of flags or one flag
Thu May 25 22:32:31 CEST 2006 -urso-@web.de
* added clear-flag and set-flag to flag-system
Thu May 11 17:49:14 CEST 2006 -urso-@web.de
* defcfun* macro now adds a check on class types: if argument is nil or the specified slot is nil and the required type is :pointer or :string, pass a null-pointer
......
Thu May 25 19:00:26 CEST 2006 -urso-@web.de
* changed to filter to work like remove-if-not
Sun May 7 23:39:47 CEST 2006 -urso-@web.de
* WARNING: changed output path of make-qbook
......
......@@ -24,7 +24,8 @@
> | <a href="index.html"
>toc</a
></div
><p><p> (to be used by this library only) </p>
><p> (to be used by this library only)
<pre class="code"
><span class="first-line"><span class="paren">(</span>defcfun &quot;strlen&quot; :int</span><span class"body">
<span class="paren">(</span>str :pointer<span class="paren">)</span><span class="paren">)</span></span></pre
......@@ -61,7 +62,6 @@
<span class="paren">(</span>mode :int<span class="paren">)</span><span class="paren">)</span></span></pre
>
<pre class="code"
><span class="first-line"><span class="paren">(</span>defmethod+ <span class="paren">(</span>&quot;db_close&quot; %db-close<span class="paren">)</span> :error-int</span><span class"body">
<span class="paren">(</span>db :pointer<span class="paren">)</span>
......
......@@ -37,6 +37,22 @@
></div
>
<div class="computational-element-link computational-element-link-function"
><p
><a href="api/function_005FBDB_003A_003AADJUST-SECONDARY-FLAGS.html" name="function_005FBDB_003A_003AADJUST-SECONDARY-FLAGS"
>Function ADJUST-SECONDARY-FLAGS</a
> </p
></div
>
<div class="computational-element-link computational-element-link-function"
><p
><a href="api/function_005FBDB_003A_003AADJUST-SEC-OPEN-FLAGS.html" name="function_005FBDB_003A_003AADJUST-SEC-OPEN-FLAGS"
>Function ADJUST-SEC-OPEN-FLAGS</a
> </p
></div
>
<div class="computational-element-link computational-element-link-method"
><p
><a href="api/method_005FBDB_003A_003A_0028DB-OPEN-SEC_0020DB-TXN_0029.html" name="method_005FBDB_003A_003A_0028DB-OPEN-SEC_0020DB-TXN_0029"
......@@ -127,6 +143,14 @@
></div
>
<div class="computational-element-link computational-element-link-function"
><p
><a href="api/function_005FBDB_003A_003APUT-INTO-SECONDARY.html" name="function_005FBDB_003A_003APUT-INTO-SECONDARY"
>Function PUT-INTO-SECONDARY</a
> </p
></div
>
<div class="computational-element-link computational-element-link-function"
><p
><a href="api/function_005FBDB_003A_003AUPDATE-SECONDARY.html" name="function_005FBDB_003A_003AUPDATE-SECONDARY"
......@@ -201,6 +225,14 @@
></div
>
<div class="computational-element-link computational-element-link-method"
><p
><a href="api/method_005FBDB_003A_003A_0028DB-DEL_0020DB-TXN_0020T_0029.html" name="method_005FBDB_003A_003A_0028DB-DEL_0020DB-TXN_0020T_0029"
>Method (DB-DEL DB-TXN T)</a
> </p
></div
>
<div class="computational-element-link computational-element-link-function"
><p
><a href="api/function_005FBDB_003A_003ABUILD-DEL-FUNCTION.html" name="function_005FBDB_003A_003ABUILD-DEL-FUNCTION"
......@@ -222,7 +254,6 @@
<span class="paren">(</span>db :pointer :class <span class="paren">(</span>db db-handle<span class="paren">)</span><span class="paren">)</span>
<span class="paren">(</span>flags :uint32 :const 0<span class="paren">)</span><span class="paren">)</span></span></pre
>
</div
></div
></body
......
<html
><head
><title
>Berkley DB CFFI-Bindings</title
><link href="style.css" rel="stylesheet"
/><link title="Print" href="print.css" rel="alternate stylesheet"
/></head
><body
><div class="qbook"
><h1 class="title"
>Berkley DB CFFI-Bindings</h1
><div class="contents"
><h2
><a name="Secondary_0020Databases"
>Secondary Databases</a
>&nbsp;</h2
><div class="nav-links"
><a class="nav-link" href="Logging.html"
>prev</a
> | <span class="dead-nav-link"
>up</span
> | <a href="Utilities.html"
>next</a
> | <a href="index.html"
>toc</a
></div
><p>
Notes:
the C library handles secondaries like this:
db_create: - will create environment, if none specified and
add to db pointer
db_put/__db_put: - create cursor with write-lock
- use __db_c_put on cursor to insert data
__db_c_put: - uses private flag DB_UPDATE_SECONDARY to do puts on
secondary databases
- use __db_s_first and __db_s_next for iterating over
secondaries, they will take care of thread-locking
- in first loop add new keys:
- call callback to get secondary key
- open cursor on secondary with transaction and
lock id of primary database
- use __db_c_put with DB_UPDATE_SECONDARY flag
to insert data into secondary
- close cursor
- in second loop remove old secondary indicies:
- get old secondary key
- if secondary key needs to be deleted than:
- get cursor
- use get to move cursor to position
- delete entry
- update primary database now
perl/tcl/python/ruby libs weren't much more helpfull :(
for the lisp library:
- when opening a database it depends on the environment,
wether we'll use the C-based (using db-associate-ll)
implementation or a transaction based if transactions
are supported by environment.
Todo so, db-open returns different kind of classes:
- db-std ;; standard db-class, if txn not allowed
- db-txn ;; if environment supports transactions
- db-associate needs different implementations for db-std
and db-txn:
- db-std:
- use the old low level method
- use defcallback and go on
- no changes to db-put
- db-txn:
- add callback function and secondary to table
in database
- when closing secondary, remove from table
- don't use defcallback, use lambda directly
- overwrite db-put:
- create an transaction
- add data to primary
- in a loop, add keys to secondaries
<pre class="code"
><span class="first-line"><span class="paren">(</span>defcstruct DBT ;;tried to avoid using DBT directly... :'<span class="paren">(</span></span><span class"body">
<span class="paren">(</span>data :pointer<span class="paren">)</span>
<span class="paren">(</span>size :uint32<span class="paren">)</span>
<span class="paren">(</span>ulen :uint32<span class="paren">)</span>
<span class="paren">(</span>dlen :uint32<span class="paren">)</span>
<span class="paren">(</span>doff :uint32<span class="paren">)</span>
<span class="paren">(</span>flags :uint32<span class="paren">)</span><span class="paren">)</span></span></pre
>
<div class="computational-element-link computational-element-link-function"
><p
><a href="api/function_005FBDB_003A_003ACREATE-DB-ASSOC-CALLBACK.html" name="function_005FBDB_003A_003ACREATE-DB-ASSOC-CALLBACK"
>Function CREATE-DB-ASSOC-CALLBACK</a
> </p
></div
>
<div class="computational-element-link computational-element-link-function"
><p
><a href="api/function_005FBDB_003A_003ACREATE-CBUFFERED-DB-ASSOC-CALLBACK.html" name="function_005FBDB_003A_003ACREATE-CBUFFERED-DB-ASSOC-CALLBACK"
>Function CREATE-CBUFFERED-DB-ASSOC-CALLBACK</a
> </p
></div
>
<div class="computational-element-link computational-element-link-function"
><p
><a href="api/function_005FBDB_003A_003AMAKE-RETURN-BUFFER.html" name="function_005FBDB_003A_003AMAKE-RETURN-BUFFER"
>Function MAKE-RETURN-BUFFER</a
> </p
></div
>
<div class="computational-element-link computational-element-link-function"
><p
><a href="api/function_005FBDB_003A_003ABUILD-ASSOC-CALLBACK-MAKER.html" name="function_005FBDB_003A_003ABUILD-ASSOC-CALLBACK-MAKER"
>Function BUILD-ASSOC-CALLBACK-MAKER</a
> </p
></div
>
<div class="computational-element-link computational-element-link-function"
><p
><a href="api/function_005FBDB_003A_003ABUILD-CBUFFERED-ASSOC-LAMBDA.html" name="function_005FBDB_003A_003ABUILD-CBUFFERED-ASSOC-LAMBDA"
>Function BUILD-CBUFFERED-ASSOC-LAMBDA</a
> </p
></div
>
<div class="computational-element-link computational-element-link-method"
><p
><a href="api/method_005FBDB_003A_003A_0028DB-ASSOCIATE_0020DB-STD_0020DB_0020T_0029.html" name="method_005FBDB_003A_003A_0028DB-ASSOCIATE_0020DB-STD_0020DB_0020T_0029"
>Method (DB-ASSOCIATE DB-STD DB T)</a
> </p
></div
>
<div class="computational-element-link computational-element-link-method"
><p
><a href="api/method_005FBDB_003A_003A_0028DB-ASSOCIATE_0020DB-TXN_0020DB-TXN_0020T_0029.html" name="method_005FBDB_003A_003A_0028DB-ASSOCIATE_0020DB-TXN_0020DB-TXN_0020T_0029"
>Method (DB-ASSOCIATE DB-TXN DB-TXN T)</a
> </p
></div
>
<div class="computational-element-link computational-element-link-method"
><p
><a href="api/method_005FBDB_003A_003A_0028DB-DISASSOCIATE_0020DB-TXN_0020DB-TXN_0029.html" name="method_005FBDB_003A_003A_0028DB-DISASSOCIATE_0020DB-TXN_0020DB-TXN_0029"
>Method (DB-DISASSOCIATE DB-TXN DB-TXN)</a
> </p
></div
>
<div class="computational-element-link computational-element-link-method"
><p
><a href="api/method_005FBDB_003A_003A_0028DB-JOIN_0020DB_0020T_0029.html" name="method_005FBDB_003A_003A_0028DB-JOIN_0020DB_0020T_0029"
>Method (DB-JOIN DB T)</a
> </p
></div
>
</div
></div
></body
></html
>
\ No newline at end of file
<html
><head
><title
>Function FILTER</title
>Function ADJUST-SEC-OPEN-FLAGS</title
><link href="../style.css" rel="stylesheet"
/><link title="Print" href="../print.css" rel="alternate stylesheet"
/></head
......@@ -9,23 +9,14 @@
><div class="qbook"
><div class="computational-element"
><h1
>Function: FILTER</h1
>Function: ADJUST-SEC-OPEN-FLAGS</h1
><div class="contents"
><h2
>Documentation</h2
><blockquote
>filters elements according to fn</blockquote
><h2
>Source</h2
><pre class="code"
>(defun filter (fn lst)
&quot;filters elements according to fn&quot;
(let ((acc nil))
(dolist (x lst)
(let ((val (funcall fn x)))
(when val (push val acc))))
(nreverse acc)))</pre
><a href="../Generic_0020helpers.html#function_005FMYCL-UTIL_003A_003AFILTER"
>(defun adjust-sec-open-flags (flags)
(clr-flag flags '(:exclusive :create :truncate :auto-commit)))</pre
><a href="../Databases.html#function_005FBDB_003A_003AADJUST-SEC-OPEN-FLAGS"
>Source Context</a
></div
></div
......
<html
><head
><title
>Function ADJUST-SECONDARY-FLAGS</title
><link href="../style.css" rel="stylesheet"
/><link title="Print" href="../print.css" rel="alternate stylesheet"
/></head
><body
><div class="qbook"
><div class="computational-element"
><h1
>Function: ADJUST-SECONDARY-FLAGS</h1
><div class="contents"
><h2
>Source</h2
><pre class="code"
>(defun adjust-secondary-flags (flags)
flags)</pre
><a href="../Databases.html#function_005FBDB_003A_003AADJUST-SECONDARY-FLAGS"
>Source Context</a
></div
></div
></div
></body
></html
>
\ No newline at end of file
......@@ -18,15 +18,10 @@
(lambda (fun &amp;optional name)
(create-cbuffered-db-assoc-callback
(lambda (secondary key-buf data-buf)
(multiple-value-bind (use-ret ret)
(funcall fun secondary
(multiple-value-call (curry #'make-return-buffer buf-writer)
(funcall fun secondary
(funcall buf-reader key-buf)
(funcall buf-reader data-buf))
(if use-ret
(let ((ret-buf (alloc-cbuffer)))
(funcall buf-writer ret ret-buf)
(values t ret-buf))
(values nil nil))))
(funcall buf-reader data-buf))))
name)))</pre
><a href="../Secondary_0020Databases.html#function_005FBDB_003A_003ABUILD-ASSOC-CALLBACK-MAKER"
>Source Context</a
......
......@@ -17,15 +17,10 @@
>(defun build-cbuffered-assoc-lambda (buf-writer buf-reader)
(lambda (fun)
(lambda (secondary key-buf data-buf)
(multiple-value-bind (use-ret ret)
(funcall fun secondary
(multiple-value-call (curry #'make-return-buffer buf-writer)
(funcall fun secondary
(funcall buf-reader key-buf)
(funcall buf-reader data-buf))
(if use-ret
(let ((ret-buf (alloc-cbuffer)))
(funcall buf-writer ret ret-buf)
(values t ret-buf))
(values nil nil))))))</pre
(funcall buf-reader data-buf))))))</pre
><a href="../Secondary_0020Databases.html#function_005FBDB_003A_003ABUILD-CBUFFERED-ASSOC-LAMBDA"
>Source Context</a
></div
......
......@@ -14,7 +14,13 @@
><h2
>Documentation</h2
><blockquote
><p>creates and opens a new Database <br>&nbsp;&nbsp;&nbsp;params: env = Environment the database shall be opened in txn = Transaction db = Database in File (optional) mode = file mode, use create-umask or 0 for default type = :db-btree :db-hash :db-recno or :db-queue flags... see BDB documentation or db.h </p></blockquote
>creates and opens a new Database
params: env = Environment the database shall be opened in
txn = Transaction
db = Database in File (optional)
mode = file mode, use create-umask or 0 for default
type = :db-btree :db-hash :db-recno or :db-queue
flags... see BDB documentation or db.h</blockquote
><h2
>Source</h2
><pre class="code"
......
<html
><head
><title
>Function MAKE-RETURN-BUFFER</title
><link href="../style.css" rel="stylesheet"
/><link title="Print" href="../print.css" rel="alternate stylesheet"
/></head
><body
><div class="qbook"
><div class="computational-element"
><h1
>Function: MAKE-RETURN-BUFFER</h1
><div class="contents"
><h2
>Source</h2
><pre class="code"
>(defun make-return-buffer (writer use data)
(if use
(let ((ret-buf (alloc-cbuffer)))
(funcall writer data ret-buf)
(values t ret-buf))
(values nil nil)))</pre
><a href="../Secondary_0020Databases.html#function_005FBDB_003A_003AMAKE-RETURN-BUFFER"
>Source Context</a
></div
></div
></div
></body
></html
>
\ No newline at end of file
<html
><head
><title
>Function PUT-INTO-SECONDARY</title
><link href="../style.css" rel="stylesheet"
/><link title="Print" href="../print.css" rel="alternate stylesheet"
/></head
><body
><div class="qbook"
><div class="computational-element"
><h1
>Function: PUT-INTO-SECONDARY</h1
><div class="contents"
><h2
>Source</h2
><pre class="code"
>(defun put-into-secondary (db use key data txn)
(unwind-protect
(when use
(db-put db key data :txn txn))
(when key
(free-cbuffer key))))</pre
><a href="../Databases.html#function_005FBDB_003A_003APUT-INTO-SECONDARY"
>Source Context</a
></div
></div
></div
></body
></html
>
\ No newline at end of file
......@@ -15,13 +15,10 @@
>Source</h2
><pre class="code"
>(defun update-secondary (db-and-callback key data txn)
(multiple-value-bind (use sec-key)
(funcall (cdr db-and-callback) (car db-and-callback) key data)
(when use
(db-put (car db-and-callback) sec-key key
:txn txn))
(when sec-key
(free-cbuffer sec-key)))
(multiple-value-call (lambda (use buf)
(put-into-secondary (car db-and-callback)
use buf key txn))
(funcall (cdr db-and-callback) (car db-and-callback) key data))
t)</pre
><a href="../Databases.html#function_005FBDB_003A_003AUPDATE-SECONDARY"
>Source Context</a
......
......@@ -16,17 +16,23 @@
><pre class="code"
>(defmethod db-associate ((primary db-txn) (secondary db-txn)
callback &amp;key txn callback-maker create)
(%db-dummy-associate primary
txn
(db-sec-handle (db-open-sec secondary :txn txn))
:create create)
(push (cons secondary
(if (functionp callback-maker)
(funcall callback-maker callback)
callback))
(db-assoc primary))
(setf (db-assoc secondary) primary)
primary)</pre
(cond ((null txn) (with-txn (txn (db-get-env primary))
(db-associate primary secondary callback
:txn txn
:callback-maker callback-maker
:create create)))
(t (%db-dummy-associate primary
txn
(db-sec-handle (db-open-sec secondary
:txn txn))
:create create)
(push (cons secondary
(if (functionp callback-maker)
(funcall callback-maker callback)
callback))
(db-assoc primary))
(setf (db-assoc secondary) primary)
primary)))</pre
><a href="../Secondary_0020Databases.html#method_005FBDB_003A_003A_0028DB-ASSOCIATE_0020DB-TXN_0020DB-TXN_0020T_0029"
>Source Context</a
></div
......
<html
><head
><title
>Method (DB-DEL DB-TXN T)</title
><link href="../style.css" rel="stylesheet"
/><link title="Print" href="../print.css" rel="alternate stylesheet"
/></head
><body
><div class="qbook"
><div class="computational-element"
><h1
>Method: (DB-DEL DB-TXN T)</h1
><div class="contents"
><h2
>Source</h2
><pre class="code"
>(defmethod db-del ((db db-txn) key &amp;key txn)
(if (null txn)
(with-txn (txn (db-get-env db))
(db-del db key :txn txn))
(%db-del db txn (cbuffer-data key) (cbuffer-size key) 0)))</pre
><a href="../Databases.html#method_005FBDB_003A_003A_0028DB-DEL_0020DB-TXN_0020T_0029"
>Source Context</a
></div
></div
></div
></body
></html
>
\ No newline at end of file
......@@ -18,7 +18,7 @@
(let* ((handle (db-handle db))
(env (%db-get-env handle))
(dbp (bdb-create env 0)))
(%%db-set-flags dbp (%db-get-flags db))
(%%db-set-flags dbp (adjust-secondary-flags (%db-get-flags db)))
(multiple-value-bind (db-file-name db-name)
(db-dbname db)
(%%db-open dbp
......@@ -26,7 +26,7 @@
(if (not db-file-name) (null-pointer) db-file-name)
(if (not db-name) (null-pointer) db-name)
(%db-get-type db)
(%db-open-flags db)
(adjust-sec-open-flags (%db-open-flags db))
0)
(setf (db-sec-handle db) dbp)
db)))</pre
......
......@@ -14,7 +14,7 @@
><h2
>Documentation</h2
><blockquote
><p>callback returns a cbuffer, which will be freed by this put function </p></blockquote
>callback returns a cbuffer, which will be freed by this put function</blockquote
><h2
>Source</h2
><pre class="code"
......
......@@ -13,6 +13,14 @@
><div class="contents"
><dl
><dt
><a href="../api/function_005FBDB_003A_003AADJUST-SECONDARY-FLAGS.html"
>ADJUST-SECONDARY-FLAGS</a
></dt
><dt
><a href="../api/function_005FBDB_003A_003AADJUST-SEC-OPEN-FLAGS.html"
>ADJUST-SEC-OPEN-FLAGS</a
></dt
><dt
><a href="../api/function_005FBDB_003A_003ABDB-CHECK-ERROR.html"
>BDB-CHECK-ERROR</a
></dt
......@@ -86,6 +94,14 @@
><a href="../api/function_005FBDB_003A_003AMAKE-GET-BUFFER.html"
>MAKE-GET-BUFFER</a
></dt
><dt
><a href="../api/function_005FBDB_003A_003AMAKE-RETURN-BUFFER.html"
>MAKE-RETURN-BUFFER</a
></dt
><dt
><a href="../api/function_005FBDB_003A_003APUT-INTO-SECONDARY.html"
>PUT-INTO-SECONDARY</a
></dt
><dt
><a href="../api/function_005FBDB_003A_003ATXN-SUPPORT-FOR-HANDLE.html"
>TXN-SUPPORT-FOR-HANDLE</a
......
......@@ -41,7 +41,7 @@
>DB-CURSOR-PUT</a
></dt
><dt
><a href="../api/method_005FBDB_003A_003A_0028DB-DEL_0020DB_0020T_0029.html"
><a href="../api/method_005FBDB_003A_003A_0028DB-DEL_0020DB-TXN_0020T_0029.html"
>DB-DEL</a
></dt
><dt
......
......@@ -68,6 +68,34 @@
> [Constant] </a
></td
></tr
><tr
><td align="right"
><a href="../api/function_005FBDB_003A_003AADJUST-SEC-OPEN-FLAGS.html"
></a
></td
><td
><a href="../api/function_005FBDB_003A_003AADJUST-SEC-OPEN-FLAGS.html"
>ADJUST-SEC-OPEN-FLAGS</a
></td
><td
><a href="../api/function_005FBDB_003A_003AADJUST-SEC-OPEN-FLAGS.html"
> [Function] </a
></td
></tr
><tr
><td align="right"
><a href="../api/function_005FBDB_003A_003AADJUST-SECONDARY-FLAGS.html"
></a
></td
><td
><a href="../api/function_005FBDB_003A_003AADJUST-SECONDARY-FLAGS.html"
>ADJUST-SECONDARY-FLAGS</a
></td
><td
><a href="../api/function_005FBDB_003A_003AADJUST-SECONDARY-FLAGS.html"
> [Function] </a
></td
></tr
><tr
><td align="right"
><a href="../api/constant_005FBDB_003A_003ADB_005FAGGRESSIVE.html"
......@@ -376,6 +404,20 @@
> [Function] </a
></td
></tr
><tr
><td align="right"
><a href="../api/function_005FBDB_003A_003AMAKE-RETURN-BUFFER.html"
>MAKE-RETURN-</a
></td
><td
><a href="../api/function_005FBDB_003A_003AMAKE-RETURN-BUFFER.html"
>BUFFER</a
></td
><td
><a href="../api/function_005FBDB_003A_003AMAKE-RETURN-BUFFER.html"
> [Function] </a
></td
></tr
><tr
><td align="right"
><a href="../api/function_005FBDB_003A_003ABUILD-ASSOC-CALLBACK-MAKER.html"
......@@ -1286,6 +1328,20 @@
> [Method] </a
></td
></tr
><tr
><td align="right"
><a href="../api/method_005FBDB_003A_003A_0028DB-DEL_0020DB-TXN_0020T_0029.html"
></a
></td
><td
><a href="../api/method_005FBDB_003A_003A_0028DB-DEL_0020DB-TXN_0020T_0029.html"
>DB-DEL</a
></td
><td
><a href="../api/method_005FBDB_003A_003A_0028DB-DEL_0020DB-TXN_0020T_0029.html"
> [Method] </a
></td
></tr
><tr
><td align="right"
><a href="../api/method_005FBDB_003A_003A_0028DB-DEL_0020DB_0020T_0029.html"
......@@ -3540,6 +3596,20 @@
> [Constant] </a
></td
></tr
><tr
><td align="right"
><a href="../api/method_005FBDB_003A_003A_0028DB-DEL_0020DB-TXN_0020T_0029.html"
>DB-</a
></td
><td
><a href="../api/method_005FBDB_003A_003A_0028DB-DEL_0020DB-TXN_0020T_0029.html"
>DEL</a
></td
><td
><a href="../api/method_005FBDB_003A_003A_0028DB-DEL_0020DB-TXN_0020T_0029.html"
> [Method] </a
></td
></tr
><tr
><td align="right"
><a href="../api/method_005FBDB_003A_003A_0028DB-DEL_0020DB_0020T_0029.html"
......@@ -4492,6 +4562,34 @@