Remove 1024 character limit on ODBC connection strings (#73155)
authorShay Rojansky <roji@roji.org>
Fri, 12 Aug 2022 01:32:32 +0000 (04:32 +0300)
committerGitHub <noreply@github.com>
Fri, 12 Aug 2022 01:32:32 +0000 (18:32 -0700)
Fixes #63630

(cherry picked from commit 8eb5dea6763da89fb9a4fdd4df0942f195716b59)

src/libraries/System.Data.Odbc/src/Resources/Strings.resx
src/libraries/System.Data.Odbc/src/System.Data.Odbc.csproj
src/libraries/System.Data.Odbc/src/System/Data/Odbc/Odbc32.cs
src/libraries/System.Data.Odbc/src/System/Data/Odbc/OdbcConnectionString.cs

index b6860f2..5332b0d 100644 (file)
   <data name="ADP_OdbcNoTypesFromProvider" xml:space="preserve">
     <value>The ODBC provider did not return results from SQLGETTYPEINFO.</value>
   </data>
-  <data name="OdbcConnection_ConnectionStringTooLong" xml:space="preserve">
-    <value>Connection string exceeds maximum allowed length of {0}.</value>
-  </data>
   <data name="Odbc_UnknownSQLType" xml:space="preserve">
     <value>Unknown SQL type - {0}.</value>
   </data>
index eff5503..7307a05 100644 (file)
@@ -5,6 +5,8 @@
     <NoWarn>$(NoWarn);CA2249;CA1838</NoWarn>
     <Nullable>enable</Nullable>
     <IsPackable>true</IsPackable>
+    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
+    <ServicingVersion>1</ServicingVersion>
     <PackageDescription>Provides a collection of classes used to access an ODBC data source in the managed space
 
 Commonly Used Types:
index 6c32692..9f22130 100644 (file)
@@ -24,18 +24,17 @@ namespace System.Data.Odbc
         {
             return ADP.Argument(SR.GetString(SR.Odbc_UnknownSQLType, sqltype.ToString()));
         }
-        internal static Exception ConnectionStringTooLong()
-        {
-            return ADP.Argument(SR.GetString(SR.OdbcConnection_ConnectionStringTooLong, ODBC32.MAX_CONNECTION_STRING_LENGTH));
-        }
+
         internal static ArgumentException GetSchemaRestrictionRequired()
         {
             return ADP.Argument(SR.GetString(SR.ODBC_GetSchemaRestrictionRequired));
         }
+
         internal static ArgumentOutOfRangeException NotSupportedEnumerationValue(Type type, int value)
         {
             return ADP.ArgumentOutOfRange(SR.GetString(SR.ODBC_NotSupportedEnumerationValue, type.Name, value.ToString(System.Globalization.CultureInfo.InvariantCulture)), type.Name);
         }
+
         internal static ArgumentOutOfRangeException NotSupportedCommandType(CommandType value)
         {
 #if DEBUG
@@ -664,12 +663,6 @@ namespace System.Data.Odbc
             COMPLETE_REQUIRED = 3,
         }
 
-        // todo:move
-        // internal const. not odbc specific
-        //
-        // Connection string max length
-        internal const int MAX_CONNECTION_STRING_LENGTH = 1024;
-
         // Column set for SQLPrimaryKeys
         internal enum SQL_PRIMARYKEYS : short
         {
index 74790e0..7efb675 100644 (file)
@@ -22,14 +22,6 @@ namespace System.Data.Odbc
                 int position = 0;
                 _expandedConnectionString = ExpandDataDirectories(ref filename, ref position);
             }
-            if (validate || (null == _expandedConnectionString))
-            {
-                // do not check string length if it was expanded because the final result may be shorter than the original
-                if ((null != connectionString) && (ODBC32.MAX_CONNECTION_STRING_LENGTH < connectionString.Length))
-                { // MDAC 83536
-                    throw ODBC.ConnectionStringTooLong();
-                }
-            }
         }
     }
 }