⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysreq.html

📁 sqlite3源码,适合作为嵌入式(embedded)
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<p>The developers of SQLite believe that "thread-safe" is a  self contradiction.  No application that includes multiple threads  of control within the same address space is every truly "safe".  And yet it is recognized that many developers want to  create multithreaded applications and to use SQLite in those  applications.  Therefore, SQLite is engineered to be "thread-safe".</p></dd><dt><b><a name="S40200"></a>S40200</b></dt><dd><p>The SQLite library shall support multiple independent databaseconnections per thread and per process.</p></dd><dt><b><a name="S40300"></a>S40300</b></dt><dd><p>The SQLite library shall automatically control access to commondatabases from different connections in different threads or processes.</p><p>SQLite uses both internal mutexes and external file locking to   ensure that two or more threads or processes working  on the same database file play nicely with one another.</p></dd><dt><b><a name="S40400"></a>S40400</b></dt><dd><p>The SQLite library shall notify the application if an operation cannot be completed due to concurrent access constraints.</p></dd><dt><b><a name="S40410"></a>S40410</b></dt><dd><p>The SQLite library shall provide interfaces to assist the applicationin responding appropriately when an operation cannot be completed due to concurrent access constraints.</p><p>If an SQL statement cannot be completed because another process is  holding a lock on the database, then the application needs to be able  to take corrective action, such waiting for the lock to clear.</p></dd><dt><b><a name="S50000"></a>S50000</b></dt><dd><p>The SQLite library shall be cross-platform.</p><p>Cross-platform in this context means that the SQLite   can be used on a wide variety of operating systems and processors,  ranging from small, special-purpose embedded systems, to workstations,  to servers.  Platforms can be 32- or 64-bit, big-endian or little-endian.  Cross-platform refers to the source code.  Obviously the SQLite would  need to be recompiled in order to run on processors with different  instruction sets.</p></dd><dt><b><a name="S50100"></a>S50100</b></dt><dd><p>The SQLite library shall be implemented in ANSI-C.</p><p>C has been called the "universal assembly language".  Nearly all computer systems accept code written in C.  Thus, to help make SQLite cross-platform:</p></dd><dt><b><a name="S50200"></a>S50200</b></dt><dd><p>The SQLite library shall support text encoded as UTF-8,UTF-16le, or UTF-16be.</p></dd><dt><b><a name="S50300"></a>S50300</b></dt><dd><p>SQLite database files shall be processor and byte-order independent.</p><p>An SQLite database file can be freely moved between machine  with different operating systems, different processors,  different size integers, and different byte orders.  The same  database file should work on any machine.</p></dd><dt><b><a name="S60000"></a>S60000</b></dt><dd><p>The SQLite library shall provide introspection capabilities to theapplication.</p><p>Some applications need to be able to discover characteristics of  their environment at run-time and to make appropriate adjustments to  their processing to accommodate the environment they find themselves in.  SQLite attempts to support this need.</p></dd><dt><b><a name="S60100"></a>S60100</b></dt><dd><p>The SQLite library shall provide interfaces that an application canuse to discover fixed, compile-time characteristics of theSQLite library.</p><p>Some applications are designed to work with different versions  of SQLite which may or may not enable selected features.  For example,  SQLite can be compiled to be threadsafe or not.  The threadsafe version  works in multi-threaded applications.  The non-threadsafe build runs  faster.  When an application is using an unknown version of SQLite  it is important that it be able to determine the characteristics of  the particular SQLite build it is using.</p></dd><dt><b><a name="S60200"></a>S60200</b></dt><dd><p>The SQLite library shall provide interfaces that an application canuse to find run-time performance characteristics and status of theSQLite library.</p></dd><dt><b><a name="S60300"></a>S60300</b></dt><dd><p>The SQLite library shall provide interfaces that permit an applicationto query the schema of a database.</p></dd><dt><b><a name="S60400"></a>S60400</b></dt><dd><p>The SQLite library shall provide interfaces that allow an applicationto monitor sequence of queries and progress of submitted to SQLite.</p></dd><dt><b><a name="S60500"></a>S60500</b></dt><dd><p>The SQLite library shall provide interfaces that allow an applicationto discover the algorithms that SQLite has chosen to implement specificSQL statements.</p></dd><dt><b><a name="S60600"></a>S60600</b></dt><dd><p>The SQLite library shall provide interfaces that allow an applicationto discover relationships between SQLite objects.</p><p>SQLite objects are often related.  For example, every prepared  statement is associated with a database connection.  And every  function context is associated with a prepared statement.    Applications and extensions frequently find it useful to be able  to discover these relationships at runtime.</p></dd><dt><b><a name="S70000"></a>S70000</b></dt><dd><p>The SQLite library shall provide interfaces that promote the safeconstruction and processing of SQL statements and data fromuntrusted sources.</p><p>Many applications need to be able to safely process data or  even SQL statements that are received from untrusted sources.  An "SQL Injection Attack" occurs when an adversary intentionally  introduces data that is designed to have undesirable side effects  on the database files.  For example, suppose an application generates  an INSERT statement as follows:</p>  <blockquote><pre>  snprintf(z, n, "INSERT INTO table1 VALUES('%s')", zUserData);  </pre></blockquote>  <p>If a hostile user supplies data that reads:</p>  <blockquote><pre>  beginning'); DELETE FROM table1; INSERT INTO table1 VALUES('  </pre></blockquote>  <p>Then the constructed INSERT statement would be transformed into  three statements, the second of which is an undesired deletion of  all prior content from the table.  SQLite contains interfaces that  are designed to help applications avoid SQL injection attacks and  similar problems.</p></dd><dt><b><a name="S70100"></a>S70100</b></dt><dd><p>The SQLite library shall provide the application means by which theapplication can test and enforce compliance with database accesspolicies for any particular SQL statement.</p><p>Some applications (for example  <a href="http://www.cvstrac.org/">CVSTrac</a> and  <a href="http://www.fossil-scm.org/">Fossil</a>) will run SELECT  statements entered by anonymous users on the internet.  Such   applications want to be able to guarantee that a hostile users does  not access restricted tables (such as the PASSWORD column of the USER  table) or modify the database in any way.  SQLite supports the ability  to analyze an arbitrary SQL statement to insure that it does not  perform undesired operations.</p></dd><dt><b><a name="S70200"></a>S70200</b></dt><dd><p>The SQLite library shall provide interfaces that test to see if anSQL statement being received incrementally is complete.</p><p><p>Applications such as the command-line interface (CLI) for SQLite  will prompt the user to enter SQL statements and will evaluate those  statements as they are entered.  But sometimes an SQL statement spans  multiple lines.  The CLI needs to know to issue a continuation prompt  and await additional input if the input received so far is incomplete.  SQLite supports interfaces that allow the CLI and similar applications  to know if the input it has gathered so far is complete or if it needs  to await additional input before processing the SQL.</p></dd><dt><b><a name="S70300"></a>S70300</b></dt><dd><p>The SQLite library shall support prepared statement objects withlate parameter binding</p><p>The concept of a "prepared statement" allows an SQL statement to be  parsed and compiled once and then reused many times.  This is a performance  advantage in many applications.  In addition, binding values to variables  in the prepared statement is safer than embedding values as literals because  bound values do not need to be quoted in order to avoid an SQL injection  attack.</p></dd><dt><b><a name="S80000"></a>S80000</b></dt><dd><p>SQLite shall exhibit ductile failure characteristics</p><p>A common characteristic of digital systems (as opposed to analog  systems) is that digital systems tend to be brittle.  In other words,  digital systems tend to work perfectly with no sign of stress until   they fail utterly and completely.  The behavior is like a  physical object that holds its shape as external  loads increase, until it shatters without warning.</p>  <p>In most circumstances, ductile failure is preferred over brittle  failure.  A ductile device begins showing signs of  trouble well in advance of failure.  Physical objects bend and/or crack,  providing operators with warnings of overload and an opportunity  to take corrective action, while continuing to function for as long  as possible.</p>  <p>Digital systems have a reputation for being brittle, yet brittleness  is not an intrinsic property of digital systems.  Digital systems can  be designed to continuing functioning outside their design parameters  while providing operators with warning of possible trouble.  But there  most be focused effort on the part of the designers to make digital  systems ductile.  With analog systems, the ductileness tends to be  inherent in the medium, but with digital systems ductileness needs  to be explicitly added.</p></dd><dt><b><a name="S80100"></a>S80100</b></dt><dd><p>SQLite shall make anomalies visible to the application</p><p>SQLite strives to deal gracefully with anomalous behavior by  the application or by its own internal subsystems.  Yet graceful  handling of out-of-band inputs is of no value if the anomaly goes  unreported.  The problems must be visible to the  application so that warnings and alarms can be propagated to operators.  The useful aspect of ductile failure is that it gives advance warning.  Ductile behavior is of no use to anyone if nobody can see the part  bending.</p></dd></dl><hr><small><i>This page last modified 2008/12/09 22:42:03 UTC</i></small></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -