#if MYSQL_6_9 // Copyright � 2004, 2015 Oracle and/or its affiliates. All rights reserved. // // MySQL Connector/NET is licensed under the terms of the GPLv2 // , like most // MySQL Connectors. There are special exceptions to the terms and // conditions of the GPLv2 as it is applied to this software, see the // FLOSS License Exception // . // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published // by the Free Software Foundation; version 2 of the License. // // This program is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License // for more details. // // You should have received a copy of the GNU General Public License along // with this program; if not, write to the Free Software Foundation, Inc., // 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA using System; using System.Reflection; using System.ComponentModel; namespace Externals.MySql.Data.MySqlClient { /// /// Summary description for ClientParam. /// [Flags] internal enum ClientFlags : ulong { LONG_PASSWORD = 1, // new more secure passwords FOUND_ROWS = 2, // found instead of affected rows LONG_FLAG = 4, // Get all column flags CONNECT_WITH_DB = 8, // One can specify db on connect NO_SCHEMA = 16, // Don't allow db.table.column COMPRESS = 32, // Client can use compression protocol ODBC = 64, // ODBC client LOCAL_FILES = 128, // Can use LOAD DATA LOCAL IGNORE_SPACE = 256, // Ignore spaces before '(' PROTOCOL_41 = 512, // Support new 4.1 protocol INTERACTIVE = 1024, // This is an interactive client SSL = 2048, // Switch to SSL after handshake IGNORE_SIGPIPE = 4096, // IGNORE sigpipes TRANSACTIONS = 8192, // Client knows about transactions RESERVED = 16384, // old 4.1 protocol flag SECURE_CONNECTION = 32768, // new 4.1 authentication MULTI_STATEMENTS = 65536, // Allow multi-stmt support MULTI_RESULTS = 131072, // Allow multiple resultsets PS_MULTI_RESULTS = 1UL << 18, // allow multi results using PS protocol PLUGIN_AUTH = (1UL << 19), //Client supports plugin authentication CONNECT_ATTRS = (1UL << 20), // Allows client connection attributes CAN_HANDLE_EXPIRED_PASSWORD = (1UL << 22), // Support for password expiration > 5.6.6 CLIENT_SSL_VERIFY_SERVER_CERT = (1UL << 30), CLIENT_REMEMBER_OPTIONS = (1UL << 31) } [Flags] internal enum ServerStatusFlags { InTransaction = 1, // Transaction has started AutoCommitMode = 2, // Server in auto_commit mode MoreResults = 4, // More results on server AnotherQuery = 8, // Multi query - next query exists BadIndex = 16, NoIndex = 32, CursorExists = 64, LastRowSent = 128, OutputParameters = 4096 } /// /// DB Operations Code /// internal enum DBCmd : byte { SLEEP = 0, QUIT = 1, INIT_DB = 2, QUERY = 3, FIELD_LIST = 4, CREATE_DB = 5, DROP_DB = 6, RELOAD = 7, SHUTDOWN = 8, STATISTICS = 9, PROCESS_INFO = 10, CONNECT = 11, PROCESS_KILL = 12, DEBUG = 13, PING = 14, TIME = 15, DELAYED_INSERT = 16, CHANGE_USER = 17, BINLOG_DUMP = 18, TABLE_DUMP = 19, CONNECT_OUT = 20, REGISTER_SLAVE = 21, PREPARE = 22, EXECUTE = 23, LONG_DATA = 24, CLOSE_STMT = 25, RESET_STMT = 26, SET_OPTION = 27, FETCH = 28 } /// /// Specifies MySQL specific data type of a field, property, for use in a . /// internal enum MySqlDbType { /// /// /// A fixed precision and scale numeric value between -1038 /// -1 and 10 38 -1. /// Decimal = 0, /// /// The signed range is -128 to 127. The unsigned /// range is 0 to 255. /// Byte = 1, /// /// A 16-bit signed integer. The signed range is /// -32768 to 32767. The unsigned range is 0 to 65535 /// Int16 = 2, /// /// Specifies a 24 (3 byte) signed or unsigned value. /// Int24 = 9, /// /// A 32-bit signed integer /// Int32 = 3, /// /// A 64-bit signed integer. /// Int64 = 8, /// /// A small (single-precision) floating-point /// number. Allowable values are -3.402823466E+38 to -1.175494351E-38, /// 0, and 1.175494351E-38 to 3.402823466E+38. /// Float = 4, /// /// A normal-size (double-precision) /// floating-point number. Allowable values are -1.7976931348623157E+308 /// to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to /// 1.7976931348623157E+308. /// Double = 5, /// /// A timestamp. The range is '1970-01-01 00:00:00' to sometime in the /// year 2037 /// Timestamp = 7, /// ///Date The supported range is '1000-01-01' to '9999-12-31'. /// Date = 10, /// /// Time The range is '-838:59:59' to '838:59:59'. /// Time = 11, /// ///DateTime The supported range is '1000-01-01 00:00:00' to ///'9999-12-31 23:59:59'. /// DateTime = 12, /// ///Datetime The supported range is '1000-01-01 00:00:00' to ///'9999-12-31 23:59:59'. /// [Obsolete("The Datetime enum value is obsolete. Please use DateTime.")] Datetime = 12, /// /// A year in 2- or 4-digit format (default is 4-digit). The /// allowable values are 1901 to 2155, 0000 in the 4-digit year /// format, and 1970-2069 if you use the 2-digit format (70-69). /// Year = 13, /// /// Obsolete Use Datetime or Date type /// Newdate = 14, /// /// A variable-length string containing 0 to 65535 characters /// VarString = 15, /// /// Bit-field data type /// Bit = 16, /// /// JSON /// JSON = 245, /// /// New Decimal /// NewDecimal = 246, /// /// An enumeration. A string object that can have only one value, /// chosen from the list of values 'value1', 'value2', ..., NULL /// or the special "" error value. An ENUM can have a maximum of /// 65535 distinct values /// Enum = 247, /// /// A set. A string object that can have zero or more values, each /// of which must be chosen from the list of values 'value1', 'value2', /// ... A SET can have a maximum of 64 members. /// Set = 248, /// /// A binary column with a maximum length of 255 (2^8 - 1) /// characters /// TinyBlob = 249, /// /// A binary column with a maximum length of 16777215 (2^24 - 1) bytes. /// MediumBlob = 250, /// /// A binary column with a maximum length of 4294967295 or /// 4G (2^32 - 1) bytes. /// LongBlob = 251, /// /// A binary column with a maximum length of 65535 (2^16 - 1) bytes. /// Blob = 252, /// /// A variable-length string containing 0 to 255 bytes. /// VarChar = 253, /// /// A fixed-length string. /// String = 254, /// /// Geometric (GIS) data type. /// Geometry = 255, /// /// Unsigned 8-bit value. /// UByte = 501, /// /// Unsigned 16-bit value. /// UInt16 = 502, /// /// Unsigned 24-bit value. /// UInt24 = 509, /// /// Unsigned 32-bit value. /// UInt32 = 503, /// /// Unsigned 64-bit value. /// UInt64 = 508, /// /// Fixed length binary string. /// Binary = 600, /// /// Variable length binary string. /// VarBinary = 601, /// /// A text column with a maximum length of 255 (2^8 - 1) characters. /// TinyText = 749, /// /// A text column with a maximum length of 16777215 (2^24 - 1) characters. /// MediumText = 750, /// /// A text column with a maximum length of 4294967295 or /// 4G (2^32 - 1) characters. /// LongText = 751, /// /// A text column with a maximum length of 65535 (2^16 - 1) characters. /// Text = 752, /// /// A guid column /// Guid = 800 } ; internal enum Field_Type : byte { DECIMAL = 0, BYTE = 1, SHORT = 2, LONG = 3, FLOAT = 4, DOUBLE = 5, NULL = 6, TIMESTAMP = 7, LONGLONG = 8, INT24 = 9, DATE = 10, TIME = 11, DATETIME = 12, YEAR = 13, NEWDATE = 14, ENUM = 247, SET = 248, TINY_BLOB = 249, MEDIUM_BLOB = 250, LONG_BLOB = 251, BLOB = 252, VAR_STRING = 253, STRING = 254, } /// /// Allows the user to specify the type of connection that should /// be used. /// internal enum MySqlConnectionProtocol { /// /// TCP/IP style connection. Works everywhere. /// Sockets = 1, Socket = 1, Tcp = 1, /// /// Named pipe connection. Works only on Windows systems. /// Pipe = 2, NamedPipe = 2, /// /// Unix domain socket connection. Works only with Unix systems. /// UnixSocket = 3, Unix = 3, /// /// Shared memory connection. Currently works only with Windows systems. /// SharedMemory = 4, Memory = 4 } /// /// SSL options for connection. /// internal enum MySqlSslMode { /// /// Do not use SSL. /// None, /// /// Use SSL, if server supports it. /// Preferred, Prefered = Preferred, /// /// Always use SSL. Deny connection if server does not support SSL. /// Do not perform server certificate validation. /// Required, /// /// Always use SSL. Validate server SSL certificate, but different host name mismatch. /// VerifyCA, /// /// Always use SSL and perform full certificate validation. /// VerifyFull } /// /// Specifies the connection types supported /// internal enum MySqlDriverType { /// /// Use TCP/IP sockets. /// Native, /// /// Use client library. /// Client, /// /// Use MySQL embedded server. /// Embedded } internal enum MySqlCertificateStoreLocation { /// /// Do not use certificate store /// None, /// /// Use certificate store for the current user /// CurrentUser, /// /// User certificate store for the machine /// LocalMachine } internal class MySqlConnectAttrs { [DisplayName("_client_name")] public string ClientName { get { return "MySql Connector/NET"; } } [DisplayName("_pid")] public string PID { get { string pid = string.Empty; try { pid = System.Diagnostics.Process.GetCurrentProcess().Id.ToString(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } return pid; } } [DisplayName("_client_version")] public string ClientVersion { get { string version = string.Empty; try { version = Assembly.GetAssembly(typeof(MySqlConnectAttrs)).GetName().Version.ToString(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } return version; } } [DisplayName("_platform")] public string Platform { get { return Is64BitOS() ? "x86_64" : "x86_32"; } } [DisplayName("program_name")] public string ProgramName { get { string name = Environment.CommandLine; try { string path = Environment.CommandLine.Substring(0, Environment.CommandLine.IndexOf("\" ")).Trim('"'); name = System.IO.Path.GetFileName(path); if (Assembly.GetEntryAssembly() != null) name = Assembly.GetEntryAssembly().ManifestModule.Name; } catch (Exception ex) { name = string.Empty; System.Diagnostics.Debug.WriteLine(ex.ToString()); } return name; } } [DisplayName("_os")] public string OS { get { string os = string.Empty; try { os = Environment.OSVersion.Platform.ToString(); if (os == "Win32NT") { os = "Win"; os += Is64BitOS() ? "64" : "32"; } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } return os; } } [DisplayName("_os_details")] public string OSDetails { get { string os = string.Empty; // try // { // var searcher = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); // var collection = searcher.Get(); // foreach (var mgtObj in collection) // { // os = mgtObj.GetPropertyValue("Caption").ToString(); // break; // } // } // catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } return os; } } [DisplayName("_thread")] public string Thread { get { string thread = string.Empty; try { thread = System.Diagnostics.Process.GetCurrentProcess().Threads[0].Id.ToString(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } return thread; } } private bool Is64BitOS() { return Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") == "AMD64"; } } } #endif