提交 ad52cce5 authored 作者: Thomas Mueller's avatar Thomas Mueller

--no commit message

--no commit message
上级 2f8b42f4
#Mon Jan 28 07:19:50 CET 2008
#Fri Feb 01 15:26:30 CET 2008
javac=javac
benchmark.drivers.dir=C\:/data/java
path.servlet.jar=C\:/data/classpath/servlet-api.jar
......
<project name="h2" default="all" basedir=".">
<!-- dependencies (optional):
http://repo1.maven.org/maven2/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar
(actually any servlet api)
http://repo1.maven.org/maven2/org/apache/lucene/lucene-core/2.2.0/lucene-core-2.2.0.jar
(or newer)
-->
<property file="ant-build.properties" />
<!-- jar files required by the benchmark -->
......@@ -283,19 +289,6 @@
</manifest>
</target>
<target name="mavenBuildCentral">
<copy tofile="bin/h2-${version.name.maven}.jar" file="bin/h2.jar" />
<copy tofile="bin/pom.xml" filtering="true" file="src/installer/pom.xml">
<filterset>
<filter token="version" value="${version.name.maven}"/>
</filterset>
</copy>
<jar destfile="bin/h2-${version.name.maven}-bundle.jar" basedir="bin">
<include name="pom.xml" />
<include name="h2-${version.name.maven}.jar" />
</jar>
</target>
<target name="mavenDeployCentral" depends="jar">
<copy tofile="bin/h2-${version.name.maven}.jar" file="bin/h2.jar" />
<copy tofile="bin/pom.xml" filtering="true" file="src/installer/pomUpload.xml">
......
......@@ -7,7 +7,7 @@ Initial Developer: H2 Group
// <!--
var line = 0, file = '';
var params = location.search.substring(1).split('&');
var build = 'trunk';
var tag = 'trunk/h2';
for (var i = 0; i<params.length; i++) {
var k = params[i].split('=');
var key = k[0], value = k[1];
......@@ -15,8 +15,12 @@ Initial Developer: H2 Group
line = value;
} else if (key == 'file') {
file = value;
} else if (key == 'build' && value >= 63) {
build = 'tags/version-1.0.' + value;
} else if (key == 'build') {
if (value == 64) {
tag = 'tags/version-1.0.' + value;
} else if (value >= 63) {
tag = 'tags/version-1.0.' + value + '/h2';
}
}
}
// -->
......@@ -24,7 +28,7 @@ Initial Developer: H2 Group
<pre>
<table width="100%">
<tr>
<td style="width: 50px">
<td style="width: 50px; vertical-align: top">
<script type="text/javascript">
// <!--
for(var i = 1; i <= 5000; i++) {
......@@ -39,7 +43,7 @@ Initial Developer: H2 Group
// -->
</script>
</td>
<td width="92%" style="vertical-align: top;">
<td width="92%" style="vertical-align: top">
<iframe id="source" frameborder="0" marginwidth="0" marginheight="0" width="100%" height="80000px" scrolling="no" src="">
</iframe>
</td>
......@@ -49,7 +53,7 @@ Initial Developer: H2 Group
<script type="text/javascript">
// <!--
var source = document.getElementById('source');
source.src = 'http://h2database.googlecode.com/svn/' + build + '/h2/src/main/' + file;
source.src = 'http://h2database.googlecode.com/svn/' + tag + '/src/main/' + file;
document.location = '#here';
// -->
</script>
......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- can not use doctype -->
<!--
Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Error Analytics
</title><link rel="stylesheet" type="text/css" href="stylesheet.css" />
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Online Error Analyzer</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
<style type="text/css">
a {
text-decoration: underline;
......@@ -23,8 +23,10 @@ a.disabled {
font-weight: normal;
color: lightGray;
}
input {
vertical-align: middle;
}
</style>
</head><body style="margin:20px">
<script type="text/javascript">
//<!--
......@@ -33,6 +35,11 @@ function $(id) {
return document.getElementById(id);
}
var lastError = '';
var hasData = false;
var errorCode = '0';
var build = '';
function goDetails(code) {
code = code.replace('21S', '210');
code = code.replace('42S', '421');
......@@ -42,15 +49,33 @@ function goDetails(code) {
$('more').src = 'http://h2database.com/javadoc/org/h2/constant/ErrorCode.html#c' + code;
}
function go(url, file) {
function go(file, line) {
var url;
if ($('rawSource').checked == true) {
url = "source.html?file=";
url += file;
url += "&line=";
url += line;
url += "&build=";
url += build;
} else {
var tag = 'trunk/h2';
if (build == 64) {
tag = 'tags/version-1.0.' + build;
} else if (build >= 63) {
tag = 'tags/version-1.0.' + build + '/h2';
}
url = 'http://code.google.com/p/h2database/source/browse/';
url += tag;
url += '/src/main/';
url += file;
url += '#';
url += line;
}
$('file').innerHTML = file;
$('code').src = url;
}
var lastError = '';
var hasData = false;
var errorCode = '0';
function convert() {
try {
var s = $('error').value;
......@@ -79,11 +104,12 @@ function convert() {
}
idx = 0;
while (true) {
var start = s.indexOf("org.h2.", idx);
var start = s.indexOf("at org.h2.", idx);
if (start < 0) {
result += s.substring(idx);
break;
}
start += 3; // skip 'at '
if (idx > 0) {
result += s.substring(idx, start);
}
......@@ -101,22 +127,13 @@ function convert() {
var file = element.substring(open + 1, colon);
var lineNumber = element.substring(colon + 1, element.length - 1);
var fullFileName = packageName.replace(/\./g, '/') + "/" + file;
var url = "http://h2database.com/html/source.html?file=";
url += fullFileName;
url += "&line=";
url += lineNumber;
url += "&build=";
url += build;
result += "<a href='javascript:go(\"";
result += url;
result += "\",\"";
result += fullFileName;
result += "\")'>";
result += "\",";
result += lineNumber;
result += ")'>";
result += element;
result += "</a>";
hasData = true;
idx = end + 1;
}
......@@ -143,20 +160,32 @@ function select(id) {
if(id=='details') {
goDetails(errorCode);
}
sizeTextArea();
}
function sizeTextArea() {
var height=document.body.clientHeight;
var error = $('error');
error.style.height = (height - error.offsetTop - 25) + 'px';
var more = $('more');
more.style.height = (height - more.offsetTop - 25) + 'px';
var code = $('code');
code.style.height = (height - $('sourceTable').offsetTop - code.offsetTop - 30) + 'px';
}
//-->
</script>
<h1>Error Analytics</h1>
</head>
<body style="margin:20px" onresize="sizeTextArea();" onload="sizeTextArea();" >
<h1>Online Error Analyzer</h1>
<h2>
<a href="javascript:select('input')" id="inputTab">Input</a>&nbsp;
<a href="javascript:select('details')" id="detailsTab">Details</a>&nbsp;
<a href="javascript:select('source')" id="sourceTab">Source Code</a>
</h2>
<hr/>
<div id="input">
<p>Fill in the error message and stack trace and click on 'Details' or 'Source Code': </p>
<textarea id="error" cols="100" style="width: 100%; overflow: auto;" rows="20"
......@@ -169,32 +198,31 @@ function select(id) {
>
</textarea>
</div>
<div id="details">
<p><b>Error Code: </b><span id="errorCode"></span></p>
<p><b>Product Version: </b><span id="version"></span></p>
<p><b>Message: </b></p>
<p id="message"></p>
<p><b>More Information:</b></p>
<iframe id="more" frameborder="0" marginwidth="0" marginheight="0" width="100%" height="300px" src="">
<iframe id="more" frameborder="0" marginwidth="0" marginheight="0" width="100%" height="100px" src="">
</iframe>
</div>
<div id="source">
<table style="border:0px" width="100%"><tr><td style="border:0px" width="30px">
<table id="sourceTable" style="border:0px" width="100%"><tr>
<td style="border:0px" width="30px">
<p><b>Stack Trace: </b></p>
<p id="links"></p>
</td><td style="border:0px" width="90%">
<p><b>Source File: </b><span id="file"></span></p>
<iframe id="code" frameborder="0" marginwidth="0" marginheight="0" width="100%" height="300px" src="">
<p><b>Source File: </b><span id="file"></span><br />
Raw file <input type="checkbox" id="rawSource" /> (fast; only Firefox)</p>
<iframe id="code" frameborder="0" marginwidth="0" marginheight="0" width="100%" height="100px" src="">
</iframe>
</td></tr></table>
</td>
</tr></table>
</div>
<script type="text/javascript">
//<!--
select('input');
//-->
</script>
</body></html>
\ No newline at end of file
......@@ -25,7 +25,7 @@
90002=Method is only allowed for a query. Use execute or executeUpdate instead of executeQuery
90003=Hexadecimal string with odd number of characters\: {0}
90004=Hexadecimal string contains non-hex character\: {0}
90005=Value too long for column {0}
90005=Value too long for column {0}\: {1}
90006=NULL not allowed for column {0}
90007=The object is already closed
90008=Invalid value {0} for parameter {1}
......
......@@ -29,7 +29,7 @@ package org.h2.engine;
* build.html
* mainWeb.html
* download.html
* - Maybe increase TCP_DRIVER_VERSION
* - Maybe increase TCP_DRIVER_VERSION (but clients must be backwards compatible!)
* - Check code coverage
* - No " Message.get" (must be "throw Message.get")
* - No TODO in the docs, remove @~ in .utf8.txt files
......
......@@ -151,161 +151,32 @@ java org.h2.test.TestAll timer
/*
add sourceError as an official link
corruption should be it's own error code(s)
Online Error Analyzer
add a 'kill process while altering tables' test case
1.5 tool: closeSilently(s1, s2,...)
implement max_query_time and use it for TestCrashAPI
document IKVM
adjust cache memory usage
simple pure java config file (interpreted)
orphan?
javadoc: design patterns
sourceforge h2 database
update wikipedia
try https://hudson.dev.java.net/
quaere:
where(test(a).bigger(b));
where(test(a, BIGGER, b));
where(test(a).bigger(b).and(a).smaller(b));
Roadmap:
Move Maven 2 repository from hsql.sf.net to h2database.sf.net
History:
Test Recovery with MAX_LOG_FILE_SIZE=1; test with various log file sizes
Test H2 on OS X (result are here: h2-2007-12-27_test.zip)
Web site:
link to history page, bug page
Add a link to the google code bug page
test DbStarter
----
A file is sent although the Japanese translation has not been completed yet.
----
link from h2 console to sourceError
add sourceError as an official link
Adjust cache memory usage
At startup, when corrupted, say if LOG=0 was used before
slow:
select ta.attname, ia.attnum, ic.relname
from pg_catalog.pg_attribute ta, pg_catalog.pg_attribute ia, pg_catalog.pg_class ic, pg_catalog.pg_index i, pg_catalog.pg_namespace n
where ic.relname = 'dummy_pkey'
AND n.nspname = ''
AND ic.oid = i.indexrelid
AND n.oid = ic.relnamespace
AND ia.attrelid = i.indexrelid
AND ta.attrelid = i.indrelid
AND ta.attnum = i.indkey[ia.attnum-1]
AND (NOT ta.attisdropped)
AND (NOT ia.attisdropped)
order by ia.attnum;
DROP TABLE IF EXISTS TEST;
CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR);
@LOOP 1000000 INSERT INTO TEST VALUES(?, SPACE(100000));
<stop>
<reconnect>
out of memory?
don't create @~ of not translated
extend tests that simulate power off
HSQLDB compatibility:
Openfire server uses this script to setup a user permissions
on the fresh-installed server. The database is [current] HSQLDB :
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET SCHEMA PUBLIC
Unfortunately, this does not work in H2
Wrong user name or password [08004-55]
rename Performance > Comparison [/Compatibility]
move Comparison to Other Database Engines > Comparison
move Products that Work with H2 > Comparison
move Performance Tuning > Advanced Topics
testHalt
java org.h2.test.TestAll halt
Extend tests that simulate power off
Automate real power off tests
timer test
// test with garbage at the end of the log file (must be consistently detected as such)
// TestRandomSQL is too random; most statements fails
// extend the random join test that compared the result against PostgreSQL
// long running test with the same database
// repeatable test with a very big database (making backups of the database files)
ftp server: problem with multithreading?
h2\src\docsrc\html\images\SQLInjection.txt
Convert SQL-injection-2.txt to html document, include SQLInjection.java sample
send http://thecodist.com/fiche/thecodist/article/sql-injections-how-not-to-get-stuck to JavaWorld, TheServerSide,
Send SQL Injection solution proposal to PostgreSQL, MySQL, Derby, HSQLDB,...
MySQL, PostgreSQL
READ_TEXT(fileName String) returning a CLOB.
I am not sure if this will read the CLOB in memory however.
Improve LOB in directories performance
http://fastutil.dsi.unimi.it/
http://javolution.org/
http://joda-time.sourceforge.net/
http://ibatis.apache.org/
http://www.igniterealtime.org/projects/openfire/index.jsp
translation:
src/org.h2.res/help.csv (using ${.} as in .jsp?)
javadocs (using generated ${.} ?)
glossary
spell check / word list per language
translated .pdf
*/
// run TestHalt
// GroovyServlet
// Cluster: hot deploy (adding a node on runtime)
// test with PostgreSQL Version 8.2
// http://dev.helma.org/Wiki/RhinoLoader
// test with garbage at the end of the log file (must be consistently detected as such)
// test LIKE: compare against other databases
Test with many columns (180), create index
add a 'kill process while altering tables' test case
Test Recovery with MAX_LOG_FILE_SIZE=1; test with various log file sizes
// TestRandomSQL is too random; most statements fails
Roadmap:
// extend the random join test that compared the result against PostgreSQL
// long running test with the same database
History:
// repeatable test with a very big database (making backups of the database files)
/*
Features of H2
- Case insensitive string data type
- GROUP_CONCAT aggregate, User defined aggregates
- Fulltext search
- MVCC
- User defined types
*/
if (args.length > 0) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论