提交 86cb1379 authored 作者: Thomas Mueller's avatar Thomas Mueller

--no commit message

--no commit message
上级 e5e6830b
......@@ -35,6 +35,8 @@ Hypersonic SQL or HSQLDB. H2 is built from scratch.
<h3>Version 1.0 (Current)</h3>
<h3>Version 1.0 / TODO</h3><ul>
<li>Fixed a problem where data that was in the log file did not end up in the database (recovery failure) a crash, if an index was deleted previously.
<li>SCRIPT NODATA now writes the row count for each table (this simplifies comparing databases).
<li>Selecting a column using the syntax schemaName.tableName.columName did not work in all cases.
<li>Can now parse timestamps with timezone information (Z or +/-hh:mm) and dates before year 1.
However dates before year 1 are not formatted correctly (this is a Java problem).
......
......@@ -194,7 +194,12 @@ public class Script extends ScriptBase {
}
String tableType = table.getTableType();
add(sql, false);
if(data && Table.TABLE.equals(tableType)) {
if(Table.TABLE.equals(tableType)) {
if(table.canGetRowCount()) {
String rowcount = "-- " + table.getRowCount() + " = SELECT COUNT(*) FROM " + table.getSQL();
add(rowcount, false);
}
if(data) {
PlanItem plan = table.getBestPlanItem(session, null);
Index index = plan.getIndex();
Cursor cursor = index.find(session, null, null);
......@@ -234,6 +239,7 @@ public class Script extends ScriptBase {
add(s, true);
}
}
}
ObjectArray indexes = table.getIndexes();
for(int j=0; indexes != null && j<indexes.size(); j++) {
Index index = (Index) indexes.get(j);
......
......@@ -4,7 +4,10 @@
*/
package org.h2.command.dml;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.sql.SQLException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
......@@ -127,13 +130,15 @@ public class TransactionCommand extends Prepared {
return 0;
}
private void backupTo(String fileName) {
// ZipOutputStream out = new ZipOutputStream("test.zip");
// out.putNextEntry(arg0)
private void backupTo(String fileName) throws SQLException {
// int todoAddSpecialSQLStatement;
// FileOutputStream fileout = new FileOutputStream("test.zip");
// ZipOutputStream out = new ZipOutputStream(fileout);
// out.putNextEntry(new ZipEntry("test.data.db"));
// DiskFile file = session.getDatabase().getDataFile();
//// session.getDatabase().getLog().incStopDeleteFiles(true);
// // TODO Auto-generated method stub
//// session.getDatabase().getLog().setStopDeleteFiles(false);
// session.getDatabase().getLog().incStopDeleteFiles(true);
// TODO Auto-generated method stub
// session.getDatabase().getLog().setStopDeleteFiles(false);
//
}
......
......@@ -48,8 +48,6 @@ package org.h2.engine;
* - TestSystemExit
* - Test with hibernate
* - Scan for viruses
*
* - Send a mail to Google Groups
* - newsletter: prepare, send (always send to BCC!!)
* - http://maven.apache.org/guides/mini/guide-ibiblio-upload.html
*
......@@ -57,8 +55,8 @@ package org.h2.engine;
*/
public class Constants {
public static final int BUILD_ID = 36;
private static final String BUILD = "2007-01-02";
public static final int BUILD_ID = 38;
private static final String BUILD = "2007-01-10";
public static final int VERSION_MAJOR = 1;
public static final int VERSION_MINOR = 0;
......@@ -204,7 +202,7 @@ public class Constants {
public static final String SCRIPT_SQL = "script.sql";
// for testing only
public static int CACHE_MIN_RECORDS = 16;
public static final int CACHE_MIN_RECORDS = 16;
public static final int MIN_WRITE_DELAY = getIntSetting("h2.minWriteDelay", 5);
......
......@@ -9,7 +9,6 @@ import java.util.HashMap;
import org.h2.command.Parser;
import org.h2.command.dml.Select;
import org.h2.engine.Constants;
import org.h2.engine.Database;
import org.h2.engine.Session;
import org.h2.message.Message;
......@@ -21,7 +20,6 @@ import org.h2.table.Table;
import org.h2.table.TableFilter;
import org.h2.value.Value;
/**
* @author Thomas
*/
......@@ -60,8 +58,7 @@ public class ExpressionColumn extends Expression {
if(tableAlias != null) {
sql = Parser.quoteIdentifier(tableAlias) + "." + sql;
}
if(schemaName != null && !schemaName.equals(Constants.SCHEMA_MAIN)) {
int todoTempSolution;
if(schemaName != null) {
sql = Parser.quoteIdentifier(schemaName) + "." + sql;
}
return sql;
......
......@@ -84,9 +84,10 @@ public class BtreeIndex extends Index implements RecordReader {
private void setChanged(Session session) throws SQLException {
if(head != null && !database.getLogIndexChanges()) {
// maybe there was a checkpoint, need to invalidate the summary in this case too
database.invalidateIndexSummary();
if(head.getConsistent()) {
deletePage(session, head);
database.invalidateIndexSummary();
head.setConsistent(false);
flushHead(session);
}
......
......@@ -196,7 +196,7 @@ public class DiskFile implements CacheWriter {
ObjectArray list = database.getAllStorages();
for(int i=0; i<list.size(); i++) {
Storage s = (Storage)list.get(i);
if(s.getDiskFile() == this) {
if(s != null && s.getDiskFile() == this) {
database.removeStorage(s.getId(), this);
}
}
......
......@@ -717,7 +717,7 @@ public class Recover implements DataHandler {
MetaRecord m = (MetaRecord) schema.get(i);
writer.println(m.getSQL() + ";");
}
for(Iterator it = tableMap.keySet().iterator(); it.hasNext(); ) {
for(Iterator it = tableMap.entrySet().iterator(); it.hasNext(); ) {
Map.Entry entry = (Entry) it.next();
Integer objectId = (Integer) entry.getKey();
String name = (String) entry.getValue();
......
/*
* Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.util;
import java.sql.Connection;
......
......@@ -7,7 +7,6 @@ package org.h2.test;
import java.sql.SQLException;
import java.util.Properties;
import org.h2.engine.Constants;
import org.h2.server.TcpServer;
import org.h2.test.jdbc.*;
import org.h2.test.db.*;
......@@ -80,93 +79,20 @@ java -Xmx512m -Xrunhprof:cpu=samples,depth=8 org.h2.tools.RunScript -url jdbc:h2
public boolean jdk14 = true;
private Server server;
private int oldCacheMin;
public static void main(String[] args) throws Exception {
long time = System.currentTimeMillis();
TestAll test = new TestAll();
test.printSystem();
// > Of course performance is relative. There are situations where a tractor is faster than a car.
// > It would be good to have a test case where Derby is faster, tell me if you have one.
// >
//
// I gave a specific database server stress test scenario case when I mentioned TPC-B (this is just 1 particular case) - A tractor does not compete in some F1 race and that is where your analogy is flawed because Derby actually performs more than decently in that context - Like I said, embedded applications is one particular facet of today's applications but that does not represent all of the applications out there - Everything is relevant to the particular tests one is defining and running (yours in that case) but that does not represent how a database performs in some other contexts (embedded or not).
// > Currently H2 doesn't support row locks. But I don't think that most embedded applications need it.
// > Anyway, the trend is towards multi version concurrency control (MVCC), and that's the next big
// > thing that will be implemented in H2 (however this will take some time).
// >
//
// Good to hear this - Row-lock in Derby has been implemented since the first incarnation of Cloudscape in 96' - MVCC is good but not for applications which are doing intense updates and writes - The reason is pretty obvious versus a lock concurrency scheme and that is why "some" database(s) are supporting both approaches.
//
// > Durability: The default isolation level of Derby is read committed, right?
// > As far as I understand it, for fully-ACID compliant the isolation level should
// > be serialized (see Isolation in Wikipedia). I'm not sure if supporting 'full ACID'
// > compliance by default would make sense. I have implemented and run a durability test
// > with various databases and the file system (a simple power-off test using two computers),
// > and things don't look good. The problem is, even if the database tries to flush to disk
// > for each commit, the operating system and/or hard disk does not always do that.
// > For details see ACID. If you really want to enforce flushing to disk, you need to wait
// > at least 0.1 seconds per transaction, and even Derby doesn't do that by default.
// > That means, even Derby does *not* guarantee that all committed transactions will survive
// > a power failure or an application crash. If you have other results using common
// > hardware / default settings and this test, or if you find a way that is faster,
// > please tell me! Hopefully the next generation hard drives (with integrated flash memory)
// > will be better... But if you need 'no single point of failure' then you anyway need
// > clustering / mirroring. H2 support clustering, Derby does not.
// >
//
// The golden rule is that you should not rely on the file system for write operations unless you have some means to force-flush & check I/O completions - that is why Unix Raw Devices were made available almost 20 years ago so that one could bypass the FS and use Async I/O's at the kernel level to retrieve status on a particular I/O (completion) and made sure it made it to disk(s) - there are technics such as write through-case where you don't rely on I/O write operations to be handled at all by the FS buffer (as it is bypassed) but rather expect a write I/O to be written to disks everytime you request it - it is a binary operation, either it works or not and you'd get an I/O error if an I/O has not complete to disk. Relying on the FS and some UPS hardware device is ok _but_ that is NOT what you usually find in every embedded devices or client desktop - You can't expect everyone to have a UPS to alleviate some issues due to a database system loosing committed rtansaction and therefore not handling ACID durability as it should and it is expected. I've worked at many database companies and dealing with critical-level type of applications and if I had told the customers that could loose committed transactions due to an application or system crash, then I don't think these database companies would have been as successful as they have been. Some things such as not loosing committed transactions have to be handled at the database level and that is what durability is all about. Today, Derby will not loose transactions that have been committed whether you have some UPS or not.
//
// > Download size: I think David was talking about size of product download (16 MB for
// > Derby versus 3 MB for H2) not about the jar file size (2.2 MB for Derby versus 1 MB
// > for H2). By the way, the H2 jar also contains the Console web application and web server,
// > and other tools. And debugging info (line numbers) is switched on in H2, and switched off
// > in Derby. But I agree the jar file size is not the most important factor.
// >
//
// Download size is irrelevant in today's world except for web applications and in this case, one does NOT have to download the whole product - for embedded applications, it is only 1 JAR file basically and whether it is H2 or Derby, the size is not really an issue (as I mentioned in some earlier thread)
//
// > Community: Yes, Derby has more developers (4, according to Ohloh, not sure if
// > this is correct), but that doesn't necessarily mean a better product.
// > Development of Derby started in 1996 or earlier, while H2 started in 2004
// > (it is now one year online). H2 is a very young product, and currently doesn't
// > have professional support from a bigger company. This will be available in the
// > future when there is demand. You could also say Derby has a liability (big, old,
// > slow code base). Anyway, H2 also has quite a big community, given how young it is.
// > But of course Derby has the advantage the Apache name ('branding'), but this doesn't
// > mean it's better (there are many failed Apache projects).
// >
//
// Derby has more than 30+ contributors - what you saw in Ohloh are the top committers for 2007 (new year eh) and this is why it is 4 - last year 23 committers checked-in code, so I'll let you do the stats as far as how many contributors there could be - not every contributor is a committer to the project - that's how Apache works and a lot of other open source projects. Derby has developers from Sun (Java DB), IBM (Cloudscape) as well as other independent contributors or companies. Derby is _not_ big - The footprint is not big (2MB) for the engine compared to some other databases out there and is more than adequate for a lot of today's embedded applications. Apache is not just about branding - it has and continue to be a set of communities for many successful projects with defined rules and guidelines. At the end of the day, it is all about Open Source projects and quite a few of them have made lots of noise in the past many years and still continue to do so.
//
// > But only time can tell which database is more successful.
// >
//
//
// Again, I was not bashing H2 if this is the way you felt - I clearly mentioned that one has to know what type of database(s) one is dealing with before claiming it is faster for *all* use case scenarios out there.
//
// synth.TestHaltReconnect
// test big:false net:false cipher:null memory:false log:0 diskResult:false
// ERROR: query was too quick; result: 0 time:1532 java.lang.Exception: query was too quick; result: 0 time:1532 ------------------------------
// test big:false net:false cipher:null memory:false log:1 diskResult:false
// ERROR: query was too quick; result: 0 time:1853 java.lang.Exception: query was too quick; result: 0 time:1853 ------------------------------
// test big:false net:false cipher:null memory:false log:2 diskResult:false
// ERROR: query was too quick; result: 0 time:1152 java.lang.Exception: query was too quick; result: 0 time:1152 ------------------------------
// test big:false net:false cipher:null memory:false log:0 diskResult:false
// ERROR: query was too quick; result: 0 time:1462 java.lang.Exception: query was too quick; result: 0 time:1462 ------------------------------
// test big:false net:false cipher:null memory:false log:2 diskResult:false
// ERROR: query was too quick; result: 0 time:1692 java.lang.Exception: query was too quick; result: 0 time:1692 ------------------------------
// test big:true net:false cipher:null memory:false log:0 diskResult:false
// ERROR: query was too quick; result: 0 time:952 java.lang.Exception: query was too quick; result: 0 time:952 ------------------------------
// test big:true net:false cipher:null memory:false log:1 diskResult:false
// ERROR: query was too quick; result: 0 time:1171 java.lang.Exception: query was too quick; result: 0 time:1171 ------------------------------
// test big:true net:false cipher:null memory:false log:2 diskResult:false
// ERROR: query was too quick; result: 0 time:1502 java.lang.Exception: query was too quick; result: 0 time:1502 ------------------------------
// test big:true net:false cipher:null memory:false log:0 diskResult:false
// ERROR: query was too quick; result: 0 time:1372 java.lang.Exception: query was too quick; result: 0 time:1372 ------------------------------
// reclaim empty space without closing the database
// Hot backup (incremental backup, online backup): backup data, log, index? files
// Cluster: hot deploy (adding a node on runtime)
// add TPC-B style benchmark: download/tpcb_current.pdf
// delay reading the row if data is not required
// document compensations
......@@ -533,19 +459,12 @@ java -Xmx512m -Xrunhprof:cpu=samples,depth=8 org.h2.tools.RunScript -url jdbc:h2
server = null;
}
}
if(this.diskResult) {
oldCacheMin = Constants.CACHE_MIN_RECORDS;
Constants.CACHE_MIN_RECORDS = 0;
}
}
public void afterTest() {
if(networked && server != null) {
server.stop();
}
if(this.diskResult) {
Constants.CACHE_MIN_RECORDS = oldCacheMin;
}
}
private void printSystem() {
......
......@@ -147,7 +147,7 @@ public class TestCases extends TestBase {
for(int i=0; i<1000; i++) {
stat.execute("INSERT INTO TEST() VALUES()");
}
final boolean[] stopped = new boolean[1];
final SQLException[] stopped = new SQLException[1];
Thread t = new Thread(new Runnable() {
public void run() {
try {
......@@ -157,9 +157,9 @@ public class TestCases extends TestBase {
time = System.currentTimeMillis() - time;
TestBase.logError("query was too quick; result: " + rs.getInt(1) + " time:" + time, null);
} catch(SQLException e) {
stopped[0] = e;
// ok
}
stopped[0] = true;
}
});
t.start();
......@@ -167,8 +167,10 @@ public class TestCases extends TestBase {
long time = System.currentTimeMillis();
conn.close();
t.join(5000);
if(!stopped[0]) {
if(stopped[0] == null) {
error("query still running");
} else {
checkNotGeneralException(stopped[0]);
}
time = System.currentTimeMillis() - time;
if(time > 5000) {
......
......@@ -18,6 +18,7 @@ import org.h2.jdbc.JdbcConnection;
import org.h2.test.TestBase;
import org.h2.tools.FileBase;
import org.h2.util.FileUtils;
import org.h2.util.JdbcUtils;
public class TestPowerOff extends TestBase {
......@@ -36,6 +37,7 @@ public class TestPowerOff extends TestBase {
dir = "inmemory:";
}
url = dir + "/" + dbName + ";file_lock=no";
testSummaryCrash();
testCrash();
testShutdown();
testNoIndexFile();
......@@ -43,6 +45,50 @@ public class TestPowerOff extends TestBase {
testPersistentTables();
}
private void testSummaryCrash() throws Exception {
if(config.networked) {
return;
}
deleteDb(dir, dbName);
Connection conn = getConnection(url);
Statement stat = conn.createStatement();
for(int i=0; i<10; i++) {
stat.execute("CREATE TABLE TEST" + i + "(ID INT PRIMARY KEY, NAME VARCHAR)");
for(int j=0; j<10; j++) {
stat.execute("INSERT INTO TEST" + i + " VALUES("+j+", 'Hello')");
}
}
for(int i=0; i<10; i+=2) {
stat.execute("DROP TABLE TEST" + i);
}
stat.execute("SET WRITE_DELAY 0");
stat.execute("CHECKPOINT");
for(int j=0; j<10; j++) {
stat.execute("INSERT INTO TEST1 VALUES("+(10+j)+", 'World')");
}
stat.execute("SHUTDOWN IMMEDIATELY");
JdbcUtils.closeSilently(conn);
conn = getConnection(url);
stat = conn.createStatement();
for(int i=1; i<10; i+=2) {
ResultSet rs = stat.executeQuery("SELECT * FROM TEST" + i + " ORDER BY ID");
for(int j=0; j<10; j++) {
rs.next();
check(rs.getInt(1), j);
check(rs.getString(2), "Hello");
}
if(i == 1) {
for(int j=0; j<10; j++) {
rs.next();
check(rs.getInt(1), j + 10);
check(rs.getString(2), "World");
}
}
checkFalse(rs.next());
}
conn.close();
}
private void testCrash() throws Exception {
if(config.networked) {
return;
......
......@@ -353,9 +353,10 @@ insert into test values('AA');
script nodata nopasswords nosettings;
> SCRIPT
> ------------------------------------------------------------------------------
> -- 2 = SELECT COUNT(*) FROM PUBLIC.TEST
> CREATE MEMORY TABLE PUBLIC.TEST( NAME VARCHAR CHECK (NAME = UPPER(NAME)) )
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> rows: 2
> rows: 3
drop table test;
> ok
......@@ -429,6 +430,8 @@ select * from information_schema.domains;
script nodata nopasswords nosettings;
> SCRIPT
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> -- 1 = SELECT COUNT(*) FROM PUBLIC.ADDRESS
> -- 1 = SELECT COUNT(*) FROM PUBLIC.TEST
> CREATE DOMAIN EMAIL AS VARCHAR(200) CHECK (POSITION('@', VALUE) > 1)
> CREATE DOMAIN GMAIL AS VARCHAR(200) DEFAULT '@gmail.com' CHECK ((POSITION('@', VALUE) > 1) AND (POSITION('gmail', VALUE) > 1))
> CREATE DOMAIN STRING AS VARCHAR(255) DEFAULT '' NOT NULL
......@@ -441,7 +444,7 @@ script nodata nopasswords nosettings;
> CREATE PRIMARY KEY ON PUBLIC.ADDRESS(ID)
> CREATE SEQUENCE PUBLIC.SYSTEM_SEQUENCE_0 START WITH 4 BELONGS_TO_TABLE
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> rows: 12
> rows: 14
drop table test;
> ok
......@@ -491,10 +494,11 @@ create memory table a(k10 blob(10k), m20 blob(20m), g30 clob(30g));
script NODATA NOPASSWORDS NOSETTINGS drop;
> SCRIPT
> -----------------------------------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.A
> CREATE MEMORY TABLE PUBLIC.A( K10 BLOB(10240), M20 BLOB(20971520), G30 CLOB(2147483647) )
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> DROP TABLE IF EXISTS PUBLIC.A
> rows: 3
> rows: 4
create table b();
> ok
......@@ -1062,8 +1066,8 @@ explain select * from one natural join two left join two three on
one.id=three.id left join one four on two.id=four.id where three.val
is null or three.val>=DATE'2006-07-01';
> PLAN
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> SELECT ONE.ID, TWO.ID, TWO.VAL, THREE.ID, THREE.VAL, FOUR.ID FROM PUBLIC.ONE /* PUBLIC.ONE_TABLE_SCAN */ INNER JOIN PUBLIC.TWO /* PUBLIC.PRIMARY_KEY_2: ID = ONE.ID AND ID = ONE.ID */ /* WHERE ONE.ID = TWO.ID*/ LEFT OUTER JOIN PUBLIC.TWO THREE /* PUBLIC.PRIMARY_KEY_2: ID = ONE.ID */ ON ONE.ID = THREE.ID LEFT OUTER JOIN PUBLIC.ONE FOUR /* PUBLIC.PRIMARY_KEY_1: ID = TWO.ID */ ON TWO.ID = FOUR.ID WHERE (ONE.ID = TWO.ID) AND ((THREE.VAL IS NULL) OR (THREE.VAL >= DATE '2006-07-01'))
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> SELECT ONE.ID, TWO.ID, TWO.VAL, THREE.ID, THREE.VAL, FOUR.ID FROM PUBLIC.ONE /* PUBLIC.ONE_TABLE_SCAN */ INNER JOIN PUBLIC.TWO /* PUBLIC.PRIMARY_KEY_2: ID = PUBLIC.ONE.ID AND ID = PUBLIC.ONE.ID */ /* WHERE PUBLIC.ONE.ID = PUBLIC.TWO.ID*/ LEFT OUTER JOIN PUBLIC.TWO THREE /* PUBLIC.PRIMARY_KEY_2: ID = ONE.ID */ ON ONE.ID = THREE.ID LEFT OUTER JOIN PUBLIC.ONE FOUR /* PUBLIC.PRIMARY_KEY_1: ID = TWO.ID */ ON TWO.ID = FOUR.ID WHERE (PUBLIC.ONE.ID = PUBLIC.TWO.ID) AND ((THREE.VAL IS NULL) OR (THREE.VAL >= DATE '2006-07-01'))
> rows: 1
-- Query #4: same as #3, but the joins have been manually re-ordered
......@@ -1488,6 +1492,11 @@ CREATE memory TABLE sp2(sno VARCHAR(5), pno VARCHAR(5), qty INT, constraint c1 F
script NOPASSWORDS NOSETTINGS;
> SCRIPT
> ---------------------------------------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.P
> -- 0 = SELECT COUNT(*) FROM PUBLIC.S
> -- 0 = SELECT COUNT(*) FROM PUBLIC.SP1
> -- 0 = SELECT COUNT(*) FROM PUBLIC.SP2
> -- 0 = SELECT COUNT(*) FROM PUBLIC.TEST
> ALTER TABLE PUBLIC.SP1 ADD CONSTRAINT PUBLIC.CONSTRAINT_1 FOREIGN KEY(SNO) REFERENCES PUBLIC.S(SNO)
> ALTER TABLE PUBLIC.SP1 ADD CONSTRAINT PUBLIC.CONSTRAINT_2 FOREIGN KEY(PNO) REFERENCES PUBLIC.P(PNO)
> ALTER TABLE PUBLIC.SP2 ADD CONSTRAINT PUBLIC.C1 FOREIGN KEY(SNO) REFERENCES PUBLIC.S(SNO)
......@@ -1503,7 +1512,7 @@ script NOPASSWORDS NOSETTINGS;
> CREATE PRIMARY KEY ON PUBLIC.SP2(SNO, PNO)
> CREATE PRIMARY KEY ON PUBLIC.TEST(ID)
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> rows: 15
> rows: 20
drop table test;
> ok
......@@ -1781,6 +1790,7 @@ create trigger testtrigger before insert on s.test call "org.h2.test.db.TestTrig
script NOPASSWORDS NOSETTINGS drop;
> SCRIPT
> -------------------------------------------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM S.TEST
> CREATE INDEX S.INDEXID ON S.TEST(ID)
> CREATE MEMORY TABLE S.TEST( ID INT )
> CREATE SCHEMA S AUTHORIZATION SA
......@@ -1790,7 +1800,7 @@ script NOPASSWORDS NOSETTINGS drop;
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> DROP SEQUENCE IF EXISTS S.SEQ
> DROP TABLE IF EXISTS S.TEST
> rows: 9
> rows: 10
drop trigger s.testtrigger;
> ok
......@@ -1816,6 +1826,7 @@ alter table test alter column id rename to i;
script NOPASSWORDS NOSETTINGS drop;
> SCRIPT
> --------------------------------------------------------------------------------------------------
> -- 1 = SELECT COUNT(*) FROM PUBLIC.TEST
> ALTER TABLE PUBLIC.TEST ADD CONSTRAINT PUBLIC.ABC FOREIGN KEY(I) REFERENCES PUBLIC.TEST(I)
> CREATE INDEX PUBLIC.IDXNID ON PUBLIC.TEST(NAME, I)
> CREATE MEMORY TABLE PUBLIC.TEST( I INT NOT NULL, NAME VARCHAR(255), Y INT AS (I + 1) )
......@@ -1823,7 +1834,7 @@ script NOPASSWORDS NOSETTINGS drop;
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> DROP TABLE IF EXISTS PUBLIC.TEST
> INSERT INTO PUBLIC.TEST(I, NAME, Y) VALUES(1, 'Hello', 2)
> rows: 7
> rows: 8
INSERT INTO TEST(i, name) VALUES(2, 'World');
> update count: 1
......@@ -2163,6 +2174,7 @@ create sequence testseq;
script NODATA NOPASSWORDS NOSETTINGS drop;
> SCRIPT
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.TEST
> CREATE MEMORY TABLE PUBLIC.TEST( ID INT DEFAULT (NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_0) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.SYSTEM_SEQUENCE_0, IMIE VARCHAR(10) )
> CREATE PRIMARY KEY ON PUBLIC.TEST(ID)
> CREATE SEQUENCE PUBLIC.SYSTEM_SEQUENCE_0 START WITH 1 BELONGS_TO_TABLE
......@@ -2170,7 +2182,7 @@ script NODATA NOPASSWORDS NOSETTINGS drop;
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> DROP SEQUENCE IF EXISTS PUBLIC.TESTSEQ
> DROP TABLE IF EXISTS PUBLIC.TEST
> rows: 7
> rows: 8
drop sequence testseq;
> ok
......@@ -2851,6 +2863,7 @@ insert into test values(2, 'Cafe', X'caffee');
script nopasswords nosettings;
> SCRIPT
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> -- 3 = SELECT COUNT(*) FROM PUBLIC.TEST
> CREATE MEMORY TABLE PUBLIC.TEST( ID BIGINT DEFAULT (NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_0) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.SYSTEM_SEQUENCE_0, C CLOB, B BLOB )
> CREATE PRIMARY KEY ON PUBLIC.TEST(ID)
> CREATE SEQUENCE PUBLIC.SYSTEM_SEQUENCE_0 START WITH 3 BELONGS_TO_TABLE
......@@ -2858,7 +2871,7 @@ script nopasswords nosettings;
> INSERT INTO PUBLIC.TEST(ID, C, B) VALUES(0, NULL, NULL)
> INSERT INTO PUBLIC.TEST(ID, C, B) VALUES(1, '', X'')
> INSERT INTO PUBLIC.TEST(ID, C, B) VALUES(2, 'Cafe', X'caffee')
> rows: 7
> rows: 8
drop table test;
> ok
......@@ -3301,10 +3314,11 @@ CREATE MEMORY TABLE TEST(ID INT PRIMARY KEY);
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> ------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.TEST
> CREATE MEMORY TABLE PUBLIC.TEST( ID INT NOT NULL )
> CREATE PRIMARY KEY ON PUBLIC.TEST(ID)
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> rows: 3
> rows: 4
ALTER TABLE TEST ADD CREATEDATE VARCHAR(255) DEFAULT '2001-01-01' NOT NULL;
> ok
......@@ -3384,6 +3398,8 @@ SELECT * FROM TESTSEQ ORDER BY ID;
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> -- 1 = SELECT COUNT(*) FROM PUBLIC.TEST
> -- 4 = SELECT COUNT(*) FROM PUBLIC.TESTSEQ
> CREATE INDEX PUBLIC.IDXNAME ON PUBLIC.TEST(NAME)
> CREATE MEMORY TABLE PUBLIC.TEST( ID INT NOT NULL, NAME VARCHAR(255) DEFAULT 1, CREATEDATE VARCHAR(255) DEFAULT '2001-01-01' NOT NULL, MODIFYDATE TIMESTAMP )
> CREATE MEMORY TABLE PUBLIC.TESTSEQ( ID INT DEFAULT 20, DATA VARCHAR )
......@@ -3394,7 +3410,7 @@ SCRIPT NOPASSWORDS NOSETTINGS;
> INSERT INTO PUBLIC.TESTSEQ(ID, DATA) VALUES(1, '1')
> INSERT INTO PUBLIC.TESTSEQ(ID, DATA) VALUES(10, '10')
> INSERT INTO PUBLIC.TESTSEQ(ID, DATA) VALUES(20, '20')
> rows: 10
> rows: 12
CREATE UNIQUE INDEX IDXNAMEID ON TEST(ID, NAME);
> ok
......@@ -3417,11 +3433,12 @@ DROP TABLE TESTSEQ;
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> -------------------------------------------------------------------------------------------------------------------------------------------
> -- 1 = SELECT COUNT(*) FROM PUBLIC.TEST
> CREATE MEMORY TABLE PUBLIC.TEST( ID INT NOT NULL, CREATEDATE VARCHAR(255) DEFAULT '2001-01-01' NOT NULL, MODIFYDATE TIMESTAMP )
> CREATE PRIMARY KEY ON PUBLIC.TEST(ID)
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> INSERT INTO PUBLIC.TEST(ID, CREATEDATE, MODIFYDATE) VALUES(1, '2001-01-01', NULL)
> rows: 4
> rows: 5
ALTER TABLE TEST ADD NAME VARCHAR(255) NULL BEFORE CREATEDATE;
> ok
......@@ -3429,11 +3446,12 @@ ALTER TABLE TEST ADD NAME VARCHAR(255) NULL BEFORE CREATEDATE;
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------
> -- 1 = SELECT COUNT(*) FROM PUBLIC.TEST
> CREATE MEMORY TABLE PUBLIC.TEST( ID INT NOT NULL, NAME VARCHAR(255), CREATEDATE VARCHAR(255) DEFAULT '2001-01-01' NOT NULL, MODIFYDATE TIMESTAMP )
> CREATE PRIMARY KEY ON PUBLIC.TEST(ID)
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> INSERT INTO PUBLIC.TEST(ID, NAME, CREATEDATE, MODIFYDATE) VALUES(1, NULL, '2001-01-01', NULL)
> rows: 4
> rows: 5
UPDATE TEST SET NAME = 'Hi';
> update count: 1
......@@ -3458,11 +3476,12 @@ CREATE MEMORY TABLE TEST(ID IDENTITY PRIMARY KEY, NAME VARCHAR);
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.TEST
> CREATE MEMORY TABLE PUBLIC.TEST( ID BIGINT DEFAULT (NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_0) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.SYSTEM_SEQUENCE_0, NAME VARCHAR )
> CREATE PRIMARY KEY ON PUBLIC.TEST(ID)
> CREATE SEQUENCE PUBLIC.SYSTEM_SEQUENCE_0 START WITH 1 BELONGS_TO_TABLE
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> rows: 4
> rows: 5
INSERT INTO TEST(NAME) VALUES('Hi'), ('World');
> update count: 2
......@@ -4464,8 +4483,8 @@ select * from t1 natural join t2;
explain select * from t1 natural join t2;
> PLAN
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> SELECT T1.ID, T1.NAME, T2.ID, T2.NAME FROM PUBLIC.T1 /* PUBLIC.T1_TABLE_SCAN */ INNER JOIN PUBLIC.T2 /* PUBLIC.T2_TABLE_SCAN */ WHERE (T1.ID = T2.ID) AND (T1.NAME = T2.NAME)
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> SELECT T1.ID, T1.NAME, T2.ID, T2.NAME FROM PUBLIC.T1 /* PUBLIC.T1_TABLE_SCAN */ INNER JOIN PUBLIC.T2 /* PUBLIC.T2_TABLE_SCAN */ WHERE (PUBLIC.T1.ID = PUBLIC.T2.ID) AND (PUBLIC.T1.NAME = PUBLIC.T2.NAME)
> rows: 1
drop table t1;
......@@ -4501,8 +4520,8 @@ select c.*, i.*, l.* from customer c natural join invoice i natural join invoice
explain select c.*, i.*, l.* from customer c natural join invoice i natural join invoiceline l;
> PLAN
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> SELECT C.CUSTOMERID, C.CUSTOMERNAME, I.CUSTOMERID, I.INVOICEID, I.INVOICETEXT, L.LINEID, L.INVOICEID, L.CUSTOMERID, L.LINETEXT FROM PUBLIC.CUSTOMER C /* PUBLIC.CUSTOMER_TABLE_SCAN */ INNER JOIN PUBLIC.INVOICE I /* PUBLIC.INVOICE_TABLE_SCAN */ /* WHERE C.CUSTOMERID = I.CUSTOMERID*/ INNER JOIN PUBLIC.INVOICELINE L /* PUBLIC.INVOICELINE_TABLE_SCAN */ WHERE (C.CUSTOMERID = I.CUSTOMERID) AND ((I.CUSTOMERID = L.CUSTOMERID) AND (I.INVOICEID = L.INVOICEID))
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> SELECT C.CUSTOMERID, C.CUSTOMERNAME, I.CUSTOMERID, I.INVOICEID, I.INVOICETEXT, L.LINEID, L.INVOICEID, L.CUSTOMERID, L.LINETEXT FROM PUBLIC.CUSTOMER C /* PUBLIC.CUSTOMER_TABLE_SCAN */ INNER JOIN PUBLIC.INVOICE I /* PUBLIC.INVOICE_TABLE_SCAN */ /* WHERE PUBLIC.C.CUSTOMERID = PUBLIC.I.CUSTOMERID*/ INNER JOIN PUBLIC.INVOICELINE L /* PUBLIC.INVOICELINE_TABLE_SCAN */ WHERE (PUBLIC.C.CUSTOMERID = PUBLIC.I.CUSTOMERID) AND ((PUBLIC.I.CUSTOMERID = PUBLIC.L.CUSTOMERID) AND (PUBLIC.I.INVOICEID = PUBLIC.L.INVOICEID))
> rows: 1
drop table customer;
......@@ -5002,13 +5021,14 @@ CAST(XT AS TIMESTAMP) D2TS, CAST(XD AS TIMESTAMP) D2TS FROM TEST;
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> ---------------------------------------------------------------------------------------------------------------------------------
> -- 4 = SELECT COUNT(*) FROM PUBLIC.TEST
> CREATE MEMORY TABLE PUBLIC.TEST( ID INT, XT TIME, XD DATE, XTS TIMESTAMP )
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> INSERT INTO PUBLIC.TEST(ID, XT, XD, XTS) VALUES(0, TIME '00:00:00', DATE '0001-02-03', TIMESTAMP '0002-03-04 00:00:00.0')
> INSERT INTO PUBLIC.TEST(ID, XT, XD, XTS) VALUES(1, TIME '01:02:03', DATE '0004-05-06', TIMESTAMP '0007-08-09 00:01:02.0')
> INSERT INTO PUBLIC.TEST(ID, XT, XD, XTS) VALUES(2, TIME '23:59:59', DATE '1999-12-31', TIMESTAMP '1999-12-31 23:59:59.123456789')
> INSERT INTO PUBLIC.TEST(ID, XT, XD, XTS) VALUES(NULL, NULL, NULL, NULL)
> rows: 6
> rows: 7
DROP TABLE TEST;
> ok
......@@ -5883,12 +5903,14 @@ CREATE MEMORY TABLE CHILD(ID INT, PARENT_ID INT, FOREIGN KEY(PARENT_ID) REFERENC
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> ---------------------------------------------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.CHILD
> -- 0 = SELECT COUNT(*) FROM PUBLIC.PARENT
> ALTER TABLE PUBLIC.CHILD ADD CONSTRAINT PUBLIC.CONSTRAINT_0 FOREIGN KEY(PARENT_ID) REFERENCES PUBLIC.PARENT(ID)
> CREATE MEMORY TABLE PUBLIC.CHILD( ID INT, PARENT_ID INT )
> CREATE MEMORY TABLE PUBLIC.PARENT( ID INT NOT NULL )
> CREATE PRIMARY KEY ON PUBLIC.PARENT(ID)
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> rows: 5
> rows: 7
DROP TABLE PARENT;
> ok
......@@ -5941,10 +5963,11 @@ ALTER TABLE TEST ADD CONSTRAINT C1 FOREIGN KEY(AINT) REFERENCES TEST(BINT);
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> -----------------------------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.TEST
> ALTER TABLE PUBLIC.TEST ADD CONSTRAINT PUBLIC.C1 FOREIGN KEY(AINT) REFERENCES PUBLIC.TEST(BINT)
> CREATE MEMORY TABLE PUBLIC.TEST( AINT INT NOT NULL, BINT INT NOT NULL )
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> rows: 3
> rows: 4
ALTER TABLE TEST DROP CONSTRAINT C1;
> ok
......@@ -6084,6 +6107,8 @@ SELECT * FROM BTEST;
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> ---------------------------------------------------------------------------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.ATEST
> -- 1 = SELECT COUNT(*) FROM PUBLIC.BTEST
> ALTER TABLE PUBLIC.ATEST ADD CONSTRAINT PUBLIC.DATEUNIQUE UNIQUE(ADATE)
> ALTER TABLE PUBLIC.ATEST ADD CONSTRAINT PUBLIC.DATEUNIQUE_2 UNIQUE(ADATE)
> ALTER TABLE PUBLIC.ATEST ADD CONSTRAINT PUBLIC.MINLENGTH CHECK(LENGTH(AVARCHAR) > 1)
......@@ -6096,7 +6121,7 @@ SCRIPT NOPASSWORDS NOSETTINGS;
> CREATE PRIMARY KEY ON PUBLIC.BTEST(BINT)
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> INSERT INTO PUBLIC.BTEST(BINT, BVARCHAR) VALUES(-1, 'XX')
> rows: 12
> rows: 14
DROP TABLE ATEST;
> ok
......@@ -6183,6 +6208,9 @@ SELECT * FROM CHILD;
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
> -- 1 = SELECT COUNT(*) FROM PUBLIC.FAMILY
> -- 1 = SELECT COUNT(*) FROM PUBLIC.PARENT
> -- 4 = SELECT COUNT(*) FROM PUBLIC.CHILD
> ALTER TABLE PUBLIC.CHILD ADD CONSTRAINT PUBLIC.CONSTRAINT_0 UNIQUE(ID, PARENTID)
> ALTER TABLE PUBLIC.CHILD ADD CONSTRAINT PUBLIC.PARENTCHILD FOREIGN KEY(PARENTID, FAMILYID) REFERENCES PUBLIC.PARENT(ID, FAMILYID) ON DELETE SET NULL ON UPDATE CASCADE
> ALTER TABLE PUBLIC.PARENT ADD CONSTRAINT PUBLIC.PARENTFAMILY FOREIGN KEY(FAMILYID) REFERENCES PUBLIC.FAMILY(ID)
......@@ -6197,7 +6225,7 @@ SCRIPT NOPASSWORDS NOSETTINGS;
> INSERT INTO PUBLIC.CHILD(ID, PARENTID, FAMILYID, NAME) VALUES(201, NULL, NULL, 'Johann')
> INSERT INTO PUBLIC.FAMILY(ID, NAME) VALUES(1, 'Capone')
> INSERT INTO PUBLIC.PARENT(ID, FAMILYID, NAME) VALUES(3, 1, 'Sue')
> rows: 14
> rows: 17
ALTER TABLE CHILD DROP CONSTRAINT PARENTCHILD;
> ok
......@@ -6205,6 +6233,9 @@ ALTER TABLE CHILD DROP CONSTRAINT PARENTCHILD;
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> ---------------------------------------------------------------------------------------------------------------
> -- 1 = SELECT COUNT(*) FROM PUBLIC.FAMILY
> -- 1 = SELECT COUNT(*) FROM PUBLIC.PARENT
> -- 4 = SELECT COUNT(*) FROM PUBLIC.CHILD
> ALTER TABLE PUBLIC.CHILD ADD CONSTRAINT PUBLIC.CONSTRAINT_0 UNIQUE(ID, PARENTID)
> ALTER TABLE PUBLIC.PARENT ADD CONSTRAINT PUBLIC.PARENTFAMILY FOREIGN KEY(FAMILYID) REFERENCES PUBLIC.FAMILY(ID)
> CREATE INDEX PUBLIC.FAMILYIDNAME ON PUBLIC.FAMILY(ID, NAME)
......@@ -6218,7 +6249,7 @@ SCRIPT NOPASSWORDS NOSETTINGS;
> INSERT INTO PUBLIC.CHILD(ID, PARENTID, FAMILYID, NAME) VALUES(201, NULL, NULL, 'Johann')
> INSERT INTO PUBLIC.FAMILY(ID, NAME) VALUES(1, 'Capone')
> INSERT INTO PUBLIC.PARENT(ID, FAMILYID, NAME) VALUES(3, 1, 'Sue')
> rows: 13
> rows: 16
DELETE FROM PARENT;
> update count: 1
......@@ -6284,10 +6315,11 @@ CREATE MEMORY TABLE TEST(A INT, B INT, FOREIGN KEY (B) REFERENCES(A) ON UPDATE R
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> ---------------------------------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.TEST
> ALTER TABLE PUBLIC.TEST ADD CONSTRAINT PUBLIC.CONSTRAINT_0 FOREIGN KEY(B) REFERENCES PUBLIC.TEST(A)
> CREATE MEMORY TABLE PUBLIC.TEST( A INT, B INT )
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> rows: 3
> rows: 4
DROP TABLE TEST;
> ok
......@@ -6332,6 +6364,8 @@ ALTER INDEX IDXID RENAME TO IDX_ID;
SCRIPT NOPASSWORDS NOSETTINGS;
> SCRIPT
> -----------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.TEST
> -- 0 = SELECT COUNT(*) FROM PUBLIC.TEST2
> CREATE INDEX PUBLIC.IDX_ID ON PUBLIC.TEST2(ID)
> CREATE MEMORY TABLE PUBLIC.TEST( ID INT NOT NULL, NAME VARCHAR(255) )
> CREATE MEMORY TABLE PUBLIC.TEST2( ID INT )
......@@ -6340,7 +6374,7 @@ SCRIPT NOPASSWORDS NOSETTINGS;
> CREATE USER IF NOT EXISTS TEST PASSWORD ''
> CREATE USER IF NOT EXISTS TEST2 PASSWORD ''
> CREATE USER IF NOT EXISTS TEST_ADMIN PASSWORD '' ADMIN
> rows: 8
> rows: 10
SELECT * FROM INFORMATION_SCHEMA.USERS;
> NAME ADMIN REMARKS
......@@ -6509,11 +6543,12 @@ INSERT INTO TEST VALUES(2, STRINGDECODE('Sond\344rzeich\344 ') || char(22222) ||
script nopasswords nosettings;
> SCRIPT
> --------------------------------------------------------------------------------------------------------------------------------------------------------
> -- 1 = SELECT COUNT(*) FROM PUBLIC.TEST
> CREATE MEMORY TABLE PUBLIC.TEST( ID INT NOT NULL, NAME VARCHAR(255) )
> CREATE PRIMARY KEY ON PUBLIC.TEST(ID)
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> INSERT INTO PUBLIC.TEST(ID, NAME) VALUES(2, STRINGDECODE('Sond\u00e4rzeich\u00e4 \u56ce \u00f6\u00e4\u00fc\u00d6\u00c4\u00dc\u00e9\u00e8\u00e0\u00f1!'))
> rows: 4
> rows: 5
call STRINGENCODE(STRINGDECODE('Sond\344rzeich\344 \u56ce \366\344\374\326\304\334\351\350\340\361!'));
> 'Sond\u00e4rzeich\u00e4 \u56ce \u00f6\u00e4\u00fc\u00d6\u00c4\u00dc\u00e9\u00e8\u00e0\u00f1!'
......@@ -7400,11 +7435,12 @@ alter table word alter column wrd_id integer(10) auto_increment;
script NOPASSWORDS NOSETTINGS;
> SCRIPT
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.WORD
> CREATE MEMORY TABLE PUBLIC.WORD( WRD_ID BIGINT DEFAULT (NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_0) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.SYSTEM_SEQUENCE_0, NAME VARCHAR )
> CREATE PRIMARY KEY ON PUBLIC.WORD(WRD_ID)
> CREATE SEQUENCE PUBLIC.SYSTEM_SEQUENCE_0 START WITH 1 BELONGS_TO_TABLE
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> rows: 4
> rows: 5
alter table word alter column wrd_id restart with 30872;
> ok
......@@ -7412,11 +7448,12 @@ alter table word alter column wrd_id restart with 30872;
script NOPASSWORDS NOSETTINGS;
> SCRIPT
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> -- 0 = SELECT COUNT(*) FROM PUBLIC.WORD
> CREATE MEMORY TABLE PUBLIC.WORD( WRD_ID BIGINT DEFAULT (NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_0) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.SYSTEM_SEQUENCE_0, NAME VARCHAR )
> CREATE PRIMARY KEY ON PUBLIC.WORD(WRD_ID)
> CREATE SEQUENCE PUBLIC.SYSTEM_SEQUENCE_0 START WITH 30872 BELONGS_TO_TABLE
> CREATE USER IF NOT EXISTS SA PASSWORD '' ADMIN
> rows: 4
> rows: 5
drop table word;
> ok
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论