posts: redefine source column to be non-NULL (fixes #3090).

This commit is contained in:
evazion
2017-05-26 13:54:17 -05:00
parent f38810bd1c
commit 8f98e8e03c
3 changed files with 20 additions and 3 deletions

View File

@@ -175,7 +175,7 @@ class PostQueryBuilder
# URLs unchanged. This is to ease database load for Pixiv source searches.
if q[:source]
if q[:source] == "none%"
relation = relation.where("(posts.source = '' OR posts.source IS NULL)")
relation = relation.where("posts.source = ''")
elsif q[:source] == "http%"
relation = relation.where("(lower(posts.source) like ?)", "http%")
elsif q[:source] =~ /^(?:https?:\/\/)?%\.?pixiv(?:\.net(?:\/img)?)?(?:%\/img\/|%\/|(?=%$))(.+)$/i
@@ -189,7 +189,7 @@ class PostQueryBuilder
if q[:source_neg]
if q[:source_neg] == "none%"
relation = relation.where("(posts.source != '' AND posts.source IS NOT NULL)")
relation = relation.where("posts.source != ''")
elsif q[:source_neg] == "http%"
relation = relation.where("(lower(posts.source) not like ?)", "http%")
elsif q[:source_neg] =~ /^(?:https?:\/\/)?%\.?pixiv(?:\.net(?:\/img)?)?(?:%\/img\/|%\/|(?=%$))(.+)$/i

View File

@@ -0,0 +1,15 @@
class ChangeSourceToNonNullOnPosts < ActiveRecord::Migration
def up
Post.without_timeout do
change_column_null(:posts, :source, false, "")
change_column_default(:posts, :source, "")
end
end
def down
Post.without_timeout do
change_column_null(:posts, :source, true)
change_column_default(:posts, :source, nil)
end
end
end

View File

@@ -2773,7 +2773,7 @@ CREATE TABLE posts (
up_score integer DEFAULT 0 NOT NULL,
down_score integer DEFAULT 0 NOT NULL,
score integer DEFAULT 0 NOT NULL,
source character varying,
source character varying DEFAULT ''::character varying NOT NULL,
md5 character varying NOT NULL,
rating character(1) DEFAULT 'q'::bpchar NOT NULL,
is_note_locked boolean DEFAULT false NOT NULL,
@@ -7547,3 +7547,5 @@ INSERT INTO schema_migrations (version) VALUES ('20170515235205');
INSERT INTO schema_migrations (version) VALUES ('20170519204506');
INSERT INTO schema_migrations (version) VALUES ('20170526183928');