ColdFusion 4.0.1 Release Notes

Updated April 7, 1999


Upgrading to ColdFusion 4.0.1

ColdFusion 4.0.1 is primarily a maintenance release that provides a number of bug fixes. We have also introduced some new functionality in ColdFusion 4.0.1. You should review the ColdFusion 4.0.1 new features documentation to see what new features have been added to 4.0.1. The section "Fixed in version 4.0.1" will give you a list of what bugs were fixed in ColdFusion 4.0.1.

A Note on the euro

ColdFusion 4.0.1 supports the euro currency on both the NT and the Solaris platforms. Two special functions, LSEuroCurrencyFormat() and LSParseEuroCurrency() have been added to CFML for this purpose. The euro currency symbol in a .cfm file will be parsed correctly by the ColdFusion Application Server. For the euro currency symbol to be properly displayed, the system needs to be euro-enabled. Visit Microsoft's Web site for information on configuring your system for euro currency symbol input and display.


See the ColdFusion Features and Enhancements document for information about the many new features enabled for this release.

See ColdFusion 4.0.1 Documentation Updates for a listing of corrections and additions to the product document set.


Known Issues in this Release

The Summary of Outstanding Product Issues page on the Allaire Web site contains information on technical support issues for all Allaire products. It currently lists issues for version 3.x and earlier but will reference 4.0.1 issues after its release. You may want to bookmark the page for future use.


Fixed in version 4.0.1


Fixed in version 4.0


CFOBJECT and Windows NT 3.51

Since Windows NT 3.51 does not support DCOM, the CFOBJECT tag is not supported in this environment.


Load Balancing and Failover with ClusterCATS

To use load balancing you need to be running Microsoft IIS. ClusterCATS consists of two components, the ClusterCATS Server and the ClusterCATS Explorer. ClusterCATS Server provides fail-over support, load balancing, and other features to help you guarantee the availability of your ColdFusion applications.

For more information about configuring Web server clusters, refer to Administering the ColdFusion Server.

To configure your cluster members for IP Failover the following items must be in place:


CFML Code Validation

ColdFusion 4.0.1 introduces two modes of attribute checking for template processing: strict and relaxed. All native CFML tags are associated with an XML description of their attribute types and the combinations of attributes that are allowed. For backward compatibility, the default processing attribute validation mode in 4.0.1 will be relaxed checking.

It is important to remember that the code validator inspects at all code before execution begins. You will run problems if you spread the opening and closing of tag across conditional branches. For instance, the following example is invalid CFML and will generate a compilation error for having an extraneous </cfform> tag:

<CFIF 1 is 1>
     <CFFORM ACTION="samsara.cfm" METHOD="post">
     	<INPUT TYPE="text" NAME="nirvana" SIZE="12">
<CFELSEIF 1 IS 2>
     <CFFORM ACTION="nebraska.cfm" METHOD="post">
	<INPUT TYPE="text" NAME="lincoln" SIZE="20">
</CFIF>
	<INPUT TYPE="submit" VALUE="submit">
</CFFORM>

Correct CFML requires that you terminate the <cfform> in both conditional branches.

<CFIF 1 IS 1>
     <CFFORM ACTION="Samsara.cfm" METHOD="Post">
     	<INPUT TYPE="Text" NAME="nirvana" SIZE="12">
	<INPUT TYPE="Submit" VALUE="Submit">
     </CFFORM>

<CFELSEIF 1 IS 2>
     <CFFORM ACTION="Nebraska.cfm" METHOD="Post">
	<INPUT TYPE="Text" NAME="Lincoln" SIZE="20">
	<INPUT TYPE="Submit" VALUE="Submit">
     </CFFORM>
</CFIF>

Here are some specifics on the syntax change:

Validation of dynamic values

Attribute validation is generally performed at p-code time and not at execution. The exceptions to this rule are tags with a "switch" attribute like ACTION= or METHOD= for which the value is provided at runtime. These instances will be validated at runtime. This means that there will be a slight performance penalty due to runtime attribute validation and that the CFML syntax checker will not be able to detect an invalid attribute combination, in this case because it does not execute the CFML template it checks. Although dynamically providing an action can save a few lines of code, we recommend that you avoid this practice in the interest of a more complete validation and faster application performance.

Enabling strict validation

We recommend that you enable strict checking unless you absolutely need existing templates to run with the conditions described above. If this is the case, you should plan to clean up existing templates at as soon as you can.

To enable strict validation, open the ColdFusion Administrator Server page and check the "Enable Strict Attribute Validation" box.

Syntax validation utility

Click here to run the checker. The application pages are installed in the doc_root\cfdocs directory.

As a side note to this, there is a possibility that any commercially purchased custom tags that you are using may result in a syntax error due to stricter syntax checking. If a commercially purchased custom tags fails to run under ColdFusion Server 4.0.1 you should first turn off the "Enforce Strict Attribute Validation" setting in the ColdFusion Administrator. If the tag continues to generate errors, you should contact the tag's vendor in that it may require a correction to invalid syntax in order to run under 4.0.1.

Attribute value processing in 4.0.1

In previous versions, ColdFusion used a "two-pass" attribute value evaluation method. Consider the use of single and double quotes in expressions embedded in strings, such as

<CFSET ANATTRIB="foo of five is: #foo("5")#">

This says, evaluate foo("5") and embed the resulting value inside the string "foo of ... ". Note that the double quotes inside the #s are not "escaped". This is the expected behavior since the expression we want to evaluate is 'foo("5")' and not 'foo(""5"")'. In ColdFusion 4.0.1 this can be written as

<CFSOMETAG ANATTRIB="Foo of five is: #foo("5")#">

CFSOMETAG ANATTRIB="foo" will have the same value as CFSET ANATTRIB="foo". This shows that expression evaluation syntax is the same inside attribute values as it is in CFIF, CFELSEIF, CFSET, and other tags. However, the snippet above will not run under previous versions of ColdFusion because of the two step evaluation of attribute values. First, all escaped quotes were un-escaped, regardless of their position with respect to expressions. The resulting string was then evaluated. Since the double quotes around 5 are not escaped, the above snippet would throw an error in previous versions of ColdFusion. The "backward compatible" syntax is:

<CFSOMETAG ANATTRIB="foo of five is: #foo(""5"")#">

Upgrading to ColdFusion 4.0.1


Native Database Drivers (Enterprise only)

Be aware of the following case-sensitivity requirements when running queries through the native drivers:

Note: For Sybase SQL Server the syntax for calling a stored procedure with CFQUERY is different for ODBC and the Sybase native driver. ODBC requires brackets and the word "call". The native driver does not have this requirement.

ODBC syntax:

<CFQUERY DATASOURCE=""Name="">
     {call dbo.stored_procedure_name}
</CFQUERY>

Native driver syntax:

<CFQUERY DATASOURCE=""Name="">
     dbo.stored_procedure_name
</CFQUERY>

Running Allaire Forums under ColdFusion 4.0.1

If you are running Allaire Forums with ColdFusion Server 4.0.1 you should be running with Allaire Forums 2.0.4. You should download Allaire Forums 2.0.4 from our product page if you are running an earlier version.


Configuring the Apache Web Server

ColdFusion Server for Windows supports Apache version 1.3.6 with the module shipped with ColdFusion. For information about support for earlier releases of Apache Web Server, please visit the Allaire Support page. To obtain Apache free of charge, go to the Apache group web site at www.apache.org.

Adding the ColdFusion module

The ColdFusion Module can be found in the installation directory (usually c:\cfusion\bin).

We assume below that your Apache installation is found in c:\Apache.

  1. Copy the module (ApacheModuleColdFusion.dll) to your modules directory under the Apache source directory.
    ex. c:\Apache\modules\ApacheModuleColdFusion.dll
  2. Edit the "httpd.conf" configuration file to contain the following line, this can be found in c:\Apache\conf:
    LoadModule coldfusion_module modules/ApacheModuleColdFusion.dll

Back to top