/**
     * @return bool
     */
    public function schema_changes_before_migration()
    {
        //relies on 4.1's EEH_Activation::create_table
        require_once EE_HELPERS . 'EEH_Activation.helper.php';
        $table_name = 'esp_answer';
        $sql = " ANS_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tREG_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tANS_value TEXT NOT NULL,\n\t\t\t\t\tPRIMARY KEY  (ANS_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_attendee_meta';
        $sql = "ATTM_ID INT(10) UNSIGNED NOT\tNULL AUTO_INCREMENT,\n\t\t\t\t\t\tATT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\t\tATT_fname VARCHAR(45) NOT NULL,\n\t\t\t\t\t\tATT_lname VARCHAR(45) NOT\tNULL,\n\t\t\t\t\t\tATT_address VARCHAR(255) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_address2 VARCHAR(255) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_city VARCHAR(45) DEFAULT\tNULL,\n\t\t\t\t\t\tSTA_ID INT(10) DEFAULT\tNULL,\n\t\t\t\t\t\tCNT_ISO VARCHAR(45) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_zip VARCHAR(12) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_email VARCHAR(255) NOT NULL,\n\t\t\t\t\t\tATT_phone VARCHAR(45) DEFAULT NULL,\n\t\t\t\t\t\t\tPRIMARY KEY  (ATTM_ID),\n\t\t\t\t\t\t\t\tKEY ATT_fname (ATT_fname),\n\t\t\t\t\t\t\t\tKEY ATT_lname (ATT_lname),\n\t\t\t\t\t\t\t\tKEY ATT_email (ATT_email)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB ');
        $table_name = 'esp_country';
        $sql = "CNT_ISO VARCHAR(2) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  CNT_ISO3 VARCHAR(3) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  RGN_ID TINYINT(3) UNSIGNED DEFAULT NULL,\n\t\t\t\t\t  CNT_name VARCHAR(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  CNT_cur_code VARCHAR(6) COLLATE utf8_bin DEFAULT 'USD',\n\t\t\t\t\t  CNT_cur_single VARCHAR(45) COLLATE utf8_bin DEFAULT 'dollar',\n\t\t\t\t\t  CNT_cur_plural VARCHAR(45) COLLATE utf8_bin DEFAULT 'dollars',\n\t\t\t\t\t  CNT_cur_sign VARCHAR(45) COLLATE utf8_bin DEFAULT '\$',\n\t\t\t\t\t  CNT_cur_sign_b4 TINYINT(1) DEFAULT '1',\n\t\t\t\t\t  CNT_cur_dec_plc TINYINT(3) UNSIGNED NOT NULL DEFAULT '2',\n\t\t\t\t\t  CNT_cur_dec_mrk VARCHAR(1) COLLATE utf8_bin NOT NULL DEFAULT '.',\n\t\t\t\t\t  CNT_cur_thsnds VARCHAR(1) COLLATE utf8_bin NOT NULL DEFAULT ',',\n\t\t\t\t\t  CNT_tel_code VARCHAR(12) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t  CNT_is_EU TINYINT(1) DEFAULT '0',\n\t\t\t\t\t  CNT_active TINYINT(1) DEFAULT '0',\n\t\t\t\t\t  PRIMARY KEY  (CNT_ISO)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_currency';
        $sql = "CUR_code VARCHAR(6) COLLATE utf8_bin NOT NULL,\n\t\t\t\tCUR_single VARCHAR(45) COLLATE utf8_bin DEFAULT 'dollar',\n\t\t\t\tCUR_plural VARCHAR(45) COLLATE utf8_bin DEFAULT 'dollars',\n\t\t\t\tCUR_sign VARCHAR(45) COLLATE utf8_bin DEFAULT '\$',\n\t\t\t\tCUR_dec_plc VARCHAR(1) COLLATE utf8_bin NOT NULL DEFAULT '2',\n\t\t\t\tCUR_active TINYINT(1) DEFAULT '0',\n\t\t\t\tPRIMARY KEY  (CUR_code)";
        $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_currency_payment_method';
        $sql = "CPM_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tCUR_code  VARCHAR(6) COLLATE utf8_bin NOT NULL,\n\t\t\t\tPMD_ID INT(11) NOT NULL,\n\t\t\t\tPRIMARY KEY  (CPM_ID)";
        $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB ');
        $table_name = 'esp_datetime';
        $sql = "DTT_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t  EVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t  DTT_name VARCHAR(255) NOT NULL DEFAULT '',\n\t\t\t\t  DTT_description TEXT NOT NULL,\n\t\t\t\t  DTT_EVT_start DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t  DTT_EVT_end DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t  DTT_reg_limit MEDIUMINT(8) DEFAULT -1,\n\t\t\t\t  DTT_sold MEDIUMINT(8) UNSIGNED DEFAULT 0,\n\t\t\t\t  DTT_is_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t  DTT_order MEDIUMINT(3) UNSIGNED DEFAULT 0,\n\t\t\t\t  DTT_parent INT(10) UNSIGNED DEFAULT 0,\n\t\t\t\t  DTT_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t\tPRIMARY KEY  (DTT_ID),\n\t\t\t\t\t\tKEY EVT_ID (EVT_ID),\n\t\t\t\t\t\tKEY DTT_is_primary (DTT_is_primary)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_event_meta';
        $sql = "\n\t\t\tEVTM_ID INT NOT NULL AUTO_INCREMENT,\n\t\t\tEVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\tEVT_display_desc TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,\n\t\t\tEVT_display_ticket_selector TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,\n\t\t\tEVT_visible_on DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\tEVT_default_registration_status VARCHAR(3),\n\t\t\tEVT_phone VARCHAR(45) DEFAULT NULL,\n\t\t\tEVT_additional_limit TINYINT UNSIGNED NULL,\n\t\t\tEVT_member_only TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\tEVT_allow_overflow TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\tEVT_timezone_string VARCHAR(45) NULL,\n\t\t\tEVT_external_URL VARCHAR(200) NULL,\n\t\t\tEVT_donations TINYINT(1) NULL,\n\t\t\tPRIMARY KEY  (EVTM_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_event_question_group';
        $sql = "EQG_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tEVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\tQSG_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tEQG_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY  (EQG_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_event_venue';
        $sql = "EVV_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tEVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\tVNU_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\tEVV_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\tPRIMARY KEY  (EVV_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_extra_meta';
        $sql = "EXM_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tOBJ_ID INT(11) DEFAULT NULL,\n\t\t\t\tEXM_type VARCHAR(45) DEFAULT NULL,\n\t\t\t\tEXM_key VARCHAR(45) DEFAULT NULL,\n\t\t\t\tEXM_value TEXT,\n\t\t\t\tPRIMARY KEY  (EXM_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_line_item';
        $sql = "LIN_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tLIN_code VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\tTXN_ID INT(11) DEFAULT NULL,\n\t\t\t\tLIN_name VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\tLIN_desc TEXT DEFAULT NULL,\n\t\t\t\tLIN_unit_price DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\tLIN_percent DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\tLIN_is_taxable TINYINT(1) DEFAULT 0,\n\t\t\t\tLIN_order int DEFAULT 0,\n\t\t\t\tLIN_parent int DEFAULT 0,\n\t\t\t\tLIN_type VARCHAR(25) NOT NULL,\n\t\t\t\tLIN_total DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\tLIN_quantity INT(10) DEFAULT NULL,\n\t\t\t\tOBJ_ID INT(11) DEFAULT NULL,\n\t\t\t\tOBJ_type VARCHAR(45)DEFAULT NULL,\n\t\t\t\tPRIMARY KEY  (LIN_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_log';
        $sql = "LOG_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tLOG_time DATETIME DEFAULT NULL,\n\t\t\t\tOBJ_ID VARCHAR(45) DEFAULT NULL,\n\t\t\t\tOBJ_type VARCHAR(45) DEFAULT NULL,\n\t\t\t\tLOG_type VARCHAR(45) DEFAULT NULL,\n\t\t\t\tLOG_message TEXT,\n\t\t\t\tLOG_wp_user INT(11) DEFAULT NULL,\n\t\t\t\tPRIMARY KEY  (LOG_ID)";
        $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_message_template';
        $sql = "MTP_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tGRP_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\tMTP_context VARCHAR(50) NOT NULL,\n\t\t\t\t\tMTP_template_field VARCHAR(30) NOT NULL,\n\t\t\t\t\tMTP_content TEXT NOT NULL,\n\t\t\t\t\tPRIMARY KEY  (MTP_ID),\n\t\t\t\t\tKEY GRP_ID (GRP_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        EEH_Activation::drop_index('esp_message_template_group', 'EVT_ID');
        $table_name = 'esp_message_template_group';
        $sql = "GRP_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tMTP_user_id INT(10) NOT NULL DEFAULT '1',\n\t\t\t\t\tMTP_name VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\t\tMTP_description VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\t\tMTP_messenger VARCHAR(30) NOT NULL,\n\t\t\t\t\tMTP_message_type VARCHAR(50) NOT NULL,\n\t\t\t\t\tMTP_is_global TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_is_override TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_deleted TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_is_active TINYINT(1) NOT NULL DEFAULT '1',\n\t\t\t\t\tPRIMARY KEY  (GRP_ID),\n\t\t\t\t\tKEY MTP_user_id (MTP_user_id)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_event_message_template';
        $sql = "EMT_ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tEVT_ID BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tGRP_ID INT(10) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY  (EMT_ID),\n\t\t\t\t\tKEY EVT_ID (EVT_ID),\n\t\t\t\t\tKEY GRP_ID (GRP_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_payment';
        $sql = "PAY_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tTXN_ID INT(10) UNSIGNED DEFAULT NULL,\n\t\t\t\t\tSTS_ID VARCHAR(3) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_timestamp DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\tPAY_source VARCHAR(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_amount DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\t\tPMD_ID INT(11) DEFAULT NULL,\n\t\t\t\t\tPAY_gateway_response TEXT COLLATE utf8_bin,\n\t\t\t\t\tPAY_txn_id_chq_nmbr VARCHAR(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_po_number VARCHAR(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_extra_accntng VARCHAR(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_details TEXT COLLATE utf8_bin,\n\t\t\t\t\tPAY_redirect_url VARCHAR(300),\n\t\t\t\t\tPAY_redirect_args TEXT,\n\t\t\t\t\tPRIMARY KEY  (PAY_ID),\n\t\t\t\t\tKEY TXN_ID (TXN_ID),\n\t\t\t\t\tKEY PAY_timestamp (PAY_timestamp)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB ');
        $table_name = 'esp_payment_method';
        $sql = "PMD_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tPMD_type VARCHAR(124) DEFAULT NULL,\n\t\t\t\tPMD_name VARCHAR(255) DEFAULT NULL,\n\t\t\t\tPMD_desc TEXT,\n\t\t\t\tPMD_admin_name VARCHAR(255) DEFAULT NULL,\n\t\t\t\tPMD_admin_desc TEXT,\n\t\t\t\tPMD_slug VARCHAR(124) DEFAULT NULL,\n\t\t\t\tPMD_order INT(11) DEFAULT NULL,\n\t\t\t\tPMD_debug_mode TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\tPMD_wp_user INT(11) NOT NULL DEFAULT '0',\n\t\t\t\tPMD_open_by_default TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\tPMD_button_url VARCHAR(1012) DEFAULT NULL,\n\t\t\t\tPMD_scope VARCHAR(255) NULL DEFAULT 'frontend',\n\t\t\t\tPRIMARY KEY  (PMD_ID),\n\t\t\t\tUNIQUE KEY PMD_slug_UNIQUE (PMD_slug)";
        $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB ');
        $table_name = "esp_ticket_price";
        $sql = "TKP_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  TKT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t  PRC_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t  PRIMARY KEY  (TKP_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = "esp_datetime_ticket";
        $sql = "DTK_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  DTT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t  TKT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t  PRIMARY KEY  (DTK_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = "esp_ticket_template";
        $sql = "TTM_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  TTM_name VARCHAR(45) NOT NULL,\n\t\t\t\t\t  TTM_description TEXT,\n\t\t\t\t\t  TTM_file VARCHAR(45),\n\t\t\t\t\t  PRIMARY KEY  (TTM_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_question';
        $sql = 'QST_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
					QST_display_text TEXT NOT NULL,
					QST_admin_label VARCHAR(255) NOT NULL,
					QST_system VARCHAR(25) DEFAULT NULL,
					QST_type VARCHAR(25) NOT NULL DEFAULT "TEXT",
					QST_required TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
					QST_required_text VARCHAR(100) NULL,
					QST_order TINYINT UNSIGNED NOT NULL DEFAULT 0,
					QST_admin_only TINYINT(1) NOT NULL DEFAULT 0,
					QST_wp_user BIGINT UNSIGNED NULL,
					QST_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0,
					PRIMARY KEY  (QST_ID)';
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_question_group_question';
        $sql = "QGQ_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tQSG_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQGQ_order INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY  (QGQ_ID) ";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_question_option';
        $sql = "QSO_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tQSO_value VARCHAR(255) NOT NULL,\n\t\t\t\t\tQSO_desc TEXT NOT NULL,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQSO_order INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tQSO_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY  (QSO_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_registration';
        $sql = "REG_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  EVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\t  ATT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\t  TXN_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t  TKT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t  STS_ID VARCHAR(3) COLLATE utf8_bin NOT NULL DEFAULT 'RPP',\n\t\t\t\t\t  REG_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t  REG_final_price DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t  REG_session VARCHAR(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  REG_code VARCHAR(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t  REG_url_link VARCHAR(64) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t  REG_count TINYINT UNSIGNED DEFAULT '1',\n\t\t\t\t\t  REG_group_size TINYINT UNSIGNED DEFAULT '1',\n\t\t\t\t\t  REG_att_is_going TINYINT(1) DEFAULT '0',\n\t\t\t\t\t  REG_deleted TINYINT(1) DEFAULT '0',\n\t\t\t\t\t  PRIMARY KEY  (REG_ID),\n\t\t\t\t\t  KEY EVT_ID (EVT_ID),\n\t\t\t\t\t  KEY ATT_ID (ATT_ID),\n\t\t\t\t\t  KEY TXN_ID (TXN_ID),\n\t\t\t\t\t  KEY TKT_ID (TKT_ID),\n\t\t\t\t\t  KEY STS_ID (STS_ID),\n\t\t\t\t\t  KEY REG_url_link (REG_url_link),\n\t\t\t\t\t  KEY REG_code (REG_code)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB ');
        $table_name = 'esp_checkin';
        $sql = "CHK_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tREG_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\tDTT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\tCHK_in TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,\n\t\t\t\t\tCHK_timestamp DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\tPRIMARY KEY  (CHK_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_state';
        $sql = "STA_ID smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  CNT_ISO VARCHAR(2) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STA_abbrev VARCHAR(24) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STA_name VARCHAR(100) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STA_active TINYINT(1) DEFAULT '1',\n\t\t\t\t\t  PRIMARY KEY  (STA_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_status';
        $sql = "STS_ID VARCHAR(3) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STS_code VARCHAR(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STS_type set('event','registration','transaction','payment','email') COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STS_can_edit TINYINT(1) NOT NULL DEFAULT 0,\n\t\t\t\t\t  STS_desc TINYTEXT COLLATE utf8_bin,\n\t\t\t\t\t  STS_open TINYINT(1) NOT NULL DEFAULT 1,\n\t\t\t\t\t  UNIQUE KEY STS_ID_UNIQUE (STS_ID),\n\t\t\t\t\t  KEY STS_type (STS_type)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_transaction';
        $sql = "TXN_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  TXN_timestamp DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t  TXN_total DECIMAL(10,3) DEFAULT '0.00',\n\t\t\t\t\t  TXN_paid DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t  STS_ID VARCHAR(3) NOT NULL DEFAULT 'TOP',\n\t\t\t\t\t  TXN_session_data TEXT COLLATE utf8_bin,\n\t\t\t\t\t  TXN_hash_salt VARCHAR(250) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t  PMD_ID INT(11) DEFAULT NULL,\n\t\t\t\t\t  TXN_reg_steps TEXT,\n\t\t\t\t\t  PRIMARY KEY  (TXN_ID),\n\t\t\t\t\t  KEY TXN_timestamp (TXN_timestamp),\n\t\t\t\t\t  KEY STS_ID (STS_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_venue_meta';
        $sql = "VNUM_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\tVNU_ID BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\tVNU_address VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_address2 VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_city VARCHAR(100) DEFAULT NULL,\n\t\t\tSTA_ID INT(11) DEFAULT NULL,\n\t\t\tCNT_ISO VARCHAR(2) DEFAULT NULL,\n\t\t\tVNU_zip VARCHAR(45) DEFAULT NULL,\n\t\t\tVNU_phone VARCHAR(45) DEFAULT NULL,\n\t\t\tVNU_capacity INT(11) DEFAULT NULL,\n\t\t\tVNU_url VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_virtual_phone VARCHAR(45) DEFAULT NULL,\n\t\t\tVNU_virtual_url VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_enable_for_gmap TINYINT(1) DEFAULT '0',\n\t\t\tVNU_google_map_link VARCHAR(255) DEFAULT NULL,\n\t\t\tPRIMARY KEY  (VNUM_ID),\n\t\t\tKEY STA_ID (STA_ID),\n\t\t\tKEY CNT_ISO (CNT_ISO)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        //modified tables
        $table_name = "esp_price";
        $sql = "PRC_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  PRT_ID TINYINT(3) UNSIGNED NOT NULL,\n\t\t\t\t\t  PRC_amount DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t  PRC_name VARCHAR(245) NOT NULL,\n\t\t\t\t\t  PRC_desc TEXT,\n\t\t\t\t\t  PRC_is_default TINYINT(1) UNSIGNED NOT NULL DEFAULT '1',\n\t\t\t\t\t  PRC_overrides INT(10) UNSIGNED DEFAULT NULL,\n\t\t\t\t\t  PRC_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t  PRC_order TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t  PRC_wp_user BIGINT UNSIGNED NULL,\n\t\t\t\t\t  PRC_parent INT(10) UNSIGNED DEFAULT 0,\n\t\t\t\t\t  PRIMARY KEY  (PRC_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = "esp_price_type";
        $sql = "PRT_ID TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t  PRT_name VARCHAR(45) NOT NULL,\n\t\t\t\t  PBT_ID TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',\n\t\t\t\t  PRT_is_percent TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t  PRT_order TINYINT UNSIGNED NULL,\n\t\t\t\t  PRT_wp_user BIGINT UNSIGNED NULL,\n\t\t\t\t  PRT_deleted TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t  UNIQUE KEY PRT_name_UNIQUE (PRT_name),\n\t\t\t\t  PRIMARY KEY  (PRT_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB ');
        $table_name = "esp_ticket";
        $sql = "TKT_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  TTM_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t  TKT_name VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\t\t  TKT_description TEXT NOT NULL,\n\t\t\t\t\t  TKT_qty MEDIUMINT(8) DEFAULT NULL,\n\t\t\t\t\t  TKT_sold MEDIUMINT(8) NOT NULL DEFAULT 0,\n\t\t\t\t\t  TKT_uses TINYINT NOT NULL DEFAULT '-1',\n\t\t\t\t\t  TKT_required TINYINT UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_min TINYINT UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_max TINYINT NOT NULL DEFAULT '-1',\n\t\t\t\t\t  TKT_price DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t  TKT_start_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t  TKT_end_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t  TKT_taxable TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_order TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_row TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_is_default TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_wp_user BIGINT UNSIGNED NULL,\n\t\t\t\t\t  TKT_parent INT(10) UNSIGNED DEFAULT '0',\n\t\t\t\t\t  TKT_deleted TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\t  PRIMARY KEY  (TKT_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        EEH_Activation::drop_index('esp_question_group', 'QSG_identifier_UNIQUE');
        $table_name = 'esp_question_group';
        $sql = 'QSG_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
					QSG_name VARCHAR(255) NOT NULL,
					QSG_identifier VARCHAR(100) NOT NULL,
					QSG_desc TEXT NULL,
					QSG_order TINYINT UNSIGNED NOT NULL DEFAULT 0,
					QSG_show_group_name TINYINT(1) NOT NULL,
					QSG_show_group_desc TINYINT(1) NOT NULL,
					QSG_system TINYINT NULL,
					QSG_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
					QSG_wp_user BIGINT UNSIGNED NULL,
					PRIMARY KEY  (QSG_ID),
					UNIQUE KEY QSG_identifier_UNIQUE (QSG_identifier ASC)';
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        /** @var EE_DMS_Core_4_1_0 $script_4_1_defaults */
        $script_4_1_defaults = EE_Registry::instance()->load_dms('Core_4_1_0');
        //(because many need to convert old string states to foreign keys into the states table)
        $script_4_1_defaults->insert_default_states();
        $script_4_1_defaults->insert_default_countries();
        /** @var EE_DMS_Core_4_5_0 $script_4_5_defaults */
        $script_4_5_defaults = EE_Registry::instance()->load_dms('Core_4_5_0');
        $script_4_5_defaults->insert_default_price_types();
        $script_4_5_defaults->insert_default_prices();
        $script_4_5_defaults->insert_default_tickets();
        //setting up the config wp option pretty well counts as a 'schema change', or at least should happen here
        EE_Config::instance()->update_espresso_config(false, true);
        $this->add_default_admin_only_payments();
        $this->insert_default_currencies();
        return true;
    }
    public function schema_changes_before_migration()
    {
        //relies on 4.1's EEH_Activation::create_table
        require_once EE_HELPERS . 'EEH_Activation.helper.php';
        $table_name = 'esp_answer';
        $sql = " ANS_ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tREG_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tANS_value TEXT NOT NULL ,\n\t\t\t\t\tPRIMARY KEY  (ANS_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_attendee_meta';
        $sql = "ATTM_ID int(10) unsigned NOT\tNULL AUTO_INCREMENT,\n\t\t\t\t\t\tATT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t\tATT_fname varchar(45) NOT NULL,\n\t\t\t\t\t\tATT_lname varchar(45) NOT\tNULL,\n\t\t\t\t\t\tATT_address varchar(45) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_address2 varchar(45) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_city varchar(45) DEFAULT\tNULL,\n\t\t\t\t\t\tSTA_ID int(10) DEFAULT\tNULL,\n\t\t\t\t\t\tCNT_ISO varchar(45) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_zip varchar(12) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_email varchar(100) NOT NULL,\n\t\t\t\t\t\tATT_phone varchar(45) DEFAULT NULL,\n\t\t\t\t\t\t\tPRIMARY KEY  (ATTM_ID),\n\t\t\t\t\t\t\t\tKEY ATT_fname (ATT_fname),\n\t\t\t\t\t\t\t\tKEY ATT_lname (ATT_lname),\n\t\t\t\t\t\t\t\tKEY ATT_email (ATT_email)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB ');
        $table_name = 'esp_country';
        $sql = "CNT_ISO varchar(2) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  CNT_ISO3 varchar(3) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  RGN_ID tinyint(3) unsigned DEFAULT NULL,\n\t\t\t\t\t  CNT_name varchar(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  CNT_cur_code varchar(6) COLLATE utf8_bin DEFAULT 'USD',\n\t\t\t\t\t  CNT_cur_single varchar(45) COLLATE utf8_bin DEFAULT 'dollar',\n\t\t\t\t\t  CNT_cur_plural varchar(45) COLLATE utf8_bin DEFAULT 'dollars',\n\t\t\t\t\t  CNT_cur_sign varchar(45) COLLATE utf8_bin DEFAULT '\$',\n\t\t\t\t\t  CNT_cur_sign_b4 tinyint(1) DEFAULT '1',\n\t\t\t\t\t  CNT_cur_dec_plc tinyint(3) unsigned NOT NULL DEFAULT '2',\n\t\t\t\t\t  CNT_cur_dec_mrk varchar(1) COLLATE utf8_bin NOT NULL DEFAULT '.',\n\t\t\t\t\t  CNT_cur_thsnds varchar(1) COLLATE utf8_bin NOT NULL DEFAULT ',',\n\t\t\t\t\t  CNT_tel_code varchar(12) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t  CNT_is_EU tinyint(1) DEFAULT '0',\n\t\t\t\t\t  CNT_active tinyint(1) DEFAULT '0',\n\t\t\t\t\t  PRIMARY KEY  (CNT_ISO)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_datetime';
        $sql = "DTT_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t  EVT_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t  DTT_name VARCHAR(255) NOT NULL default '',\n\t\t\t\t  DTT_description TEXT NOT NULL default '',\n\t\t\t\t  DTT_EVT_start datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t  DTT_EVT_end datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t  DTT_reg_limit mediumint(8) DEFAULT -1,\n\t\t\t\t  DTT_sold mediumint(8) unsigned DEFAULT 0,\n\t\t\t\t  DTT_is_primary tinyint(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t  DTT_order mediumint(3) unsigned DEFAULT 0,\n\t\t\t\t  DTT_parent int(10) unsigned DEFAULT 0,\n\t\t\t\t  DTT_deleted tinyint(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t\tPRIMARY KEY  (DTT_ID),\n\t\t\t\t\t\tKEY EVT_ID (EVT_ID),\n\t\t\t\t\t\tKEY DTT_is_primary (DTT_is_primary)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_event_meta';
        $sql = "\n\t\t\tEVTM_ID INT NOT NULL AUTO_INCREMENT,\n\t\t\tEVT_ID int(11) unsigned NOT NULL,\n\t\t\tEVT_display_desc TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 ,\n\t\t\tEVT_display_ticket_selector TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 ,\n\t\t\tEVT_visible_on datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\tEVT_default_registration_status VARCHAR(3),\n\t\t\tEVT_phone varchar(45) DEFAULT NULL,\n\t\t\tEVT_additional_limit TINYINT UNSIGNED NULL ,\n\t\t\tEVT_member_only TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 ,\n\t\t\tEVT_allow_overflow TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 ,\n\t\t\tEVT_timezone_string VARCHAR(45) NULL ,\n\t\t\tEVT_external_URL VARCHAR(200) NULL ,\n\t\t\tEVT_donations TINYINT(1) NULL,\n\t\t\tPRIMARY KEY  (EVTM_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_event_question_group';
        $sql = "EQG_ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tEVT_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tQSG_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tEQG_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY  (EQG_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_event_venue';
        $sql = "EVV_ID INT(11) NOT NULL AUTO_INCREMENT ,\n\t\t\t\tEVT_ID INT(11) NOT NULL ,\n\t\t\t\tVNU_ID INT(11) NOT NULL ,\n\t\t\t\tEVV_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\tPRIMARY KEY  (EVV_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_extra_meta';
        $sql = "EXM_ID int(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tOBJ_ID int(11) DEFAULT NULL,\n\t\t\t\tEXM_type varchar(45) DEFAULT NULL,\n\t\t\t\tEXM_key varchar(45) DEFAULT NULL,\n\t\t\t\tEXM_value text,\n\t\t\t\tPRIMARY KEY  (EXM_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_line_item';
        $sql = "LIN_ID int(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tLIN_code varchar(245) NOT NULL DEFAULT '',\n\t\t\t\tTXN_ID int(11) DEFAULT NULL,\n\t\t\t\tLIN_name varchar(245) NOT NULL DEFAULT '',\n\t\t\t\tLIN_desc varchar(245) DEFAULT NULL,\n\t\t\t\tLIN_unit_price decimal(10,3) DEFAULT NULL,\n\t\t\t\tLIN_percent decimal(10,3) DEFAULT NULL,\n\t\t\t\tLIN_is_taxable tinyint(1) DEFAULT 0,\n\t\t\t\tLIN_order int DEFAULT 0,\n\t\t\t\tLIN_parent int DEFAULT 0,\n\t\t\t\tLIN_type varchar(25) NOT NULL,\n\t\t\t\tLIN_total decimal(10,3) DEFAULT NULL,\n\t\t\t\tLIN_quantity int(10) DEFAULT NULL,\n\t\t\t\tOBJ_ID int(11) DEFAULT NULL,\n\t\t\t\tOBJ_type varchar(45)DEFAULT NULL,\n\t\t\t\tPRIMARY KEY  (LIN_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_message_template';
        $sql = "MTP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tGRP_ID int(10) unsigned NOT NULL,\n\t\t\t\t\tMTP_context varchar(50) NOT NULL,\n\t\t\t\t\tMTP_template_field varchar(30) NOT NULL,\n\t\t\t\t\tMTP_content text NOT NULL,\n\t\t\t\t\tPRIMARY KEY  (MTP_ID),\n\t\t\t\t\tKEY GRP_ID (GRP_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        EEH_Activation::drop_index('esp_message_template_group', 'EVT_ID');
        $table_name = 'esp_message_template_group';
        $sql = "GRP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tMTP_user_id int(10) NOT NULL DEFAULT '1',\n\t\t\t\t\tMTP_name varchar(245) NOT NULL DEFAULT '',\n\t\t\t\t\tMTP_description varchar(245) NOT NULL DEFAULT '',\n\t\t\t\t\tMTP_messenger varchar(30) NOT NULL,\n\t\t\t\t\tMTP_message_type varchar(50) NOT NULL,\n\t\t\t\t\tMTP_is_global tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_is_override tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_deleted tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_is_active tinyint(1) NOT NULL DEFAULT '1',\n\t\t\t\t\tPRIMARY KEY  (GRP_ID),\n\t\t\t\t\tKEY MTP_user_id (MTP_user_id)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_event_message_template';
        $sql = "EMT_ID BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tEVT_ID BIGINT(20) unsigned NOT NULL DEFAULT 0,\n\t\t\t\t\tGRP_ID INT(10) unsigned NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY  (EMT_ID),\n\t\t\t\t\tKEY EVT_ID (EVT_ID),\n\t\t\t\t\tKEY GRP_ID (GRP_ID)";
        $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_payment';
        $sql = "PAY_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tTXN_ID int(10) unsigned DEFAULT NULL,\n\t\t\t\t\tSTS_ID varchar(3) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_timestamp datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\tPAY_method varchar(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_amount decimal(10,3) DEFAULT NULL,\n\t\t\t\t\tPAY_gateway varchar(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_gateway_response text COLLATE utf8_bin,\n\t\t\t\t\tPAY_txn_id_chq_nmbr varchar(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_po_number varchar(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_extra_accntng varchar(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_via_admin tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tPAY_details text COLLATE utf8_bin,\n\t\t\t\t\tPRIMARY KEY  (PAY_ID),\n\t\t\t\t\tKEY TXN_ID (TXN_ID),\n\t\t\t\t\tKEY PAY_timestamp (PAY_timestamp)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB ');
        $table_name = "esp_ticket";
        $sql = "TKT_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  TTM_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t  TKT_name varchar(100) NOT NULL DEFAULT '',\n\t\t\t\t\t  TKT_description TEXT NOT NULL DEFAULT '',\n\t\t\t\t\t  TKT_qty mediumint(8) DEFAULT NULL,\n\t\t\t\t\t  TKT_sold mediumint(8) NOT NULL DEFAULT 0,\n\t\t\t\t\t  TKT_uses tinyint NOT NULL DEFAULT '-1',\n\t\t\t\t\t  TKT_required tinyint unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_min tinyint unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_max tinyint NOT NULL DEFAULT '-1',\n\t\t\t\t\t  TKT_price decimal(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t  TKT_start_date datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t  TKT_end_date datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t  TKT_taxable tinyint(1) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_order tinyint(3) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_row tinyint(3) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_is_default tinyint(1) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t  TKT_parent int(10) unsigned DEFAULT '0',\n\t\t\t\t\t  TKT_deleted tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t\t  PRIMARY KEY  (TKT_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = "esp_ticket_price";
        $sql = "TKP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  TKT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t  PRC_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t  PRIMARY KEY  (TKP_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = "esp_datetime_ticket";
        $sql = "DTK_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  DTT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t  TKT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t  PRIMARY KEY  (DTK_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = "esp_ticket_template";
        $sql = "TTM_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  TTM_name varchar(45) NOT NULL,\n\t\t\t\t\t  TTM_description text,\n\t\t\t\t\t  TTM_file varchar(45),\n\t\t\t\t\t  PRIMARY KEY  (TTM_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = "esp_price";
        $sql = "PRC_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  PRT_ID tinyint(3) unsigned NOT NULL,\n\t\t\t\t\t  PRC_amount decimal(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t  PRC_name varchar(45) NOT NULL,\n\t\t\t\t\t  PRC_desc text,\n\t\t\t\t\t  PRC_is_default tinyint(1) unsigned NOT NULL DEFAULT '1',\n\t\t\t\t\t  PRC_overrides int(10) unsigned DEFAULT NULL,\n\t\t\t\t\t  PRC_deleted tinyint(1) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t  PRC_order tinyint(3) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t  PRC_parent int(10) unsigned DEFAULT 0,\n\t\t\t\t\t  PRIMARY KEY  (PRC_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = "esp_price_type";
        $sql = "PRT_ID tinyint(3) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t  PRT_name VARCHAR(45) NOT NULL ,\n\t\t\t\t  PBT_ID tinyint(3) unsigned NOT NULL DEFAULT '1',\n\t\t\t\t  PRT_is_percent tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t  PRT_order tinyint UNSIGNED NULL,\n\t\t\t\t  PRT_deleted tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t  UNIQUE KEY PRT_name_UNIQUE (PRT_name),\n\t\t\t\t  PRIMARY KEY  (PRT_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_question';
        $sql = 'QST_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
					QST_display_text TEXT NOT NULL,
					QST_admin_label VARCHAR(255) NOT NULL,
					QST_system varchar(25) DEFAULT NULL,
					QST_type VARCHAR(25) NOT NULL DEFAULT "TEXT",
					QST_required TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
					QST_required_text VARCHAR(100) NULL,
					QST_order TINYINT UNSIGNED NOT NULL DEFAULT 0,
					QST_admin_only TINYINT(1) NOT NULL DEFAULT 0,
					QST_wp_user BIGINT UNSIGNED NULL,
					QST_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0,
					PRIMARY KEY  (QST_ID)';
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        EEH_Activation::drop_index('esp_question_group', 'QSG_identifier_UNIQUE');
        $table_name = 'esp_question_group';
        $sql = 'QSG_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
					QSG_name VARCHAR(255) NOT NULL,
					QSG_identifier VARCHAR(100) NOT NULL,
					QSG_desc TEXT NULL,
					QSG_order TINYINT UNSIGNED NOT NULL DEFAULT 0,
					QSG_show_group_name TINYINT(1) NOT NULL,
					QSG_show_group_desc TINYINT(1) NOT NULL,
					QSG_system TINYINT NULL,
					QSG_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
					PRIMARY KEY  (QSG_ID),
					UNIQUE KEY QSG_identifier_UNIQUE (QSG_identifier ASC)';
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_question_group_question';
        $sql = "QGQ_ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tQSG_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tQGQ_order INT UNSIGNED NOT NULL DEFAULT 0 ,\n\t\t\t\t\tPRIMARY KEY  (QGQ_ID) ";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_question_option';
        $sql = "QSO_ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tQSO_value VARCHAR(255) NOT NULL ,\n\t\t\t\t\tQSO_desc TEXT NOT NULL ,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tQSO_order INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tQSO_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY  (QSO_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_registration';
        $sql = "REG_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  EVT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t  ATT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t  TXN_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t  TKT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t  STS_ID varchar(3) COLLATE utf8_bin NOT NULL DEFAULT 'RPP',\n\t\t\t\t\t  REG_date datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t  REG_final_price decimal(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t  REG_session varchar(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  REG_code varchar(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t  REG_url_link varchar(64) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t  REG_count tinyint(4) DEFAULT '1',\n\t\t\t\t\t  REG_group_size tinyint(4) DEFAULT '1',\n\t\t\t\t\t  REG_att_is_going tinyint(1) DEFAULT '0',\n\t\t\t\t\t  REG_deleted tinyint(1) DEFAULT '0',\n\t\t\t\t\t  PRIMARY KEY  (REG_ID),\n\t\t\t\t\t  KEY EVT_ID (EVT_ID),\n\t\t\t\t\t  KEY ATT_ID (ATT_ID),\n\t\t\t\t\t  KEY TXN_ID (TXN_ID),\n\t\t\t\t\t  KEY TKT_ID (TKT_ID),\n\t\t\t\t\t  KEY STS_ID (STS_ID),\n\t\t\t\t\t  KEY REG_url_link (REG_url_link),\n\t\t\t\t\t  KEY REG_code (REG_code)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB ');
        $table_name = 'esp_checkin';
        $sql = "CHK_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tREG_ID INT(10) unsigned NOT NULL ,\n\t\t\t\t\tDTT_ID INT(10) unsigned NOT NULL ,\n\t\t\t\t\tCHK_in TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 ,\n\t\t\t\t\tCHK_timestamp datetime NOT NULL default '0000-00-00 00:00:00' ,\n\t\t\t\t\tPRIMARY KEY  (CHK_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_state';
        $sql = "STA_ID smallint(5) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  CNT_ISO varchar(2) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STA_abbrev varchar(6) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STA_name varchar(100) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STA_active tinyint(1) DEFAULT '1',\n\t\t\t\t\t  PRIMARY KEY  (STA_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_status';
        $sql = "STS_ID varchar(3) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STS_code varchar(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STS_type set('event','registration','transaction','payment','email') COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t  STS_can_edit tinyint(1) NOT NULL DEFAULT 0,\n\t\t\t\t\t  STS_desc tinytext COLLATE utf8_bin,\n\t\t\t\t\t  STS_open tinyint(1) NOT NULL DEFAULT 1,\n\t\t\t\t\t  UNIQUE KEY STS_ID_UNIQUE (STS_ID),\n\t\t\t\t\t  KEY STS_type (STS_type)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_transaction';
        $sql = "TXN_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t  TXN_timestamp datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t  TXN_total decimal(10,3) DEFAULT '0.00',\n\t\t\t\t\t  TXN_paid decimal(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t  STS_ID varchar(3) NOT NULL DEFAULT 'TOP',\n\t\t\t\t\t  TXN_session_data text COLLATE utf8_bin,\n\t\t\t\t\t  TXN_hash_salt varchar(250) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t  PRIMARY KEY  (TXN_ID),\n\t\t\t\t\t  KEY TXN_timestamp (TXN_timestamp),\n\t\t\t\t\t  KEY STS_ID (STS_ID)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $table_name = 'esp_venue_meta';
        $sql = "VNUM_ID int(11) NOT NULL AUTO_INCREMENT,\n\t\t\tVNU_ID int(11) DEFAULT NULL,\n\t\t\tVNU_address varchar(100) DEFAULT NULL,\n\t\t\tVNU_address2 varchar(100) DEFAULT NULL,\n\t\t\tVNU_city varchar(100) DEFAULT NULL,\n\t\t\tSTA_ID int(11) DEFAULT NULL,\n\t\t\tCNT_ISO varchar(2) DEFAULT NULL,\n\t\t\tVNU_zip varchar(45) DEFAULT NULL,\n\t\t\tVNU_phone varchar(45) DEFAULT NULL,\n\t\t\tVNU_capacity int(11) DEFAULT NULL,\n\t\t\tVNU_url varchar(255) DEFAULT NULL,\n\t\t\tVNU_virtual_phone varchar(45) DEFAULT NULL,\n\t\t\tVNU_virtual_url varchar(255) DEFAULT NULL,\n\t\t\tVNU_enable_for_gmap tinyint(1) DEFAULT '0',\n\t\t\tVNU_google_map_link varchar(255) DEFAULT NULL,\n\t\t\tPRIMARY KEY  (VNUM_ID),\n\t\t\tKEY STA_ID (STA_ID),\n\t\t\tKEY CNT_ISO (CNT_ISO)";
        $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB');
        $script_with_defaults = EE_Registry::instance()->load_dms('Core_4_1_0');
        //setting up the default stats and countries is also essential for the data migrations to run
        //(because many need to convert old string states to foreign keys into the states table)
        $script_with_defaults->insert_default_states();
        $script_with_defaults->insert_default_countries();
        //setting up default prices, price types, and tickets is also essential for the price migrations
        $script_with_defaults->insert_default_price_types();
        $script_with_defaults->insert_default_prices();
        //but the schema on the tickets table has changed since 4.1, so use our default ticket method instead of 4.1's
        $this->insert_default_tickets();
        //setting up the config wp option pretty well counts as a 'schema change', or at least should happen ehre
        EE_Config::instance()->update_espresso_config(false, true);
        return true;
    }