diff --git a/extra/OpenSimSearch/ossearch.sql b/extra/OpenSimSearch/ossearch.sql new file mode 100644 index 0000000000..3e46f091ee --- /dev/null +++ b/extra/OpenSimSearch/ossearch.sql @@ -0,0 +1,115 @@ + +DROP TABLE IF EXISTS `search_allparcels`; +CREATE TABLE `search_allparcels` ( + `regionUUID` char(36) NOT NULL, + `parcelname` varchar(255) NOT NULL, + `ownerUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', + `groupUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', + `landingpoint` varchar(255) NOT NULL, + `parcelUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', + `infoUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', + `parcelarea` int(11) NOT NULL, + PRIMARY KEY (`parcelUUID`), + KEY `regionUUID` (`regionUUID`) +); + +DROP TABLE IF EXISTS `search_events`; +CREATE TABLE `search_events` ( + `owneruuid` char(36) NOT NULL, + `name` varchar(255) NOT NULL, + `eventid` int(11) unsigned NOT NULL AUTO_INCREMENT, + `creatoruuid` char(36) NOT NULL, + `category` int(2) NOT NULL, + `description` text NOT NULL, + `dateUTC` int(10) NOT NULL, + `duration` int(10) NOT NULL, + `covercharge` tinyint(1) NOT NULL, + `coveramount` int(10) NOT NULL, + `simname` varchar(255) NOT NULL, + `parcelUUID` char(36) NOT NULL, + `globalPos` varchar(255) NOT NULL, + `eventflags` int(1) NOT NULL, + PRIMARY KEY (`eventid`) +); + +DROP TABLE IF EXISTS `search_hostsregister`; +CREATE TABLE `search_hostsregister` ( + `host` varchar(255) NOT NULL, + `port` int(5) NOT NULL, + `register` int(10) NOT NULL, + `nextcheck` int(10) NOT NULL, + `checked` tinyint(1) NOT NULL, + `failcounter` int(10) NOT NULL, + PRIMARY KEY (`host`,`port`) +); + +DROP TABLE IF EXISTS `search_objects`; +CREATE TABLE `search_objects` ( + `objectuuid` char(36) NOT NULL, + `parceluuid` char(36) NOT NULL, + `location` varchar(255) NOT NULL, + `name` varchar(255) NOT NULL, + `description` varchar(255) NOT NULL, + `regionuuid` char(36) NOT NULL DEFAULT '', + PRIMARY KEY (`objectuuid`,`parceluuid`) +); + +DROP TABLE IF EXISTS `search_parcels`; +CREATE TABLE `search_parcels` ( + `regionUUID` char(36) NOT NULL, + `parcelname` varchar(255) NOT NULL, + `parcelUUID` char(36) NOT NULL, + `landingpoint` varchar(255) NOT NULL, + `description` varchar(255) NOT NULL, + `searchcategory` varchar(50) NOT NULL, + `build` enum('true','false') NOT NULL, + `script` enum('true','false') NOT NULL, + `public` enum('true','false') NOT NULL, + `dwell` float NOT NULL DEFAULT 0, + `infouuid` varchar(36) NOT NULL DEFAULT '', + `mature` varchar(10) NOT NULL DEFAULT 'PG', + `pictureUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', + PRIMARY KEY (`regionUUID`,`parcelUUID`), + KEY `name` (`parcelname`), + KEY `description` (`description`), + KEY `searchcategory` (`searchcategory`), + KEY `dwell` (`dwell`) +); + +DROP TABLE IF EXISTS `search_parcelsales`; +CREATE TABLE `search_parcelsales` ( + `regionUUID` char(36) NOT NULL, + `parcelname` varchar(255) NOT NULL, + `parcelUUID` char(36) NOT NULL, + `area` int(6) NOT NULL, + `saleprice` int(11) NOT NULL, + `landingpoint` varchar(255) NOT NULL, + `infoUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', + `dwell` int(11) NOT NULL, + `parentestate` int(11) NOT NULL DEFAULT 1, + `mature` varchar(10) NOT NULL DEFAULT 'PG', + PRIMARY KEY (`regionUUID`,`parcelUUID`) +); + +DROP TABLE IF EXISTS `search_popularplaces`; +CREATE TABLE `search_popularplaces` ( + `parcelUUID` char(36) NOT NULL, + `name` varchar(255) NOT NULL, + `dwell` float NOT NULL, + `infoUUID` char(36) NOT NULL, + `has_picture` tinyint(1) NOT NULL, + `mature` varchar(10) NOT NULL, + PRIMARY KEY (`parcelUUID`) +); + +DROP TABLE IF EXISTS `search_regions`; +CREATE TABLE `search_regions` ( + `regionname` varchar(255) NOT NULL, + `regionUUID` char(36) NOT NULL, + `regionhandle` varchar(255) NOT NULL, + `url` varchar(255) NOT NULL, + `owner` varchar(255) NOT NULL, + `owneruuid` char(36) NOT NULL, + PRIMARY KEY (`regionUUID`) +); + diff --git a/extra/OpenSimSearch/search.sql b/extra/OpenSimSearch/search.sql deleted file mode 100644 index 38394d10ce..0000000000 --- a/extra/OpenSimSearch/search.sql +++ /dev/null @@ -1,198 +0,0 @@ -/*M!999999\- enable the sandbox mode */ --- MariaDB dump 10.19 Distrib 10.11.11-MariaDB, for debian-linux-gnu (aarch64) --- --- Host: localhost Database: grid --- ------------------------------------------------------ --- Server version 10.11.11-MariaDB-0+deb12u1 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `search_allparcels` --- - -DROP TABLE IF EXISTS `search_allparcels`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `search_allparcels` ( - `regionUUID` char(36) NOT NULL, - `parcelname` varchar(255) NOT NULL, - `ownerUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', - `groupUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', - `landingpoint` varchar(255) NOT NULL, - `parcelUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', - `infoUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', - `parcelarea` int(11) NOT NULL, - PRIMARY KEY (`parcelUUID`), - KEY `regionUUID` (`regionUUID`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `search_events` --- - -DROP TABLE IF EXISTS `search_events`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `search_events` ( - `owneruuid` char(36) NOT NULL, - `name` varchar(255) NOT NULL, - `eventid` int(11) unsigned NOT NULL AUTO_INCREMENT, - `creatoruuid` char(36) NOT NULL, - `category` int(2) NOT NULL, - `description` text NOT NULL, - `dateUTC` int(10) NOT NULL, - `duration` int(10) NOT NULL, - `covercharge` tinyint(1) NOT NULL, - `coveramount` int(10) NOT NULL, - `simname` varchar(255) NOT NULL, - `parcelUUID` char(36) NOT NULL, - `globalPos` varchar(255) NOT NULL, - `eventflags` int(1) NOT NULL, - PRIMARY KEY (`eventid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `search_hostsregister` --- - -DROP TABLE IF EXISTS `search_hostsregister`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `search_hostsregister` ( - `host` varchar(255) NOT NULL, - `port` int(5) NOT NULL, - `register` int(10) NOT NULL, - `nextcheck` int(10) NOT NULL, - `checked` tinyint(1) NOT NULL, - `failcounter` int(10) NOT NULL, - PRIMARY KEY (`host`,`port`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `search_objects` --- - -DROP TABLE IF EXISTS `search_objects`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `search_objects` ( - `objectuuid` char(36) NOT NULL, - `parceluuid` char(36) NOT NULL, - `location` varchar(255) NOT NULL, - `name` varchar(255) NOT NULL, - `description` varchar(255) NOT NULL, - `regionuuid` char(36) NOT NULL DEFAULT '', - PRIMARY KEY (`objectuuid`,`parceluuid`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `search_parcels` --- - -DROP TABLE IF EXISTS `search_parcels`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `search_parcels` ( - `regionUUID` char(36) NOT NULL, - `parcelname` varchar(255) NOT NULL, - `parcelUUID` char(36) NOT NULL, - `landingpoint` varchar(255) NOT NULL, - `description` varchar(255) NOT NULL, - `searchcategory` varchar(50) NOT NULL, - `build` enum('true','false') NOT NULL, - `script` enum('true','false') NOT NULL, - `public` enum('true','false') NOT NULL, - `dwell` float NOT NULL DEFAULT 0, - `infouuid` varchar(36) NOT NULL DEFAULT '', - `mature` varchar(10) NOT NULL DEFAULT 'PG', - `pictureUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', - PRIMARY KEY (`regionUUID`,`parcelUUID`), - KEY `name` (`parcelname`), - KEY `description` (`description`), - KEY `searchcategory` (`searchcategory`), - KEY `dwell` (`dwell`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `search_parcelsales` --- - -DROP TABLE IF EXISTS `search_parcelsales`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `search_parcelsales` ( - `regionUUID` char(36) NOT NULL, - `parcelname` varchar(255) NOT NULL, - `parcelUUID` char(36) NOT NULL, - `area` int(6) NOT NULL, - `saleprice` int(11) NOT NULL, - `landingpoint` varchar(255) NOT NULL, - `infoUUID` char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', - `dwell` int(11) NOT NULL, - `parentestate` int(11) NOT NULL DEFAULT 1, - `mature` varchar(10) NOT NULL DEFAULT 'PG', - PRIMARY KEY (`regionUUID`,`parcelUUID`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `search_popularplaces` --- - -DROP TABLE IF EXISTS `search_popularplaces`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `search_popularplaces` ( - `parcelUUID` char(36) NOT NULL, - `name` varchar(255) NOT NULL, - `dwell` float NOT NULL, - `infoUUID` char(36) NOT NULL, - `has_picture` tinyint(1) NOT NULL, - `mature` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, - PRIMARY KEY (`parcelUUID`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `search_regions` --- - -DROP TABLE IF EXISTS `search_regions`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `search_regions` ( - `regionname` varchar(255) NOT NULL, - `regionUUID` char(36) NOT NULL, - `regionhandle` varchar(255) NOT NULL, - `url` varchar(255) NOT NULL, - `owner` varchar(255) NOT NULL, - `owneruuid` char(36) NOT NULL, - PRIMARY KEY (`regionUUID`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; -/*!40101 SET character_set_client = @saved_cs_client */; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2025-04-14 10:16:19 diff --git a/extra/OpenSimSearch/searchpurge.sql b/extra/OpenSimSearch/searchpurge.sql new file mode 100644 index 0000000000..4189dc4b2d --- /dev/null +++ b/extra/OpenSimSearch/searchpurge.sql @@ -0,0 +1,37 @@ +-- Purge all search entries related to a permanently deleted region + +-- Prerequisites: OpenSimSearch, lickx branch +-- https://github.com/lickx/OpenSimSearch/tree/lickx + +-- To be sourced into your robust database. + +-- Usage example: CALL sp_searchpurge('2ef309ab-dc66-4123-85e8-873d00b8acc9'); + +DELIMITER // +CREATE OR REPLACE PROCEDURE sp_searchpurge (IN pRegionID CHAR(36)) +BEGIN + -- classifieds (note, classifieds is the only table that isn't prefixed with search_ because Robust expects and queries it under this name) + DELETE classifieds FROM classifieds INNER JOIN search_parcels ON classifieds.parceluuid = search_parcels.parcelUUID WHERE search_parcels.regionUUID=pRegionID; + + -- events + DELETE search_events FROM search_events INNER JOIN search_parcels ON search_events.parcelUUID = search_parcels.parcelUUID WHERE search_parcels.regionUUID=pRegionID; + + -- objects + DELETE FROM search_objects WHERE regionuuid=pRegionID; + + -- regionsales + DELETE FROM search_parcelsales WHERE regionUUID=pRegionID; + + -- popularplaces + DELETE search_popularplaces FROM search_popularplaces INNER JOIN search_parcels ON search_popularplaces.parcelUUID = search_parcels.parcelUUID WHERE search_parcels.regionUUID=pRegionID; + + -- allparcels + DELETE FROM search_allparcels WHERE regionUUID=pRegionID; + + -- parcels + DELETE FROM search_parcels WHERE regionUUID=pRegionID; + + -- regions + DELETE FROM search_regions WHERE regionUUID=pRegionID; +END // +DELIMITER ;