hunk.code_window:         const tableNamesString = tableNames.map(tableName => `'${tableName}'`).join(", ");
           const tablesSql      = `SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '${this.dbName}' AND TABLE_NAME IN (${tableNamesString})`;
           const columnsSql     = `SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '${this.dbName}'`;
           const indicesSql     = `SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = '${this.dbName}' AND INDEX_NAME != 'PRIMARY'`;
           const foreignKeysSql = `SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = '${this.dbName}' AND REFERENCED_COLUMN_NAME IS NOT NULL`;
           const [dbTables, dbColumns, dbIndices, dbForeignKeys]: ObjectLiteral[][] = await Promise.all([
               this.query(tablesSql),
               this.query(columnsSql),
  
hunk.labels: keep keep keep replace keep keep keep keep
hunk.after_edit:         const indicesSql     = `SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = '${this.dbName}' AND INDEX_NAME != 'PRIMARY' ORDER BY SEQ_IN_INDEX`;
  
hunk.file_path: src/driver/mysql/MysqlQueryRunner.ts
hunk.type: replace
file: import {getMetadataArgsStorage} from "../../index";
  import {EventListenerTypes} from "../../metadata/types/EventListenerTypes";
  import {EntityListenerMetadataArgs} from "../../metadata-args/EntityListenerMetadataArgs";
  
  /**
   * Calls a method on which this decorator is applied before this entity update.
   */
  export function BeforeUpdate() {
      return function (object: Object, propertyName: string) {
          const args: EntityListenerMetadataArgs = {
              target: object.constructor,
              propertyName: propertyName,
              type: EventListenerTypes.BEFORE_UPDATE
          };
          getMetadataArgsStorage().entityListeners.push(args);
      };
  }