提交 3cccfb9f authored 作者: Thomas Mueller's avatar Thomas Mueller

--no commit message

--no commit message
上级 42086958
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
<classpath location="ext/servlet-api-2.4.jar" /> <classpath location="ext/servlet-api-2.4.jar" />
<classpath location="ext/lucene-core-2.2.0.jar" /> <classpath location="ext/lucene-core-2.2.0.jar" />
<classpath location="ext/slf4j-api-1.5.0.jar" /> <classpath location="ext/slf4j-api-1.5.0.jar" />
<classpath location="ext/org.osgi.core-1.2.0.jar" />
<src path="src/main"/> <src path="src/main"/>
<src path="src/test"/> <src path="src/test"/>
<src path="src/tools"/> <src path="src/tools"/>
...@@ -47,6 +48,8 @@ ...@@ -47,6 +48,8 @@
src="http://repo1.maven.org/maven2/org/apache/lucene/lucene-core/2.2.0/lucene-core-2.2.0.jar" /> src="http://repo1.maven.org/maven2/org/apache/lucene/lucene-core/2.2.0/lucene-core-2.2.0.jar" />
<get dest="ext/slf4j-api-1.5.0.jar" <get dest="ext/slf4j-api-1.5.0.jar"
src="http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar" /> src="http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar" />
<get dest="ext/org.osgi.core-1.2.0.jar"
src="http://repo1.maven.org/maven2/org/apache/felix/org.osgi.core/1.2.0/org.osgi.core-1.2.0.jar" />
</target> </target>
<target name="init"> <target name="init">
...@@ -56,6 +59,7 @@ ...@@ -56,6 +59,7 @@
<available file="ext/servlet-api-2.4.jar"/> <available file="ext/servlet-api-2.4.jar"/>
<available file="ext/lucene-core-2.2.0.jar"/> <available file="ext/lucene-core-2.2.0.jar"/>
<available file="ext/slf4j-api-1.5.0.jar"/> <available file="ext/slf4j-api-1.5.0.jar"/>
<available file="ext/org.osgi.core-1.2.0.jar"/>
</and> </and>
</condition> </condition>
</target> </target>
...@@ -76,20 +80,6 @@ ...@@ -76,20 +80,6 @@
</jar> </jar>
</target> </target>
<target name="jarDb" depends="resources, manifest">
<javac srcdir="src/main" destdir="bin" debug="false">
<include name="org/h2/*" />
<include name="org/h2/engine/**" />
<include name="org/h2/jdbc/**" />
<include name="org/h2/jdbcx/**" />
</javac>
<jar jarfile="bin/h2db.jar" basedir="bin" manifest="bin/META-INF/MANIFEST.MF">
<include name="**/*.*"/>
<exclude name="**/*.bat"/>
<exclude name="**/*.sh"/>
</jar>
</target>
<target name="manifest"> <target name="manifest">
<mkdir dir="bin/META-INF"/> <mkdir dir="bin/META-INF"/>
<manifest file="bin/META-INF/MANIFEST.MF"> <manifest file="bin/META-INF/MANIFEST.MF">
...@@ -108,7 +98,9 @@ ...@@ -108,7 +98,9 @@
</target> </target>
<target name="switchSourcePrepare" depends="clean"> <target name="switchSourcePrepare" depends="clean">
<javac source="1.4" srcdir="src/tools" destdir="bin" debug="true" debuglevel="lines,source" includes="org/h2/build/code/SwitchSource.java"/> <javac source="1.4" srcdir="src/tools" destdir="bin"
debug="true" debuglevel="lines,source"
includes="org/h2/build/code/SwitchSource.java"/>
</target> </target>
<target name="switchSourceAndroid" depends="switchSourcePrepare"> <target name="switchSourceAndroid" depends="switchSourcePrepare">
...@@ -151,10 +143,4 @@ ...@@ -151,10 +143,4 @@
</java> </java>
</target> </target>
<target name="warConsole" depends="jar">
<war destfile="bin/h2console.war" webxml="src/tools/WEB-INF/web.xml" basedir="src/tools/WEB-INF" includes="console.html">
<lib file="bin/h2.jar" />
</war>
</target>
</project> </project>
\ No newline at end of file
...@@ -18,7 +18,19 @@ Change Log ...@@ -18,7 +18,19 @@ Change Log
<h1>Change Log</h1> <h1>Change Log</h1>
<h2>Next Version (unreleased)</h2> <h2>Next Version (unreleased)</h2>
<ul><li>Opening large database is now faster. <ul><li>Opening a connection with AUTO_SERVER=TRUE is now fast
when the database is already open in another process (less than 0.01 seconds
instead of 2 seconds).
</li><li>IF NOT EXISTS is supported for named constraints in
ALTER TABLE ... ADD CONSTRAINT.
</li><li>IF EXISTS is supported for named constraints in
ALTER TABLE ... DROP CONSTRAINT.
</li><li>The error messages have been translated to Spanish by Dario V. Fassi.
Thanks a lot!
</li><li>Linked tables: the automatic connection sharing didn't work. Actually the
system property h2.shareLinkedConnections was working in the opposite direction:
it was disabled when set to true. Now it works as expected.
</li><li>Opening large database is now faster.
</li><li>New system property h2.socketConnectTimeout, the timeout in milliseconds </li><li>New system property h2.socketConnectTimeout, the timeout in milliseconds
to connect to a server. The default is 2000 (2 seconds). to connect to a server. The default is 2000 (2 seconds).
</li><li>The wrong parameters were bound to subqueries with parameters, specially </li><li>The wrong parameters were bound to subqueries with parameters, specially
......
...@@ -572,7 +572,7 @@ This is achieved using different database URLs. Settings in the URLs are not cas ...@@ -572,7 +572,7 @@ This is achieved using different database URLs. Settings in the URLs are not cas
</td> </td>
</tr> </tr>
<tr> <tr>
<td><a href="#auto_mixed_mode">Automatic Mixed Mode</td> <td><a href="#auto_mixed_mode">Automatic Mixed Mode</a></td>
<td> <td>
jdbc:h2:&lt;url&gt;;AUTO_SERVER=TRUE<br /> jdbc:h2:&lt;url&gt;;AUTO_SERVER=TRUE<br />
jdbc:h2:~/test;AUTO_SERVER=TRUE jdbc:h2:~/test;AUTO_SERVER=TRUE
......
...@@ -66,7 +66,7 @@ Initial Developer: H2 Group ...@@ -66,7 +66,7 @@ Initial Developer: H2 Group
<a href="functions.html"> Functions </a><br /> <a href="functions.html"> Functions </a><br />
<a href="datatypes.html"> Data Types </a><br /> <a href="datatypes.html"> Data Types </a><br />
<a href="../javadoc/index.html"> Javadoc </a><br /> <a href="../javadoc/index.html"> Javadoc </a><br />
<a href="../h2.pdf" target="_blank"> Docs as PDF </a><br /> <a href="../h2.pdf"> Docs as PDF </a><br />
<a href="sourceError.html"> Error Analyzer </a><br /> <a href="sourceError.html"> Error Analyzer </a><br />
<br /> <br />
<b> Appendix </b><br /> <b> Appendix </b><br />
......
...@@ -56,8 +56,8 @@ Welcome to H2, the Java SQL database. The main feature of H2 are: ...@@ -56,8 +56,8 @@ Welcome to H2, the Java SQL database. The main feature of H2 are:
<tr><td style="border: 0px; background-color: #eee;"> <tr><td style="border: 0px; background-color: #eee;">
<h3>Support</h3> <h3>Support</h3>
<p> <p>
<a href="http://groups.google.com/group/h2-database" target="_top">English Google Group</a><br /> <a href="http://groups.google.com/group/h2-database">English Google Group</a><br />
<a href="http://groups.google.co.jp/group/h2-database-jp" target="_top">Japanese Google Group</a><br /><br /> <a href="http://groups.google.co.jp/group/h2-database-jp">Japanese Google Group</a><br /><br />
Or send an e-mail to: <br /> Or send an e-mail to: <br />
<script type="text/javascript"> <script type="text/javascript">
<!-- <!--
...@@ -97,8 +97,8 @@ Welcome to H2, the Java SQL database. The main feature of H2 are: ...@@ -97,8 +97,8 @@ Welcome to H2, the Java SQL database. The main feature of H2 are:
<h3>News</h3> <h3>News</h3>
<p> <p>
<b>Newsfeeds:</b> <b>Newsfeeds:</b>
<a href="http://www.h2database.com/html/newsfeed-atom.xml" target="_blank">Full text (Atom)</a> <a href="http://www.h2database.com/html/newsfeed-atom.xml">Full text (Atom)</a>
or <a href="http://www.h2database.com/html/newsfeed-rss.xml" target="_blank">Header only (RSS)</a>. or <a href="http://www.h2database.com/html/newsfeed-rss.xml">Header only (RSS)</a>.
</p><p> </p><p>
<b>Email Newsletter:</b> Subscribe to <b>Email Newsletter:</b> Subscribe to
<a href="http://groups.google.com/group/h2database-news/subscribe"> <a href="http://groups.google.com/group/h2database-news/subscribe">
...@@ -123,7 +123,7 @@ Welcome to H2, the Java SQL database. The main feature of H2 are: ...@@ -123,7 +123,7 @@ Welcome to H2, the Java SQL database. The main feature of H2 are:
Or click on the PayPal button below to Or click on the PayPal button below to
donate money. You will be listed as a supporter: donate money. You will be listed as a supporter:
</p> </p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank"> <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/> <input type="hidden" name="cmd" value="_s-xclick"/>
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" name="submit" alt="PayPal"/> <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" name="submit" alt="PayPal"/>
<img alt="" border="0" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1" /> <img alt="" border="0" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1" />
......
...@@ -305,6 +305,8 @@ Of course, patches are always welcome, but are not always applied as is. Patches ...@@ -305,6 +305,8 @@ Of course, patches are always welcome, but are not always applied as is. Patches
move Comparison to Other Database Engines to Comparison, move Comparison to Other Database Engines to Comparison,
move Products that Work with H2 to Comparison, move Products that Work with H2 to Comparison,
move Performance Tuning to Advanced Topics move Performance Tuning to Advanced Topics
</li><li>Support JMX: Create an MBean for each database and server (support JConsole).
See http://thedevcloud.blogspot.com/2008/10/displaying-hsql-database-manager-in.html
</li><li>Translation: use ${.} in help.csv </li><li>Translation: use ${.} in help.csv
</li><li>Translated .pdf </li><li>Translated .pdf
</li><li>Cluster: hot deploy (adding a node on runtime) </li><li>Cluster: hot deploy (adding a node on runtime)
...@@ -361,7 +363,6 @@ Of course, patches are always welcome, but are not always applied as is. Patches ...@@ -361,7 +363,6 @@ Of course, patches are always welcome, but are not always applied as is. Patches
</li><li>Support SCOPE_IDENTITY(). </li><li>Support SCOPE_IDENTITY().
</li><li>Support GRANT SELECT, UPDATE ON *. </li><li>Support GRANT SELECT, UPDATE ON *.
</li><li>Test Eclipse DTP. </li><li>Test Eclipse DTP.
</li><li>Support JMX: Create an MBean for each database and server (support JConsole).
</li><li>H2 Console: autocomplete: keep the previous setting </li><li>H2 Console: autocomplete: keep the previous setting
</li><li>executeBatch: option to stop at the first failed statement. </li><li>executeBatch: option to stop at the first failed statement.
</li><li>Implement OLAP features as described here: http://www.devx.com/getHelpOn/10MinuteSolution/16573/0/page/5 </li><li>Implement OLAP features as described here: http://www.devx.com/getHelpOn/10MinuteSolution/16573/0/page/5
...@@ -382,6 +383,7 @@ Of course, patches are always welcome, but are not always applied as is. Patches ...@@ -382,6 +383,7 @@ Of course, patches are always welcome, but are not always applied as is. Patches
</li><li>Change the default for NULL || 'x' to return NULL </li><li>Change the default for NULL || 'x' to return NULL
</li><li>ANALYZE: Use a bloom filter for each indexed column to estimate count of distinct values. </li><li>ANALYZE: Use a bloom filter for each indexed column to estimate count of distinct values.
</li><li>ANALYZE: For unique indexes that allow null, count the number of null. </li><li>ANALYZE: For unique indexes that allow null, count the number of null.
</li><li>AUTO_SERVER: support changing IP addresses (disable a network while the database is open).
</li></ul> </li></ul>
<h2>Not Planned</h2> <h2>Not Planned</h2>
......
...@@ -24,8 +24,8 @@ Initial Developer: H2 Group ...@@ -24,8 +24,8 @@ Initial Developer: H2 Group
<table width="100%" class="search"> <table width="100%" class="search">
<tr class="search"> <tr class="search">
<td class="search" colspan="2"> <td class="search" colspan="2">
<a href="frame.html" target="_top"><img border="0" src="images/language_en.gif" alt="English" /></a> <a href="frame.html"><img border="0" src="images/language_en.gif" alt="English" /></a>
<a href="frame_ja.html" target="_top"><img border="0" src="images/language_ja.gif" alt="Japanese" /></a> <a href="frame_ja.html"><img border="0" src="images/language_ja.gif" alt="Japanese" /></a>
</td> </td>
</tr> </tr>
<tr class="search"> <tr class="search">
...@@ -53,30 +53,30 @@ Initial Developer: H2 Group ...@@ -53,30 +53,30 @@ Initial Developer: H2 Group
</form> </form>
<div class="menu"> <div class="menu">
<b><a href="main.html" target="main">Home</a></b><br /> <b><a href="main.html">Home</a></b><br />
<a href="quickstart.html" target="main">Quickstart</a><br /> <a href="quickstart.html">Quickstart</a><br />
<a href="installation.html" target="main">Installation</a><br /> <a href="installation.html">Installation</a><br />
<a href="tutorial.html" target="main">Tutorial</a><br /> <a href="tutorial.html">Tutorial</a><br />
<a href="features.html" target="main">Features</a><br /> <a href="features.html">Features</a><br />
<a href="performance.html" target="main">Performance</a><br /> <a href="performance.html">Performance</a><br />
<a href="advanced.html" target="main">Advanced Topics</a><br /> <a href="advanced.html">Advanced Topics</a><br />
<a href="jaqu.html" target="main">JaQu</a><br /> <a href="jaqu.html">JaQu</a><br />
<a href="download.html" target="main">Download</a><br /> <a href="download.html">Download</a><br />
<br /> <br />
<b>Reference</b><br /> <b>Reference</b><br />
<a href="grammar.html" target="main">SQL Grammar</a><br /> <a href="grammar.html">SQL Grammar</a><br />
<a href="functions.html" target="main">Functions</a><br /> <a href="functions.html">Functions</a><br />
<a href="datatypes.html" target="main">Data Types</a><br /> <a href="datatypes.html">Data Types</a><br />
<a href="../javadoc/index.html" target="main">Javadoc</a><br /> <a href="../javadoc/index.html">Javadoc</a><br />
<a href="../h2.pdf" target="_blank">Docs as PDF</a><br /> <a href="../h2.pdf">Docs as PDF</a><br />
<a href="sourceError.html" target="main">Error Analyzer</a><br /> <a href="sourceError.html">Error Analyzer</a><br />
<br /> <br />
<b>Appendix</b><br /> <b>Appendix</b><br />
<a href="build.html" target="main">Build</a><br /> <a href="build.html">Build</a><br />
<a href="history.html" target="main">History &amp; Roadmap</a><br /> <a href="history.html">History &amp; Roadmap</a><br />
<a href="links.html" target="main">Links</a><br /> <a href="links.html">Links</a><br />
<a href="faq.html" target="main">FAQ</a><br /> <a href="faq.html">FAQ</a><br />
<a href="license.html" target="main">License</a><br /> <a href="license.html">License</a><br />
<br /> <br />
</div> </div>
<!-- analytics --> <!-- analytics -->
......
...@@ -182,7 +182,7 @@ function sizeTextArea() { ...@@ -182,7 +182,7 @@ function sizeTextArea() {
<body style="margin:20px" onresize="sizeTextArea();" onload="sizeTextArea();" > <body style="margin:20px" onresize="sizeTextArea();" onload="sizeTextArea();" >
<h1>Online Error Analyzer</h1> <h1>Online Error Analyzer</h1>
<b><a href="../html/main.html" target="_top">Home</a></b><br /> <b><a href="../html/main.html">Home</a></b><br />
<h2> <h2>
<a href="javascript:select('input')" id="inputTab">Input</a>&nbsp; <a href="javascript:select('input')" id="inputTab">Input</a>&nbsp;
<a href="javascript:select('details')" id="detailsTab">Details</a>&nbsp; <a href="javascript:select('details')" id="detailsTab">Details</a>&nbsp;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -250,7 +250,7 @@ ALTER TABLE TEST DROP COLUMN NAME ...@@ -250,7 +250,7 @@ ALTER TABLE TEST DROP COLUMN NAME
" "
"Commands (DDL)","ALTER TABLE DROP CONSTRAINT"," "Commands (DDL)","ALTER TABLE DROP CONSTRAINT","
ALTER TABLE tableName DROP ALTER TABLE tableName DROP
{CONSTRAINT constraintName | PRIMARY KEY} {CONSTRAINT [IF EXISTS] constraintName | PRIMARY KEY}
"," ","
Removes a constraint or a primary key from a table. Removes a constraint or a primary key from a table.
"," ","
...@@ -1238,7 +1238,7 @@ FROM TEST ...@@ -1238,7 +1238,7 @@ FROM TEST
"Other Grammar","Constraint"," "Other Grammar","Constraint","
PRIMARY KEY [HASH] (columnName [,...]) PRIMARY KEY [HASH] (columnName [,...])
| [CONSTRAINT newConstraintName] { | [CONSTRAINT [IF NOT EXISTS] newConstraintName] {
CHECK expression CHECK expression
| UNIQUE (columnName [,...]) | UNIQUE (columnName [,...])
| referentialConstraint} | referentialConstraint}
...@@ -1248,6 +1248,7 @@ The check condition must evaluate to true or to NULL (to prevent NULL, use NOT N ...@@ -1248,6 +1248,7 @@ The check condition must evaluate to true or to NULL (to prevent NULL, use NOT N
"," ","
PRIMARY KEY(ID, NAME) PRIMARY KEY(ID, NAME)
" "
"Other Grammar","Referential Constraint"," "Other Grammar","Referential Constraint","
FOREIGN KEY (columnName [,...]) FOREIGN KEY (columnName [,...])
REFERENCES [refTableName] [(refColumnName[,...])] REFERENCES [refTableName] [(refColumnName[,...])]
...@@ -1263,6 +1264,7 @@ The required indexes are automatically created if required. ...@@ -1263,6 +1264,7 @@ The required indexes are automatically created if required.
"," ","
FOREIGN KEY(ID) REFERENCES TEST(ID) FOREIGN KEY(ID) REFERENCES TEST(ID)
" "
"Other Grammar","Table Expression"," "Other Grammar","Table Expression","
{[schemaName.] tableName | (select)} [[AS] newTableAlias] {[schemaName.] tableName | (select)} [[AS] newTableAlias]
[{{LEFT | RIGHT} [OUTER] | [INNER] | CROSS | NATURAL} [{{LEFT | RIGHT} [OUTER] | [INNER] | CROSS | NATURAL}
......
...@@ -279,8 +279,27 @@ java org.h2.test.TestAll timer ...@@ -279,8 +279,27 @@ java org.h2.test.TestAll timer
/* /*
document url parameter auto_server test ant build
document url parameter auto_reconnect
test documentation (japanese, pdf download, frames, sourceError)
AUTO_SERVER=TRUE improve performance for the second connection.
SET LOG 2:
Database.logIndexChanges stays; should be updated? need test case
fix html (use xhtml?)
'if not exists" / 'if exists" clauses to the
"alter table create/drop constraint"
test case:
create table test(id int not null);
alter table test add constraint if not exists pk primary key(id);
alter table test add constraint if not exists pk primary key(id);
alter table test drop constraint if exists pk;
alter table test drop constraint if exists pk;
drop table test;
document url parameter open_new document url parameter open_new
osgi: create a sample application, test, document osgi: create a sample application, test, document
......
...@@ -65,6 +65,9 @@ public class TestLinkedTable extends TestBase { ...@@ -65,6 +65,9 @@ public class TestLinkedTable extends TestBase {
// } // }
private void testSharedConnection() throws SQLException { private void testSharedConnection() throws SQLException {
if (config.memory) {
return;
}
org.h2.Driver.load(); org.h2.Driver.load();
deleteDb("linkedTable"); deleteDb("linkedTable");
String url = getURL("linkedTable", true); String url = getURL("linkedTable", true);
......
...@@ -40,9 +40,6 @@ I am sorry to say that, but it looks like a corruption problem. I am very intere ...@@ -40,9 +40,6 @@ I am sorry to say that, but it looks like a corruption problem. I am very intere
- You can find out if the database is corrupted when running - You can find out if the database is corrupted when running
SCRIPT TO 'test.sql' SCRIPT TO 'test.sql'
- What version H2 are you using? - What version H2 are you using?
- With which version of H2 was this database created?
You can find it out using:
select * from information_schema.settings where name='CREATE_BUILD'
- Did you use multiple connections? - Did you use multiple connections?
- The first workarounds is: append ;RECOVER=1 to the database URL. - The first workarounds is: append ;RECOVER=1 to the database URL.
Does it work when you do this? Does it work when you do this?
...@@ -51,10 +48,14 @@ I am sorry to say that, but it looks like a corruption problem. I am very intere ...@@ -51,10 +48,14 @@ I am sorry to say that, but it looks like a corruption problem. I am very intere
- The third workarounds is: use the tool org.h2.tools.Recover to create - The third workarounds is: use the tool org.h2.tools.Recover to create
the SQL script file, and then re-create the database using this script. the SQL script file, and then re-create the database using this script.
Does it work when you do this? Does it work when you do this?
- With which version of H2 was this database created?
You can find it out using:
select * from information_schema.settings where name='CREATE_BUILD'
- Do you use any settings or special features (for example, the setting LOG=0, - Do you use any settings or special features (for example, the setting LOG=0,
or two phase commit, linked tables, cache settings)? or two phase commit, linked tables, cache settings)?
- Is the application multi-threaded? - Is the application multi-threaded?
- On what operating system, file system, and virtual machine (java -version)? - What operating system, file system, and virtual machine
(java -version) do you use?
- How big is the database (file sizes)? - How big is the database (file sizes)?
- Is the database usually closed normally, or is process terminated forcefully - Is the database usually closed normally, or is process terminated forcefully
or the computer switched off? or the computer switched off?
......
...@@ -566,4 +566,4 @@ implies looping cataloguing mapper frees javaw geographic borges grass ...@@ -566,4 +566,4 @@ implies looping cataloguing mapper frees javaw geographic borges grass
somehow marcio groove roy gis matt targeted brazil dig opt deregister somehow marcio groove roy gis matt targeted brazil dig opt deregister
classname recaptcha unload unloaded unloads activator statistic hence rathsack classname recaptcha unload unloaded unloads activator statistic hence rathsack
reflects doy bloom minimal gmx conserve panic serious robert thursday reflects doy bloom minimal gmx conserve panic serious robert thursday
wednesday saturday friday tuesday wednesday saturday friday tuesday sharing opposite fassi dario clauses
\ No newline at end of file \ No newline at end of file
...@@ -45,8 +45,11 @@ public class PropertiesToUTF8 { ...@@ -45,8 +45,11 @@ public class PropertiesToUTF8 {
* @param args the command line parameters * @param args the command line parameters
*/ */
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
convert("bin/org/h2/res"); convert("C:/download/classes");
convert("bin/org/h2/server/web/res");
//
// convert("bin/org/h2/res");
// convert("bin/org/h2/server/web/res");
} }
/** /**
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论