333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/driver/mysql/MysqlDriver.ts"],"names":[],"mappings":"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","file":"MysqlDriver.js","sourcesContent":["import {Driver} from \"../Driver\";\nimport {ConnectionIsNotSetError} from \"../../error/ConnectionIsNotSetError\";\nimport {DriverPackageNotInstalledError} from \"../../error/DriverPackageNotInstalledError\";\nimport {DriverUtils} from \"../DriverUtils\";\nimport {MysqlQueryRunner} from \"./MysqlQueryRunner\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {DateUtils} from \"../../util/DateUtils\";\nimport {PlatformTools} from \"../../platform/PlatformTools\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RdbmsSchemaBuilder} from \"../../schema-builder/RdbmsSchemaBuilder\";\nimport {MysqlConnectionOptions} from \"./MysqlConnectionOptions\";\nimport {MappedColumnTypes} from \"../types/MappedColumnTypes\";\nimport {ColumnType} from \"../types/ColumnTypes\";\nimport {DataTypeDefaults} from \"../types/DataTypeDefaults\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {MysqlConnectionCredentialsOptions} from \"./MysqlConnectionCredentialsOptions\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {ApplyValueTransformers} from \"../../util/ApplyValueTransformers\";\n\n/**\n * Organizes communication with MySQL DBMS.\n */\nexport class MysqlDriver implements Driver {\n\n    // -------------------------------------------------------------------------\n    // Public Properties\n    // -------------------------------------------------------------------------\n\n    /**\n     * Connection used by driver.\n     */\n    connection: Connection;\n\n    /**\n     * Mysql underlying library.\n     */\n    mysql: any;\n\n    /**\n     * Connection pool.\n     * Used in non-replication mode.\n     */\n    pool: any;\n\n    /**\n     * Pool cluster used in replication mode.\n     */\n    poolCluster: any;\n\n    // -------------------------------------------------------------------------\n    // Public Implemented Properties\n    // -------------------------------------------------------------------------\n\n    /**\n     * Connection options.\n     */\n    options: MysqlConnectionOptions;\n\n    /**\n     * Master database used to perform all write queries.\n     */\n    database?: string;\n\n    /**\n     * Indicates if replication is enabled.\n     */\n    isReplicated: boolean = false;\n\n    /**\n     * Indicates if tree tables are supported by this driver.\n     */\n    treeSupport = true;\n\n    /**\n     * Gets list of supported column data types by a driver.\n     *\n     * @see https://www.tutorialspoint.com/mysql/mysql-data-types.htm\n     * @see https://dev.mysql.com/doc/refman/8.0/en/data-types.html\n     */\n    supportedDataTypes: ColumnType[] = [\n        // numeric types\n        \"bit\",\n        \"int\",\n        \"integer\",          // synonym for int\n        \"tinyint\",\n        \"smallint\",\n        \"mediumint\",\n        \"bigint\",\n        \"float\",\n        \"double\",\n        \"double precision\", // synonym for double\n        \"real\",             // synonym for double\n        \"decimal\",\n        \"dec\",              // synonym for decimal\n        \"numeric\",          // synonym for decimal\n        \"fixed\",            // synonym for decimal\n        \"bool\",             // synonym for tinyint\n        \"boolean\",          // synonym for tinyint\n        // date and time types\n        \"date\",\n        \"datetime\",\n        \"timestamp\",\n        \"time\",\n        \"year\",\n        // string types\n        \"char\",\n        \"nchar\",            // synonym for national char\n        \"national char\",\n        \"varchar\",\n        \"nvarchar\",         // synonym for national varchar\n        \"national varchar\",\n        \"blob\",\n        \"text\",\n        \"tinyblob\",\n        \"tinytext\",\n        \"mediumblob\",\n        \"mediumtext\",\n        \"longblob\",\n        \"longtext\",\n        \"enum\",\n        \"binary\",\n        \"varbinary\",\n        // json data type\n        \"json\",\n        // spatial data types\n        \"geometry\",\n        \"point\",\n        \"linestring\",\n        \"polygon\",\n        \"multipoint\",\n        \"multilinestring\",\n        \"multipolygon\",\n        \"geometrycollection\"\n    ];\n\n    /**\n     * Gets list of spatial column data types.\n     */\n    spatialTypes: ColumnType[] = [\n        \"geometry\",\n        \"point\",\n        \"linestring\",\n        \"polygon\",\n        \"multipoint\",\n        \"multilinestring\",\n        \"multipolygon\",\n        \"geometrycollection\"\n    ];\n\n    /**\n     * Gets list of column data types that support length by a driver.\n     */\n    withLengthColumnTypes: ColumnType[] = [\n        \"char\",\n        \"varchar\",\n        \"nvarchar\",\n        \"binary\",\n        \"varbinary\"\n    ];\n\n    /**\n     * Gets list of column data types that support length by a driver.\n     */\n    withWidthColumnTypes: ColumnType[] = [\n        \"bit\",\n        \"tinyint\",\n        \"smallint\",\n        \"mediumint\",\n        \"int\",\n        \"integer\",\n        \"bigint\"\n    ];\n\n    /**\n     * Gets list of column data types that support precision by a driver.\n     */\n    withPrecisionColumnTypes: ColumnType[] = [\n        \"decimal\",\n        \"dec\",\n        \"numeric\",\n        \"fixed\",\n        \"float\",\n        \"double\",\n        \"double precision\",\n        \"real\",\n        \"time\",\n        \"datetime\",\n        \"timestamp\"\n    ];\n\n    /**\n     * Gets list of column data types that supports scale by a driver.\n     */\n    withScaleColumnTypes: ColumnType[] = [\n        \"decimal\",\n        \"dec\",\n        \"numeric\",\n        \"fixed\",\n        \"float\",\n        \"double\",\n        \"double precision\",\n        \"real\"\n    ];\n\n    /**\n     * Gets list of column data types that supports UNSIGNED and ZEROFILL attributes.\n     */\n    unsignedAndZerofillTypes: ColumnType[] = [\n        \"int\",\n        \"integer\",\n        \"smallint\",\n        \"tinyint\",\n        \"mediumint\",\n        \"bigint\",\n        \"decimal\",\n        \"dec\",\n        \"numeric\",\n        \"fixed\",\n        \"float\",\n        \"double\",\n        \"double precision\",\n        \"real\"\n    ];\n\n    /**\n     * ORM has special columns and we need to know what database column types should be for those columns.\n     * Column types are driver dependant.\n     */\n    mappedDataTypes: MappedColumnTypes = {\n        createDate: \"datetime\",\n        createDatePrecision: 6,\n        createDateDefault: \"CURRENT_TIMESTAMP(6)\",\n        updateDate: \"datetime\",\n        updateDatePrecision: 6,\n        updateDateDefault: \"CURRENT_TIMESTAMP(6)\",\n        version: \"int\",\n        treeLevel: \"int\",\n        migrationId: \"int\",\n        migrationName: \"varchar\",\n        migrationTimestamp: \"bigint\",\n        cacheId: \"int\",\n        cacheIdentifier: \"varchar\",\n        cacheTime: \"bigint\",\n        cacheDuration: \"int\",\n        cacheQuery: \"text\",\n        cacheResult: \"text\",\n        metadataType: \"varchar\",\n        metadataDatabase: \"varchar\",\n        metadataSchema: \"varchar\",\n        metadataTable: \"varchar\",\n        metadataName: \"varchar\",\n        metadataValue: \"text\",\n    };\n\n    /**\n     * Default values of length, precision and scale depends on column data type.\n     * Used in the cases when length/precision/scale is not specified by user.\n     */\n    dataTypeDefaults: DataTypeDefaults = {\n        \"varchar\": { length: 255 },\n        \"nvarchar\": { length: 255 },\n        \"national varchar\": { length: 255 },\n        \"char\": { length: 1 },\n        \"binary\": { length: 1 },\n        \"varbinary\": { length: 255 },\n        \"decimal\": { precision: 10, scale: 0 },\n        \"dec\": { precision: 10, scale: 0 },\n        \"numeric\": { precision: 10, scale: 0 },\n        \"fixed\": { precision: 10, scale: 0 },\n        \"float\": { precision: 12 },\n        \"double\": { precision: 22 },\n        \"time\": { precision: 0 },\n        \"datetime\": { precision: 0 },\n        \"timestamp\": { precision: 0 },\n        \"bit\": { width: 1 },\n        \"int\": { width: 11 },\n        \"integer\": { width: 11 },\n        \"tinyint\": { width: 4 },\n        \"smallint\": { width: 6 },\n        \"mediumint\": { width: 9 },\n        \"bigint\": { width: 20 }\n    };\n\n\n    /**\n     * Max length allowed by MySQL for aliases.\n     * @see https://dev.mysql.com/doc/refman/5.5/en/identifiers.html\n     */\n    maxAliasLength = 63;\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor(connection: Connection) {\n        this.connection = connection;\n        this.options = connection.options as MysqlConnectionOptions;\n        this.isReplicated = this.options.replication ? true : false;\n\n        // load mysql package\n        this.loadDependencies();\n\n        this.database = this.options.replication ? this.options.replication.master.database : this.options.database;\n\n        // validate options to make sure everything is set\n        // todo: revisit validation with replication in mind\n        // if (!(this.options.host || (this.options.extra && this.options.extra.socketPath)) && !this.options.socketPath)\n        //     throw new DriverOptionNotSetError(\"socketPath and host\");\n        // if (!this.options.username)\n        //     throw new DriverOptionNotSetError(\"username\");\n        // if (!this.options.database)\n        //     throw new DriverOptionNotSetError(\"database\");\n        // todo: check what is going on when connection is setup without database and how to connect to a database then?\n        // todo: provide options to auto-create a database if it does not exist yet\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Performs connection to the database.\n     */\n    async connect(): Promise<void> {\n\n        if (this.options.replication) {\n            this.poolCluster = this.mysql.createPoolCluster(this.options.replication);\n            this.options.replication.slaves.forEach((slave, index) => {\n                this.poolCluster.add(\"SLAVE\" + index, this.createConnectionOptions(this.options, slave));\n            });\n            this.poolCluster.add(\"MASTER\", this.createConnectionOptions(this.options, this.options.replication.master));\n\n        } else {\n            this.pool = await this.createPool(this.createConnectionOptions(this.options, this.options));\n        }\n    }\n\n    /**\n     * Makes any action after connection (e.g. create extensions in Postgres driver).\n     */\n    afterConnect(): Promise<void> {\n        return Promise.resolve();\n    }\n\n    /**\n     * Closes connection with the database.\n     */\n    async disconnect(): Promise<void> {\n        if (!this.poolCluster && !this.pool)\n            return Promise.reject(new ConnectionIsNotSetError(\"mysql\"));\n\n        if (this.poolCluster) {\n            return new Promise<void>((ok, fail) => {\n                this.poolCluster.end((err: any) => err ? fail(err) : ok());\n                this.poolCluster = undefined;\n            });\n        }\n        if (this.pool) {\n            return new Promise<void>((ok, fail) => {\n                this.pool.end((err: any) => {\n                    if (err) return fail(err);\n                    this.pool = undefined;\n                    ok();\n                });\n            });\n        }\n    }\n\n    /**\n     * Creates a schema builder used to build and sync a schema.\n     */\n    createSchemaBuilder() {\n        return new RdbmsSchemaBuilder(this.connection);\n    }\n\n    /**\n     * Creates a query runner used to execute database queries.\n     */\n    createQueryRunner(mode: \"master\"|\"slave\" = \"master\") {\n        return new MysqlQueryRunner(this, mode);\n    }\n\n    /**\n     * Replaces parameters in the given sql with special escaping character\n     * and an array of parameter names to be passed to a query.\n     */\n    escapeQueryWithParameters(sql: string, parameters: ObjectLiteral, nativeParameters: ObjectLiteral): [string, any[]] {\n        const escapedParameters: any[] = Object.keys(nativeParameters).map(key => nativeParameters[key]);\n        if (!parameters || !Object.keys(parameters).length)\n            return [sql, escapedParameters];\n\n        const keys = Object.keys(parameters).map(parameter => \"(:(\\\\.\\\\.\\\\.)?\" + parameter + \"\\\\b)\").join(\"|\");\n        sql = sql.replace(new RegExp(keys, \"g\"), (key: string) => {\n            let value: any;\n            if (key.substr(0, 4) === \":...\") {\n                value = parameters[key.substr(4)];\n            } else {\n                value = parameters[key.substr(1)];\n            }\n\n            if (value instanceof Function) {\n                return value();\n\n            } else {\n                escapedParameters.push(value);\n                return \"?\";\n            }\n        }); // todo: make replace only in value statements, otherwise problems\n        return [sql, escapedParameters];\n    }\n\n    /**\n     * Escapes a column name.\n     */\n    escape(columnName: string): string {\n        return \"`\" + columnName + \"`\";\n    }\n\n    /**\n     * Build full table name with database name, schema name and table name.\n     * E.g. \"myDB\".\"mySchema\".\"myTable\"\n     */\n    buildTableName(tableName: string, schema?: string, database?: string): string {\n        return database ? `${database}.${tableName}` : tableName;\n    }\n\n    /**\n     * Prepares given value to a value to be persisted, based on its column type and metadata.\n     */\n    preparePersistentValue(value: any, columnMetadata: ColumnMetadata): any {\n        if (columnMetadata.transformer)\n            value = ApplyValueTransformers.transformTo(columnMetadata.transformer, value);\n\n        if (value === null || value === undefined)\n            return value;\n\n        if (columnMetadata.type === Boolean) {\n            return value === true ? 1 : 0;\n\n        } else if (columnMetadata.type === \"date\") {\n            return DateUtils.mixedDateToDateString(value);\n\n        } else if (columnMetadata.type === \"time\") {\n            return DateUtils.mixedDateToTimeString(value);\n\n        } else if (columnMetadata.type === \"json\") {\n            return JSON.stringify(value);\n\n        } else if (columnMetadata.type === \"timestamp\" || columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n            return DateUtils.mixedDateToDate(value);\n\n        } else if (columnMetadata.type === \"simple-array\") {\n            return DateUtils.simpleArrayToString(value);\n\n        } else if (columnMetadata.type === \"simple-json\") {\n            return DateUtils.simpleJsonToString(value);\n\n        } else if (columnMetadata.type === \"enum\" || columnMetadata.type === \"simple-enum\") {\n            return \"\" + value;\n        }\n\n        return value;\n    }\n\n    /**\n     * Prepares given value to a value to be persisted, based on its column type or metadata.\n     */\n    prepareHydratedValue(value: any, columnMetadata: ColumnMetadata): any {\n        if (value === null || value === undefined)\n            return columnMetadata.transformer ? ApplyValueTransformers.transformFrom(columnMetadata.transformer, value) : value;\n\n        if (columnMetadata.type === Boolean || columnMetadata.type === \"bool\" || columnMetadata.type === \"boolean\") {\n            value = value ? true : false;\n\n        } else if (columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n            value = DateUtils.normalizeHydratedDate(value);\n\n        } else if (columnMetadata.type === \"date\") {\n            value = DateUtils.mixedDateToDateString(value);\n\n        } else if (columnMetadata.type === \"json\") {\n            value = typeof value === \"string\" ? JSON.parse(value) : value;\n\n        } else if (columnMetadata.type === \"time\") {\n            value = DateUtils.mixedTimeToString(value);\n\n        } else if (columnMetadata.type === \"simple-array\") {\n            value = DateUtils.stringToSimpleArray(value);\n\n        } else if (columnMetadata.type === \"simple-json\") {\n            value = DateUtils.stringToSimpleJson(value);\n\n        } else if ((columnMetadata.type === \"enum\" || columnMetadata.type === \"simple-enum\")\n            && columnMetadata.enum\n            && !isNaN(value)\n            && columnMetadata.enum.indexOf(parseInt(value)) >= 0) {\n            // convert to number if that exists in possible enum options\n            value = parseInt(value);\n        }\n\n        if (columnMetadata.transformer)\n            value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);\n\n        return value;\n    }\n\n    /**\n     * Creates a database type from a given column metadata.\n     */\n    normalizeType(column: { type: ColumnType, length?: number|string, precision?: number|null, scale?: number }): string {\n        if (column.type === Number || column.type === \"integer\") {\n            return \"int\";\n\n        } else if (column.type === String) {\n            return \"varchar\";\n\n        } else if (column.type === Date) {\n            return \"datetime\";\n\n        } else if ((column.type as any) === Buffer) {\n            return \"blob\";\n\n        } else if (column.type === Boolean) {\n            return \"tinyint\";\n\n        } else if (column.type === \"uuid\") {\n            return \"varchar\";\n\n        } else if (column.type === \"simple-array\" || column.type === \"simple-json\") {\n            return \"text\";\n\n        } else if (column.type === \"simple-enum\") {\n            return \"enum\";\n\n        } else if (column.type === \"double precision\" || column.type === \"real\") {\n            return \"double\";\n\n        } else if (column.type === \"dec\" || column.type === \"numeric\" || column.type === \"fixed\") {\n            return \"decimal\";\n\n        } else if (column.type === \"bool\" || column.type === \"boolean\") {\n            return \"tinyint\";\n\n        } else if (column.type === \"nvarchar\" || column.type === \"national varchar\") {\n            return \"varchar\";\n\n        } else if (column.type === \"nchar\" || column.type === \"national char\") {\n            return \"char\";\n\n        } else {\n            return column.type as string || \"\";\n        }\n    }\n\n    /**\n     * Normalizes \"default\" value of the column.\n     */\n    normalizeDefault(columnMetadata: ColumnMetadata): string {\n        const defaultValue = columnMetadata.default;\n\n        if ((columnMetadata.type === \"enum\" || columnMetadata.type === \"simple-enum\") && defaultValue !== undefined) {\n            return `'${defaultValue}'`;\n        }\n\n        if (typeof defaultValue === \"number\") {\n            return \"\" + defaultValue;\n\n        } else if (typeof defaultValue === \"boolean\") {\n            return defaultValue === true ? \"1\" : \"0\";\n\n        } else if (typeof defaultValue === \"function\") {\n            return defaultValue();\n\n        } else if (typeof defaultValue === \"string\") {\n            return `'${defaultValue}'`;\n\n        } else if (defaultValue === null) {\n            return `null`;\n\n        } else {\n            return defaultValue;\n        }\n    }\n\n    /**\n     * Normalizes \"isUnique\" value of the column.\n     */\n    normalizeIsUnique(column: ColumnMetadata): boolean {\n        return column.entityMetadata.indices.some(idx => idx.isUnique && idx.columns.length === 1 && idx.columns[0] === column);\n    }\n\n    /**\n     * Returns default column lengths, which is required on column creation.\n     */\n    getColumnLength(column: ColumnMetadata|TableColumn): string {\n        if (column.length)\n            return column.length.toString();\n\n        /**\n         * fix https://github.com/typeorm/typeorm/issues/1139\n         */\n        if (column.generationStrategy === \"uuid\")\n            return \"36\";\n\n        switch (column.type) {\n            case String:\n            case \"varchar\":\n            case \"nvarchar\":\n            case \"national varchar\":\n                return \"255\";\n            case \"varbinary\":\n                return \"255\";\n            default:\n                return \"\";\n        }\n    }\n\n    /**\n     * Creates column type definition including length, precision and scale\n     */\n    createFullType(column: TableColumn): string {\n        let type = column.type;\n\n        // used 'getColumnLength()' method, because MySQL requires column length for `varchar`, `nvarchar` and `varbinary` data types\n        if (this.getColumnLength(column)) {\n            type += `(${this.getColumnLength(column)})`;\n\n        } else if (column.width) {\n            type += `(${column.width})`;\n\n        } else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) {\n            type += `(${column.precision},${column.scale})`;\n\n        } else if (column.precision !== null && column.precision !== undefined) {\n            type += `(${column.precision})`;\n        }\n\n        if (column.isArray)\n            type += \" array\";\n\n        return type;\n    }\n\n    /**\n     * Obtains a new database connection to a master server.\n     * Used for replication.\n     * If replication is not setup then returns default connection's database connection.\n     */\n    obtainMasterConnection(): Promise<any> {\n        return new Promise<any>((ok, fail) => {\n            if (this.poolCluster) {\n                this.poolCluster.getConnection(\"MASTER\", (err: any, dbConnection: any) => {\n                    err ? fail(err) : ok(this.prepareDbConnection(dbConnection));\n                });\n\n            } else if (this.pool) {\n                this.pool.getConnection((err: any, dbConnection: any) => {\n                    err ? fail(err) : ok(this.prepareDbConnection(dbConnection));\n                });\n            } else {\n                fail(new Error(`Connection is not established with mysql database`));\n            }\n        });\n    }\n\n    /**\n     * Obtains a new database connection to a slave server.\n     * Used for replication.\n     * If replication is not setup then returns master (default) connection's database connection.\n     */\n    obtainSlaveConnection(): Promise<any> {\n        if (!this.poolCluster)\n            return this.obtainMasterConnection();\n\n        return new Promise<any>((ok, fail) => {\n            this.poolCluster.getConnection(\"SLAVE*\", (err: any, dbConnection: any) => {\n                err ? fail(err) : ok(dbConnection);\n            });\n        });\n    }\n\n    /**\n     * Creates generated map of values generated or returned by database after INSERT query.\n     */\n    createGeneratedMap(metadata: EntityMetadata, insertResult: any) {\n        const generatedMap = metadata.generatedColumns.reduce((map, generatedColumn) => {\n            let value: any;\n            if (generatedColumn.generationStrategy === \"increment\" && insertResult.insertId) {\n                value = insertResult.insertId;\n            // } else if (generatedColumn.generationStrategy === \"uuid\") {\n            //     console.log(\"getting db value:\", generatedColumn.databaseName);\n            //     value = generatedColumn.getEntityValue(uuidMap);\n            }\n\n            return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value));\n        }, {} as ObjectLiteral);\n\n        return Object.keys(generatedMap).length > 0 ? generatedMap : undefined;\n    }\n\n    /**\n     * Differentiate columns of this table and columns from the given column metadatas columns\n     * and returns only changed.\n     */\n    findChangedColumns(tableColumns: TableColumn[], columnMetadatas: ColumnMetadata[]): ColumnMetadata[] {\n        return columnMetadatas.filter(columnMetadata => {\n            const tableColumn = tableColumns.find(c => c.name === columnMetadata.databaseName);\n            if (!tableColumn)\n                return false; // we don't need new columns, we only need exist and changed\n\n            // console.log(\"table:\", columnMetadata.entityMetadata.tableName);\n            // console.log(\"name:\", tableColumn.name, columnMetadata.databaseName);\n            // console.log(\"type:\", tableColumn.type, this.normalizeType(columnMetadata));\n            // console.log(\"length:\", tableColumn.length, columnMetadata.length);\n            // console.log(\"width:\", tableColumn.width, columnMetadata.width);\n            // console.log(\"precision:\", tableColumn.precision, columnMetadata.precision);\n            // console.log(\"scale:\", tableColumn.scale, columnMetadata.scale);\n            // console.log(\"zerofill:\", tableColumn.zerofill, columnMetadata.zerofill);\n            // console.log(\"unsigned:\", tableColumn.unsigned, columnMetadata.unsigned);\n            // console.log(\"asExpression:\", tableColumn.asExpression, columnMetadata.asExpression);\n            // console.log(\"generatedType:\", tableColumn.generatedType, columnMetadata.generatedType);\n            // console.log(\"comment:\", tableColumn.comment, columnMetadata.comment);\n            // console.log(\"default:\", tableColumn.default, columnMetadata.default);\n            // console.log(\"enum:\", tableColumn.enum, columnMetadata.enum);\n            // console.log(\"default changed:\", !this.compareDefaultValues(this.normalizeDefault(columnMetadata), tableColumn.default));\n            // console.log(\"onUpdate:\", tableColumn.onUpdate, columnMetadata.onUpdate);\n            // console.log(\"isPrimary:\", tableColumn.isPrimary, columnMetadata.isPrimary);\n            // console.log(\"isNullable:\", tableColumn.isNullable, columnMetadata.isNullable);\n            // console.log(\"isUnique:\", tableColumn.isUnique, this.normalizeIsUnique(columnMetadata));\n            // console.log(\"isGenerated:\", tableColumn.isGenerated, columnMetadata.isGenerated);\n            // console.log((columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated));\n            // console.log(\"==========================================\");\n\n            let columnMetadataLength = columnMetadata.length;\n            if (!columnMetadataLength && columnMetadata.generationStrategy === \"uuid\") { // fixing #3374\n                columnMetadataLength = this.getColumnLength(columnMetadata);\n            }\n\n            return tableColumn.name !== columnMetadata.databaseName\n                || tableColumn.type !== this.normalizeType(columnMetadata)\n                || tableColumn.length !== columnMetadataLength\n                || tableColumn.width !== columnMetadata.width\n                || tableColumn.precision !== columnMetadata.precision\n                || tableColumn.scale !== columnMetadata.scale\n                || tableColumn.zerofill !== columnMetadata.zerofill\n                || tableColumn.unsigned !== columnMetadata.unsigned\n                || tableColumn.asExpression !== columnMetadata.asExpression\n                || tableColumn.generatedType !== columnMetadata.generatedType\n                // || tableColumn.comment !== columnMetadata.comment // todo\n                || !this.compareDefaultValues(this.normalizeDefault(columnMetadata), tableColumn.default)\n                || (tableColumn.enum && columnMetadata.enum && !OrmUtils.isArraysEqual(tableColumn.enum, columnMetadata.enum.map(val => val + \"\")))\n                || tableColumn.onUpdate !== columnMetadata.onUpdate\n                || tableColumn.isPrimary !== columnMetadata.isPrimary\n                || tableColumn.isNullable !== columnMetadata.isNullable\n                || tableColumn.isUnique !== this.normalizeIsUnique(columnMetadata)\n                || (columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated);\n        });\n    }\n\n    /**\n     * Returns true if driver supports RETURNING / OUTPUT statement.\n     */\n    isReturningSqlSupported(): boolean {\n        return false;\n    }\n\n    /**\n     * Returns true if driver supports uuid values generation on its own.\n     */\n    isUUIDGenerationSupported(): boolean {\n        return false;\n    }\n\n    /**\n     * Creates an escaped parameter.\n     */\n    createParameter(parameterName: string, index: number): string {\n        return \"?\";\n    }\n\n    // -------------------------------------------------------------------------\n    // Protected Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Loads all driver dependencies.\n     */\n    protected loadDependencies(): void {\n        try {\n            this.mysql = PlatformTools.load(\"mysql\");  // try to load first supported package\n            /*\n             * Some frameworks (such as Jest) may mess up Node's require cache and provide garbage for the 'mysql' module\n             * if it was not installed. We check that the object we got actually contains something otherwise we treat\n             * it as if the `require` call failed.\n             *\n             * @see https://github.com/typeorm/typeorm/issues/1373\n             */\n            if (Object.keys(this.mysql).length === 0) {\n                throw new Error(\"'mysql' was found but it is empty. Falling back to 'mysql2'.\");\n            }\n        } catch (e) {\n            try {\n                this.mysql = PlatformTools.load(\"mysql2\"); // try to load second supported package\n\n            } catch (e) {\n                throw new DriverPackageNotInstalledError(\"Mysql\", \"mysql\");\n            }\n        }\n    }\n\n    /**\n     * Creates a new connection pool for a given database credentials.\n     */\n    protected createConnectionOptions(options: MysqlConnectionOptions, credentials: MysqlConnectionCredentialsOptions): Promise<any> {\n\n        credentials = Object.assign(credentials, DriverUtils.buildDriverOptions(credentials)); // todo: do it better way\n\n        // build connection options for the driver\n        return Object.assign({}, {\n            charset: options.charset,\n            timezone: options.timezone,\n            connectTimeout: options.connectTimeout,\n            insecureAuth: options.insecureAuth,\n            supportBigNumbers: options.supportBigNumbers !== undefined ? options.supportBigNumbers : true,\n            bigNumberStrings: options.bigNumberStrings !== undefined ? options.bigNumberStrings : true,\n            dateStrings: options.dateStrings,\n            debug: options.debug,\n            trace: options.trace,\n            multipleStatements: options.multipleStatements,\n            flags: options.flags\n        }, {\n            host: credentials.host,\n            user: credentials.username,\n            password: credentials.password,\n            database: credentials.database,\n            port: credentials.port,\n            ssl: options.ssl\n        },\n        options.acquireTimeout === undefined\n          ? {}\n          : { acquireTimeout: options.acquireTimeout },\n        options.extra || {});\n    }\n\n    /**\n     * Creates a new connection pool for a given database credentials.\n     */\n    protected createPool(connectionOptions: any): Promise<any> {\n\n        // create a connection pool\n        const pool = this.mysql.createPool(connectionOptions);\n\n        // make sure connection is working fine\n        return new Promise<void>((ok, fail) => {\n            // (issue #610) we make first connection to database to make sure if connection credentials are wrong\n            // we give error before calling any other method that creates actual query runner\n            pool.getConnection((err: any, connection: any) => {\n                if (err)\n                    return pool.end(() => fail(err));\n\n                connection.release();\n                ok(pool);\n            });\n        });\n    }\n\n    /**\n     * Attaches all required base handlers to a database connection, such as the unhandled error handler.\n     */\n    private prepareDbConnection(connection: any): any {\n        const { logger } = this.connection;\n        /*\n          Attaching an error handler to connection errors is essential, as, otherwise, errors raised will go unhandled and\n          cause the hosting app to crash.\n         */\n        if (connection.listeners(\"error\").length === 0) {\n            connection.on(\"error\", (error: any) => logger.log(\"warn\", `MySQL connection raised an error. ${error}`));\n        }\n        return connection;\n    }\n\n    /**\n     * Checks if \"DEFAULT\" values in the column metadata and in the database are equal.\n     */\n    protected compareDefaultValues(columnMetadataValue: string, databaseValue: string): boolean {\n        if (typeof columnMetadataValue === \"string\" && typeof databaseValue === \"string\") {\n            // we need to cut out \"'\" because in mysql we can understand returned value is a string or a function\n            // as result compare cannot understand if default is really changed or not\n            columnMetadataValue = columnMetadataValue.replace(/^'+|'+$/g, \"\");\n            databaseValue = databaseValue.replace(/^'+|'+$/g, \"\");\n        }\n\n        return columnMetadataValue === databaseValue;\n    }\n\n}\n"],"sourceRoot":"../.."}