📄 changes.html
字号:
<span class="variable">Changed</span> <span class="variable">ShowErrorStatement</span> <span class="variable">to</span> <span class="variable">apply</span> <span class="variable">to</span> <span class="variable">more</span> <span class="variable">$dbh</span> <span class="variable">methods</span><span class="operator">.</span>
<span class="variable">Changed</span> <span class="variable">DBI_TRACE</span> <span class="variable">env</span> <span class="variable">var</span> <span class="variable">so</span> <span class="variable">just</span> <span class="variable">does</span> <span class="variable">this</span> <span class="variable">at</span> <span class="variable">load</span> <span class="keyword">time</span><span class="operator">:</span>
<span class="variable">DBI</span><span class="operator">-></span><span class="variable">trace</span><span class="operator">(</span><span class="keyword">split</span> <span class="string">'='</span><span class="operator">,</span> <span class="variable">$ENV</span><span class="operator">{</span><span class="string">DBI_TRACE</span><span class="operator">}</span><span class="operator">,</span> <span class="number">2</span><span class="operator">);</span>
<span class="variable">Improved</span> <span class="string">"invalid number of parameters"</span> <span class="variable">error</span> <span class="variable">message</span><span class="operator">.</span>
<span class="variable">Added</span> <span class="variable">DBI::common</span> <span class="variable">as</span> <span class="variable">base</span> <span class="variable">class</span> <span class="keyword">for</span> <span class="variable">DBI::db</span><span class="operator">,</span> <span class="variable">DBD::st</span> <span class="variable">etc</span><span class="operator">.</span>
<span class="variable">Moved</span> <span class="variable">methods</span> <span class="variable">common</span> <span class="variable">to</span> <span class="variable">all</span> <span class="variable">handles</span> <span class="variable">into</span> <span class="variable">DBI::common</span><span class="operator">.</span>
</pre>
<pre>
Major tracing enhancement:</pre>
<pre>
<span class="variable">Added</span> <span class="variable">$h</span><span class="operator">-></span><span class="variable">parse_trace_flags</span><span class="operator">(</span><span class="string">"foo|SQL|7"</span><span class="operator">)</span> <span class="variable">to</span> <span class="keyword">map</span> <span class="variable">a</span> <span class="variable">group</span> <span class="variable">of</span>
<span class="variable">trace</span> <span class="variable">flags</span> <span class="variable">into</span> <span class="variable">the</span> <span class="variable">corresponding</span> <span class="variable">trace</span> <span class="variable">flag</span> <span class="variable">bits</span><span class="operator">.</span>
<span class="variable">Added</span> <span class="variable">automatic</span> <span class="variable">calling</span> <span class="variable">of</span> <span class="variable">parse_trace_flags</span><span class="operator">()</span> <span class="keyword">if</span>
<span class="variable">setting</span> <span class="variable">the</span> <span class="variable">trace</span> <span class="variable">level</span> <span class="variable">to</span> <span class="variable">a</span> <span class="variable">non</span><span class="operator">-</span><span class="variable">numeric</span> <span class="variable">value</span><span class="operator">:</span>
<span class="variable">$h</span><span class="operator">-></span><span class="operator">{</span><span class="string">TraceLevel</span><span class="operator">}</span><span class="operator">=</span><span class="string">"foo|SQL|7"</span><span class="operator">;</span> <span class="variable">$h</span><span class="operator">-></span><span class="variable">trace</span><span class="operator">(</span><span class="string">"foo|SQL|7"</span><span class="operator">);</span>
<span class="variable">DBI</span><span class="operator">-></span><span class="keyword">connect</span><span class="operator">(</span><span class="string">"dbi:Driver(TraceLevel=SQL|foo):..."</span><span class="operator">,</span> <span class="operator">...);</span>
<span class="variable">Currently</span> <span class="keyword">no</span> <span class="variable">trace</span> <span class="variable">flags</span> <span class="variable">have</span> <span class="variable">been</span> <span class="keyword">defined</span><span class="operator">.</span>
<span class="variable">Added</span> <span class="variable">to</span><span class="operator">,</span> <span class="keyword">and</span> <span class="variable">reworked</span><span class="operator">,</span> <span class="variable">the</span> <span class="variable">trace</span> <span class="variable">documentation</span><span class="operator">.</span>
<span class="variable">Added</span> <span class="variable">dbivport</span><span class="operator">.</span><span class="variable">h</span> <span class="keyword">for</span> <span class="variable">driver</span> <span class="variable">authors</span> <span class="variable">to</span> <span class="keyword">use</span><span class="operator">.</span>
</pre>
<pre>
Major driver additions that Jeff Zucker and I have been working on:</pre>
<pre>
Added DBI::SQL::Nano a 'smaller than micro' SQL parser
with an SQL::Statement compatible API. If SQL::Statement
is installed then DBI::SQL::Nano becomes an empty subclass
of SQL::Statement, unless the DBI_SQL_NANO env var is true.
Added DBD::File, modified to use DBI::SQL::Nano.
Added DBD::DBM, an SQL interface to DBM files using DBD::File.</pre>
<pre>
Documentation changes:</pre>
<pre>
Corrected typos in docs thanks to Steffen Goeldner.
Corrected execute_for_fetch example thanks to Dean Arnold.</pre>
<p>
</p>
<h2><a name="changes_in_dbi_1_41__svn_rev_130___22nd_february_2004">Changes in DBI 1.41 (svn rev 130), 22nd February 2004</a></h2>
<pre>
<span class="variable">Fixed</span> <span class="variable">execute_for_array</span><span class="operator">()</span> <span class="variable">so</span> <span class="variable">tuple_status</span> <span class="variable">parameter</span> <span class="variable">is</span> <span class="variable">optional</span>
<span class="variable">as</span> <span class="variable">per</span> <span class="variable">docs</span><span class="operator">,</span> <span class="variable">thanks</span> <span class="variable">to</span> <span class="variable">Ed</span> <span class="variable">Avis</span><span class="operator">.</span>
<span class="variable">Fixed</span> <span class="variable">execute_for_array</span><span class="operator">()</span> <span class="variable">docs</span> <span class="variable">to</span> <span class="variable">say</span> <span class="variable">that</span> <span class="variable">it</span> <span class="variable">returns</span> <span class="keyword">undef</span> <span class="keyword">if</span>
<span class="variable">any</span> <span class="variable">of</span> <span class="variable">the</span> <span class="variable">execute</span><span class="operator">()</span> <span class="variable">calls</span> <span class="variable">fail</span><span class="operator">.</span>
<span class="variable">Fixed</span> <span class="variable">take_imp_data</span><span class="operator">()</span> <span class="variable">test</span> <span class="variable">on</span> <span class="variable">m68k</span> <span class="variable">reported</span> <span class="variable">by</span> <span class="variable">Christian</span> <span class="variable">Hammers</span><span class="operator">.</span>
<span class="variable">Fixed</span> <span class="variable">write_typeinfo_pm</span> <span class="variable">inconsistencies</span> <span class="variable">in</span> <span class="variable">DBI::DBD::Metadata</span>
<span class="variable">thanks</span> <span class="variable">to</span> <span class="variable">Andy</span> <span class="variable">Hassall</span><span class="operator">.</span>
<span class="variable">Fixed</span> <span class="variable">$h</span><span class="operator">-></span><span class="operator">{</span><span class="string">TraceLevel</span><span class="operator">}</span> <span class="variable">to</span> <span class="keyword">not</span> <span class="keyword">return</span> <span class="variable">DBI</span><span class="operator">-></span><span class="variable">trace</span> <span class="variable">trace</span> <span class="variable">level</span>
<span class="variable">which</span> <span class="variable">it</span> <span class="variable">used</span> <span class="variable">to</span> <span class="keyword">if</span> <span class="variable">DBI</span><span class="operator">-></span><span class="variable">trace</span> <span class="variable">trace</span> <span class="variable">level</span> <span class="variable">was</span> <span class="variable">higher</span><span class="operator">.</span>
</pre>
<pre>
Changed set_err() to append to errstr, with a leading "\n" if it's
not empty, so that multiple error/warning messages are recorded.
Changed trace to limit elements dumped when an array reference is
returned from a method to the max(40, $DBI::neat_maxlen/10)
so that fetchall_arrayref(), for example, doesn't flood the trace.
Changed trace level to be a four bit integer (levels 0 thru 15)
and a set of topic flags (no topics have been assigned yet).
Changed column_info() to check argument count.
Extended bind_param() TYPE attribute specification to imply
standard formating of value, eg SQL_DATE implies 'YYYY-MM-DD'.</pre>
<pre>
<span class="variable">Added</span> <span class="variable">way</span> <span class="keyword">for</span> <span class="variable">drivers</span> <span class="variable">to</span> <span class="variable">indicate</span> <span class="string">'success with info'</span> <span class="keyword">or</span> <span class="string">'warning'</span>
<span class="variable">by</span> <span class="variable">setting</span> <span class="variable">err</span> <span class="variable">to</span> <span class="string">"0"</span> <span class="keyword">for</span> <span class="variable">warning</span> <span class="keyword">and</span> <span class="string">""</span> <span class="keyword">for</span> <span class="variable">information</span><span class="operator">.</span>
<span class="variable">Both</span> <span class="keyword">values</span> <span class="variable">are</span> <span class="variable">false</span> <span class="keyword">and</span> <span class="variable">so</span> <span class="variable">don't</span> <span class="variable">trigger</span> <span class="variable">RaiseError</span> <span class="variable">etc</span><span class="operator">.</span>
<span class="variable">Thanks</span> <span class="variable">to</span> <span class="variable">Steffen</span> <span class="variable">Goeldner</span> <span class="keyword">for</span> <span class="variable">the</span> <span class="variable">original</span> <span class="variable">idea</span><span class="operator">.</span>
<span class="variable">Added</span> <span class="variable">$h</span><span class="operator">-></span><span class="operator">{</span><span class="string">HandleSetErr</span><span class="operator">}</span> <span class="operator">=</span> <span class="keyword">sub</span><span class="variable"> </span><span class="operator">{</span> <span class="operator">...</span> <span class="operator">}</span> <span class="variable">to</span> <span class="variable">be</span> <span class="variable">called</span> <span class="variable">at</span> <span class="variable">the</span>
<span class="variable">point</span> <span class="variable">that</span> <span class="variable">an</span> <span class="variable">error</span><span class="operator">,</span> <span class="keyword">warn</span><span class="operator">,</span> <span class="keyword">or</span> <span class="variable">info</span> <span class="variable">state</span> <span class="variable">is</span> <span class="variable">recorded</span><span class="operator">.</span>
<span class="variable">The</span> <span class="variable">code</span> <span class="variable">can</span> <span class="variable">alter</span> <span class="variable">the</span> <span class="variable">err</span><span class="operator">,</span> <span class="variable">errstr</span><span class="operator">,</span> <span class="keyword">and</span> <span class="variable">state</span> <span class="keyword">values</span>
<span class="operator">(</span><span class="variable">e</span><span class="operator">.</span><span class="variable">g</span><span class="operator">.,</span> <span class="variable">to</span> <span class="variable">promote</span> <span class="variable">an</span> <span class="variable">error</span> <span class="variable">to</span> <span class="variable">a</span> <span class="variable">warning</span><span class="operator">,</span> <span class="keyword">or</span> <span class="variable">the</span> <span class="keyword">reverse</span><span class="operator">).</span>
<span class="variable">Added</span> <span class="variable">$h</span><span class="operator">-></span><span class="operator">{</span><span class="string">PrintWarn</span><span class="operator">}</span> <span class="variable">attribute</span> <span class="variable">to</span> <span class="variable">enable</span> <span class="variable">printing</span> <span class="variable">of</span> <span class="variable">warnings</span>
<span class="variable">recorded</span> <span class="variable">by</span> <span class="variable">the</span> <span class="variable">driver</span><span class="operator">.</span> <span class="variable">Defaults</span> <span class="variable">to</span> <span class="variable">same</span> <span class="variable">value</span> <span class="variable">as</span> <span class="variable">$^W</span> <span class="operator">(</span><span class="variable">perl</span> <span class="keyword">-w</span><span class="operator">).</span>
<span class="variable">Added</span> <span class="variable">$h</span><span class="operator">-></span><span class="operator">{</span><span class="string">ErrCount</span><span class="operator">}</span> <span class="variable">attribute</span><span class="operator">,</span> <span class="variable">incremented</span> <span class="variable">whenever</span> <span class="variable">an</span> <span class="variable">error</span> <span class="variable">is</span>
<span class="variable">recorded</span> <span class="variable">by</span> <span class="variable">the</span> <span class="variable">driver</span> <span class="variable">via</span> <span class="variable">set_err</span><span class="operator">().</span>
<span class="variable">Added</span> <span class="variable">$h</span><span class="operator">-></span><span class="operator">{</span><span class="string">Executed</span><span class="operator">}</span> <span class="variable">attribute</span><span class="operator">,</span> <span class="variable">set</span> <span class="keyword">if</span> <span class="keyword">do</span><span class="operator">()/</span><span class="variable">execute</span><span class="operator">()</span> <span class="variable">called</span><span class="operator">.</span>
<span class="variable">Added</span> <span class="operator">\</span><span class="variable">%attr</span> <span class="variable">parameter</span> <span class="variable">to</span> <span class="variable">foreign_key_info</span><span class="operator">()</span> <span class="variable">method</span><span class="operator">.</span>
<span class="variable">Added</span> <span class="keyword">ref</span> <span class="variable">count</span> <span class="variable">of</span> <span class="variable">inner</span> <span class="variable">handle</span> <span class="variable">to</span> <span class="string">"DESTROY ignored for outer"</span> <span class="variable">msg</span><span class="operator">.</span>
<span class="variable">Added</span> <span class="variable">Win32</span> <span class="variable">build</span> <span class="variable">config</span> <span class="variable">checks</span> <span class="variable">to</span> <span class="variable">DBI::DBD</span> <span class="variable">thanks</span> <span class="variable">to</span> <span class="variable">Andy</span> <span class="variable">Hassall</span><span class="operator">.</span>
<span class="variable">Added</span> <span class="variable">bind_col</span> <span class="variable">to</span> <span class="variable">Driver</span><span class="operator">.</span><span class="variable">xst</span> <span class="variable">so</span> <span class="variable">drivers</span> <span class="variable">can</span> <span class="variable">define</span> <span class="variable">their</span> <span class="variable">own</span><span class="operator">.</span>
<span class="variable">Added</span> <span class="variable">TYPE</span> <span class="variable">attribute</span> <span class="variable">to</span> <span class="variable">bind_col</span> <span class="keyword">and</span> <span class="variable">specified</span> <span class="variable">the</span> <span class="variable">expected</span>
<span class="variable">driver</span> <span class="variable">behaviour</span><span class="operator">.</span>
</pre>
<pre>
<span class="variable">Major</span> <span class="variable">update</span> <span class="variable">to</span> <span class="variable">signal</span> <span class="variable">handling</span> <span class="variable">docs</span> <span class="variable">thanks</span> <span class="variable">to</span> <span class="variable">Lincoln</span> <span class="variable">Baxter</span><span class="operator">.</span>
<span class="variable">Corrected</span> <span class="variable">dbiproxy</span> <span class="variable">usage</span> <span class="variable">doc</span> <span class="variable">thanks</span> <span class="variable">to</span> <span class="variable">Christian</span> <span class="variable">Hammers</span><span class="operator">.</span>
<span class="variable">Corrected</span> <span class="variable">type_info_all</span> <span class="keyword">index</span> <span class="variable">hash</span> <span class="variable">docs</span> <span class="variable">thanks</span> <span class="variable">to</span> <span class="variable">Steffen</span> <span class="variable">Goeldner</span><span class="operator">.</span>
<span class="variable">Corrected</span> <span class="variable">type_info</span> <span class="variable">COLUMN_SIZE</span> <span class="variable">to</span> <span class="variable">chars</span> <span class="keyword">not</span> <span class="variable">bytes</span> <span class="variable">thanks</span> <span class="variable">to</span> <span class="variable">Dean</span> <span class="variable">Arnold</span><span class="operator">.</span>
<span class="variable">Corrected</span> <span class="variable">get_info</span><span class="operator">()</span> <span class="variable">docs</span> <span class="variable">to</span> <span class="variable">include</span> <span class="variable">details</span> <span class="variable">of</span> <span class="variable">DBI::Const::GetInfoType</span><span class="operator">.</span>
<span class="variable">Clarified</span> <span class="variable">that</span> <span class="variable">$sth</span><span class="operator">-></span><span class="operator">{</span><span class="string">PRECISION</span><span class="operator">}</span> <span class="variable">is</span> <span class="variable">OCTET_LENGTH</span> <span class="keyword">for</span> <span class="variable">char</span> <span class="variable">types</span><span class="operator">.</span>
</pre>
<p>
</p>
<h2><a name="changes_in_dbi_1_40__7th_january_2004">Changes in DBI 1.40, 7th January 2004</a></h2>
<pre>
<span class="variable">Fixed</span> <span class="variable">handling</span> <span class="variable">of</span> <span class="variable">CachedKids</span> <span class="variable">when</span> <span class="variable">DESTROYing</span> <span class="variable">threaded</span> <span class="variable">handles</span><span class="operator">.</span>
<span class="variable">Fixed</span> <span class="variable">sql_user_name</span><span class="operator">()</span> <span class="variable">in</span> <span class="variable">DBI::DBD::Metadata</span> <span class="operator">(</span><span class="variable">used</span> <span class="variable">by</span> <span class="variable">write_getinfo_pm</span><span class="operator">)</span>
<span class="variable">to</span> <span class="keyword">use</span> <span class="variable">$dbh</sp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -