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

📄 jittest.java

📁 derby database source code.good for you.
💻 JAVA
字号:
/*   Derby - Class org.apache.derbyTesting.functionTests.tests.lang.JitTest   Copyright (c) 2001, 2006 The Apache Software Foundation or its licensors, where applicable.   Licensed under the Apache License, Version 2.0 (the "License");   you may not use this file except in compliance with the License.   You may obtain a copy of the License at      http://www.apache.org/licenses/LICENSE-2.0   Unless required by applicable law or agreed to in writing, software   distributed under the License is distributed on an "AS IS" BASIS,   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   See the License for the specific language governing permissions and   limitations under the License. */package org.apache.derbyTesting.functionTests.tests.lang;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.ResultSet;import java.sql.Statement;import java.sql.SQLException;import org.apache.derby.tools.ij;import org.apache.derby.tools.JDBCDisplayUtil;/** * DERBY-1327 * Identity column can be created with wrong and very large start with  * value with "J2RE 1.5.0 IBM Windows 32 build pwi32dev-20060412 (SR2)"  * with JIT on */public class JitTest {  public static void main (String args[])   {     try {    	/* Load the JDBC Driver class */    	// use the ij utility to read the property file and    	// make the initial connection.    	ij.getPropertyArg(args);    	Connection conn = ij.startJBMS();    	System.out.println("Start JitTest");    	//add tests specific to a jit issue    	testDerby1327BadStartWithForAutoIncColumn(conn);    	conn.close();    } catch (Exception e) {    	System.out.println("FAIL -- unexpected exception "+e);    	JDBCDisplayUtil.ShowException(System.out, e);      	e.printStackTrace();    }  }    /**   * After some number of table creations with JIT turned on, the START WITH     * value for the table being created and all the ones already created gets    * mysteriously changed with pwi32dev-20060412 (SR2)   *    * @throws Exception   */  public static void testDerby1327BadStartWithForAutoIncColumn(Connection conn)   	throws Exception  {	conn.setAutoCommit(false);		Statement stmt = null;				dropAllAppTables(conn);		System.out.println("Create tables until we get a wrong Start with value");		stmt = conn.createStatement();		// numBadStartWith will be changed if any columns get a bad start with value.		int numBadStartWith = 0; 		String createTableSQL = null;		try {			// create 200 tables.  Break out if we get a table that has a bad			// start with value.			for (int i = 0; (i < 200) && (numBadStartWith == 0); i++)			{				String tableName = "APP.MYTABLE" + i;			    createTableSQL = "CREATE TABLE " + tableName + 				"  (ROLEID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ("+				"START WITH 2, INCREMENT BY 1), INSTANCEID INTEGER, STATUS"+				" INTEGER, LOGICAL_STATE INTEGER, LSTATE_TSTAMP  TIMESTAMP,"+				" UPDT_TSTAMP TIMESTAMP, TSTAMP TIMESTAMP,"+				" CLALEVEL1_CLALEVEL2_CLALEVEL2ID VARCHAR(255),  "+				"CLALEVEL1_CLALEVEL2_CLALEVEL3_CLALEVEL3ID VARCHAR(255))";								stmt.executeUpdate(createTableSQL);				conn.commit();                numBadStartWith = checkBadStartWithCols(conn,2);				if (numBadStartWith > 0)					break;			}		} catch (SQLException se)		{			System.out.println("Failed on " + createTableSQL);			JDBCDisplayUtil.ShowSQLException(System.out,se);		}				if (numBadStartWith == 0)		{			System.out.println("PASS: All 200 tables created without problems");			dropAllAppTables(conn);		}		stmt.close();		conn.rollback();  }   /**   * Check that all tables in App do not have a an autoincrementstart value   * greater tan maxautoincrementstart   * @param conn   * @param maxautoincrementstart  Maximum expected autoincrementstart value   * @return number of columns with bad autoincrementstart value   */  	private static int checkBadStartWithCols(Connection conn, int  	  		maxautoincrementstart) throws Exception  	{  		Statement stmt = conn.createStatement();  		ResultSet rs =stmt.executeQuery("select count(autoincrementstart) from"+  				" sys.syscolumns c, sys.systables t, sys.sysschemas s WHERE"+				" t.schemaid =  s.schemaid and s.schemaname = 'APP' and"+				" autoincrementstart > " +  maxautoincrementstart);  		rs.next();  		int numBadStartWith = rs.getInt(1);  		if (numBadStartWith > 0)  			System.out.println(numBadStartWith + " columns have bad START WITH VALUE");  		rs.close();  		  		if (numBadStartWith > 0)  		{  			rs =stmt.executeQuery("select tablename, columnname,"+  					" autoincrementstart from sys.syscolumns c, sys.systables t,"+					" sys.sysschemas s WHERE t.schemaid = s.schemaid and"+					" s.schemaname = 'APP' and autoincrementstart > 2 ORDER"+					" BY tablename");  			while (rs.next())  			{  				System.out.println("Unexpected start value: " +  								   rs.getLong(3) +   								   " on column " + rs.getString(1) +  								   "(" + rs.getString(2) + ")");  				  				  			}  		}         return numBadStartWith;  	}  	/**       * Drop all tables in schema APP  	 * @param conn  	 * @throws SQLException  	 */  	private  static void dropAllAppTables(Connection conn) throws SQLException  	{  		Statement stmt1 = conn.createStatement();  		Statement stmt2 = conn.createStatement();  		System.out.println("Drop all tables in APP schema");  		ResultSet rs = stmt1.executeQuery("SELECT tablename from sys.systables"+  				" t, sys.sysschemas s where t.schemaid = s.schemaid and"+				" s.schemaname = 'APP'");  		while (rs.next())  		{  			String tableName = rs.getString(1);  			  			try {  				stmt2.executeUpdate("DROP TABLE " + tableName);  			}  			catch (SQLException se)  			{  				System.out.println("Error dropping table:" + tableName);  				se.printStackTrace();  				continue;  			}  		}  	}}

⌨️ 快捷键说明

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