Install SeisComP and scanloc ARM64 nightly packages
This commit is contained in:
146
bin/scdbstrip
146
bin/scdbstrip
@ -81,25 +81,20 @@ class MySQLDB(QueryInterface):
|
||||
return tmp_tables
|
||||
|
||||
def deleteObjectQuery(self, *v):
|
||||
if v[0]:
|
||||
q = (
|
||||
"delete "
|
||||
+ v[0]
|
||||
+ " from "
|
||||
+ ", ".join(v)
|
||||
+ " where "
|
||||
+ v[0]
|
||||
+ "._oid="
|
||||
+ v[1]
|
||||
+ "._oid and "
|
||||
)
|
||||
else:
|
||||
q = "delete " + v[1] + " from " + ", ".join(v[1:]) + " where "
|
||||
q = (
|
||||
"delete "
|
||||
+ v[0]
|
||||
+ " from "
|
||||
+ ", ".join(v)
|
||||
+ " where "
|
||||
+ v[0]
|
||||
+ "._oid="
|
||||
+ v[1]
|
||||
+ "._oid"
|
||||
)
|
||||
|
||||
for i in range(1, len(v) - 1):
|
||||
if i > 1:
|
||||
q += " and "
|
||||
q += v[i] + "._oid=" + v[i + 1] + "._oid"
|
||||
q += " and " + v[i] + "._oid=" + v[i + 1] + "._oid"
|
||||
|
||||
return q
|
||||
|
||||
@ -211,25 +206,20 @@ class PostgresDB(QueryInterface):
|
||||
return tmp_tables
|
||||
|
||||
def deleteObjectQuery(self, *v):
|
||||
if v[0]:
|
||||
q = (
|
||||
"delete from "
|
||||
+ v[0]
|
||||
+ " using "
|
||||
+ ", ".join(v[1:])
|
||||
+ " where "
|
||||
+ v[0]
|
||||
+ "._oid="
|
||||
+ v[1]
|
||||
+ "._oid and "
|
||||
)
|
||||
else:
|
||||
q = "delete from " + v[1] + " using " + ", ".join(v[2:]) + " where "
|
||||
q = (
|
||||
"delete from "
|
||||
+ v[0]
|
||||
+ " using "
|
||||
+ ", ".join(v[1:])
|
||||
+ " where "
|
||||
+ v[0]
|
||||
+ "._oid="
|
||||
+ v[1]
|
||||
+ "._oid"
|
||||
)
|
||||
|
||||
for i in range(1, len(v) - 1):
|
||||
if i > 1:
|
||||
q += " and "
|
||||
q += v[i] + "._oid=" + v[i + 1] + "._oid"
|
||||
q += " and " + v[i] + "._oid=" + v[i + 1] + "._oid"
|
||||
|
||||
return q
|
||||
|
||||
@ -333,6 +323,8 @@ class DBCleaner(seiscomp.client.Application):
|
||||
self._invertMode = False
|
||||
self._stripEP = True
|
||||
self._stripQC = True
|
||||
self._keepModes = [] # Array with modes to keep
|
||||
self._keepStatus = [] # Array with status to keep
|
||||
|
||||
self._steps = 0
|
||||
self._currentStep = 0
|
||||
@ -368,6 +360,18 @@ class DBCleaner(seiscomp.client.Application):
|
||||
"Event-IDs to keep in the database. Combining with 'qc-only' "
|
||||
"is invalid.",
|
||||
)
|
||||
self.commandline().addStringOption(
|
||||
"Objects",
|
||||
"keep-event-modes",
|
||||
"Keep all events where is evaluation mode of the preferred origin is "
|
||||
"one of the given modes."
|
||||
)
|
||||
self.commandline().addStringOption(
|
||||
"Objects",
|
||||
"keep-event-status",
|
||||
"Keep all events where is evaluation status of the preferred origin is "
|
||||
"one of the given status."
|
||||
)
|
||||
self.commandline().addOption(
|
||||
"Objects",
|
||||
"qc-only,Q",
|
||||
@ -473,7 +477,7 @@ class DBCleaner(seiscomp.client.Application):
|
||||
f"""Usage:
|
||||
{os.path.basename(__file__)} [options]
|
||||
|
||||
Remove event and waveform quality parameters from the database in a timespan. Use
|
||||
Remove event and waveform quality parameters from the database in a timespan. Use
|
||||
scardac for removing data availability parameters."""
|
||||
)
|
||||
|
||||
@ -543,6 +547,19 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
|
||||
except RuntimeError:
|
||||
pass
|
||||
|
||||
try:
|
||||
status = self.commandline().optionString("keep-event-status")
|
||||
self._keepStatus = [s.strip() for s in status.split(",")]
|
||||
print(status, self._keepStatus)
|
||||
except RuntimeError:
|
||||
pass
|
||||
|
||||
try:
|
||||
modes = self.commandline().optionString("keep-event-modes")
|
||||
self._keepModes = [m.strip() for m in modes.split(",")]
|
||||
except RuntimeError:
|
||||
pass
|
||||
|
||||
try:
|
||||
dateTime = self.commandline().optionString("datetime")
|
||||
except RuntimeError:
|
||||
@ -694,6 +711,11 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
|
||||
self.beginMessage("Search objects")
|
||||
if not self.runCommand(tmp_object):
|
||||
return False
|
||||
|
||||
tmp_object = "create index idx_oid on tmp_object(_oid)"
|
||||
if not self.runCommand(tmp_object):
|
||||
return False
|
||||
|
||||
self.endMessage(self.globalCount("tmp_object"))
|
||||
|
||||
for table in tables:
|
||||
@ -783,6 +805,7 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
|
||||
self.beginMessage("Deleting waveform quality parameters")
|
||||
if not self.runCommand(
|
||||
self._query.deleteObjectQuery("Object", "WaveformQuality")
|
||||
+ " and "
|
||||
+ timeRangeSelection(f"WaveformQuality.{self.cnvCol('end')}")
|
||||
):
|
||||
return False
|
||||
@ -822,9 +845,28 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
|
||||
+ " not in ('%s')" % "','".join(self._keepEvents)
|
||||
)
|
||||
|
||||
if len(self._keepModes) > 0:
|
||||
old_events += (
|
||||
" and Origin."
|
||||
+ self.cnvCol("evaluationMode")
|
||||
+ " not in ('%s')" % "','".join(self._keepModes)
|
||||
)
|
||||
|
||||
if len(self._keepStatus) > 0:
|
||||
old_events += (
|
||||
" and Origin."
|
||||
+ self.cnvCol("evaluationStatus")
|
||||
+ " not in ('%s')" % "','".join(self._keepStatus)
|
||||
)
|
||||
|
||||
self.beginMessage("Find old events")
|
||||
if not self.runCommand(old_events):
|
||||
return False
|
||||
|
||||
old_events = "create index idx_oid on old_events(_oid)"
|
||||
if not self.runCommand(old_events):
|
||||
return False
|
||||
|
||||
self.endMessage(self.globalCount("old_events"))
|
||||
|
||||
# Delete OriginReferences of old events
|
||||
@ -879,6 +921,10 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
|
||||
|
||||
self.beginMessage("Find unassociated focal mechanisms")
|
||||
|
||||
if not self.runCommand(tmp_fm):
|
||||
return False
|
||||
|
||||
tmp_fm = "create index idx_oid on tmp_fm(_oid)"
|
||||
if not self.runCommand(tmp_fm):
|
||||
return False
|
||||
|
||||
@ -990,6 +1036,10 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
|
||||
|
||||
self.beginMessage("Find unassociated origins")
|
||||
|
||||
if not self.runCommand(tmp_origin):
|
||||
return False
|
||||
|
||||
tmp_origin = "create index idx_oid on tmp_origin(_oid)"
|
||||
if not self.runCommand(tmp_origin):
|
||||
return False
|
||||
|
||||
@ -998,7 +1048,7 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
|
||||
update tmp_origin set used=1 \
|
||||
where ("
|
||||
+ self.cnvCol("publicID")
|
||||
+ " in (select distinct "
|
||||
+ " in (select "
|
||||
+ self.cnvCol("originID")
|
||||
+ " from OriginReference)) \
|
||||
or ("
|
||||
@ -1093,6 +1143,10 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
|
||||
)
|
||||
)
|
||||
|
||||
if not self.runCommand(tmp_pick):
|
||||
return False
|
||||
|
||||
tmp_pick = "create index idx_oid on tmp_pick(_oid)"
|
||||
if not self.runCommand(tmp_pick):
|
||||
return False
|
||||
|
||||
@ -1145,6 +1199,10 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
|
||||
)
|
||||
)
|
||||
|
||||
if not self.runCommand(tmp_amp):
|
||||
return False
|
||||
|
||||
tmp_amp = "create index idx_oid on tmp_amp(_oid)"
|
||||
if not self.runCommand(tmp_amp):
|
||||
return False
|
||||
|
||||
@ -1287,27 +1345,27 @@ Remove all waveform QC paramters older than 30 days but do not effect event para
|
||||
self._query.deleteJournalQuery("PublicObject", *v) + " and used=0"
|
||||
)
|
||||
self.runCommand(
|
||||
self._query.deleteObjectQuery(None, "Object", *v) + " and used=0"
|
||||
self._query.deleteObjectQuery("Object", *v) + " and used=0"
|
||||
)
|
||||
self.runCommand(
|
||||
self._query.deleteObjectQuery(None, "PublicObject", *v) + " and used=0"
|
||||
self._query.deleteObjectQuery("PublicObject", *v) + " and used=0"
|
||||
)
|
||||
|
||||
def deleteObjects(self, *v):
|
||||
self.runCommand(self._query.deleteJournalQuery("PublicObject", *v))
|
||||
self.runCommand(self._query.deleteObjectQuery("Object", *v))
|
||||
self.runCommand(self._query.deleteObjectQuery("PublicObject", *v))
|
||||
self.runCommand(self._query.deleteObjectQuery(None, *v))
|
||||
self.runCommand(self._query.deleteObjectQuery(*v))
|
||||
self.runCommand(self._query.deleteObjectQuery("PublicObject", *v[1:]))
|
||||
self.runCommand(self._query.deleteObjectQuery("Object", *v[1:]))
|
||||
|
||||
def deleteUnusedObjects(self, *v):
|
||||
self.runCommand(
|
||||
self._query.deleteJournalQuery("PublicObject", *v) + " and used=0"
|
||||
)
|
||||
self.runCommand(self._query.deleteObjectQuery("Object", *v) + " and used=0")
|
||||
self.runCommand(self._query.deleteObjectQuery(*v) + " and used=0")
|
||||
self.runCommand(
|
||||
self._query.deleteObjectQuery("PublicObject", *v) + " and used=0"
|
||||
self._query.deleteObjectQuery("PublicObject", *v[1:]) + " and used=0"
|
||||
)
|
||||
self.runCommand(self._query.deleteObjectQuery(None, *v) + " and used=0")
|
||||
self.runCommand(self._query.deleteObjectQuery("Object", *v[1:]) + " and used=0")
|
||||
|
||||
def delete(self, message, func, *v):
|
||||
self.beginMessage(message)
|
||||
|
||||
Reference in New Issue
Block a user