or height, we used to have -1 as a default, and have the field NOT NULL.
SQL has a perfectly good value for "unknown data" -- it's called NULL. Make
upgrade SQL, and clean up the few code places that was used to the field being
-1.
my ($r, $filename, $id, $dbwidth, $dbheight, $infobox, $xres, $yres, @otherres) = @_;
my $fname = get_disk_location($r, $id);
- unless (defined($xres) && ($xres < $dbheight || $yres < $dbwidth || $dbwidth == -1 || $dbheight == -1 || $xres == -1)) {
+ unless (defined($xres) && ($xres < $dbheight || $yres < $dbwidth || !defined($dbwidth) || !defined($dbheight) || $xres == -1)) {
return ($fname, 0);
}
my $height = $img->Get('rows');
# Update the SQL database if it doesn't contain the required info
- if ($dbwidth == -1 || $dbheight == -1) {
+ if (!defined($dbwidth) || !defined($dbheight)) {
$r->log->info("Updating width/height for $id: $width x $height");
update_image_info($r, $id, $width, $height);
}
my @files = ();
while (my $ref = $q->fetchrow_hashref()) {
- push @files, [ $ref->{'event'}, $ref->{'filename'}, $ref->{'width'}, $ref->{'height'} ];
+ my $width = defined($ref->{'width'}) ? $ref->{'width'} : -1;
+ my $height = defined($ref->{'height'}) ? $ref->{'height'} : -1;
+ push @files, [ $ref->{'event'}, $ref->{'filename'}, $width, $height ];
}
for my $i (0..$#files) {
}
}
- if ($ref->{'width'} != -1 && $ref->{'height'} != -1) {
+ if (defined($ref->{'width'}) && defined($ref->{'height'})) {
my $width = $ref->{'width'};
my $height = $ref->{'height'};
CREATE INDEX tags_tag ON tags ( tag );
GRANT SELECT,INSERT,DELETE ON TABLE tags TO pr0n;
+
+-- width/height -1 => NULL
+ALTER TABLE images ALTER COLUMN width DROP NOT NULL;
+ALTER TABLE images ALTER COLUMN height DROP NOT NULL;
+ALTER TABLE images ALTER COLUMN width SET DEFAULT NULL;
+ALTER TABLE images ALTER COLUMN height SET DEFAULT NULL;
+UPDATE images SET width=NULL,height=NULL WHERE width=-1 OR height=-1;
+ALTER TABLE images ADD CONSTRAINT width_height_nullity CHECK ((width IS NULL) = (height IS NULL));