Merge branch 'TBSliver/Postgres-Index-Fix' into development
This commit is contained in:
commit
260cb1e752
4 changed files with 88 additions and 0 deletions
|
@ -13,6 +13,15 @@ ALTER TABLE customers RENAME TO customers_temp;
|
||||||
ALTER TABLE organisations RENAME TO organisations_temp;
|
ALTER TABLE organisations RENAME TO organisations_temp;
|
||||||
ALTER TABLE transactions RENAME TO transactions_temp;
|
ALTER TABLE transactions RENAME TO transactions_temp;
|
||||||
ALTER TABLE users RENAME TO users_temp;
|
ALTER TABLE users RENAME TO users_temp;
|
||||||
|
ALTER TABLE session_tokens RENAME TO session_tokens_temp;
|
||||||
|
ALTER TABLE feedback RENAME TO feedback_temp;
|
||||||
|
|
||||||
|
ALTER INDEX transactions_idx_buyer_id RENAME TO transactions_temp_idx_buyer_id;
|
||||||
|
ALTER INDEX transactions_idx_seller_id RENAME TO transactions_temp_idx_seller_id;
|
||||||
|
ALTER INDEX session_tokens_idx_user_id RENAME TO session_tokens_temp_idx_user_id;
|
||||||
|
ALTER INDEX feedback_idx_user_id RENAME TO feedback_temp_idx_user_id;
|
||||||
|
|
||||||
|
ALTER TABLE users_temp DROP CONSTRAINT users_email;
|
||||||
|
|
||||||
CREATE TABLE "customers" (
|
CREATE TABLE "customers" (
|
||||||
"id" serial NOT NULL,
|
"id" serial NOT NULL,
|
||||||
|
@ -65,6 +74,30 @@ CREATE TABLE "users" (
|
||||||
);
|
);
|
||||||
CREATE INDEX "users_idx_entity_id" on "users" ("entity_id");
|
CREATE INDEX "users_idx_entity_id" on "users" ("entity_id");
|
||||||
|
|
||||||
|
-- Recreate session table as users is changing completely
|
||||||
|
CREATE TABLE "session_tokens" (
|
||||||
|
"id" serial NOT NULL,
|
||||||
|
"token" character varying(255) NOT NULL,
|
||||||
|
"user_id" integer NOT NULL,
|
||||||
|
PRIMARY KEY ("id"),
|
||||||
|
CONSTRAINT "session_tokens_token" UNIQUE ("token")
|
||||||
|
);
|
||||||
|
CREATE INDEX "session_tokens_idx_user_id" on "session_tokens" ("user_id");
|
||||||
|
|
||||||
|
-- Also recreate feedback as this also gets broken by the user_id changes
|
||||||
|
CREATE TABLE "feedback" (
|
||||||
|
"id" serial NOT NULL,
|
||||||
|
"user_id" integer NOT NULL,
|
||||||
|
"submitted_at" timestamp NOT NULL,
|
||||||
|
"feedbacktext" text NOT NULL,
|
||||||
|
"app_name" character varying(255) NOT NULL,
|
||||||
|
"package_name" character varying(255) NOT NULL,
|
||||||
|
"version_code" character varying(255) NOT NULL,
|
||||||
|
"version_number" character varying(255) NOT NULL,
|
||||||
|
PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
CREATE INDEX "feedback_idx_user_id" on "feedback" ("user_id");
|
||||||
|
|
||||||
DROP TABLE leaderboard_values;
|
DROP TABLE leaderboard_values;
|
||||||
TRUNCATE TABLE leaderboard_sets;
|
TRUNCATE TABLE leaderboard_sets;
|
||||||
|
|
||||||
|
@ -81,5 +114,6 @@ CREATE TABLE "leaderboard_values" (
|
||||||
CREATE INDEX "leaderboard_values_idx_entity_id" on "leaderboard_values" ("entity_id");
|
CREATE INDEX "leaderboard_values_idx_entity_id" on "leaderboard_values" ("entity_id");
|
||||||
CREATE INDEX "leaderboard_values_idx_set_id" on "leaderboard_values" ("set_id");
|
CREATE INDEX "leaderboard_values_idx_set_id" on "leaderboard_values" ("set_id");
|
||||||
|
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,16 @@
|
||||||
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
|
|
||||||
|
DROP INDEX transactions_temp_idx_buyer_id;
|
||||||
|
DROP INDEX transactions_temp_idx_seller_id;
|
||||||
|
DROP INDEX session_tokens_temp_idx_user_id;
|
||||||
|
DROP INDEX feedback_temp_idx_user_id;
|
||||||
|
|
||||||
DROP TABLE customers_temp;
|
DROP TABLE customers_temp;
|
||||||
DROP TABLE organisations_temp;
|
DROP TABLE organisations_temp;
|
||||||
DROP TABLE transactions_temp;
|
DROP TABLE transactions_temp;
|
||||||
|
DROP TABLE session_tokens_temp;
|
||||||
|
DROP TABLE feedback_temp;
|
||||||
DROP TABLE users_temp;
|
DROP TABLE users_temp;
|
||||||
DROP TABLE pending_organisations;
|
DROP TABLE pending_organisations;
|
||||||
DROP TABLE pending_transactions;
|
DROP TABLE pending_transactions;
|
||||||
|
|
|
@ -86,5 +86,31 @@ CREATE TABLE users (
|
||||||
CREATE INDEX users_idx_entity_id02 ON users (entity_id);
|
CREATE INDEX users_idx_entity_id02 ON users (entity_id);
|
||||||
CREATE UNIQUE INDEX users_email02 ON users (email);
|
CREATE UNIQUE INDEX users_email02 ON users (email);
|
||||||
|
|
||||||
|
ALTER TABLE session_tokens RENAME TO session_tokens_temp;
|
||||||
|
|
||||||
|
CREATE TABLE session_tokens (
|
||||||
|
id INTEGER PRIMARY KEY NOT NULL,
|
||||||
|
token varchar(255) NOT NULL,
|
||||||
|
user_id integer NOT NULL,
|
||||||
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||||
|
);
|
||||||
|
CREATE INDEX session_tokens_idx_user_id02 ON session_tokens (user_id);
|
||||||
|
CREATE UNIQUE INDEX session_tokens_token02 ON session_tokens (token);
|
||||||
|
|
||||||
|
ALTER TABLE feedback RENAME TO feedback_temp;
|
||||||
|
|
||||||
|
CREATE TABLE feedback (
|
||||||
|
id INTEGER PRIMARY KEY NOT NULL,
|
||||||
|
user_id integer NOT NULL,
|
||||||
|
submitted_at datetime NOT NULL,
|
||||||
|
feedbacktext text NOT NULL,
|
||||||
|
app_name varchar(255) NOT NULL,
|
||||||
|
package_name varchar(255) NOT NULL,
|
||||||
|
version_code varchar(255) NOT NULL,
|
||||||
|
version_number varchar(255) NOT NULL,
|
||||||
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||||
|
);
|
||||||
|
CREATE INDEX feedback_idx_user_id02 ON feedback (user_id);
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,8 @@ schema_from_schema_loader({ naming => 'v7' }, sub {
|
||||||
my $transaction_rs = $schema->resultset('TransactionsTemp');
|
my $transaction_rs = $schema->resultset('TransactionsTemp');
|
||||||
my $pending_org_rs = $schema->resultset('PendingOrganisation');
|
my $pending_org_rs = $schema->resultset('PendingOrganisation');
|
||||||
my $pending_trans_rs = $schema->resultset('PendingTransaction');
|
my $pending_trans_rs = $schema->resultset('PendingTransaction');
|
||||||
|
my $feedback_rs = $schema->resultset('FeedbackTemp');
|
||||||
|
my $session_token_rs = $scheme->resultset('SessionTokensTemp');
|
||||||
|
|
||||||
# Lookups used for converting transactions
|
# Lookups used for converting transactions
|
||||||
my $org_lookup = {};
|
my $org_lookup = {};
|
||||||
|
@ -108,4 +110,23 @@ schema_from_schema_loader({ naming => 'v7' }, sub {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for my $session_token ( $session_token_rs->all ) {
|
||||||
|
$schema->resultset('SessionToken')->create({
|
||||||
|
token => $session_token->token,
|
||||||
|
user_id => $user_lookup->{ $session_token->user_id },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
for my $feedback_result ( $feedback_rs->all ) {
|
||||||
|
$schema->resultset('Feedback')->create({
|
||||||
|
user_id => $user_lookup->{ $feedback_result->user_id },
|
||||||
|
submitted_at => $feedback_result->submitted_at,
|
||||||
|
feedbacktext => $feedback_result->feedbacktext,
|
||||||
|
app_name => $feedback_result->app_name,
|
||||||
|
package_name => $feedback_result->package_name,
|
||||||
|
version_code => $feedback_result->version_code,
|
||||||
|
version_number => $feedback_result->version_number,
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
Reference in a new issue