You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by ro...@apache.org on 2005/03/28 04:35:31 UTC
svn commit: r159218 - in
incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test:
Maps/MSSQL/SqlClient/EmbedParameter.xml
NUnit/SqlMapTests/MSSQL/EmbedParameterTest.cs
Scripts/MSSQL/README-embed-param.txt Scripts/MSSQL/embed-param-setup-init.sql
Scripts/MSSQL/embed-param-test-init.sql
Author: roberto
Date: Sun Mar 27 18:35:28 2005
New Revision: 159218
URL: http://svn.apache.org/viewcvs?view=rev&rev=159218
Log:
+ Adding first version of embedStatementParams=true/false test files/scripts (no changes to core or project files in this commit)
Added:
incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/EmbedParameter.xml
incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/EmbedParameterTest.cs
incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/README-embed-param.txt
incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/embed-param-setup-init.sql
incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/embed-param-test-init.sql
Added: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/EmbedParameter.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/EmbedParameter.xml?view=auto&rev=159218
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/EmbedParameter.xml (added)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/EmbedParameter.xml Sun Mar 27 18:35:28 2005
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="utf-8"?>
+<sqlMap namespace="Category" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="SqlMap.xsd">
+
+ <alias>
+ <typeAlias alias="Sample" type="IBatisNet.DataMapper.Test.Domain.Sample, IBatisNet.DataMapper.Test"/>
+ </alias>
+
+ <statements>
+
+ <!-- Sequential rows, table scan
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_SequenceID] = #value#
+ -->
+ <select id="GetManyRecordsBySequence" parameterClass="Integer" resultClass="Sample">
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_SequenceID] = #value#
+ </select>
+
+ <!-- Sequential rows, index seek and bookmark lookup
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest] WITH(INDEX([IDX_ManyRecordsTest_Seq]))
+ WHERE
+ [Many_SequenceID] = 91
+ -->
+ <select id="GetManyRecordsBySequenceWithIndex" parameterClass="Integer" resultClass="Sample">
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest] WITH(INDEX([IDX_ManyRecordsTest_Seq]))
+ WHERE
+ [Many_SequenceID] = #value#
+ </select>
+
+ <!-- Distributed rows, table scan
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_DistributedID] = 91
+ -->
+ <select id="GetManyRecordsByDistributed" parameterClass="Integer" resultClass="Sample">
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_DistributedID] = #value#
+ </select>
+
+ <!-- Distributed rows, index seek and bookmark lookup
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest] WITH(INDEX([IDX_ManyRecordsTest_Dist]))
+ WHERE
+ [Many_DistributedID] = 91
+ -->
+ <select id="GetManyRecordsByDistributedWithIndex" parameterClass="Integer" resultClass="Sample">
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest] WITH(INDEX([IDX_ManyRecordsTest_Dist]))
+ WHERE
+ [Many_DistributedID] = #value#
+ </select>
+
+ <!-- FifthId rows, table scan
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_FifthID] = 30000
+ -->
+ <select id="GetManyRecordsByFifth" parameterClass="Integer" resultClass="Sample">
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_FifthID] = #value#
+ </select>
+
+ <!-- FifthId rows OR Sequence rows, table scan
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_FifthID] = 30000 OR
+ [Many_SequenceID] = 91
+ -->
+ <select id="GetManyRecordsByFifthOrSequence" parameterClass="Hashtable" resultClass="Sample">
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_FifthID] = #FifthID# OR
+ [Many_SequenceID] = #SequenceID#
+ </select>
+
+ <!-- Date rows, table scan
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_SampleDate] BETWEEN '1999-01-01' AND '1999-01-02'
+ -->
+ <select id="GetManyRecordsByDates" parameterClass="Hashtable" resultClass="Sample">
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_SampleDate] BETWEEN #StartDate# AND #EndDate#
+ </select>
+
+ <!-- Char rows, table scan
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_SampleCharValue] = 'AAA'
+ -->
+ <select id="GetManyRecordsByChar" parameterClass="String" resultClass="Sample">
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_SampleCharValue] = #value#
+ </select>
+
+ <!-- Char rows, table scan
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_SampleCharValue] LIKE '%AAA%'
+ -->
+ <select id="GetManyRecordsByLikeChar" parameterClass="String" resultClass="Sample">
+ SELECT
+ [Many_FirstID] AS FirstId,
+ [Many_SecondID] AS SecondId,
+ [Many_ThirdID] AS ThirdId,
+ [Many_FourthID] AS FourthId,
+ [Many_FifthID] AS FifthId,
+ [Many_SequenceID] AS SequenceId,
+ [Many_DistributedID] AS DistributedId,
+ [Many_SampleCharValue] AS SampleChar,
+ [Many_SampleDecimal] AS SampleDecimal,
+ [Many_SampleMoney] AS SampleMoney,
+ [Many_SampleDate] AS SampleDate,
+ [Many_SequenceDate] AS SequenceDate
+ FROM
+ [dbo].[ManyRecordsTest]
+ WHERE
+ [Many_SampleCharValue] LIKE '%$value$%'
+ </select>
+ </statements>
+
+</sqlMap>
Added: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/EmbedParameterTest.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/EmbedParameterTest.cs?view=auto&rev=159218
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/EmbedParameterTest.cs (added)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/EmbedParameterTest.cs Sun Mar 27 18:35:28 2005
@@ -0,0 +1,161 @@
+using System;
+using System.Collections;
+
+using NUnit.Framework;
+
+using IBatisNet.DataMapper.Test.NUnit;
+using IBatisNet.DataMapper.Test.Domain;
+
+namespace IBatisNet.DataMapper.Test.NUnit.SqlMapTests.MSSQL
+{
+ /// <summary>
+ /// Summary description for EmbedParameterTest.
+ /// Test performance and sql injection using parameter values such as
+ /// '; shutdown--
+ /// or
+ /// 1; shutdown--
+ /// </summary>
+ [TestFixture]
+ [Category("MSSQL")]
+ public class EmbedParameterTest : BaseTest
+ {
+
+ #region SetUp & TearDown
+ /// <summary>
+ /// SetUp
+ /// </summary>
+ [SetUp]
+ public void Init()
+ {
+ InitSqlMap();
+ //InitScript( sqlMap.DataSource, ScriptDirectory + "embed-param-test-init.sql", false );
+ }
+
+ /// <summary>
+ /// TearDown
+ /// </summary>
+ [TearDown]
+ public void Dispose()
+ { /* ... */ }
+
+ #endregion
+
+ #region Specific performance and sql injection tests for sql server
+
+ /// <summary>
+ /// Test GetManyRecordsBySequence.
+ /// </summary>
+ [Test]
+ public void TestQueryBySequence()
+ {
+ IList list = sqlMap.QueryForList("GetManyRecordsBySequence", 91);
+
+ Assert.AreEqual(91, ((Sample) list[0]).SequenceId);
+ }
+
+ /// <summary>
+ /// Test GetManyRecordsBySequenceWithIndex.
+ /// </summary>
+ [Test]
+ public void TestQueryBySequenceWithIndex()
+ {
+ IList list = sqlMap.QueryForList("GetManyRecordsBySequenceWithIndex", 91);
+
+ Assert.AreEqual(91, ((Sample) list[0]).SequenceId);
+ }
+
+ /// <summary>
+ /// Test GetManyRecordsByDistributed.
+ /// </summary>
+ [Test]
+ public void TestQueryByDistributed()
+ {
+ IList list = sqlMap.QueryForList("GetManyRecordsByDistributed", 91);
+
+ Assert.AreEqual(91, ((Sample) list[0]).DistributedId);
+ }
+
+ /// <summary>
+ /// Test GetManyRecordsByDistributedWithIndex.
+ /// </summary>
+ [Test]
+ public void TestQueryByDistributedWithIndex()
+ {
+ IList list = sqlMap.QueryForList("GetManyRecordsByDistributedWithIndex", 91);
+
+ Assert.AreEqual(91, ((Sample) list[0]).DistributedId);
+ }
+
+ /// <summary>
+ /// Test GetManyRecordsByFifth.
+ /// </summary>
+ [Test]
+ public void TestQueryByFifth()
+ {
+ IList list = sqlMap.QueryForList("GetManyRecordsByFifth", 30000);
+
+ Assert.AreEqual(30000, ((Sample) list[0]).FifthId);
+ }
+
+ /// <summary>
+ /// Test GetManyRecordsByFifthOrSequence.
+ /// </summary>
+ [Test]
+ public void TestQueryByFifthOrSequence()
+ {
+ Hashtable queryParams = new Hashtable();
+ queryParams.Add("FifthId", 30000);
+ queryParams.Add("SequenceId", 91);
+
+ IList list = sqlMap.QueryForList("GetManyRecordsByFifthOrSequence", queryParams);
+
+ Assert.IsNotNull(list);
+ //Assert.AreEqual(30000, ((Sample) list[0]).FifthId);
+ //Assert.AreEqual(91, ((Sample) list[0]).SequenceId);
+ }
+
+ /// <summary>
+ /// Test GetManyRecordsByDates.
+ /// </summary>
+ [Test]
+ public void TestQueryByDates()
+ {
+ System.DateTime startDate = new System.DateTime(1999,1,1);
+ System.DateTime endDate = new System.DateTime(1999,1,2);
+
+ Hashtable queryParams = new Hashtable();
+ queryParams.Add("StartDate", startDate);
+ queryParams.Add("EndDate", endDate);
+
+ IList list = sqlMap.QueryForList("GetManyRecordsByDates", queryParams);
+
+ Assert.IsNotNull(list);
+ }
+
+ /// <summary>
+ /// Test GetManyRecordsByLikeChar.
+ /// </summary>
+ [Test]
+ public void TestQueryByLikeChar()
+ {
+ IList list = sqlMap.QueryForList("GetManyRecordsByLikeChar", "AAA");
+
+ Assert.IsNotNull(list);
+ }
+
+ /// <summary>
+ /// Test GetManyRecordsByChar.
+ /// </summary>
+ [Test]
+ public void TestInjectQueryByChar()
+ {
+ IList list = sqlMap.QueryForList("GetManyRecordsByChar", "'; shutdown--");
+
+ Assert.IsNotNull(list);
+ }
+
+ #endregion
+
+
+ }
+}
Added: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/README-embed-param.txt
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/README-embed-param.txt?view=auto&rev=159218
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/README-embed-param.txt (added)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/README-embed-param.txt Sun Mar 27 18:35:28 2005
@@ -0,0 +1,8 @@
+Technique for creating large sample test data from:
+
+http://www.sql-server-performance.com/jc_large_data_operations.asp
+
+Make sure you have enough space and have either enough processing power or
+enough patience to run the Embed Parameters in Statement tests.
+
+Run embed-parameters-setup-init.sql prior to running tests.
Added: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/embed-param-setup-init.sql
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/embed-param-setup-init.sql?view=auto&rev=159218
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/embed-param-setup-init.sql (added)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/embed-param-setup-init.sql Sun Mar 27 18:35:28 2005
@@ -0,0 +1,94 @@
+-- Technique for creating large sample test data from
+-- http://www.sql-server-performance.com/jc_large_data_operations.asp
+
+use [IBatisNet]
+
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ManyRecords]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[ManyRecords]
+
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ManyRecordsTest]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[ManyRecordsTest]
+
+
+
+-- Create Data Storage Table
+CREATE TABLE [dbo].[ManyRecords] (
+ [Many_FirstID] [int] NOT NULL,
+ [Many_SecondID] [int] NOT NULL,
+ [Many_ThirdID] [int] NOT NULL,
+ [Many_FourthID] [int] NOT NULL,
+ [Many_FifthID] [int] NOT NULL,
+ [Many_SequenceID] [int] NOT NULL,
+ [Many_DistributedID] [int] NOT NULL,
+ [Many_SampleCharValue] [char] (10) NOT NULL,
+ [Many_SampleDecimal] [decimal] (9,4) NOT NULL,
+ [Many_SampleMoney] [money] NOT NULL,
+ [Many_SampleDate] [datetime] NOT NULL,
+ [Many_SequenceDate] [datetime] NOT NULL )
+ON [PRIMARY]
+
+
+
+-- Create Sample Data of 1 million records (increase if needed)
+BEGIN TRANSACTION
+ DECLARE @intIndex int, @rowCount int, @seqCount int, @distValue int
+ SELECT @intIndex = 1, @rowCount = 1000000, @seqCount = 10000
+ SELECT @distValue = @rowCount/10000
+
+ WHILE @intIndex <= @rowCount
+ BEGIN
+ INSERT INTO [dbo].[ManyRecords] (
+ [Many_FirstID],
+ [Many_SecondID],
+ [Many_ThirdID],
+ [Many_FourthID],
+ [Many_FifthID],
+ [Many_SequenceID],
+ [Many_DistributedID],
+ [Many_SampleCharValue],
+ [Many_SampleDecimal],
+ [Many_SampleMoney],
+ [Many_SampleDate],
+ [Many_SequenceDate] )
+ VALUES (
+ @intIndex, -- First
+ @intIndex/2, -- Second
+ @intIndex/4, -- Third
+ @intIndex/10, -- Fourth
+ @intIndex/20, -- Fifth
+ (@intIndex-1)/@seqCount + 1, -- Sequential value
+ (@intIndex-1)%(@distValue) + 1, -- Distributed value
+ CHAR(65 + 26*rand())+CHAR(65 + 26*rand())+CHAR(65 + 26*rand())+CONVERT(char(6),CONVERT(int,100000*(9.0*rand()+1.0)))+CHAR(65 + 26*rand()), -- Char Value
+ 10000*rand(), -- Decimal value
+ 10000*rand(), -- Money value
+ DATEADD(hour,100000*rand(),'1990-01-01'), -- Date value
+ DATEADD(hour,@intIndex/5,'1990-01-01') ) -- Sequential date value
+
+ SET @intIndex = @intIndex + 1
+ END
+COMMIT TRANSACTION
+
+
+
+-- Create Test table using storage table sample data
+SELECT
+ [Many_FirstID],
+ [Many_SecondID],
+ [Many_ThirdID],
+ [Many_FourthID],
+ [Many_FifthID],
+ [Many_SequenceID],
+ [Many_DistributedID],
+ [Many_SampleCharValue],
+ [Many_SampleDecimal],
+ [Many_SampleMoney],
+ [Many_SampleDate],
+ [Many_SequenceDate]
+INTO [dbo].[ManyRecordsTest]
+FROM [dbo].[ManyRecords]
+
+
+
+-- Create Test table indexes
+CREATE INDEX [IDX_ManyRecordsTest_Seq] ON [dbo].[ManyRecordsTest] ([Many_SequenceID]) WITH SORT_IN_TEMPDB
+CREATE INDEX [IDX_ManyRecordsTest_Dist] ON [dbo].[ManyRecordsTest] ([Many_DistributedID]) WITH SORT_IN_TEMPDB
\ No newline at end of file
Added: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/embed-param-test-init.sql
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/embed-param-test-init.sql?view=auto&rev=159218
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/embed-param-test-init.sql (added)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Scripts/MSSQL/embed-param-test-init.sql Sun Mar 27 18:35:28 2005
@@ -0,0 +1,32 @@
+-- Technique for creating large sample test data from
+-- http://www.sql-server-performance.com/jc_large_data_operations.asp
+
+use [IBatisNet]
+
+if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ManyRecordsTest]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+drop table [dbo].[ManyRecordsTest]
+
+
+
+-- Create Test table using storage table sample data
+SELECT
+ [Many_FirstID],
+ [Many_SecondID],
+ [Many_ThirdID],
+ [Many_FourthID],
+ [Many_FifthID],
+ [Many_SequenceID],
+ [Many_DistributedID],
+ [Many_SampleCharValue],
+ [Many_SampleDecimal],
+ [Many_SampleMoney],
+ [Many_SampleDate],
+ [Many_SequenceDate]
+INTO [dbo].[ManyRecordsTest]
+FROM [dbo].[ManyRecords]
+
+
+
+-- Create Test table indexes
+CREATE INDEX [IDX_ManyRecordsTest_Seq] ON [dbo].[ManyRecordsTest] ([Many_SequenceID]) WITH SORT_IN_TEMPDB
+CREATE INDEX [IDX_ManyRecordsTest_Dist] ON [dbo].[ManyRecordsTest] ([Many_DistributedID]) WITH SORT_IN_TEMPDB
\ No newline at end of file