You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Jakob Rojel (JIRA)" <ib...@incubator.apache.org> on 2005/04/06 17:03:17 UTC

[jira] Created: (IBATISNET-30) bug in ApplyParameterMap

bug in ApplyParameterMap 
-------------------------

         Key: IBATISNET-30
         URL: http://issues.apache.org/jira/browse/IBATISNET-30
     Project: iBatis for .NET
        Type: Bug
    Versions: DataMapper 1.2    
    Reporter: Jakob Rojel


If my XML file contains 
	  <isNotNull prepend="and" property="NumberSearch">
    		 ((inline.order_number $Number_Oper$ #NumberSearch#) or (inline.invoice_number $Number_Oper$ #NumberSearch#))
	  		 </isNotNull>
	 <isEqual prepend = "and" property="InvoiceStatusAnd" compareValue="true">
	  		 (inline.invoice_state = #InvoiceStatus#)
	  		 </isEqual>
	 <isEqual prepend = "and" property="OrderStatusAnd" compareValue="true">
	  		 (inline.order_state = #OrderStatus#)
	  		 </isEqual>	  		 
My parameter for NumberSearch is copied into InvoiceStatus, the following works.

	 <isEqual prepend = "and" property="InvoiceStatusAnd" compareValue="true">
	  		 (inline.invoice_state = #InvoiceStatus#)
	  		 </isEqual>
	 <isEqual prepend = "and" property="OrderStatusAnd" compareValue="true">
	  		 (inline.order_state = #OrderStatus#)
	  		 </isEqual>	  		 
	  <isNotNull prepend="and" property="NumberSearch">
    		 ((inline.order_number $Number_Oper$ #NumberSearch#) or (inline.invoice_number $Number_Oper$ #NumberSearch#))
	  		 </isNotNull>


My pretty sure that that the problem is related to the fact that NumberSearch is used twice

When I debug the following code in ApplyParameterMap
		if ( propertyName != "value" ) // Inline Parameters && Parameters via ParameterMap
					{
						ParameterProperty property = request.ParameterMap.GetProperty(i);

						sqlParameter.Value = request.ParameterMap.GetValueOfProperty(parameterObject,
								property.PropertyName);
					}

propertyName is InvoiceStatus and property.PropertyName is NumberSearch 
			


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


[jira] Commented: (IBATISNET-30) bug in ApplyParameterMap

Posted by "Roberto Rabe (JIRA)" <ib...@incubator.apache.org>.
     [ http://issues.apache.org/jira/browse/IBATISNET-30?page=comments#action_65456 ]
     
Roberto Rabe commented on IBATISNET-30:
---------------------------------------

MSSQL ODBC/OLEDB/SqlClient, MySQL ByteFX, and MS OracleClient pass NUnit tests.

ODP.NET 10g provider needs additional fix:

In ODP.NET 10g, there is a property of the OracleCommand class called BindByName.  This needs to be set to true when the same parameter is used multiple times the way it is in the NUnit JIRA 30 test.  See the following:

http://tinyurl.com/8a877
http://forums.oracle.com/forums/thread.jsp?forum=146&thread=235063&message=669050&q=6e6f7420616c6c207661726961626c657320626f756e64#669050

Yes, ODP binds by position by default, but we need to name the parameters like ":1" vs "?" in OLEDB:

http://tinyurl.com/9frd8
http://forums.oracle.com/forums/thread.jsp?forum=146&thread=54730&message=54730&q=706f736974696f6e616c2062696e64696e67#54730

http://tinyurl.com/baoqy
http://forums.oracle.com/forums/thread.jsp?forum=146&thread=278151&message=866549&q=6e6f7420616c6c207661726961626c657320626f756e64#866549

Therefore, providers.config has been using usePositionalParameters = "false" for the ODP.NET provider due to the naming.  Unfortunately in this case, since OracleCommand.BindByName is not being set, this test case fails because of the repetition of the parameter.

To get this to work with ODP.NET, we can change the providers.config entry to usePositionalParameters = "true" and rework PreparedStatementFactory.EvaluateParameterMap when it checks usePositionalParameters to something like this:

if (_session.DataSource.Provider.UsePositionalParameters)
{
        // ODP.NET uses positional parameters but needs "name"
	if (_parameterPrefix.Equals(":"))
	{
		sqlParamName = ":" + index;	
	}
	else 
	{
		// OLEDB/OBDC doesn't support named parameters !!!
		sqlParamName = "?";
	}
}

> bug in ApplyParameterMap
> ------------------------
>
>          Key: IBATISNET-30
>          URL: http://issues.apache.org/jira/browse/IBATISNET-30
>      Project: iBatis for .NET
>         Type: Bug
>     Versions: DataMapper 1.2
>     Reporter: Jakob Rojel
>     Assignee: Gilles Bayon
>      Fix For: DataMapper 1.2

>
> If my XML file contains 
> 	  <isNotNull prepend="and" property="NumberSearch">
>     		 ((inline.order_number $Number_Oper$ #NumberSearch#) or (inline.invoice_number $Number_Oper$ #NumberSearch#))
> 	  		 </isNotNull>
> 	 <isEqual prepend = "and" property="InvoiceStatusAnd" compareValue="true">
> 	  		 (inline.invoice_state = #InvoiceStatus#)
> 	  		 </isEqual>
> 	 <isEqual prepend = "and" property="OrderStatusAnd" compareValue="true">
> 	  		 (inline.order_state = #OrderStatus#)
> 	  		 </isEqual>	  		 
> My parameter for NumberSearch is copied into InvoiceStatus, the following works.
> 	 <isEqual prepend = "and" property="InvoiceStatusAnd" compareValue="true">
> 	  		 (inline.invoice_state = #InvoiceStatus#)
> 	  		 </isEqual>
> 	 <isEqual prepend = "and" property="OrderStatusAnd" compareValue="true">
> 	  		 (inline.order_state = #OrderStatus#)
> 	  		 </isEqual>	  		 
> 	  <isNotNull prepend="and" property="NumberSearch">
>     		 ((inline.order_number $Number_Oper$ #NumberSearch#) or (inline.invoice_number $Number_Oper$ #NumberSearch#))
> 	  		 </isNotNull>
> My pretty sure that that the problem is related to the fact that NumberSearch is used twice
> When I debug the following code in ApplyParameterMap
> 		if ( propertyName != "value" ) // Inline Parameters && Parameters via ParameterMap
> 					{
> 						ParameterProperty property = request.ParameterMap.GetProperty(i);
> 						sqlParameter.Value = request.ParameterMap.GetValueOfProperty(parameterObject,
> 								property.PropertyName);
> 					}
> propertyName is InvoiceStatus and property.PropertyName is NumberSearch 
> 			

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Assigned: (IBATISNET-30) bug in ApplyParameterMap

Posted by "Gilles Bayon (JIRA)" <ib...@incubator.apache.org>.
     [ http://issues.apache.org/jira/browse/IBATISNET-30?page=all ]

Gilles Bayon reassigned IBATISNET-30:
-------------------------------------

    Assign To: Gilles Bayon

> bug in ApplyParameterMap
> ------------------------
>
>          Key: IBATISNET-30
>          URL: http://issues.apache.org/jira/browse/IBATISNET-30
>      Project: iBatis for .NET
>         Type: Bug
>     Versions: DataMapper 1.2
>     Reporter: Jakob Rojel
>     Assignee: Gilles Bayon
>      Fix For: DataMapper 1.2

>
> If my XML file contains 
> 	  <isNotNull prepend="and" property="NumberSearch">
>     		 ((inline.order_number $Number_Oper$ #NumberSearch#) or (inline.invoice_number $Number_Oper$ #NumberSearch#))
> 	  		 </isNotNull>
> 	 <isEqual prepend = "and" property="InvoiceStatusAnd" compareValue="true">
> 	  		 (inline.invoice_state = #InvoiceStatus#)
> 	  		 </isEqual>
> 	 <isEqual prepend = "and" property="OrderStatusAnd" compareValue="true">
> 	  		 (inline.order_state = #OrderStatus#)
> 	  		 </isEqual>	  		 
> My parameter for NumberSearch is copied into InvoiceStatus, the following works.
> 	 <isEqual prepend = "and" property="InvoiceStatusAnd" compareValue="true">
> 	  		 (inline.invoice_state = #InvoiceStatus#)
> 	  		 </isEqual>
> 	 <isEqual prepend = "and" property="OrderStatusAnd" compareValue="true">
> 	  		 (inline.order_state = #OrderStatus#)
> 	  		 </isEqual>	  		 
> 	  <isNotNull prepend="and" property="NumberSearch">
>     		 ((inline.order_number $Number_Oper$ #NumberSearch#) or (inline.invoice_number $Number_Oper$ #NumberSearch#))
> 	  		 </isNotNull>
> My pretty sure that that the problem is related to the fact that NumberSearch is used twice
> When I debug the following code in ApplyParameterMap
> 		if ( propertyName != "value" ) // Inline Parameters && Parameters via ParameterMap
> 					{
> 						ParameterProperty property = request.ParameterMap.GetProperty(i);
> 						sqlParameter.Value = request.ParameterMap.GetValueOfProperty(parameterObject,
> 								property.PropertyName);
> 					}
> propertyName is InvoiceStatus and property.PropertyName is NumberSearch 
> 			

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Closed: (IBATISNET-30) bug in ApplyParameterMap

Posted by "Gilles Bayon (JIRA)" <ib...@incubator.apache.org>.
     [ http://issues.apache.org/jira/browse/IBATISNET-30?page=all ]
     
Gilles Bayon closed IBATISNET-30:
---------------------------------

     Resolution: Fixed
    Fix Version: DataMapper 1.2

Fix in SVN

> bug in ApplyParameterMap
> ------------------------
>
>          Key: IBATISNET-30
>          URL: http://issues.apache.org/jira/browse/IBATISNET-30
>      Project: iBatis for .NET
>         Type: Bug
>     Versions: DataMapper 1.2
>     Reporter: Jakob Rojel
>     Assignee: Gilles Bayon
>      Fix For: DataMapper 1.2

>
> If my XML file contains 
> 	  <isNotNull prepend="and" property="NumberSearch">
>     		 ((inline.order_number $Number_Oper$ #NumberSearch#) or (inline.invoice_number $Number_Oper$ #NumberSearch#))
> 	  		 </isNotNull>
> 	 <isEqual prepend = "and" property="InvoiceStatusAnd" compareValue="true">
> 	  		 (inline.invoice_state = #InvoiceStatus#)
> 	  		 </isEqual>
> 	 <isEqual prepend = "and" property="OrderStatusAnd" compareValue="true">
> 	  		 (inline.order_state = #OrderStatus#)
> 	  		 </isEqual>	  		 
> My parameter for NumberSearch is copied into InvoiceStatus, the following works.
> 	 <isEqual prepend = "and" property="InvoiceStatusAnd" compareValue="true">
> 	  		 (inline.invoice_state = #InvoiceStatus#)
> 	  		 </isEqual>
> 	 <isEqual prepend = "and" property="OrderStatusAnd" compareValue="true">
> 	  		 (inline.order_state = #OrderStatus#)
> 	  		 </isEqual>	  		 
> 	  <isNotNull prepend="and" property="NumberSearch">
>     		 ((inline.order_number $Number_Oper$ #NumberSearch#) or (inline.invoice_number $Number_Oper$ #NumberSearch#))
> 	  		 </isNotNull>
> My pretty sure that that the problem is related to the fact that NumberSearch is used twice
> When I debug the following code in ApplyParameterMap
> 		if ( propertyName != "value" ) // Inline Parameters && Parameters via ParameterMap
> 					{
> 						ParameterProperty property = request.ParameterMap.GetProperty(i);
> 						sqlParameter.Value = request.ParameterMap.GetValueOfProperty(parameterObject,
> 								property.PropertyName);
> 					}
> propertyName is InvoiceStatus and property.PropertyName is NumberSearch 
> 			

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Commented: (IBATISNET-30) bug in ApplyParameterMap

Posted by "Roberto Rabe (JIRA)" <ib...@incubator.apache.org>.
     [ http://issues.apache.org/jira/browse/IBATISNET-30?page=comments#action_65240 ]
     
Roberto Rabe commented on IBATISNET-30:
---------------------------------------

Related email that was sent to the list:

http://www.mail-archive.com/ibatis-user-cs@incubator.apache.org/msg00197.html

> bug in ApplyParameterMap
> ------------------------
>
>          Key: IBATISNET-30
>          URL: http://issues.apache.org/jira/browse/IBATISNET-30
>      Project: iBatis for .NET
>         Type: Bug
>     Versions: DataMapper 1.2
>     Reporter: Jakob Rojel

>
> If my XML file contains 
> 	  <isNotNull prepend="and" property="NumberSearch">
>     		 ((inline.order_number $Number_Oper$ #NumberSearch#) or (inline.invoice_number $Number_Oper$ #NumberSearch#))
> 	  		 </isNotNull>
> 	 <isEqual prepend = "and" property="InvoiceStatusAnd" compareValue="true">
> 	  		 (inline.invoice_state = #InvoiceStatus#)
> 	  		 </isEqual>
> 	 <isEqual prepend = "and" property="OrderStatusAnd" compareValue="true">
> 	  		 (inline.order_state = #OrderStatus#)
> 	  		 </isEqual>	  		 
> My parameter for NumberSearch is copied into InvoiceStatus, the following works.
> 	 <isEqual prepend = "and" property="InvoiceStatusAnd" compareValue="true">
> 	  		 (inline.invoice_state = #InvoiceStatus#)
> 	  		 </isEqual>
> 	 <isEqual prepend = "and" property="OrderStatusAnd" compareValue="true">
> 	  		 (inline.order_state = #OrderStatus#)
> 	  		 </isEqual>	  		 
> 	  <isNotNull prepend="and" property="NumberSearch">
>     		 ((inline.order_number $Number_Oper$ #NumberSearch#) or (inline.invoice_number $Number_Oper$ #NumberSearch#))
> 	  		 </isNotNull>
> My pretty sure that that the problem is related to the fact that NumberSearch is used twice
> When I debug the following code in ApplyParameterMap
> 		if ( propertyName != "value" ) // Inline Parameters && Parameters via ParameterMap
> 					{
> 						ParameterProperty property = request.ParameterMap.GetProperty(i);
> 						sqlParameter.Value = request.ParameterMap.GetValueOfProperty(parameterObject,
> 								property.PropertyName);
> 					}
> propertyName is InvoiceStatus and property.PropertyName is NumberSearch 
> 			

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira