-- ------------------------------------------
--- Friendica 2023.09-rc (Giant Rhubarb)
--- DB_UPDATE_VERSION 1536
+-- Friendica 2024.06-dev (Yellow Archangel)
+-- DB_UPDATE_VERSION 1559
-- ------------------------------------------
`blockwall` boolean NOT NULL DEFAULT '0' COMMENT 'Prohibit contacts to post to the profile page of the user',
`hidewall` boolean NOT NULL DEFAULT '0' COMMENT 'Hide profile details from unknown viewers',
`blocktags` boolean NOT NULL DEFAULT '0' COMMENT 'Prohibit contacts to tag the post of this user',
- `unkmail` boolean NOT NULL DEFAULT '0' COMMENT 'Permit unknown people to send private mails to this user',
- `cntunkmail` int unsigned NOT NULL DEFAULT 10 COMMENT '',
`notify-flags` smallint unsigned NOT NULL DEFAULT 65535 COMMENT 'email notification options',
`page-flags` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'page/profile type',
`account-type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
`description` varchar(64) COMMENT 'Channel description',
`circle` int COMMENT 'Circle or channel that this channel is based on',
`access-key` varchar(1) COMMENT 'Access key',
- `include-tags` varchar(255) COMMENT 'Comma separated list of tags that will be included in the channel',
- `exclude-tags` varchar(255) COMMENT 'Comma separated list of tags that aren\'t allowed in the channel',
- `full-text-search` varchar(255) COMMENT 'Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode',
+ `include-tags` varchar(1023) COMMENT 'Comma separated list of tags that will be included in the channel',
+ `exclude-tags` varchar(1023) COMMENT 'Comma separated list of tags that aren\'t allowed in the channel',
+ `min-size` int unsigned COMMENT 'Minimum post size',
+ `max-size` int unsigned COMMENT 'Maximum post size',
+ `full-text-search` varchar(1023) COMMENT 'Full text search pattern, see https://mariadb.com/kb/en/full-text-index-overview/#in-boolean-mode',
`media-type` smallint unsigned COMMENT 'Filtered media types',
+ `languages` mediumtext COMMENT 'Desired languages',
+ `publish` boolean COMMENT 'publish channel content',
+ `valid` boolean COMMENT 'Set, when the full-text-search is valid',
PRIMARY KEY(`id`),
INDEX `uid` (`uid`),
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
`relation-score` smallint unsigned COMMENT 'score for interactions of relation-cid on cid',
`thread-score` smallint unsigned COMMENT 'score for interactions of cid on threads of relation-cid',
`relation-thread-score` smallint unsigned COMMENT 'score for interactions of relation-cid on threads of cid',
+ `post-score` smallint unsigned COMMENT 'score for the amount of posts from cid that can be seen by relation-cid',
PRIMARY KEY(`cid`,`relation-cid`),
INDEX `relation-cid` (`relation-cid`),
FOREIGN KEY (`cid`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`tid`) REFERENCES `tag` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='post relation to categories';
+--
+-- TABLE post-counts
+--
+CREATE TABLE IF NOT EXISTS `post-counts` (
+ `uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
+ `vid` smallint unsigned NOT NULL COMMENT 'Id of the verb table entry that contains the activity verbs',
+ `reaction` varchar(4) NOT NULL COMMENT 'Emoji Reaction',
+ `parent-uri-id` int unsigned COMMENT 'Id of the item-uri table that contains the parent uri',
+ `count` int unsigned DEFAULT 0 COMMENT 'Number of activities',
+ PRIMARY KEY(`uri-id`,`vid`,`reaction`),
+ INDEX `vid` (`vid`),
+ INDEX `parent-uri-id` (`parent-uri-id`),
+ FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
+ FOREIGN KEY (`vid`) REFERENCES `verb` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
+ FOREIGN KEY (`parent-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
+) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Original remote activity';
+
--
-- TABLE post-collection
--
`location` varchar(255) NOT NULL DEFAULT '' COMMENT 'text location where this item originated',
`coord` varchar(255) NOT NULL DEFAULT '' COMMENT 'longitude/latitude pair representing location where this item originated',
`language` text COMMENT 'Language information about this post',
+ `sensitive` boolean COMMENT 'If true, this post contains sensitive content',
`app` varchar(255) NOT NULL DEFAULT '' COMMENT 'application which generated this item',
`rendered-hash` varchar(32) NOT NULL DEFAULT '' COMMENT '',
`rendered-html` mediumtext COMMENT 'item.body converted to html',
PRIMARY KEY(`uri-id`),
INDEX `plink` (`plink`(191)),
INDEX `resource-id` (`resource-id`),
- FULLTEXT INDEX `title-content-warning-body` (`title`,`content-warning`,`body`),
INDEX `quote-uri-id` (`quote-uri-id`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`quote-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
`uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
`owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item owner',
`contact-type` tinyint NOT NULL DEFAULT 0 COMMENT 'Person, organisation, news, community, relay',
- `media-type` tinyint NOT NULL DEFAULT 0 COMMENT 'Type of media in a bit array (1 = image, 2 = video, 4 = audio',
- `language` varbinary(128) COMMENT 'Language information about this post',
+ `media-type` tinyint NOT NULL DEFAULT 0 COMMENT 'Type of media in a bit array (1 = image, 2 = video, 4 = audio)',
+ `language` char(2) COMMENT 'Language information about this post in the ISO 639-1 format',
`searchtext` mediumtext COMMENT 'Simplified text for the full text search',
+ `size` int unsigned COMMENT 'Body size',
`created` datetime COMMENT '',
+ `network` char(4) COMMENT '',
`restricted` boolean NOT NULL DEFAULT '0' COMMENT 'If true, this post is either unlisted or not from a federated network',
`comments` mediumint unsigned COMMENT 'Number of comments',
`activities` mediumint unsigned COMMENT 'Number of activities (like, dislike, ...)',
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Question option';
+--
+-- TABLE post-searchindex
+--
+CREATE TABLE IF NOT EXISTS `post-searchindex` (
+ `uri-id` int unsigned NOT NULL COMMENT 'Id of the item-uri table entry that contains the item uri',
+ `owner-id` int unsigned NOT NULL DEFAULT 0 COMMENT 'Item owner',
+ `media-type` tinyint NOT NULL DEFAULT 0 COMMENT 'Type of media in a bit array (1 = image, 2 = video, 4 = audio)',
+ `language` char(2) COMMENT 'Language information about this post in the ISO 639-1 format',
+ `searchtext` mediumtext COMMENT 'Simplified text for the full text search',
+ `size` int unsigned COMMENT 'Body size',
+ `created` datetime COMMENT '',
+ `restricted` boolean NOT NULL DEFAULT '0' COMMENT 'If true, this post is either unlisted or not from a federated network',
+ PRIMARY KEY(`uri-id`),
+ INDEX `owner-id` (`owner-id`),
+ INDEX `created` (`created`),
+ FULLTEXT INDEX `searchtext` (`searchtext`),
+ FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
+ FOREIGN KEY (`owner-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
+) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Content for all posts';
+
--
-- TABLE post-tag
--
`post-reason` tinyint unsigned NOT NULL DEFAULT 0 COMMENT 'Reason why the post arrived at the user',
`vid` smallint unsigned COMMENT 'Id of the verb table entry that contains the activity verbs',
`private` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '0=public, 1=private, 2=unlisted',
+ `restrictions` tinyint unsigned COMMENT 'Bit array of post restrictions (1 = Reply, 2 = Like, 4 = Announce)',
`global` boolean NOT NULL DEFAULT '0' COMMENT '',
`visible` boolean NOT NULL DEFAULT '0' COMMENT '',
`deleted` boolean NOT NULL DEFAULT '0' COMMENT 'item has been marked for deletion',
INDEX `event-id` (`event-id`),
INDEX `psid` (`psid`),
INDEX `author-id_uid` (`author-id`,`uid`),
- INDEX `author-id_received` (`author-id`,`received`),
+ INDEX `author-id_created` (`author-id`,`created`),
+ INDEX `owner-id_created` (`owner-id`,`created`),
INDEX `parent-uri-id_uid` (`parent-uri-id`,`uid`),
INDEX `uid_wall_received` (`uid`,`wall`,`received`),
INDEX `uid_contactid` (`uid`,`contact-id`),
INDEX `post-user-id` (`post-user-id`),
INDEX `commented` (`commented`),
INDEX `received` (`received`),
+ INDEX `author-id_created` (`author-id`,`created`),
+ INDEX `owner-id_created` (`owner-id`,`created`),
INDEX `uid_received` (`uid`,`received`),
INDEX `uid_wall_received` (`uid`,`wall`,`received`),
INDEX `uid_commented` (`uid`,`commented`),
+ INDEX `uid_created` (`uid`,`created`),
INDEX `uid_starred` (`uid`,`starred`),
INDEX `uid_mention` (`uid`,`mention`),
+ INDEX `contact-id_commented` (`contact-id`,`commented`),
+ INDEX `contact-id_received` (`contact-id`,`received`),
+ INDEX `contact-id_created` (`contact-id`,`created`),
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`conversation-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`owner-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
`net-publish` boolean NOT NULL DEFAULT '0' COMMENT 'publish profile in global directory',
PRIMARY KEY(`id`),
INDEX `uid_is-default` (`uid`,`is-default`),
- FULLTEXT INDEX `pub_keywords` (`pub_keywords`),
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='user profiles data';
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Push Subscription for the API';
+--
+-- TABLE check-full-text-search
+--
+CREATE TABLE IF NOT EXISTS `check-full-text-search` (
+ `pid` int unsigned NOT NULL COMMENT 'The ID of the process',
+ `searchtext` mediumtext COMMENT 'Simplified text for the full text search',
+ PRIMARY KEY(`pid`),
+ FULLTEXT INDEX `searchtext` (`searchtext`)
+) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Check for a full text search match in user defined channels before storing the message in the system';
+
--
-- TABLE userd
--
`ignored` boolean COMMENT 'Posts from this contact are ignored',
`collapsed` boolean COMMENT 'Posts from this contact are collapsed',
`hidden` boolean COMMENT 'This contact is hidden from the others',
+ `channel-only` boolean COMMENT 'This contact is displayed only in channels, but not in the network stream.',
`is-blocked` boolean COMMENT 'User is blocked by this contact',
`channel-frequency` tinyint unsigned COMMENT 'Controls the frequency of the appearance of this contact in channels',
`pending` boolean COMMENT '',
`application-token`.`follow` AS `follow`,
`application-token`.`push` AS `push`
FROM `application-token`
- INNER JOIN `application` ON `application-token`.`application-id` = `application`.`id`;
+ INNER JOIN `application` ON `application-token`.`application-id` = `application`.`id`
+ INNER JOIN `user` ON `user`.`uid` = `application-token`.`uid` AND `user`.`verified` AND NOT `user`.`blocked` AND NOT `user`.`account_removed` AND NOT `user`.`account_expired`;
--
-- VIEW circle-member-view
INNER JOIN `contact` ON `group_member`.`contact-id` = `contact`.`id`
INNER JOIN `group` ON `group_member`.`gid` = `group`.`id`;
+--
+-- VIEW post-counts-view
+--
+DROP VIEW IF EXISTS `post-counts-view`;
+CREATE VIEW `post-counts-view` AS SELECT
+ `post-counts`.`uri-id` AS `uri-id`,
+ `post-counts`.`vid` AS `vid`,
+ `verb`.`name` AS `verb`,
+ `post-counts`.`reaction` AS `reaction`,
+ `post-counts`.`parent-uri-id` AS `parent-uri-id`,
+ `post-counts`.`count` AS `count`
+ FROM `post-counts`
+ INNER JOIN `verb` ON `verb`.`id` = `post-counts`.`vid`;
+
+--
+-- VIEW post-timeline-view
+--
+DROP VIEW IF EXISTS `post-timeline-view`;
+CREATE VIEW `post-timeline-view` AS SELECT
+ `post-user`.`uid` AS `uid`,
+ `post-user`.`uri-id` AS `uri-id`,
+ `post-user`.`gravity` AS `gravity`,
+ `post-user`.`created` AS `created`,
+ `post-user`.`edited` AS `edited`,
+ `post-thread-user`.`commented` AS `commented`,
+ `post-user`.`received` AS `received`,
+ `post-thread-user`.`changed` AS `changed`,
+ `post-user`.`private` AS `private`,
+ `post-user`.`visible` AS `visible`,
+ `post-user`.`deleted` AS `deleted`,
+ `post-user`.`origin` AS `origin`,
+ `post-user`.`global` AS `global`,
+ `post-user`.`network` AS `network`,
+ `post-user`.`protocol` AS `protocol`,
+ `post-user`.`vid` AS `vid`,
+ `post-user`.`contact-id` AS `contact-id`,
+ `contact`.`blocked` AS `contact-blocked`,
+ `contact`.`readonly` AS `contact-readonly`,
+ `contact`.`pending` AS `contact-pending`,
+ `contact`.`rel` AS `contact-rel`,
+ `contact`.`uid` AS `contact-uid`,
+ `contact`.`self` AS `self`,
+ `post-user`.`author-id` AS `author-id`,
+ `author`.`blocked` AS `author-blocked`,
+ `author`.`hidden` AS `author-hidden`,
+ `author`.`gsid` AS `author-gsid`,
+ `post-user`.`owner-id` AS `owner-id`,
+ `owner`.`blocked` AS `owner-blocked`,
+ `owner`.`gsid` AS `owner-gsid`,
+ `post-user`.`causer-id` AS `causer-id`,
+ `causer`.`blocked` AS `causer-blocked`,
+ `causer`.`gsid` AS `causer-gsid`
+ FROM `post-user`
+ LEFT JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-user`.`parent-uri-id` AND `post-thread-user`.`uid` = `post-user`.`uid`
+ STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-user`.`contact-id`
+ STRAIGHT_JOIN `contact` AS `author` ON `author`.`id` = `post-user`.`author-id`
+ STRAIGHT_JOIN `contact` AS `owner` ON `owner`.`id` = `post-user`.`owner-id`
+ LEFT JOIN `contact` AS `causer` ON `causer`.`id` = `post-user`.`causer-id`;
+
+--
+-- VIEW post-searchindex-user-view
+--
+DROP VIEW IF EXISTS `post-searchindex-user-view`;
+CREATE VIEW `post-searchindex-user-view` AS SELECT
+ `post-thread-user`.`uid` AS `uid`,
+ `post-searchindex`.`uri-id` AS `uri-id`,
+ `post-searchindex`.`owner-id` AS `owner-id`,
+ `post-searchindex`.`media-type` AS `media-type`,
+ `post-searchindex`.`language` AS `language`,
+ `post-searchindex`.`searchtext` AS `searchtext`,
+ `post-searchindex`.`size` AS `size`,
+ `post-thread-user`.`commented` AS `commented`,
+ `post-thread-user`.`received` AS `received`,
+ `post-thread-user`.`created` AS `created`,
+ `post-thread-user`.`network` AS `network`,
+ `post-searchindex`.`language` AS `restricted`,
+ 0 AS `comments`,
+ 0 AS `activities`
+ FROM `post-thread-user`
+ INNER JOIN `post-searchindex` ON `post-searchindex`.`uri-id` = `post-thread-user`.`uri-id`
+ INNER JOIN `post-user` ON `post-user`.`id` = `post-thread-user`.`post-user-id`
+ STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-thread-user`.`contact-id`
+ STRAIGHT_JOIN `contact` AS `authorcontact` ON `authorcontact`.`id` = `post-thread-user`.`author-id`
+ STRAIGHT_JOIN `contact` AS `ownercontact` ON `ownercontact`.`id` = `post-thread-user`.`owner-id`
+ WHERE `post-user`.`visible` AND NOT `post-user`.`deleted`
+ AND (NOT `contact`.`readonly` AND NOT `contact`.`blocked` AND NOT `contact`.`pending`)
+ AND (`post-thread-user`.`hidden` IS NULL OR NOT `post-thread-user`.`hidden`)
+ AND NOT `authorcontact`.`blocked` AND NOT `ownercontact`.`blocked`
+ AND NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = `post-thread-user`.`uid` AND `cid` IN (`authorcontact`.`id`, `ownercontact`.`id`) AND (`blocked` OR `ignored`))
+ AND NOT EXISTS(SELECT `gsid` FROM `user-gserver` WHERE `uid` = `post-thread-user`.`uid` AND `gsid` IN (`authorcontact`.`gsid`, `ownercontact`.`gsid`) AND `ignored`);
+
--
-- VIEW post-user-view
--
`post-content`.`plink` AS `plink`,
`post-content`.`location` AS `location`,
`post-content`.`coord` AS `coord`,
+ `post-content`.`sensitive` AS `sensitive`,
+ `post-user`.`restrictions` AS `restrictions`,
`post-content`.`app` AS `app`,
`post-content`.`object-type` AS `object-type`,
`post-content`.`object` AS `object`,
`post-content`.`plink` AS `plink`,
`post-content`.`location` AS `location`,
`post-content`.`coord` AS `coord`,
+ `post-content`.`sensitive` AS `sensitive`,
+ `post-user`.`restrictions` AS `restrictions`,
`post-content`.`app` AS `app`,
`post-content`.`object-type` AS `object-type`,
`post-content`.`object` AS `object`,
`post-content`.`plink` AS `plink`,
`post-content`.`location` AS `location`,
`post-content`.`coord` AS `coord`,
+ `post-content`.`sensitive` AS `sensitive`,
`post-content`.`app` AS `app`,
`post-content`.`object-type` AS `object-type`,
`post-content`.`object` AS `object`,
`post-content`.`plink` AS `plink`,
`post-content`.`location` AS `location`,
`post-content`.`coord` AS `coord`,
+ `post-content`.`sensitive` AS `sensitive`,
`post-content`.`app` AS `app`,
`post-content`.`object-type` AS `object-type`,
`post-content`.`object` AS `object`,
LEFT JOIN `tag` ON `post-tag`.`tid` = `tag`.`id`
LEFT JOIN `contact` ON `post-tag`.`cid` = `contact`.`id`;
---
--- VIEW network-item-view
---
-DROP VIEW IF EXISTS `network-item-view`;
-CREATE VIEW `network-item-view` AS SELECT
- `post-user`.`uri-id` AS `uri-id`,
- `post-thread-user`.`post-user-id` AS `parent`,
- `post-user`.`received` AS `received`,
- `post-thread-user`.`commented` AS `commented`,
- `post-user`.`created` AS `created`,
- `post-user`.`uid` AS `uid`,
- `post-thread-user`.`starred` AS `starred`,
- `post-thread-user`.`mention` AS `mention`,
- `post-user`.`network` AS `network`,
- `post-user`.`unseen` AS `unseen`,
- `post-user`.`gravity` AS `gravity`,
- `post-user`.`contact-id` AS `contact-id`,
- `ownercontact`.`contact-type` AS `contact-type`
- FROM `post-user`
- INNER JOIN `post-thread-user` ON `post-thread-user`.`uri-id` = `post-user`.`parent-uri-id` AND `post-thread-user`.`uid` = `post-user`.`uid`
- STRAIGHT_JOIN `contact` ON `contact`.`id` = `post-thread-user`.`contact-id`
- STRAIGHT_JOIN `contact` AS `authorcontact` ON `authorcontact`.`id` = `post-thread-user`.`author-id`
- STRAIGHT_JOIN `contact` AS `ownercontact` ON `ownercontact`.`id` = `post-thread-user`.`owner-id`
- WHERE `post-user`.`visible` AND NOT `post-user`.`deleted`
- AND (NOT `contact`.`readonly` AND NOT `contact`.`blocked` AND NOT `contact`.`pending`)
- AND (`post-user`.`hidden` IS NULL OR NOT `post-user`.`hidden`)
- AND NOT `authorcontact`.`blocked` AND NOT `ownercontact`.`blocked`
- AND NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = `post-thread-user`.`uid` AND `cid` IN (`authorcontact`.`id`, `ownercontact`.`id`) AND (`blocked` OR `ignored`))
- AND NOT EXISTS(SELECT `gsid` FROM `user-gserver` WHERE `uid` = `post-thread-user`.`uid` AND `gsid` IN (`authorcontact`.`gsid`, `ownercontact`.`gsid`) AND `ignored`);
-
--
-- VIEW network-thread-view
--
AND (NOT `contact`.`readonly` AND NOT `contact`.`blocked` AND NOT `contact`.`pending`)
AND (`post-thread-user`.`hidden` IS NULL OR NOT `post-thread-user`.`hidden`)
AND NOT `authorcontact`.`blocked` AND NOT `ownercontact`.`blocked`
- AND NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = `post-thread-user`.`uid` AND `cid` IN (`authorcontact`.`id`, `ownercontact`.`id`) AND (`blocked` OR `ignored`))
- AND NOT EXISTS(SELECT `gsid` FROM `user-gserver` WHERE `uid` = `post-thread-user`.`uid` AND `gsid` IN (`authorcontact`.`gsid`, `ownercontact`.`gsid`) AND `ignored`);
+ AND NOT EXISTS(SELECT `cid` FROM `user-contact` WHERE `uid` = `post-thread-user`.`uid` AND `cid` IN (`post-thread-user`.`author-id`, `post-thread-user`.`owner-id`, `post-thread-user`.`causer-id`) AND (`blocked` OR `ignored` OR `channel-only`))
+ AND NOT EXISTS(SELECT `gsid` FROM `user-gserver` WHERE `uid` = `post-thread-user`.`uid` AND `gsid` IN (`authorcontact`.`gsid`, `ownercontact`.`gsid`) AND `ignored`);
--
-- VIEW owner-view
`user`.`blockwall` AS `blockwall`,
`user`.`hidewall` AS `hidewall`,
`user`.`blocktags` AS `blocktags`,
- `user`.`unkmail` AS `unkmail`,
- `user`.`cntunkmail` AS `cntunkmail`,
`user`.`notify-flags` AS `notify-flags`,
`user`.`page-flags` AS `page-flags`,
`user`.`account-type` AS `account-type`,