├── .github └── workflows │ ├── ci.yml │ ├── docs.yaml │ └── rebase_checker.yaml ├── .gitignore ├── .gitmodules ├── CMakeLists.txt ├── LICENSE ├── README.md ├── admin ├── local │ ├── cli │ │ ├── qserv │ │ └── qserv-template.cfg │ ├── docker │ │ └── compose │ │ │ ├── docker-compose.yml │ │ │ └── log │ │ │ ├── log-czar-proxy.cnf │ │ │ ├── log-repl-controller.cnf │ │ │ ├── log-repl-registry.cnf │ │ │ ├── log-repl-worker.cnf │ │ │ ├── log-worker-xrootd.cnf │ │ │ └── log.cnf │ └── watcher │ │ ├── watcher_int.yaml │ │ └── watcher_prod.yaml └── tools │ └── docker │ ├── base │ ├── Dockerfile │ └── xrootd_f032a1b0.patch │ ├── build-user │ └── Dockerfile │ ├── mariadb │ └── Dockerfile │ └── run │ └── Dockerfile ├── doc ├── CMakeLists.txt ├── _static │ ├── ingest-options-pull.png │ ├── ingest-options-push.png │ ├── ingest-options-read.png │ ├── ingest-options.pptx │ ├── ingest-table-types-dependent.png │ ├── ingest-table-types-partitioned.png │ ├── ingest-table-types-regular.png │ ├── ingest-table-types.pptx │ ├── ingest-trans-multiple-chunks.png │ ├── ingest-trans-multiple-one.png │ ├── ingest-trans-multiple-scattered.png │ ├── ingest-trans-multiple.pptx │ ├── ingest-transaction-fsm.png │ ├── ingest-transaction-fsm.pptx │ ├── ingest-transactions-aborted.png │ ├── ingest-transactions-aborted.pptx │ ├── ingest-transactions-failed.png │ ├── ingest-transactions-failed.pptx │ ├── ingest-transactions-resolved.png │ ├── ingest-transactions-resolved.pptx │ └── subchunks.png ├── admin │ ├── admin-upgrade.rst │ ├── data-table-indexes.rst │ ├── director-index.rst │ ├── index.rst │ ├── k8s.rst │ └── row-counters.rst ├── cmake │ └── FindSphinx.cmake ├── conf.py ├── dev │ ├── doc.rst │ ├── index.rst │ ├── quick-start-devel.rst │ └── scisql.rst ├── documenteer.toml ├── index.rst ├── ingest │ ├── api │ │ ├── advanced │ │ │ ├── async-concurrency.rst │ │ │ ├── charset.rst │ │ │ ├── config.rst │ │ │ ├── contributions.rst │ │ │ ├── directors.rst │ │ │ ├── index.rst │ │ │ ├── optimisations.rst │ │ │ ├── ref-match.rst │ │ │ ├── transactions.rst │ │ │ ├── unpublishing.rst │ │ │ └── warnings.rst │ │ ├── concepts │ │ │ ├── contributions.rst │ │ │ ├── families.rst │ │ │ ├── index.rst │ │ │ ├── overview.rst │ │ │ ├── publishing.rst │ │ │ ├── table-types.rst │ │ │ └── transactions.rst │ │ ├── index.rst │ │ ├── introduction.rst │ │ ├── post-ingest │ │ │ └── index.rst │ │ ├── reference │ │ │ ├── index.rst │ │ │ ├── rest │ │ │ │ ├── controller │ │ │ │ │ ├── config.rst │ │ │ │ │ ├── db-table-management.rst │ │ │ │ │ ├── director-index.rst │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── info.rst │ │ │ │ │ ├── row-counters.rst │ │ │ │ │ ├── table-location.rst │ │ │ │ │ └── trans-management.rst │ │ │ │ ├── general.rst │ │ │ │ ├── index.rst │ │ │ │ └── worker │ │ │ │ │ └── index.rst │ │ │ └── tools.rst │ │ └── simple │ │ │ └── index.rst │ ├── data │ │ ├── index.rst │ │ ├── intro.rst │ │ ├── partitioner.rst │ │ ├── partitioning.rst │ │ └── ref-match.rst │ ├── index.rst │ ├── intro.rst │ └── qserv-ingest │ │ ├── index.rst │ │ ├── ingest.yaml │ │ ├── input-data.rst │ │ ├── itest.rst │ │ ├── repcli.rst │ │ ├── run.rst │ │ └── version.rst ├── intro │ └── index.rst ├── misc │ ├── KNOWN-ISSUES.txt │ ├── README.md │ ├── RELEASE-NOTES.txt │ ├── Scheduler-Foreman-rationale-tkt1863.txt │ ├── component_interaction.odg │ ├── examples │ │ ├── README.md │ │ ├── obsolete │ │ │ ├── README.txt │ │ │ ├── fell.qserv.cnf │ │ │ ├── ir2farm.qserv.cnf │ │ │ ├── loader.py │ │ │ ├── lsst-dev01.qserv.cnf │ │ │ ├── plotChunksCopies.tcl │ │ │ └── rebalance.py │ │ └── xrootd │ │ │ └── supervisor.lsp.cf │ ├── guide_to_source.txt │ ├── installation.trac │ ├── overview.tex │ ├── parser.txt │ ├── proto-czarHandlesWorkerResponse.gv │ ├── proto-workerSendsResponse.gv │ └── query_manipulation.dot ├── templates │ └── overview.html └── user │ ├── async.rst │ ├── http-frontend-general.rst │ ├── http-frontend-ingest.rst │ ├── http-frontend-query.rst │ ├── http-frontend.rst │ ├── index.rst │ └── sql.rst ├── doc_datasets └── test101 │ ├── README.md │ ├── data │ ├── Filter.csv │ ├── Object │ │ ├── chunk_7310_overlap.txt │ │ ├── chunk_7480.txt │ │ └── chunk_7480_overlap.txt │ └── Source │ │ └── chunk_7480.txt │ ├── database_test101.json │ ├── table_Filter.json │ ├── table_Object.json │ └── table_Source.json ├── itest_src └── datasets │ ├── case01 │ ├── data │ │ ├── Filter.tsv.gz │ │ ├── LeapSeconds.tsv.gz │ │ ├── Logs.tsv.gz │ │ ├── Object.tsv.gz │ │ ├── RefSrcMatch.tsv.gz │ │ ├── Science_Ccd_Exposure.tsv.gz │ │ ├── SimRefObject.tsv.gz │ │ ├── Source.tsv.gz │ │ ├── description.yaml │ │ ├── ingest │ │ │ ├── Filter.json │ │ │ ├── LeapSeconds.json │ │ │ ├── Logs.json │ │ │ ├── Object.json │ │ │ ├── RefSrcMatch.json │ │ │ ├── Science_Ccd_Exposure.json │ │ │ ├── SimRefObject.json │ │ │ ├── Source.json │ │ │ ├── database.json │ │ │ ├── metadata.json │ │ │ └── sdqa_Metric.json │ │ ├── partition │ │ │ ├── Object.json │ │ │ ├── Source.json │ │ │ └── common.json │ │ ├── readme.txt │ │ ├── schema │ │ │ ├── Filter.schema │ │ │ ├── LeapSeconds.schema │ │ │ ├── Logs.schema │ │ │ ├── Object.schema │ │ │ ├── RefSrcMatch.schema │ │ │ ├── Science_Ccd_Exposure.schema │ │ │ ├── SimRefObject.schema │ │ │ ├── Source.schema │ │ │ └── sdqa_Metric.schema │ │ └── sdqa_Metric.tsv.gz │ └── queries │ │ ├── 0001.1_fetchObjectById.sql │ │ ├── 0001.2_fetchObjectByIdIN.sql │ │ ├── 0001.3_fetchObjectByIdSelectVARBINARY.sql │ │ ├── 0001.4_fetchObjectByIdFullyQualified.sql │ │ ├── 0002_fetchObjectByIdNoResult.sql │ │ ├── 0003_selectMetadataForOneGalaxy.sql │ │ ├── 0003_selectMetadataForOneGalaxy_classicJOIN.sql │ │ ├── 0003_selectMetadataForOneGalaxy_withUSING.sql │ │ ├── 0004_lightCurve.sql │ │ ├── 0005_nonReplicatedTable.sql │ │ ├── 0006_transientVarObjNearGalaxy.sql │ │ ├── 0007.1_fetchSourceByObjId.sql │ │ ├── 0007.2_fetchSourceByObjIdSelectBLOB.sql │ │ ├── 0007_fetchSourceByObjId.sql │ │ ├── 0008.1_fetchSourceByObjIdIN_noRes.sql │ │ ├── 0008.2_fetchSourceByObjIdIN_withRes.sql │ │ ├── 0008.3_fetchSourceByObjIdIN.sql │ │ ├── 0008.4_fetchSourceByObjIdBETWEEN.sql │ │ ├── 0008_fetchSourceByObjIdIN_withRes.sql │ │ ├── 0010_leapSec.sql │ │ ├── 0012.1_raftAndCcd.sql │ │ ├── 0012.2_raftAndCcd.sql │ │ ├── 0012.3_raftAndCcd.sql │ │ ├── 0012_raftAndCcd.sql │ │ ├── 0013_groupedLogicalTerm.sql │ │ ├── 1002_coneMagColor.sql │ │ ├── 1002_coneMagColor_noalias.sql │ │ ├── 1003_coneMagColorEmptyRes.sql │ │ ├── 1004.1_varObjects.sql │ │ ├── 1004_varObjects.sql │ │ ├── 1005_allGalaxiesInArea.sql │ │ ├── 1006_qserv_func_with_equals.1.sql │ │ ├── 1006_qserv_func_with_equals.2.sql │ │ ├── 1011_objectsForExposure.sql │ │ ├── 1030_timeSeries.sql │ │ ├── 1051_nn.sql │ │ ├── 1060_selectPoly.sql │ │ ├── 1080_refMatch1.sql │ │ ├── 1083_null_safe_equals_op.sql │ │ ├── 1084_not_like.sql │ │ ├── 1084_null_safe_equals_op.sql │ │ ├── 1086_not_between.sql │ │ ├── 1087_and_alt.sql │ │ ├── 1088_or_alt.sql │ │ ├── 1089_not_in.sql │ │ ├── 1090_modulo.sql │ │ ├── 1091_mod.sql │ │ ├── 1092_div.sql │ │ ├── 1093_bitwise_and.sql │ │ ├── 1094_bitwise_or.sql │ │ ├── 1095_bitwise_right_shift.sql │ │ ├── 1096_bitwise_left_shift.sql │ │ ├── 1097_bitwise_xor.sql │ │ ├── 1098_negative_one.sql │ │ ├── 1099_two_group_by_columns.sql │ │ ├── 1100_aliasInSelect.sql │ │ ├── 1101.1_having.sql │ │ ├── 1101.2_having.sql │ │ ├── 1101.3_having.sql │ │ ├── 1102_having_with_limit.sql │ │ ├── 1103_select_star_with_limit.sql │ │ ├── 1104_column_disambiguation.sql │ │ ├── 1105_simpleCountStar.sql │ │ ├── 2001_fullObjectScan.sql │ │ ├── 2100_groupByChunkId.sql │ │ ├── 3005_orderByRA.sql │ │ ├── 3006.1_selectAs.sql │ │ ├── 3006_selectAs.sql │ │ ├── 3008_showColumns.sql │ │ ├── 3010_selectWithComputation.sql │ │ ├── 3011_selectSample.sql │ │ ├── 3014_limitAfterAreaspec.sql │ │ ├── 8003_areaWithLimitClause.sql │ │ ├── 9000_caseinsensitiveUDF.sql │ │ ├── 9001_quoteTabInBlob.sql │ │ ├── 9002_secIdxCompEq.sql │ │ ├── 9003_secIdxCompLt.sql │ │ ├── 9004_secIdxCompGt.sql │ │ ├── unsupported_columns │ │ ├── 2002_findStarsWithMultiMeasAndMagVariation.sql │ │ ├── 2003_objectWithVariabilityOrPeriodOrMag.sql │ │ ├── 3004_nonExistingColumn.sql │ │ └── README.txt │ │ ├── unsupported_syntax │ │ ├── 0011_sdqaMetric.sql │ │ ├── 1012_orderByClause.sql │ │ ├── 1013_orderByClauseRounded.sql │ │ ├── 1052_nnSimilarColors.sql │ │ ├── 1070_areaUsingPoly.sql │ │ ├── 1081_refMatch2.sql │ │ ├── 2006_randomSample.sql │ │ ├── 2010_logs.sql │ │ ├── 3001_SelectInPoly.sql │ │ ├── 3002_sameColumnName.sql │ │ ├── 3003_SameColumnTwice.sql │ │ ├── 3007_countGroupBy.sql │ │ ├── 3009_subquery.sql │ │ ├── 3012_similarObject.sql │ │ ├── 3015_orderByFunction.sql │ │ ├── 3016_selectAllPairsWithinDistance.sql │ │ ├── 8001_badLiteral.sql │ │ ├── 8002_badLiteral.sql │ │ ├── 8004_badArea.sql │ │ └── README.txt │ │ └── unsupported_tables │ │ ├── 1031_newTransientsForEpoch.sql │ │ ├── 1082_refMatch3.sql │ │ ├── 1083_refMatch3.sql │ │ ├── 1085_refMatch3.sql │ │ ├── 2004_objectsSimilarToQuasarsWithRedshift.sql │ │ ├── 2005_varObjectsOfOneType.sql │ │ ├── 3013_nonexistantTable.sql │ │ └── README.txt │ ├── case02 │ ├── README.txt │ ├── data │ │ ├── Object.csv.gz │ │ ├── Source.csv.gz │ │ ├── description.yaml │ │ ├── ingest │ │ │ ├── Object.json │ │ │ ├── Source.json │ │ │ └── database.json │ │ ├── partition │ │ │ ├── Object.json │ │ │ ├── Source.json │ │ │ └── common.json │ │ └── schema │ │ │ ├── Object.schema │ │ │ └── Source.schema │ └── queries │ │ ├── 0001_fetchObjectById.sql │ │ ├── 0002_fetchObjectByIdNoResult.sql │ │ ├── 0003_selectMetadataForOneGalaxy_withUSING.sql │ │ ├── 0004_fetchSourceById.sql │ │ ├── 1002.1_coneMagColor.sql │ │ ├── 1002.2_coneMagColor.sql │ │ ├── 1002.3_coneMagColor.sql │ │ ├── 1002.4_coneMagColor.sql │ │ ├── 1003_coneMagColorEmptyRes.sql │ │ ├── 1004.1_varObjects.sql │ │ ├── 1004.2_varObjects.sql │ │ ├── 1004.3_varObjects.sql │ │ ├── 1004.4_varObjects.sql │ │ ├── 1004.5_varObjects.sql │ │ ├── 1004.6_varObjects.sql │ │ ├── 1004.7_varObjects.sql │ │ ├── 1004.8_varObjects.sql │ │ ├── 1004_varObjects.sql │ │ ├── 1051_nn.sql │ │ ├── 2001_fullObjectScan.sql │ │ ├── 3001_query_035.sql │ │ ├── 3002_query_030.sql │ │ ├── 3005_objectCount.sql │ │ ├── 3006_selectIntervalMagnitudes.sql │ │ ├── 3007_countObjectWithColorFluxGreaterThan.sql │ │ ├── 3008_selectObjectWithColorMagnitudeGreaterThan.sql │ │ ├── 3009_countObjectInRegionWithZFlux.sql │ │ ├── 3011_selectObjectWithMagnitudes.sql │ │ ├── 3011_selectObjectWithMagnitudes_noalias.sql │ │ ├── 3012_selectObjectInCircularRegion.sql │ │ ├── 3013_joinObjectSourceInRegion_withUSING.sql │ │ ├── 3014_joinObjectSourceTimeInterval_withUSING.sql │ │ ├── 3020.2_selectObjectWithLimit.sql │ │ ├── 3020_selectObjectWithLimit.sql │ │ ├── 3021.1_selectObjectSortedByRA.sql │ │ ├── 3022_selectCountObjectInBox.sql │ │ ├── 3023_selectCountSourceInBox.sql │ │ ├── 8003_areaWithLimitClause.sql │ │ ├── unsupported_by_mysql │ │ ├── 3010_countObjectPerChunks.sql │ │ ├── 3020.1_selectObjectWithLimit.sql │ │ └── README.txt │ │ ├── unsupported_columns │ │ ├── 0006_transientVarObjNearGalaxy.sql │ │ ├── 1005_allGalaxiesInArea.sql │ │ ├── 2002_findStarsWithMultiMeasAndMagVariation.sql │ │ ├── 2003_objectWithVariabilityOrPeriodOrMag.sql │ │ └── README.txt │ │ ├── unsupported_syntax │ │ ├── 1012_orderByClause.sql │ │ ├── 1013_orderByClauseRounded.sql │ │ ├── 1052_nnSimilarColors.sql │ │ ├── 1070_areaUsingPoly.sql │ │ ├── 2006_randomSample.sql │ │ ├── 2010_logs.sql │ │ ├── 3003_query_025.sql │ │ ├── 3004_query_022.sql │ │ ├── 3015_selectAllPairsWithDistanceInRegion.sql │ │ ├── 3021_selectObjectSortedByRA.sql │ │ ├── 3022_selectAllPairsWithinSomeDistanceOfPointsInRegion.sql │ │ ├── 8001_badLiteral.sql │ │ ├── 8002_badLiteral.sql │ │ └── README.txt │ │ └── unsupported_tables │ │ ├── 1011_objectsForExposure.sql │ │ ├── 1030_timeSeries.sql │ │ ├── 1031_newTransientsForEpoch.sql │ │ ├── 1080_refMatch1.sql │ │ ├── 1081_refMatch2.sql │ │ ├── 1083_refMatch3.sql │ │ ├── 2004_objectsSimilarToQuasarsWithRedshift.sql │ │ ├── 2005_varObjectsOfOneType.sql │ │ ├── 3023_joinObjectSourceFilter.sql │ │ └── README.txt │ ├── case03 │ ├── data │ │ ├── AvgForcedPhot.csv.gz │ │ ├── AvgForcedPhotYearly.csv.gz │ │ ├── DeepCoadd.csv.gz │ │ ├── DeepCoadd_Metadata.csv.gz │ │ ├── DeepCoadd_To_Htm10.csv.gz │ │ ├── Filter.csv.gz │ │ ├── LeapSeconds.csv.gz │ │ ├── RefDeepSrcMatch.csv.gz │ │ ├── RefObject.csv.gz │ │ ├── RunDeepForcedSource.csv.gz │ │ ├── RunDeepSource.csv.gz │ │ ├── Science_Ccd_Exposure.csv.gz │ │ ├── Science_Ccd_Exposure_Metadata.csv.gz │ │ ├── Science_Ccd_Exposure_Metadata_coadd_r.csv.gz │ │ ├── Science_Ccd_Exposure_To_Htm10_coadd_r.csv.gz │ │ ├── Science_Ccd_Exposure_coadd_r.csv.gz │ │ ├── ZZZ_Db_Description.csv.gz │ │ ├── description.yaml │ │ ├── ingest │ │ │ ├── AvgForcedPhot.json │ │ │ ├── AvgForcedPhotYearly.json │ │ │ ├── DeepCoadd.json │ │ │ ├── DeepCoadd_Metadata.json │ │ │ ├── DeepCoadd_To_Htm10.json │ │ │ ├── Filter.json │ │ │ ├── LeapSeconds.json │ │ │ ├── RefDeepSrcMatch.json │ │ │ ├── RefObject.json │ │ │ ├── RunDeepForcedSource.json │ │ │ ├── RunDeepSource.json │ │ │ ├── Science_Ccd_Exposure.json │ │ │ ├── Science_Ccd_Exposure_Metadata.json │ │ │ ├── Science_Ccd_Exposure_Metadata_coadd_r.json │ │ │ ├── Science_Ccd_Exposure_To_Htm10_coadd_r.json │ │ │ ├── Science_Ccd_Exposure_coadd_r.json │ │ │ ├── ZZZ_Db_Description.json │ │ │ ├── database.json │ │ │ └── metadata.json │ │ ├── partition │ │ │ ├── DeepForcedSource.cfg.view.TODO │ │ │ ├── DeepForcedSource.json.view.TODO-DM-1728 │ │ │ ├── DeepSource.cfg.view.TODO │ │ │ ├── DeepSource.json.view.TODO-DM-1728 │ │ │ ├── RefDeepSrcMatch.json │ │ │ ├── RefObject.json │ │ │ ├── RunDeepForcedSource.json │ │ │ ├── RunDeepSource.json │ │ │ └── common.json │ │ └── schema │ │ │ ├── AvgForcedPhot.schema │ │ │ ├── AvgForcedPhotYearly.schema │ │ │ ├── DeepCoadd.schema │ │ │ ├── DeepCoadd_Metadata.schema │ │ │ ├── DeepCoadd_To_Htm10.schema │ │ │ ├── DeepForcedSource.schema │ │ │ ├── DeepSource.schema │ │ │ ├── Filter.schema │ │ │ ├── LeapSeconds.schema │ │ │ ├── RefDeepSrcMatch.schema │ │ │ ├── RefObject.schema │ │ │ ├── RunDeepForcedSource.schema │ │ │ ├── RunDeepSource.schema │ │ │ ├── Science_Ccd_Exposure.schema │ │ │ ├── Science_Ccd_Exposure_Metadata.schema │ │ │ ├── Science_Ccd_Exposure_Metadata_coadd_r.schema │ │ │ ├── Science_Ccd_Exposure_To_Htm10_coadd_r.schema │ │ │ ├── Science_Ccd_Exposure_coadd_r.schema │ │ │ └── ZZZ_Db_Description.schema │ └── queries │ │ ├── 0002.0_fetchRunAndFieldById.sql │ │ ├── 0002.1.1_fetchRunAndFieldById.sql │ │ ├── 0002.1_fetchRunAndFieldById.sql │ │ ├── 0002.2.1_fetchRunAndFieldById.sql │ │ ├── 0002.2_fetchRunAndFieldById.sql │ │ ├── 0002_fetchRunAndFieldById.sql │ │ ├── 0005_showColumnsFromRefObject.sql │ │ ├── 0006.1_selectExposure.sql │ │ ├── 0006_selectExposure.sql │ │ ├── 0009.1_selectCCDExposure.sql │ │ ├── 0009_selectCCDExposure.sql │ │ ├── 0011_selectDeepCoadd.sql │ │ ├── 0012.1_selectDistinctDeepCoaddWithGivenTractPatchFiltername.sql │ │ ├── 0012_selectDistinctDeepCoaddWithGivenTractPatchFiltername.sql │ │ ├── 0013.1_selectDeepCoadd2.sql │ │ ├── 0013_selectDeepCoadd2.sql │ │ ├── 0014.1_selectDeepCoadd3.sql │ │ ├── 0014.3_selectDeepCoadd3.sql │ │ ├── 0014_selectDeepCoadd3.sql │ │ ├── 0018.1_selectDeepCoaddWithGivenTractPatchFiltername.sql │ │ ├── 0018_selectDeepCoaddWithGivenTractPatchFiltername.sql │ │ ├── 0019.1_selectRunDeepSourceDeepcoaddDeepsrcmatchRefobject.sql │ │ ├── 0019.2_selectRunDeepSourceDeepcoaddDeepsrcmatchRefobject.sql │ │ ├── 0019.3_selectRunDeepSourceDeepcoaddDeepsrcmatchRefobject.sql │ │ ├── 0021.1_selectScienceCCDExposure.sql │ │ ├── 0021_selectScienceCCDExposure.sql │ │ ├── 0022.1_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql │ │ ├── 0022_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql │ │ ├── 0023.1_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql │ │ ├── 0023_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql │ │ ├── 0025.1_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql │ │ ├── 0025_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql │ │ ├── 0028.1_selectScienceCCDExposure.sql │ │ ├── 0028_selectScienceCCDExposure.sql │ │ ├── 0030.1_selectScienceCCDExposureByRunField.sql │ │ ├── 0030.2_selectScienceCCDExposureByRunField.sql │ │ ├── 0031_selectEmptyString.sql │ │ ├── 0032_longSelectListItem.sql │ │ ├── 0033_selectCountFromScience_Ccd_Exposure.sql │ │ ├── 0034_selectCountFromScience_Ccd_Exposure_Metadata.sql │ │ ├── 0035_selectCountFromScience_Ccd_Exposure_Metadata_coadd_r.sql │ │ ├── 0036_select_CountFromScience_Ccd_Exposure_To_Htm10_coadd_r.sql │ │ ├── 0037_selectCountFromScience_Ccd_Exposure_coadd_r.sql │ │ ├── 0038_selectCountFromRefObject.sql │ │ ├── 0039_selectCountFromRunDeepSource.sql │ │ ├── 0040_selectCountFromRunDeepForcedSource.sql │ │ ├── 0041_selectCountFromRunDeepSrcMatch.sql │ │ ├── 0042_selectCountFromAvgForcedPhot.sql │ │ ├── 0043_selectCountFromAvgForcedPhotYearly.sql │ │ ├── 0044_selectCountFromDeepCoadd.sql │ │ ├── 0045_selectCountFromDeepCoaddMetadata.sql │ │ ├── 0046_selectCountFromDeepCoadd_To_Htm10.sql │ │ ├── 0047_selectCountFromFilter.sql │ │ ├── 0048_selectCountFromLeapSeconds.sql │ │ ├── 0049_selectCountFromZZZ_Db_Description.sql │ │ ├── unsupported_syntax │ │ ├── 0007_selectExposureWithPoly.sql │ │ ├── 0008_selectRefObjectInPoly.sql │ │ ├── 0014.2_selectDeepCoadd3.sql │ │ ├── 0016_selectDeepCoaddInPoly.sql │ │ ├── 0017_selectRefObjectInPoly.sql │ │ ├── 0026_selectScienceCCDExposureInPoly.sql │ │ ├── 0027_selectRefObjectInPoly.sql │ │ └── README.txt │ │ └── unsupported_tables │ │ ├── 0001_showColumnsFromSource.sql │ │ ├── 0003.1_SourcesForGivenExposure.sql │ │ ├── 0003_SourcesForGivenExposure.sql │ │ ├── 0004_SourceExposureWithFilternameAndField.sql │ │ ├── 0010_selectSource_RefSrcMatch_RefObject.sql │ │ ├── 0015_selectDeepSourceDeepCoadd.sql │ │ ├── 0019_selectDeepsourceDeepcoaddDeepsrcmatchRefobject.sql │ │ ├── 0020_showColumnsFromDeepforcedsource.sql │ │ ├── 0024.1_selectDeepForcedSourceScienceCCDExposureWithFilternameFieldCamcolRun.sql │ │ ├── 0024_selectDeepForcedSourceScienceCCDExposureWithFilternameFieldCamcolRun.sql │ │ ├── 0029_selectDeepforcedsourceScienceCCDExposureRefdeepsrcmatchRefobject.sql │ │ └── README.txt │ └── case04 │ ├── data │ ├── DeepCoadd.csv.gz │ ├── DeepForcedSource.csv.gz │ ├── DeepSource.csv.gz │ ├── DeepSourceDupKeys.csv.gz │ ├── Science_Ccd_Exposure.csv.gz │ ├── description.yaml │ ├── ingest │ │ ├── DeepCoadd.json │ │ ├── DeepForcedSource.json │ │ ├── DeepSource.json │ │ ├── DeepSourceDupKeys.json │ │ ├── Science_Ccd_Exposure.json │ │ └── database.json │ ├── partition │ │ ├── DeepCoadd.json │ │ ├── DeepForcedSource.json │ │ ├── DeepSource.json │ │ ├── DeepSourceDupKeys.json │ │ ├── Science_Ccd_Exposure.json │ │ └── common.json │ └── schema │ │ ├── DeepCoadd.schema │ │ ├── DeepForcedSource.schema │ │ ├── DeepSource.schema │ │ ├── DeepSourceDupKeys.schema │ │ └── Science_Ccd_Exposure.schema │ └── queries │ ├── 0001_showColumnsFromSource.sql │ ├── 0003_SourcesForGivenExposure.sql │ ├── 0011_selectDeepCoadd.sql │ ├── 0015_selectDeepSourceDeepCoadd.sql │ ├── 0018_selectDeepCoaddWithGivenTractPatchFiltername.sql │ ├── 0020_showColumnsFromDeepForcedSource │ └── 0030_largeResult.sql ├── pyproject.toml ├── src ├── .clang-format ├── CMakeLists.txt ├── admin │ ├── .gitignore │ ├── CMakeLists.txt │ ├── bin │ │ ├── entrypoint │ │ └── qserv-kraken │ ├── etc │ │ ├── integration_tests.yaml │ │ └── log.cnf │ ├── examples │ │ ├── _template_database.params │ │ ├── _template_table.params │ │ ├── dbNonPartitioned.params │ │ ├── dbPartitioned.params │ │ ├── tbSchema_Exposure.sql │ │ ├── tbSchema_Object.sql │ │ ├── tbSchema_RefObjMatch.sql │ │ ├── tbSchema_Source.sql │ │ ├── tb_Exposure.params │ │ ├── tb_Exposure.sql │ │ ├── tb_Object.params │ │ ├── tb_Object.sql │ │ ├── tb_RefObjMatch.sql │ │ ├── tb_Science_Ccd_Exposure.sql │ │ ├── tb_Source.params │ │ ├── tb_Source.sql │ │ ├── testMap_dbNp.params │ │ ├── testMap_dbPt.params │ │ ├── testMap_generateMap │ │ ├── testMap_tbExposure.params │ │ ├── testMap_tbFilter.params │ │ ├── testMap_tbLeapSeconds.params │ │ ├── testMap_tbObject_ls.params │ │ ├── testMap_tbObject_rp.params │ │ ├── testMap_tbRefObjMatch.params │ │ ├── testMap_tbScience_Ccd_Exposure.params │ │ ├── testMap_tbSimRefObject.params │ │ ├── testMap_tbSource.params │ │ ├── testMap_tbSource2.params │ │ ├── testQserv_loadIt │ │ ├── testQserv_tbDeepFSource.params │ │ └── testQserv_tbDeepSource.params │ ├── python │ │ ├── lsst │ │ │ └── qserv │ │ │ │ ├── admin │ │ │ │ ├── __init__.py │ │ │ │ ├── cli │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── _integration_test.py │ │ │ │ │ ├── chunk_0.txt │ │ │ │ │ ├── entrypoint.py │ │ │ │ │ ├── options.py │ │ │ │ │ ├── render_targs.py │ │ │ │ │ ├── script.py │ │ │ │ │ └── utils.py │ │ │ │ ├── constants.py │ │ │ │ ├── itest.py │ │ │ │ ├── itest_load.py │ │ │ │ ├── itest_table.py │ │ │ │ ├── mysql_connection.py │ │ │ │ ├── qservCli │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── images.py │ │ │ │ │ ├── launch.py │ │ │ │ │ ├── opt.py │ │ │ │ │ ├── qserv_cli.py │ │ │ │ │ ├── qserv_log.py │ │ │ │ │ └── subproc.py │ │ │ │ ├── qserv_backoff.py │ │ │ │ ├── replicationInterface.py │ │ │ │ ├── schema_migration.py │ │ │ │ ├── template.py │ │ │ │ ├── tests │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_images.py │ │ │ │ │ ├── test_itest.py │ │ │ │ │ ├── test_optionsFileOption.py │ │ │ │ │ ├── test_qserv_cli.py │ │ │ │ │ ├── test_qserv_log.py │ │ │ │ │ ├── test_render_targs.py │ │ │ │ │ ├── test_smig.py │ │ │ │ │ ├── test_testing.py │ │ │ │ │ ├── test_utils.py │ │ │ │ │ └── test_watcher.py │ │ │ │ └── watcher.py │ │ │ │ └── testing │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── config.py │ │ │ │ ├── config │ │ │ │ └── common.yaml │ │ │ │ ├── main.py │ │ │ │ ├── mock_db.py │ │ │ │ ├── monitor.py │ │ │ │ ├── query_runner.py │ │ │ │ └── runner_mgr.py │ │ └── mypy.ini │ ├── schema │ │ └── migrate-None-to-0.sql.jinja │ └── templates │ │ ├── http │ │ └── etc │ │ │ └── qserv-czar.cnf.jinja │ │ ├── integration-test │ │ └── etc │ │ │ └── my.cnf │ │ ├── mariadb │ │ └── etc │ │ │ └── my.cnf │ │ ├── proxy │ │ └── etc │ │ │ ├── my-proxy.cnf.jinja │ │ │ └── qserv-czar.cnf.jinja │ │ ├── repl-ctl │ │ └── etc │ │ │ └── log4cxx.replication.properties.jinja │ │ ├── repl-db │ │ └── etc │ │ │ └── my.cnf │ │ └── xrootd │ │ └── etc │ │ ├── cmsd-manager.cf.jinja │ │ ├── cmsd-worker.cf.jinja │ │ ├── xrdssi.cf.jinja │ │ └── xrootd-manager.cf.jinja ├── cconfig │ ├── CMakeLists.txt │ ├── CzarConfig.cc │ └── CzarConfig.h ├── ccontrol │ ├── CMakeLists.txt │ ├── Callback.h │ ├── ConfigError.h │ ├── ConfigMap.h │ ├── MergingHandler.cc │ ├── MergingHandler.h │ ├── MissingUserQuery.h │ ├── ParseAdapters.cc │ ├── ParseAdapters.h │ ├── ParseAdaptersCBH.h │ ├── ParseHelpers.h │ ├── ParseListener.cc │ ├── ParseListener.h │ ├── ParseRunner.cc │ ├── ParseRunner.h │ ├── QueryState.cc │ ├── QueryState.h │ ├── SessionManager.h │ ├── TmpTableName.h │ ├── UserQuery.h │ ├── UserQueryAsyncResult.cc │ ├── UserQueryAsyncResult.h │ ├── UserQueryError.h │ ├── UserQueryFactory.cc │ ├── UserQueryFactory.h │ ├── UserQueryInvalid.h │ ├── UserQueryProcessList.cc │ ├── UserQueryProcessList.h │ ├── UserQueryQueries.cc │ ├── UserQueryQueries.h │ ├── UserQueryResources.cc │ ├── UserQueryResources.h │ ├── UserQueryResultDelete.cc │ ├── UserQueryResultDelete.h │ ├── UserQuerySelect.cc │ ├── UserQuerySelect.h │ ├── UserQuerySelectCountStar.cc │ ├── UserQuerySelectCountStar.h │ ├── UserQuerySet.cc │ ├── UserQuerySet.h │ ├── UserQueryType.cc │ ├── UserQueryType.h │ ├── msgCode.h │ ├── testAntlr4GeneratedIR.cc │ ├── testCControl.cc │ └── testUserQueryType.cc ├── css │ ├── CMakeLists.txt │ ├── CssAccess.cc │ ├── CssAccess.h │ ├── CssConfig.cc │ ├── CssConfig.h │ ├── CssError.h │ ├── DbInterfaceMySql.cc │ ├── DbInterfaceMySql.h │ ├── EmptyChunks.cc │ ├── EmptyChunks.h │ ├── KvInterface.h │ ├── KvInterfaceImplMem.cc │ ├── KvInterfaceImplMem.h │ ├── KvInterfaceImplMySql.cc │ ├── KvInterfaceImplMySql.h │ ├── MatchTableParams.h │ ├── NodeParams.h │ ├── PartTableParams.h │ ├── ScanTableParams.h │ ├── StripingParams.h │ ├── TableParams.h │ ├── constants.h │ ├── python │ │ ├── __init__.py │ │ └── schema_migration.py │ ├── schema │ │ └── migrate-None-to-0.sql │ ├── testCssAccess.cc │ ├── testEmptyChunks.cc │ ├── testKvInterfaceImpl.cc │ └── testKvInterfaceImplMySql.cc ├── czar │ ├── CMakeLists.txt │ ├── ChttpModule.cc │ ├── ChttpModule.h │ ├── Czar.cc │ ├── Czar.h │ ├── CzarErrors.h │ ├── CzarThreads.cc │ ├── CzarThreads.h │ ├── HttpCzarIngestCsvModule.cc │ ├── HttpCzarIngestCsvModule.h │ ├── HttpCzarIngestModule.cc │ ├── HttpCzarIngestModule.h │ ├── HttpCzarIngestModuleBase.cc │ ├── HttpCzarIngestModuleBase.h │ ├── HttpCzarQueryModule.cc │ ├── HttpCzarQueryModule.h │ ├── HttpCzarSvc.cc │ ├── HttpCzarSvc.h │ ├── HttpMonitorModule.cc │ ├── HttpMonitorModule.h │ ├── HttpSvc.cc │ ├── HttpSvc.h │ ├── MessageTable.cc │ ├── MessageTable.h │ ├── QhttpModule.cc │ ├── QhttpModule.h │ ├── SubmitResult.h │ ├── WorkerIngestProcessor.cc │ ├── WorkerIngestProcessor.h │ └── qserv-czar-http.cc ├── global │ ├── CMakeLists.txt │ ├── ConfigError.h │ ├── DbTable.cc │ ├── DbTable.h │ ├── LogContext.h │ ├── ResourceUnit.cc │ ├── ResourceUnit.h │ ├── UnsupportedError.h │ ├── clock_defs.h │ ├── constants.h │ ├── debugUtil.cc │ ├── debugUtil.h │ ├── intTypes.h │ ├── sqltoken.cc │ ├── sqltoken.h │ ├── stringTypes.h │ ├── stringUtil.cc │ ├── stringUtil.h │ └── testResourceUnit.cc ├── http │ ├── AsyncReq.cc │ ├── AsyncReq.h │ ├── BaseModule.cc │ ├── BaseModule.h │ ├── BinaryEncoding.cc │ ├── BinaryEncoding.h │ ├── CMakeLists.txt │ ├── ChttpMetaModule.cc │ ├── ChttpMetaModule.h │ ├── ChttpModule.cc │ ├── ChttpModule.h │ ├── Client.cc │ ├── Client.h │ ├── ClientConfig.cc │ ├── ClientConfig.h │ ├── ClientConnPool.cc │ ├── ClientConnPool.h │ ├── Exceptions.cc │ ├── Exceptions.h │ ├── FileUploadModule.cc │ ├── FileUploadModule.h │ ├── MetaModule.cc │ ├── MetaModule.h │ ├── Method.cc │ ├── Method.h │ ├── Module.cc │ ├── Module.h │ ├── QhttpModule.cc │ ├── QhttpModule.h │ ├── RequestBodyJSON.cc │ ├── RequestBodyJSON.h │ ├── RequestQuery.cc │ ├── RequestQuery.h │ ├── Url.cc │ ├── Url.h │ ├── testAsyncReq.cc │ ├── testRequestBodyJSON.cc │ ├── testRequestQuery.cc │ └── testUrl.cc ├── mimic │ ├── CMakeLists.txt │ ├── README.txt │ └── python │ │ └── lsst │ │ └── utils │ │ └── wrappers.py ├── mysql │ ├── CMakeLists.txt │ ├── CsvBuffer.cc │ ├── CsvBuffer.h │ ├── LocalInfile.cc │ ├── LocalInfile.h │ ├── LocalInfileError.h │ ├── MySqlConfig.cc │ ├── MySqlConfig.h │ ├── MySqlConnection.cc │ ├── MySqlConnection.h │ ├── MySqlUtils.cc │ ├── MySqlUtils.h │ ├── SConscript.test │ ├── SchemaFactory.cc │ ├── SchemaFactory.h │ ├── testCsvBuffer.cc │ ├── testLocalInfile.cc │ └── testMySqlUtils.cc ├── parser │ ├── CMakeLists.txt │ ├── MySqlLexer.g4 │ ├── MySqlParser.g4 │ ├── ParseException.cc │ ├── ParseException.h │ ├── QSMySqlLexer.g4 │ └── QSMySqlParser.g4 ├── partition │ ├── CMakeLists.txt │ ├── ChunkIndex.cc │ ├── ChunkIndex.h │ ├── ChunkReducer.cc │ ├── ChunkReducer.h │ ├── Chunker.cc │ ├── Chunker.h │ ├── CmdLineUtils.cc │ ├── CmdLineUtils.h │ ├── ConfigStore.cc │ ├── ConfigStore.h │ ├── Constants.h │ ├── Csv.cc │ ├── Csv.h │ ├── FileUtils.cc │ ├── FileUtils.h │ ├── Geometry.cc │ ├── Geometry.h │ ├── HtmIndex.cc │ ├── HtmIndex.h │ ├── InputLines.cc │ ├── InputLines.h │ ├── MapReduce.h │ ├── ObjectIndex.cc │ ├── ObjectIndex.h │ ├── ParquetInterface.cc │ ├── ParquetInterface.h │ ├── Vector.h │ ├── config │ │ ├── PT1.1 │ │ │ ├── Object.json │ │ │ ├── RefObjMatch.json │ │ │ ├── SimRefObject.json │ │ │ ├── Source.json │ │ │ └── common.json │ │ └── PT1.2 │ │ │ ├── Object.json │ │ │ ├── RefObjMatch.json │ │ │ ├── RefSrcMatch.json │ │ │ ├── SimRefObject.json │ │ │ ├── Source.json │ │ │ └── common.json │ ├── doc │ │ ├── duplication.md │ │ ├── partitioner.md │ │ ├── partitioning.md │ │ └── subchunks.png │ ├── sph-duplicate.cc │ ├── sph-duplicate2.cc │ ├── sph-estimate-stats.cc │ ├── sph-htm-index.cc │ ├── sph-layout.cc │ ├── sph-parq2csv.cc │ ├── sph-partition-matches.cc │ ├── sph-partition.cc │ └── tests │ │ ├── CMakeLists.txt │ │ ├── TempFile.h │ │ ├── chunkIndex.cc │ │ ├── configStore.cc │ │ ├── csv.cc │ │ ├── fileUtils.cc │ │ ├── geometry.cc │ │ ├── htmIndex.cc │ │ ├── mapReduce.cc │ │ ├── objectIndex.cc │ │ └── vector.cc ├── proto │ ├── CMakeLists.txt │ ├── COPYRIGHT │ ├── FakeProtocolFixture.h │ ├── FrameBuffer.cc │ ├── FrameBuffer.h │ ├── ProtoHeaderWrap.cc │ ├── ProtoHeaderWrap.h │ ├── ProtoImporter.h │ ├── ScanTableInfo.cc │ ├── ScanTableInfo.h │ ├── testProtocol.cc │ └── worker.proto ├── proxy │ ├── CMakeLists.txt │ ├── README.txt │ ├── czarProxy.cc │ ├── czarProxy.h │ ├── czarProxyLuaWrapper.cc │ ├── mysqlProxy.lua │ └── test.sh ├── qana │ ├── AggregatePlugin.cc │ ├── AggregatePlugin.h │ ├── AnalysisError.h │ ├── CMakeLists.txt │ ├── CheckAggregation.h │ ├── ColumnVertexMap.cc │ ├── ColumnVertexMap.h │ ├── DuplSelectExprPlugin.cc │ ├── DuplSelectExprPlugin.h │ ├── InvalidTableError.h │ ├── MatchTablePlugin.cc │ ├── MatchTablePlugin.h │ ├── PluginNotFoundError.h │ ├── PostPlugin.cc │ ├── PostPlugin.h │ ├── QservRestrictorPlugin.cc │ ├── QservRestrictorPlugin.h │ ├── QueryMapping.cc │ ├── QueryMapping.h │ ├── QueryNotEvaluableError.h │ ├── QueryPlugin.h │ ├── README_qana.rst │ ├── RelationGraph.cc │ ├── RelationGraph.h │ ├── ScanTablePlugin.cc │ ├── ScanTablePlugin.h │ ├── TableInfo.cc │ ├── TableInfo.h │ ├── TableInfoPool.cc │ ├── TableInfoPool.h │ ├── TablePlugin.cc │ ├── TablePlugin.h │ ├── WherePlugin.cc │ ├── WherePlugin.h │ ├── testDuplSelectExprPlugin.cc │ ├── testPlugins.cc │ ├── testPlugins.kvmap │ └── testTablePlugin.cc ├── qdisp │ ├── CMakeLists.txt │ ├── ChunkMeta.cc │ ├── ChunkMeta.h │ ├── CzarStats.cc │ ├── CzarStats.h │ ├── Executive.cc │ ├── Executive.h │ ├── JobDescription.cc │ ├── JobDescription.h │ ├── JobQuery.cc │ ├── JobQuery.h │ ├── JobStatus.cc │ ├── JobStatus.h │ ├── MessageStore.cc │ ├── MessageStore.h │ ├── QdispPool.cc │ ├── QdispPool.h │ ├── QueryRequest.cc │ ├── QueryRequest.h │ ├── ResponseHandler.h │ ├── SharedResources.h │ ├── XrdSsiMocks.cc │ ├── XrdSsiMocks.h │ └── testQDisp.cc ├── qhttp │ ├── AjaxEndpoint.cc │ ├── AjaxEndpoint.h │ ├── CMakeLists.txt │ ├── LogHelpers.h │ ├── MultiPartParser.cc │ ├── MultiPartParser.h │ ├── Path.cc │ ├── Path.h │ ├── README.md │ ├── Request.cc │ ├── Request.h │ ├── Response.cc │ ├── Response.h │ ├── Server.cc │ ├── Server.h │ ├── StaticContent.cc │ ├── StaticContent.h │ ├── Status.h │ ├── testdata │ │ ├── css │ │ │ └── style.css │ │ ├── images │ │ │ ├── favicon.ico │ │ │ ├── lsst.gif │ │ │ ├── lsst.jpg │ │ │ └── lsst.png │ │ ├── index.html │ │ └── js │ │ │ └── main.js │ └── testqhttp.cc ├── qmeta │ ├── CMakeLists.txt │ ├── Exceptions.h │ ├── QInfo.h │ ├── QMeta.cc │ ├── QMeta.h │ ├── QMetaMysql.cc │ ├── QMetaMysql.h │ ├── QMetaSelect.cc │ ├── QMetaSelect.h │ ├── QMetaTransaction.cc │ ├── QMetaTransaction.h │ ├── QStats.h │ ├── QStatus.h │ ├── QStatusMysql.cc │ ├── QStatusMysql.h │ ├── python │ │ └── schema_migration.py │ ├── schema │ │ ├── migrate-0-to-1.sql │ │ ├── migrate-1-to-2.sql │ │ ├── migrate-2-to-3.sql │ │ ├── migrate-3-to-4.sql │ │ ├── migrate-4-to-5.sql │ │ ├── migrate-5-to-6.sql │ │ ├── migrate-6-to-7.sql │ │ ├── migrate-7-to-8.sql │ │ ├── migrate-8-to-9.sql │ │ ├── migrate-9-to-10.sql │ │ └── migrate-None-to-10.sql.jinja │ ├── testQMeta.cc │ └── types.h ├── qproc │ ├── CMakeLists.txt │ ├── ChunkQuerySpec.cc │ ├── ChunkQuerySpec.h │ ├── ChunkSpec.cc │ ├── ChunkSpec.h │ ├── DatabaseModels.cc │ ├── DatabaseModels.h │ ├── IndexMap.cc │ ├── IndexMap.h │ ├── QueryProcessingBug.h │ ├── QueryProcessingError.h │ ├── QuerySession.cc │ ├── QuerySession.h │ ├── SecondaryIndex.cc │ ├── SecondaryIndex.h │ ├── TaskMsgFactory.cc │ ├── TaskMsgFactory.h │ ├── fakeGeometry.h │ ├── geomAdapter.h │ ├── testChunkSpec.cc │ ├── testGeomAdapter.cc │ ├── testIndexMap.cc │ ├── testQueryAnaAggregation.cc │ ├── testQueryAnaBetween.cc │ ├── testQueryAnaDuplSelectExpr.cc │ ├── testQueryAnaGeneral.cc │ ├── testQueryAnaIn.cc │ └── testQueryAnaOrderBy.cc ├── query │ ├── AggOp.cc │ ├── AggOp.h │ ├── AggRecord.h │ ├── AndTerm.cc │ ├── AndTerm.h │ ├── AreaRestrictor.cc │ ├── AreaRestrictor.h │ ├── BetweenPredicate.cc │ ├── BetweenPredicate.h │ ├── BoolFactor.cc │ ├── BoolFactor.h │ ├── BoolFactorTerm.h │ ├── BoolTerm.cc │ ├── BoolTerm.h │ ├── BoolTermFactor.cc │ ├── BoolTermFactor.h │ ├── CMakeLists.txt │ ├── ColumnRef.cc │ ├── ColumnRef.h │ ├── CompPredicate.cc │ ├── CompPredicate.h │ ├── CopyTerms.h │ ├── FromList.cc │ ├── FromList.h │ ├── FuncExpr.cc │ ├── FuncExpr.h │ ├── GroupByClause.cc │ ├── GroupByClause.h │ ├── HavingClause.cc │ ├── HavingClause.h │ ├── InPredicate.cc │ ├── InPredicate.h │ ├── JoinRef.cc │ ├── JoinRef.h │ ├── JoinSpec.cc │ ├── JoinSpec.h │ ├── LikePredicate.cc │ ├── LikePredicate.h │ ├── LogicalTerm.cc │ ├── LogicalTerm.h │ ├── NullPredicate.cc │ ├── NullPredicate.h │ ├── OrTerm.cc │ ├── OrTerm.h │ ├── OrderByClause.cc │ ├── OrderByClause.h │ ├── PassListTerm.cc │ ├── PassListTerm.h │ ├── PassTerm.cc │ ├── PassTerm.h │ ├── Predicate.cc │ ├── Predicate.h │ ├── QueryContext.cc │ ├── QueryContext.h │ ├── QueryTemplate.cc │ ├── QueryTemplate.h │ ├── README_query.rst │ ├── SecIdxRestrictor.cc │ ├── SecIdxRestrictor.h │ ├── SelectList.cc │ ├── SelectList.h │ ├── SelectStmt.cc │ ├── SelectStmt.h │ ├── SubsetHelper.h │ ├── TableRef.cc │ ├── TableRef.h │ ├── TestFactory.cc │ ├── TestFactory.h │ ├── UnknownTerm.cc │ ├── UnknownTerm.h │ ├── ValueExpr.cc │ ├── ValueExpr.h │ ├── ValueExprPredicate.cc │ ├── ValueExprPredicate.h │ ├── ValueFactor.cc │ ├── ValueFactor.h │ ├── WhereClause.cc │ ├── WhereClause.h │ ├── testAreaRestrictor.cc │ ├── testColumnRef.cc │ ├── testOrderBy.cc │ ├── testQueryContext.cc │ ├── testRepr.cc │ ├── testSecIdxRestrictor.cc │ ├── testTableRef.cc │ ├── testValueExpr.cc │ └── typedefs.h ├── replica │ ├── CMakeLists.txt │ ├── COPYRIGHT │ ├── apps │ │ ├── AbortTransactionApp.cc │ │ ├── AbortTransactionApp.h │ │ ├── AdminApp.cc │ │ ├── AdminApp.h │ │ ├── Application.cc │ │ ├── Application.h │ │ ├── ApplicationColl.cc │ │ ├── ApplicationColl.h │ │ ├── ApplicationTypes.cc │ │ ├── ApplicationTypes.h │ │ ├── CMakeLists.txt │ │ ├── CheckSumApp.cc │ │ ├── CheckSumApp.h │ │ ├── ChunksApp.cc │ │ ├── ChunksApp.h │ │ ├── ClusterHealthApp.cc │ │ ├── ClusterHealthApp.h │ │ ├── ConfigApp.cc │ │ ├── ConfigApp.h │ │ ├── ConfigAppBase.cc │ │ ├── ConfigAppBase.h │ │ ├── ConfigTestApp.cc │ │ ├── ConfigTestApp.h │ │ ├── ControllerApp.cc │ │ ├── ControllerApp.h │ │ ├── DatabaseTestApp.cc │ │ ├── DatabaseTestApp.h │ │ ├── DeleteWorkerApp.cc │ │ ├── DeleteWorkerApp.h │ │ ├── DirectorIndexApp.cc │ │ ├── DirectorIndexApp.h │ │ ├── FileExportApp.cc │ │ ├── FileExportApp.h │ │ ├── FileIngestApp.cc │ │ ├── FileIngestApp.h │ │ ├── FileReadApp.cc │ │ ├── FileReadApp.h │ │ ├── FileServerApp.cc │ │ ├── FileServerApp.h │ │ ├── FixUpApp.cc │ │ ├── FixUpApp.h │ │ ├── HttpAsyncReqApp.cc │ │ ├── HttpAsyncReqApp.h │ │ ├── HttpClientApp.cc │ │ ├── HttpClientApp.h │ │ ├── HttpLibServerApp.cc │ │ ├── HttpLibServerApp.h │ │ ├── MasterControllerHttpApp.cc │ │ ├── MasterControllerHttpApp.h │ │ ├── MessengerTestApp.cc │ │ ├── MessengerTestApp.h │ │ ├── MoveApp.cc │ │ ├── MoveApp.h │ │ ├── MySQLTestApp.cc │ │ ├── MySQLTestApp.h │ │ ├── PurgeApp.cc │ │ ├── PurgeApp.h │ │ ├── QhttpTestApp.cc │ │ ├── QhttpTestApp.h │ │ ├── QservWorkerApp.cc │ │ ├── QservWorkerApp.h │ │ ├── QservWorkerPingApp.cc │ │ ├── QservWorkerPingApp.h │ │ ├── QservXrootdSsiApp.cc │ │ ├── QservXrootdSsiApp.h │ │ ├── RebalanceApp.cc │ │ ├── RebalanceApp.h │ │ ├── RegistryHttpApp.cc │ │ ├── RegistryHttpApp.h │ │ ├── ReplicateApp.cc │ │ ├── ReplicateApp.h │ │ ├── SqlApp.cc │ │ ├── SqlApp.h │ │ ├── SyncApp.cc │ │ ├── SyncApp.h │ │ ├── TestAwsS3App.cc │ │ ├── TestAwsS3App.h │ │ ├── TransactionsApp.cc │ │ ├── TransactionsApp.h │ │ ├── VerifyApp.cc │ │ ├── VerifyApp.h │ │ ├── WorkerApp.cc │ │ └── WorkerApp.h │ ├── config │ │ ├── CMakeLists.txt │ │ ├── ConfigCzar.cc │ │ ├── ConfigCzar.h │ │ ├── ConfigDatabase.cc │ │ ├── ConfigDatabase.h │ │ ├── ConfigDatabaseFamily.cc │ │ ├── ConfigDatabaseFamily.h │ │ ├── ConfigHost.cc │ │ ├── ConfigHost.h │ │ ├── ConfigParserJSON.cc │ │ ├── ConfigParserJSON.h │ │ ├── ConfigParserMySQL.cc │ │ ├── ConfigParserMySQL.h │ │ ├── ConfigParserUtils.h │ │ ├── ConfigTable.cc │ │ ├── ConfigTable.h │ │ ├── ConfigTestData.cc │ │ ├── ConfigTestData.h │ │ ├── ConfigWorker.cc │ │ ├── ConfigWorker.h │ │ ├── Configuration.cc │ │ ├── Configuration.h │ │ ├── ConfigurationExceptions.h │ │ ├── ConfigurationSchema.cc │ │ └── ConfigurationSchema.h │ ├── contr │ │ ├── CMakeLists.txt │ │ ├── Controller.cc │ │ ├── Controller.h │ │ ├── DeleteWorkerTask.cc │ │ ├── DeleteWorkerTask.h │ │ ├── EventLogger.cc │ │ ├── EventLogger.h │ │ ├── HealthMonitorTask.cc │ │ ├── HealthMonitorTask.h │ │ ├── HttpCatalogsModule.cc │ │ ├── HttpCatalogsModule.h │ │ ├── HttpConfigurationModule.cc │ │ ├── HttpConfigurationModule.h │ │ ├── HttpControllersModule.cc │ │ ├── HttpControllersModule.h │ │ ├── HttpDirectorIndexModule.cc │ │ ├── HttpDirectorIndexModule.h │ │ ├── HttpExportModule.cc │ │ ├── HttpExportModule.h │ │ ├── HttpIngestChunksModule.cc │ │ ├── HttpIngestChunksModule.h │ │ ├── HttpIngestConfigModule.cc │ │ ├── HttpIngestConfigModule.h │ │ ├── HttpIngestModule.cc │ │ ├── HttpIngestModule.h │ │ ├── HttpIngestTransModule.cc │ │ ├── HttpIngestTransModule.h │ │ ├── HttpJobsModule.cc │ │ ├── HttpJobsModule.h │ │ ├── HttpModule.cc │ │ ├── HttpModule.h │ │ ├── HttpProcessor.cc │ │ ├── HttpProcessor.h │ │ ├── HttpProcessorConfig.h │ │ ├── HttpQservMonitorModule.cc │ │ ├── HttpQservMonitorModule.h │ │ ├── HttpQservSqlModule.cc │ │ ├── HttpQservSqlModule.h │ │ ├── HttpReplicationLevelsModule.cc │ │ ├── HttpReplicationLevelsModule.h │ │ ├── HttpRequestsModule.cc │ │ ├── HttpRequestsModule.h │ │ ├── HttpSqlIndexModule.cc │ │ ├── HttpSqlIndexModule.h │ │ ├── HttpSqlSchemaModule.cc │ │ ├── HttpSqlSchemaModule.h │ │ ├── HttpWorkerStatusModule.cc │ │ ├── HttpWorkerStatusModule.h │ │ ├── ReplicationTask.cc │ │ ├── ReplicationTask.h │ │ ├── Task.cc │ │ └── Task.h │ ├── export │ │ ├── CMakeLists.txt │ │ ├── ExportClient.cc │ │ ├── ExportClient.h │ │ ├── ExportServer.cc │ │ ├── ExportServer.h │ │ ├── ExportServerConnection.cc │ │ └── ExportServerConnection.h │ ├── ingest │ │ ├── CMakeLists.txt │ │ ├── IngestClient.cc │ │ ├── IngestClient.h │ │ ├── IngestDataHttpSvcMod.cc │ │ ├── IngestDataHttpSvcMod.h │ │ ├── IngestFileHttpSvcMod.cc │ │ ├── IngestFileHttpSvcMod.h │ │ ├── IngestFileSvc.cc │ │ ├── IngestFileSvc.h │ │ ├── IngestHttpSvc.cc │ │ ├── IngestHttpSvc.h │ │ ├── IngestHttpSvcMod.cc │ │ ├── IngestHttpSvcMod.h │ │ ├── IngestRequest.cc │ │ ├── IngestRequest.h │ │ ├── IngestRequestMgr.cc │ │ ├── IngestRequestMgr.h │ │ ├── IngestResourceMgr.cc │ │ ├── IngestResourceMgr.h │ │ ├── IngestResourceMgrP.cc │ │ ├── IngestResourceMgrP.h │ │ ├── IngestResourceMgrT.cc │ │ ├── IngestResourceMgrT.h │ │ ├── IngestSvc.cc │ │ ├── IngestSvc.h │ │ ├── IngestSvcConn.cc │ │ ├── IngestSvcConn.h │ │ ├── IngestUtils.cc │ │ ├── IngestUtils.h │ │ ├── TransactionContrib.cc │ │ └── TransactionContrib.h │ ├── jobs │ │ ├── AbortTransactionJob.cc │ │ ├── AbortTransactionJob.h │ │ ├── CMakeLists.txt │ │ ├── ClusterHealthJob.cc │ │ ├── ClusterHealthJob.h │ │ ├── CreateReplicaJob.cc │ │ ├── CreateReplicaJob.h │ │ ├── DeleteReplicaJob.cc │ │ ├── DeleteReplicaJob.h │ │ ├── DeleteWorkerJob.cc │ │ ├── DeleteWorkerJob.h │ │ ├── DirectorIndexJob.cc │ │ ├── DirectorIndexJob.h │ │ ├── FindAllJob.cc │ │ ├── FindAllJob.h │ │ ├── FixUpJob.cc │ │ ├── FixUpJob.h │ │ ├── Job.cc │ │ ├── Job.h │ │ ├── MoveReplicaJob.cc │ │ ├── MoveReplicaJob.h │ │ ├── PurgeJob.cc │ │ ├── PurgeJob.h │ │ ├── QservGetReplicasJob.cc │ │ ├── QservGetReplicasJob.h │ │ ├── QservStatusJob.cc │ │ ├── QservStatusJob.h │ │ ├── QservSyncJob.cc │ │ ├── QservSyncJob.h │ │ ├── RebalanceJob.cc │ │ ├── RebalanceJob.h │ │ ├── ReplicateJob.cc │ │ ├── ReplicateJob.h │ │ ├── ServiceManagementJob.cc │ │ ├── ServiceManagementJob.h │ │ ├── SqlAlterTablesJob.cc │ │ ├── SqlAlterTablesJob.h │ │ ├── SqlCreateDbJob.cc │ │ ├── SqlCreateDbJob.h │ │ ├── SqlCreateIndexesJob.cc │ │ ├── SqlCreateIndexesJob.h │ │ ├── SqlCreateTableJob.cc │ │ ├── SqlCreateTableJob.h │ │ ├── SqlCreateTablesJob.cc │ │ ├── SqlCreateTablesJob.h │ │ ├── SqlDeleteDbJob.cc │ │ ├── SqlDeleteDbJob.h │ │ ├── SqlDeleteTableJob.cc │ │ ├── SqlDeleteTableJob.h │ │ ├── SqlDeleteTablePartitionJob.cc │ │ ├── SqlDeleteTablePartitionJob.h │ │ ├── SqlDisableDbJob.cc │ │ ├── SqlDisableDbJob.h │ │ ├── SqlDropIndexesJob.cc │ │ ├── SqlDropIndexesJob.h │ │ ├── SqlEnableDbJob.cc │ │ ├── SqlEnableDbJob.h │ │ ├── SqlGetIndexesJob.cc │ │ ├── SqlGetIndexesJob.h │ │ ├── SqlGrantAccessJob.cc │ │ ├── SqlGrantAccessJob.h │ │ ├── SqlJob.cc │ │ ├── SqlJob.h │ │ ├── SqlJobResult.cc │ │ ├── SqlJobResult.h │ │ ├── SqlQueryJob.cc │ │ ├── SqlQueryJob.h │ │ ├── SqlRemoveTablePartitionsJob.cc │ │ ├── SqlRemoveTablePartitionsJob.h │ │ ├── SqlRowStatsJob.cc │ │ ├── SqlRowStatsJob.h │ │ ├── VerifyJob.cc │ │ └── VerifyJob.h │ ├── mysql │ │ ├── CMakeLists.txt │ │ ├── DatabaseMySQL.cc │ │ ├── DatabaseMySQL.h │ │ ├── DatabaseMySQLExceptions.h │ │ ├── DatabaseMySQLGenerator.cc │ │ ├── DatabaseMySQLGenerator.h │ │ ├── DatabaseMySQLRow.cc │ │ ├── DatabaseMySQLRow.h │ │ ├── DatabaseMySQLTypes.cc │ │ ├── DatabaseMySQLTypes.h │ │ ├── DatabaseMySQLUtils.cc │ │ └── DatabaseMySQLUtils.h │ ├── proto │ │ ├── CMakeLists.txt │ │ └── protocol.proto │ ├── python │ │ ├── __init__.py │ │ └── schema_migration.py │ ├── qserv │ │ ├── AddReplicaQservMgtRequest.cc │ │ ├── AddReplicaQservMgtRequest.h │ │ ├── CMakeLists.txt │ │ ├── GetConfigQservCzarMgtRequest.cc │ │ ├── GetConfigQservCzarMgtRequest.h │ │ ├── GetConfigQservMgtRequest.cc │ │ ├── GetConfigQservMgtRequest.h │ │ ├── GetDbStatusQservMgtRequest.cc │ │ ├── GetDbStatusQservMgtRequest.h │ │ ├── GetQueryProgressQservCzarMgtRequest.cc │ │ ├── GetQueryProgressQservCzarMgtRequest.h │ │ ├── GetReplicasQservMgtRequest.cc │ │ ├── GetReplicasQservMgtRequest.h │ │ ├── GetResultFilesQservMgtRequest.cc │ │ ├── GetResultFilesQservMgtRequest.h │ │ ├── GetStatusQservCzarMgtRequest.cc │ │ ├── GetStatusQservCzarMgtRequest.h │ │ ├── GetStatusQservMgtRequest.cc │ │ ├── GetStatusQservMgtRequest.h │ │ ├── QservCzarMgtRequest.cc │ │ ├── QservCzarMgtRequest.h │ │ ├── QservMgtRequest.cc │ │ ├── QservMgtRequest.h │ │ ├── QservMgtServices.cc │ │ ├── QservMgtServices.h │ │ ├── QservWorkerMgtRequest.cc │ │ ├── QservWorkerMgtRequest.h │ │ ├── RemoveReplicaQservMgtRequest.cc │ │ ├── RemoveReplicaQservMgtRequest.h │ │ ├── SetReplicasQservMgtRequest.cc │ │ ├── SetReplicasQservMgtRequest.h │ │ ├── TestEchoQservMgtRequest.cc │ │ ├── TestEchoQservMgtRequest.h │ │ └── XrdCmsgetVnId.cc │ ├── registry │ │ ├── CMakeLists.txt │ │ ├── Registry.cc │ │ ├── Registry.h │ │ ├── RegistryHttpSvc.cc │ │ ├── RegistryHttpSvc.h │ │ ├── RegistryHttpSvcMod.cc │ │ ├── RegistryHttpSvcMod.h │ │ ├── RegistryServices.cc │ │ └── RegistryServices.h │ ├── requests │ │ ├── CMakeLists.txt │ │ ├── DeleteRequest.cc │ │ ├── DeleteRequest.h │ │ ├── DirectorIndexRequest.cc │ │ ├── DirectorIndexRequest.h │ │ ├── DisposeRequest.cc │ │ ├── DisposeRequest.h │ │ ├── EchoRequest.cc │ │ ├── EchoRequest.h │ │ ├── FindAllRequest.cc │ │ ├── FindAllRequest.h │ │ ├── FindRequest.cc │ │ ├── FindRequest.h │ │ ├── Messenger.cc │ │ ├── Messenger.h │ │ ├── MessengerConnector.cc │ │ ├── MessengerConnector.h │ │ ├── ReplicationRequest.cc │ │ ├── ReplicationRequest.h │ │ ├── Request.cc │ │ ├── Request.h │ │ ├── RequestMessenger.cc │ │ ├── RequestMessenger.h │ │ ├── RequestTracker.cc │ │ ├── RequestTracker.h │ │ ├── ServiceManagementRequest.cc │ │ ├── ServiceManagementRequest.h │ │ ├── ServiceManagementRequestBase.cc │ │ ├── ServiceManagementRequestBase.h │ │ ├── SqlAlterTablesRequest.cc │ │ ├── SqlAlterTablesRequest.h │ │ ├── SqlCreateDbRequest.cc │ │ ├── SqlCreateDbRequest.h │ │ ├── SqlCreateIndexesRequest.cc │ │ ├── SqlCreateIndexesRequest.h │ │ ├── SqlCreateTableRequest.cc │ │ ├── SqlCreateTableRequest.h │ │ ├── SqlCreateTablesRequest.cc │ │ ├── SqlCreateTablesRequest.h │ │ ├── SqlDeleteDbRequest.cc │ │ ├── SqlDeleteDbRequest.h │ │ ├── SqlDeleteTablePartitionRequest.cc │ │ ├── SqlDeleteTablePartitionRequest.h │ │ ├── SqlDeleteTableRequest.cc │ │ ├── SqlDeleteTableRequest.h │ │ ├── SqlDisableDbRequest.cc │ │ ├── SqlDisableDbRequest.h │ │ ├── SqlDropIndexesRequest.cc │ │ ├── SqlDropIndexesRequest.h │ │ ├── SqlEnableDbRequest.cc │ │ ├── SqlEnableDbRequest.h │ │ ├── SqlGetIndexesRequest.cc │ │ ├── SqlGetIndexesRequest.h │ │ ├── SqlGrantAccessRequest.cc │ │ ├── SqlGrantAccessRequest.h │ │ ├── SqlQueryRequest.cc │ │ ├── SqlQueryRequest.h │ │ ├── SqlRemoveTablePartitionsRequest.cc │ │ ├── SqlRemoveTablePartitionsRequest.h │ │ ├── SqlRequest.cc │ │ ├── SqlRequest.h │ │ ├── SqlResultSet.cc │ │ ├── SqlResultSet.h │ │ ├── SqlRowStatsRequest.cc │ │ ├── SqlRowStatsRequest.h │ │ ├── StatusRequest.cc │ │ ├── StatusRequest.h │ │ ├── StopRequest.cc │ │ └── StopRequest.h │ ├── schema │ │ ├── migrate-0-to-1.sql │ │ ├── migrate-1-to-2.sql │ │ ├── migrate-10-to-11.sql │ │ ├── migrate-11-to-12.sql │ │ ├── migrate-12-to-13.sql │ │ ├── migrate-13-to-14.sql │ │ ├── migrate-2-to-3.sql │ │ ├── migrate-3-to-4.sql │ │ ├── migrate-4-to-5.sql │ │ ├── migrate-5-to-6.sql │ │ ├── migrate-6-to-7.sql │ │ ├── migrate-7-to-8.sql │ │ ├── migrate-8-to-9.sql │ │ ├── migrate-9-to-10.sql │ │ └── migrate-None-to-14.sql │ ├── services │ │ ├── CMakeLists.txt │ │ ├── ChunkLocker.cc │ │ ├── ChunkLocker.h │ │ ├── DatabaseServices.cc │ │ ├── DatabaseServices.h │ │ ├── DatabaseServicesMySQL.cc │ │ ├── DatabaseServicesMySQL.h │ │ ├── DatabaseServicesPool.cc │ │ ├── DatabaseServicesPool.h │ │ ├── ServiceProvider.cc │ │ └── ServiceProvider.h │ ├── tests │ │ ├── testApplicationParser.cc │ │ ├── testChunkLocker.cc │ │ ├── testChunkNumber.cc │ │ ├── testChunkedTable.cc │ │ ├── testConfiguration.cc │ │ ├── testConnectionParams.cc │ │ ├── testCsv.cc │ │ ├── testFileIngestApp.cc │ │ ├── testFileUtils.cc │ │ ├── testIngestRequestMgr.cc │ │ ├── testJson.cc │ │ ├── testMessageQueue.cc │ │ ├── testNamedMutexRegistry.cc │ │ ├── testQueryGenerator.cc │ │ ├── testReplicaInfo.cc │ │ ├── testSemanticMap.cc │ │ ├── testSqlResultSet.cc │ │ ├── testSqlSchemaUtils.cc │ │ ├── testTaskSelector.cc │ │ └── testTypes.cc │ ├── tools │ │ ├── qserv-replica-calc-cs.cc │ │ ├── qserv-replica-config-test.cc │ │ ├── qserv-replica-config.cc │ │ ├── qserv-replica-controller-cmd.cc │ │ ├── qserv-replica-file.cc │ │ ├── qserv-replica-job.cc │ │ ├── qserv-replica-master-http.cc │ │ ├── qserv-replica-registry.cc │ │ ├── qserv-replica-test.cc │ │ ├── qserv-replica-worker-notify.cc │ │ └── qserv-replica-worker.cc │ ├── util │ │ ├── CMakeLists.txt │ │ ├── ChttpSvc.cc │ │ ├── ChttpSvc.h │ │ ├── ChunkNumber.cc │ │ ├── ChunkNumber.h │ │ ├── ChunkedTable.cc │ │ ├── ChunkedTable.h │ │ ├── Common.cc │ │ ├── Common.h │ │ ├── Csv.cc │ │ ├── Csv.h │ │ ├── ErrorReporting.h │ │ ├── FileUtils.cc │ │ ├── FileUtils.h │ │ ├── HttpSvc.cc │ │ ├── HttpSvc.h │ │ ├── MessageQueue.h │ │ ├── Mutex.cc │ │ ├── Mutex.h │ │ ├── NamedMutexRegistry.cc │ │ ├── NamedMutexRegistry.h │ │ ├── OneWayFailer.h │ │ ├── Performance.cc │ │ ├── Performance.h │ │ ├── ProtocolBuffer.cc │ │ ├── ProtocolBuffer.h │ │ ├── ReplicaInfo.cc │ │ ├── ReplicaInfo.h │ │ ├── SemanticMaps.h │ │ ├── SqlSchemaUtils.cc │ │ ├── SqlSchemaUtils.h │ │ ├── SuccessRateGenerator.cc │ │ └── SuccessRateGenerator.h │ └── worker │ │ ├── CMakeLists.txt │ │ ├── FileClient.cc │ │ ├── FileClient.h │ │ ├── FileServer.cc │ │ ├── FileServer.h │ │ ├── FileServerConnection.cc │ │ ├── FileServerConnection.h │ │ ├── WorkerDeleteRequest.cc │ │ ├── WorkerDeleteRequest.h │ │ ├── WorkerDirectorIndexRequest.cc │ │ ├── WorkerDirectorIndexRequest.h │ │ ├── WorkerEchoRequest.cc │ │ ├── WorkerEchoRequest.h │ │ ├── WorkerFindAllRequest.cc │ │ ├── WorkerFindAllRequest.h │ │ ├── WorkerFindRequest.cc │ │ ├── WorkerFindRequest.h │ │ ├── WorkerProcessor.cc │ │ ├── WorkerProcessor.h │ │ ├── WorkerProcessorThread.cc │ │ ├── WorkerProcessorThread.h │ │ ├── WorkerReplicationRequest.cc │ │ ├── WorkerReplicationRequest.h │ │ ├── WorkerRequest.cc │ │ ├── WorkerRequest.h │ │ ├── WorkerServer.cc │ │ ├── WorkerServer.h │ │ ├── WorkerServerConnection.cc │ │ ├── WorkerServerConnection.h │ │ ├── WorkerSqlRequest.cc │ │ └── WorkerSqlRequest.h ├── rproc │ ├── CMakeLists.txt │ ├── InfileMerger.cc │ ├── InfileMerger.h │ ├── python │ │ ├── __init__.py │ │ └── schema_migration.py │ └── schema │ │ └── migrate-None-to-0.sql ├── schema │ ├── CMakeLists.txt │ ├── README.md │ ├── bin │ │ └── qserv-smig.py │ └── python │ │ ├── __init__.py │ │ ├── schemaMigMgr.py │ │ ├── smig.py │ │ └── tests │ │ └── test_SchemaMigMgr.py ├── sql │ ├── CMakeLists.txt │ ├── MockSql.cc │ ├── MockSql.h │ ├── MySqlConnection.cc │ ├── MySqlConnection.h │ ├── Schema.h │ ├── SqlBulkInsert.cc │ ├── SqlBulkInsert.h │ ├── SqlConfig.h │ ├── SqlConnection.h │ ├── SqlConnectionFactory.cc │ ├── SqlConnectionFactory.h │ ├── SqlErrorObject.cc │ ├── SqlErrorObject.h │ ├── SqlException.h │ ├── SqlFragmenter.cc │ ├── SqlFragmenter.h │ ├── SqlResults.cc │ ├── SqlResults.h │ ├── SqlTransaction.cc │ ├── SqlTransaction.h │ ├── SqlTransactionScope.cc │ ├── SqlTransactionScope.h │ ├── statement.cc │ ├── statement.h │ ├── testSqlConnection.cc │ └── testSqlTransaction.cc ├── tests │ ├── MySqlUdf.py │ ├── QueryAnaFixture.h │ ├── QueryAnaHelper.cc │ ├── QueryAnaHelper.h │ ├── dbinit.sql │ ├── partmapsql.sql │ ├── qserv-protobuf-assert-version.cc │ ├── setQsmasterPerm.sql │ ├── spdistfunc.sql │ ├── testApp.py │ └── testKvMap.h ├── util │ ├── AsyncTimer.cc │ ├── AsyncTimer.h │ ├── BlockPost.cc │ ├── BlockPost.h │ ├── Bug.cc │ ├── Bug.h │ ├── CIUtils.h │ ├── CMakeLists.txt │ ├── CmdLineParser.cc │ ├── CmdLineParser.h │ ├── Command.cc │ ├── Command.h │ ├── ConfigStore.cc │ ├── ConfigStore.h │ ├── ConfigStoreError.h │ ├── ConfigValMap.cc │ ├── ConfigValMap.h │ ├── DynamicWorkQueue.cc │ ├── DynamicWorkQueue.h │ ├── Error.cc │ ├── Error.h │ ├── EventThread.cc │ ├── EventThread.h │ ├── File.cc │ ├── File.h │ ├── FileMonitor.cc │ ├── FileMonitor.h │ ├── Histogram.cc │ ├── Histogram.h │ ├── HoldTrack.cc │ ├── HoldTrack.h │ ├── InstanceCount.cc │ ├── InstanceCount.h │ ├── Issue.cc │ ├── Issue.h │ ├── IterableFormatter.h │ ├── MultiError.cc │ ├── MultiError.h │ ├── Mutex.cc │ ├── Mutex.h │ ├── PointerCompare.h │ ├── Regex.h │ ├── ResultFileName.cc │ ├── ResultFileName.h │ ├── String.cc │ ├── String.h │ ├── StringHash.cc │ ├── StringHash.h │ ├── Substitution.cc │ ├── Substitution.h │ ├── TablePrinter.cc │ ├── TablePrinter.h │ ├── ThreadPool.cc │ ├── ThreadPool.h │ ├── ThreadPriority.cc │ ├── ThreadPriority.h │ ├── TimeUtils.cc │ ├── TimeUtils.h │ ├── Timer.cc │ ├── Timer.h │ ├── WorkQueue.cc │ ├── WorkQueue.h │ ├── common.cc │ ├── common.h │ ├── format.h │ ├── testCommon.cc │ ├── testConfigStore.cc │ ├── testEventThread.cc │ ├── testHistogram.cc │ ├── testIterableFormatter.cc │ ├── testMultiError.cc │ ├── testMutex.cc │ ├── testResultFileName.cc │ ├── testString.cc │ ├── testTablePrinter.cc │ ├── threadSafe.h │ ├── xrootd.cc │ └── xrootd.h ├── wbase │ ├── Base.cc │ ├── Base.h │ ├── CMakeLists.txt │ ├── FileChannelShared.cc │ ├── FileChannelShared.h │ ├── MsgProcessor.h │ ├── SendChannel.cc │ ├── SendChannel.h │ ├── Task.cc │ ├── Task.h │ ├── TaskState.h │ ├── UserQueryInfo.cc │ ├── UserQueryInfo.h │ ├── WorkerCommand.cc │ └── WorkerCommand.h ├── wconfig │ ├── CMakeLists.txt │ ├── WorkerConfig.cc │ ├── WorkerConfig.h │ ├── WorkerConfigError.h │ └── testSanityCheck.cc ├── wcontrol │ ├── CMakeLists.txt │ ├── Foreman.cc │ ├── Foreman.h │ ├── ResourceMonitor.cc │ ├── ResourceMonitor.h │ ├── SqlConnMgr.cc │ ├── SqlConnMgr.h │ ├── WorkerStats.cc │ └── WorkerStats.h ├── wdb │ ├── CMakeLists.txt │ ├── ChunkResource.cc │ ├── ChunkResource.h │ ├── QueryRunner.cc │ ├── QueryRunner.h │ ├── QuerySql.cc │ ├── QuerySql.h │ ├── QuerySql_Batch.h │ ├── SQLBackend.cc │ ├── SQLBackend.h │ ├── python │ │ ├── __init__.py │ │ └── schema_migration.py │ ├── schema │ │ ├── migrate-0-to-1.sql │ │ └── migrate-1-to-2.sql │ ├── testChunkResource.cc │ ├── testQueryRunner.cc │ └── testQuerySql.cc ├── worker │ ├── CMakeLists.txt │ ├── python │ │ ├── __init__.py │ │ └── schema_migration.py │ └── schema │ │ └── migrate-None-to-2.sql.jinja ├── wpublish │ ├── CMakeLists.txt │ ├── ChunkInventory.cc │ ├── ChunkInventory.h │ ├── QueriesAndChunks.cc │ ├── QueriesAndChunks.h │ ├── QueryStatistics.cc │ ├── QueryStatistics.h │ └── testChunkInventory.cc ├── wsched │ ├── BlendScheduler.cc │ ├── BlendScheduler.h │ ├── CMakeLists.txt │ ├── ChunkTaskCollection.h │ ├── ChunkTasksQueue.cc │ ├── ChunkTasksQueue.h │ ├── FifoScheduler.h │ ├── GroupScheduler.cc │ ├── GroupScheduler.h │ ├── ScanScheduler.cc │ ├── ScanScheduler.h │ ├── SchedulerBase.cc │ ├── SchedulerBase.h │ └── testSchedulers.cc ├── www │ ├── CMakeLists.txt │ ├── README.md │ ├── assets │ │ └── bootstrap-icons-1.5.0 │ │ │ ├── bootstrap-icons.css │ │ │ ├── bootstrap-icons.json │ │ │ ├── bootstrap-icons.svg │ │ │ ├── fonts │ │ │ ├── bootstrap-icons.woff │ │ │ └── bootstrap-icons.woff2 │ │ │ └── index.html │ ├── dashboard.html │ ├── index.html │ ├── modules │ │ └── js │ │ │ ├── sql-formatter.min.js │ │ │ └── sql-formatter.min.js.map │ ├── qserv │ │ ├── css │ │ │ ├── IngestConfiguration.css │ │ │ ├── IngestContribInfo.css │ │ │ ├── IngestContributions.css │ │ │ ├── IngestStatus.css │ │ │ ├── IngestTransactions.css │ │ │ ├── IngestTransactionsLog.css │ │ │ ├── QservCss.css │ │ │ ├── QservCzarConfig.css │ │ │ ├── QservCzarMySQLQueries.css │ │ │ ├── QservCzarQueryProgress.css │ │ │ ├── QservCzarStatistics.css │ │ │ ├── QservMySQLConnections.css │ │ │ ├── QservPDAC.css │ │ │ ├── QservWorkerConfig.css │ │ │ ├── QservWorkerFiles.css │ │ │ ├── QservWorkerMySQLQueries.css │ │ │ ├── QservWorkerQueries.css │ │ │ ├── QservWorkerResultsFilesystem.css │ │ │ ├── QservWorkerSchedulerHist.css │ │ │ ├── QservWorkerSchedulers.css │ │ │ ├── QservWorkerTaskHist.css │ │ │ ├── QservWorkerTasks.css │ │ │ ├── ReplicationConfigCatalogs.css │ │ │ ├── ReplicationConfigGeneral.css │ │ │ ├── ReplicationConfigWorkers.css │ │ │ ├── ReplicationController.css │ │ │ ├── ReplicationSchema.css │ │ │ ├── ReplicationTableIndexes.css │ │ │ ├── ReplicationTools.css │ │ │ ├── StatusActiveChunksMap.css │ │ │ ├── StatusActiveQueries.css │ │ │ ├── StatusCatalogs.css │ │ │ ├── StatusPastQueries.css │ │ │ ├── StatusQueryInspector.css │ │ │ ├── StatusReplicationLevel.css │ │ │ ├── StatusWorkers.css │ │ │ └── ToolsSql.css │ │ └── js │ │ │ ├── Common.js │ │ │ ├── IngestConfiguration.js │ │ │ ├── IngestContribInfo.js │ │ │ ├── IngestContributions.js │ │ │ ├── IngestStatus.js │ │ │ ├── IngestTransactions.js │ │ │ ├── IngestTransactionsLog.js │ │ │ ├── QservCss.js │ │ │ ├── QservCzarConfig.js │ │ │ ├── QservCzarMySQLQueries.js │ │ │ ├── QservCzarQueryProgress.js │ │ │ ├── QservCzarStatistics.js │ │ │ ├── QservMonitoringDashboard.js │ │ │ ├── QservMySQLConnections.js │ │ │ ├── QservWorkerConfig.js │ │ │ ├── QservWorkerFiles.js │ │ │ ├── QservWorkerMySQLQueries.js │ │ │ ├── QservWorkerQueries.js │ │ │ ├── QservWorkerResultsFilesystem.js │ │ │ ├── QservWorkerSchedulerHist.js │ │ │ ├── QservWorkerSchedulers.js │ │ │ ├── QservWorkerTaskHist.js │ │ │ ├── QservWorkerTasks.js │ │ │ ├── ReplicationConfigCatalogs.js │ │ │ ├── ReplicationConfigGeneral.js │ │ │ ├── ReplicationConfigWorkers.js │ │ │ ├── ReplicationController.js │ │ │ ├── ReplicationSchema.js │ │ │ ├── ReplicationTableIndexes.js │ │ │ ├── ReplicationTools.js │ │ │ ├── StatusActiveChunksMap.js │ │ │ ├── StatusActiveQueries.js │ │ │ ├── StatusCatalogs.js │ │ │ ├── StatusPastQueries.js │ │ │ ├── StatusQueryInspector.js │ │ │ ├── StatusReplicationLevel.js │ │ │ ├── StatusWorkers.js │ │ │ └── ToolsSql.js │ └── webfwk │ │ ├── css │ │ ├── Fwk.css │ │ ├── FwkApplicationControlApp.css │ │ ├── FwkTestApp.css │ │ ├── SimpleTable.css │ │ └── SimpleTableTestApp.css │ │ ├── js │ │ ├── CSSLoader.js │ │ ├── Class.js │ │ ├── Fwk.js │ │ ├── FwkApplication.js │ │ ├── FwkApplicationControlApp.js │ │ ├── FwkTestApp.js │ │ ├── SimpleTable.js │ │ ├── SimpleTableTestApp.js │ │ └── Widget.js │ │ └── ws │ │ └── table_data.json ├── xrdlog │ ├── CMakeLists.txt │ └── XrdLogging.cc ├── xrdreq │ ├── CMakeLists.txt │ ├── QservRequest.cc │ ├── QservRequest.h │ ├── QueryManagementAction.cc │ ├── QueryManagementAction.h │ ├── QueryManagementRequest.cc │ ├── QueryManagementRequest.h │ └── qserv-query-management.cc └── xrdsvc │ ├── CMakeLists.txt │ ├── ChannelStream.cc │ ├── ChannelStream.h │ ├── HttpModule.cc │ ├── HttpModule.h │ ├── HttpMonitorModule.cc │ ├── HttpMonitorModule.h │ ├── HttpReplicaMgtModule.cc │ ├── HttpReplicaMgtModule.h │ ├── HttpSvc.cc │ ├── HttpSvc.h │ ├── SsiProvider.cc │ ├── SsiProvider.h │ ├── SsiRequest.cc │ ├── SsiRequest.h │ ├── SsiService.cc │ ├── SsiService.h │ ├── StreamBuffer.cc │ ├── StreamBuffer.h │ └── XrdName.h └── tox.ini /.github/workflows/rebase_checker.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Check that 'main' is not merged into the development branch 3 | 4 | on: pull_request 5 | 6 | jobs: 7 | call-workflow: 8 | uses: lsst/rubin_workflows/.github/workflows/rebase_checker.yaml@main 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | \#*\# 3 | .env 4 | *.pyc 5 | .tags 6 | .tags_sorted_by_file 7 | /build/ 8 | /parallel-cmd-log/ 9 | /.cproject 10 | /.metadata/ 11 | /.project 12 | /.settings/ 13 | /.pydevproject 14 | /RemoteSystemTempFiles/ 15 | /nbproject/ 16 | /.vscode/ 17 | /qserv/ 18 | /doc/_build 19 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "extern/sphgeom"] 2 | path = extern/sphgeom 3 | url = ../../lsst/sphgeom 4 | [submodule "extern/log"] 5 | path = extern/log 6 | url = ../../lsst/log 7 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.12) 2 | 3 | project(Qserv 4 | DESCRIPTION "The Qserv distributed parallel database" 5 | LANGUAGES CXX 6 | ) 7 | 8 | enable_testing() 9 | 10 | include(GNUInstallDirs) 11 | set(CMAKE_INSTALL_PREFIX ${PROJECT_BINARY_DIR}/install) 12 | 13 | add_subdirectory(doc) 14 | add_subdirectory(extern/log) 15 | add_subdirectory(extern/sphgeom) 16 | add_subdirectory(src) 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Qserv: petascale distributed database 2 | 3 | [![Qserv CI](https://github.com/lsst/qserv/workflows/CI/badge.svg?branch=main)](https://github.com/lsst/qserv/actions?query=workflow%3A"CI") 4 | 5 | ## Documentation 6 | 7 | [Documentation for main branch](https://qserv.lsst.io/) 8 | -------------------------------------------------------------------------------- /admin/local/cli/qserv-template.cfg: -------------------------------------------------------------------------------- 1 | # this file contains default values for qserv config 2 | 3 | mysqld_user_qserv: qsmaster 4 | mysql_monitor_password: '' 5 | -------------------------------------------------------------------------------- /admin/local/docker/compose/log/log-czar-proxy.cnf: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=DEBUG, CONSOLE 2 | #log4j.rootLogger=WARN, CONSOLE 3 | log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 4 | log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 5 | log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-ddTHH:mm:ss.SSSZ} LWP %-5X{LWP} %-5p %m%n 6 | 7 | log4j.logger.lsst.qserv.xrdssi.msgs=WARN 8 | #log4j.logger.lsst.qserv.xrdssi.msgs=DEBUG 9 | -------------------------------------------------------------------------------- /admin/local/docker/compose/log/log-repl-registry.cnf: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=DEBUG, CONSOLE 2 | 3 | log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 4 | log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 5 | #log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyy-MM-ddTHH:mm:ss.SSSZ}] [LWP:%X{LWP}] %-5p %c{2} (%F:%L) - %m%n 6 | log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyy-MM-ddTHH:mm:ss.SSSZ}] [LWP:%X{LWP}] %-5p - %m%n 7 | 8 | # Tune log at the module level 9 | #log4j.logger.lsst.qserv.replica=DEBUG 10 | #log4j.logger.lsst.qserv.replica.DatabaseMySQL=DEBUG 11 | #log4j.logger.lsst.qserv.replica.DatabaseServicesMySQL=ERROR 12 | #log4j.logger.lsst.qserv.util=DEBUG 13 | -------------------------------------------------------------------------------- /admin/local/docker/compose/log/log-repl-worker.cnf: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=DEBUG, CONSOLE 2 | 3 | log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 4 | log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 5 | #log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyy-MM-ddTHH:mm:ss.SSSZ}] [LWP:%X{LWP}] %-5p %c{2} (%F:%L) - %m%n 6 | log4j.appender.CONSOLE.layout.ConversionPattern=[%d{yyyy-MM-ddTHH:mm:ss.SSSZ}] [LWP:%X{LWP}] %-5p - %m%n 7 | 8 | # Tune log at the module level 9 | #log4j.logger.lsst.qserv.replica=DEBUG 10 | #log4j.logger.lsst.qserv.replica.DatabaseMySQL=DEBUG 11 | #log4j.logger.lsst.qserv.replica.DatabaseServicesMySQL=ERROR 12 | #log4j.logger.lsst.qserv.util=DEBUG 13 | -------------------------------------------------------------------------------- /admin/local/docker/compose/log/log-worker-xrootd.cnf: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=DEBUG, CONSOLE 2 | #log4j.rootLogger=WARN, CONSOLE 3 | log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 4 | log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 5 | log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-ddTHH:mm:ss.SSSZ} LWP %-5X{LWP} %-5p %m%n 6 | 7 | log4j.logger.lsst.qserv.xrdssi.msgs=WARN 8 | -------------------------------------------------------------------------------- /admin/local/docker/compose/log/log.cnf: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=DEBUG, CONSOLE 2 | #log4j.rootLogger=WARN, CONSOLE 3 | log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 4 | log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 5 | log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-ddTHH:mm:ss.SSSZ} LWP %-5X{LWP} %-5p %m%n 6 | 7 | log4j.logger.lsst.qserv.xrdssi.msgs=WARN 8 | #log4j.logger.lsst.qserv.xrdssi.msgs=DEBUG 9 | 10 | -------------------------------------------------------------------------------- /doc/_static/ingest-options-pull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-options-pull.png -------------------------------------------------------------------------------- /doc/_static/ingest-options-push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-options-push.png -------------------------------------------------------------------------------- /doc/_static/ingest-options-read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-options-read.png -------------------------------------------------------------------------------- /doc/_static/ingest-options.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-options.pptx -------------------------------------------------------------------------------- /doc/_static/ingest-table-types-dependent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-table-types-dependent.png -------------------------------------------------------------------------------- /doc/_static/ingest-table-types-partitioned.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-table-types-partitioned.png -------------------------------------------------------------------------------- /doc/_static/ingest-table-types-regular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-table-types-regular.png -------------------------------------------------------------------------------- /doc/_static/ingest-table-types.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-table-types.pptx -------------------------------------------------------------------------------- /doc/_static/ingest-trans-multiple-chunks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-trans-multiple-chunks.png -------------------------------------------------------------------------------- /doc/_static/ingest-trans-multiple-one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-trans-multiple-one.png -------------------------------------------------------------------------------- /doc/_static/ingest-trans-multiple-scattered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-trans-multiple-scattered.png -------------------------------------------------------------------------------- /doc/_static/ingest-trans-multiple.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-trans-multiple.pptx -------------------------------------------------------------------------------- /doc/_static/ingest-transaction-fsm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-transaction-fsm.png -------------------------------------------------------------------------------- /doc/_static/ingest-transaction-fsm.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-transaction-fsm.pptx -------------------------------------------------------------------------------- /doc/_static/ingest-transactions-aborted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-transactions-aborted.png -------------------------------------------------------------------------------- /doc/_static/ingest-transactions-aborted.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-transactions-aborted.pptx -------------------------------------------------------------------------------- /doc/_static/ingest-transactions-failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-transactions-failed.png -------------------------------------------------------------------------------- /doc/_static/ingest-transactions-failed.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-transactions-failed.pptx -------------------------------------------------------------------------------- /doc/_static/ingest-transactions-resolved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-transactions-resolved.png -------------------------------------------------------------------------------- /doc/_static/ingest-transactions-resolved.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/ingest-transactions-resolved.pptx -------------------------------------------------------------------------------- /doc/_static/subchunks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/_static/subchunks.png -------------------------------------------------------------------------------- /doc/admin/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _admin: 3 | 4 | ##################### 5 | Administrator's Guide 6 | ##################### 7 | 8 | .. warning:: 9 | 10 | This version of Qserv uses MariaDB version 11.4.4. If you still have an older release based on 11 | MariaDB 10.6.8 then you should upgrade your databases as described in the following section: 12 | 13 | - :ref:`admin-upgrade-mariadb-11-4-4` 14 | 15 | .. toctree:: 16 | :maxdepth: 4 17 | 18 | k8s 19 | row-counters 20 | data-table-indexes 21 | director-index 22 | admin-upgrade 23 | -------------------------------------------------------------------------------- /doc/cmake/FindSphinx.cmake: -------------------------------------------------------------------------------- 1 | find_program(SPHINX_EXECUTABLE NAMES sphinx-build 2 | DOC "Sphinx documentation generator" 3 | ) 4 | 5 | include(FindPackageHandleStandardArgs) 6 | 7 | find_package_handle_standard_args(Sphinx DEFAULT_MSG 8 | SPHINX_EXECUTABLE 9 | ) 10 | 11 | mark_as_advanced(SPHINX_EXECUTABLE) 12 | -------------------------------------------------------------------------------- /doc/dev/index.rst: -------------------------------------------------------------------------------- 1 | .. highlight:: sql 2 | 3 | ################# 4 | Developer's Guide 5 | ################# 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | quick-start-devel 11 | doc 12 | scisql 13 | -------------------------------------------------------------------------------- /doc/documenteer.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | title = "Qserv" 3 | copyright = "2015-2024 Association of Universities for Research in Astronomy, Inc. (AURA)" 4 | base_url = "https://qserv.lsst.io" 5 | github_url = "https://github.com/lsst/qserv" 6 | -------------------------------------------------------------------------------- /doc/index.rst: -------------------------------------------------------------------------------- 1 | Qserv 2 | ===== 3 | 4 | Qserv is an open source, massively parallel, distributed SQL database designed to host the petascale astronomical catalogs of the `Rubin Observatory `_. 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | 9 | /intro/index 10 | /admin/index 11 | /user/index 12 | /ingest/index 13 | /dev/index 14 | -------------------------------------------------------------------------------- /doc/ingest/api/advanced/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _ingest-api-advanced: 3 | 4 | ================== 5 | Advanced Scenarios 6 | ================== 7 | 8 | .. hint:: 9 | 10 | Read the following document first: 11 | 12 | - :ref:`ingest-api-concepts` (CONCEPTS) 13 | 14 | .. toctree:: 15 | :maxdepth: 4 16 | 17 | config 18 | charset 19 | async-concurrency 20 | unpublishing 21 | transactions 22 | optimisations 23 | contributions 24 | directors 25 | ref-match 26 | warnings 27 | -------------------------------------------------------------------------------- /doc/ingest/api/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. note:: 3 | 4 | Information in this guide corresponds to the version **39** of the Qserv REST API. Keep in mind 5 | that each implementation of the API has a specific version. The version number will change 6 | if any changes to the implementation or the API that might affect users will be made. 7 | The current document will be kept updated to reflect the latest version of the API. 8 | 9 | ##################################### 10 | The Ingest Workflow Developer's Guide 11 | ##################################### 12 | 13 | .. toctree:: 14 | :maxdepth: 4 15 | 16 | introduction 17 | concepts/index 18 | simple/index 19 | advanced/index 20 | post-ingest/index 21 | reference/index 22 | -------------------------------------------------------------------------------- /doc/ingest/api/post-ingest/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _ingest-api-post-ingest: 3 | 4 | ================================= 5 | Post-Ingest Data Management Tasks 6 | ================================= 7 | 8 | The following optional steps are performed after the data has been ingested: 9 | 10 | - :ref:`admin-row-counters` (ADMIN) 11 | - :ref:`admin-data-table-index` (ADMIN) 12 | - :ref:`admin-director-index` (ADMIN) 13 | -------------------------------------------------------------------------------- /doc/ingest/api/reference/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _ingest-api-reference: 3 | 4 | ###################### 5 | Ingest API Reference 6 | ###################### 7 | 8 | .. toctree:: 9 | :maxdepth: 4 10 | 11 | rest/index 12 | tools 13 | -------------------------------------------------------------------------------- /doc/ingest/api/reference/rest/controller/index.rst: -------------------------------------------------------------------------------- 1 | ############################# 2 | Master Replication Controller 3 | ############################# 4 | 5 | .. toctree:: 6 | :maxdepth: 4 7 | 8 | config 9 | db-table-management 10 | trans-management 11 | table-location 12 | info 13 | director-index 14 | row-counters 15 | -------------------------------------------------------------------------------- /doc/ingest/api/reference/rest/index.rst: -------------------------------------------------------------------------------- 1 | ############# 2 | REST Services 3 | ############# 4 | 5 | .. toctree:: 6 | :maxdepth: 3 7 | 8 | general 9 | controller/index 10 | worker/index 11 | -------------------------------------------------------------------------------- /doc/ingest/api/reference/tools.rst: -------------------------------------------------------------------------------- 1 | ###################### 2 | The Command Line Tools 3 | ###################### 4 | 5 | Error reporting in the command-line tools 6 | ========================================= 7 | 8 | All command line tools return ``0`` to indicate the successful completion of the requested operation. 9 | Other values shall be treated as errors. The error messages are printed to the standard error stream. 10 | Additional information on the error can be found in the standard output stream. 11 | 12 | .. _ingest-tools-qserv-replica-file: 13 | 14 | qserv-replica-file 15 | ================== 16 | 17 | TBC. -------------------------------------------------------------------------------- /doc/ingest/data/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _ingest-data: 3 | 4 | Data preparation 5 | ================ 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | intro 11 | partitioning 12 | partitioner 13 | ref-match 14 | -------------------------------------------------------------------------------- /doc/ingest/index.rst: -------------------------------------------------------------------------------- 1 | 2 | .. highlight:: sql 3 | 4 | ################## 5 | Ingesting catalogs 6 | ################## 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | 11 | intro 12 | api/index 13 | qserv-ingest/index 14 | data/index 15 | -------------------------------------------------------------------------------- /doc/ingest/qserv-ingest/index.rst: -------------------------------------------------------------------------------- 1 | .. _installation-label: 2 | 3 | #################################### 4 | The Kubernetes-based Ingest Workflow 5 | #################################### 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | input-data 11 | version 12 | run 13 | repcli 14 | itest 15 | 16 | -------------------------------------------------------------------------------- /doc/intro/index.rst: -------------------------------------------------------------------------------- 1 | ############ 2 | Introduction 3 | ############ 4 | -------------------------------------------------------------------------------- /doc/misc/KNOWN-ISSUES.txt: -------------------------------------------------------------------------------- 1 | 2 | Known issues: 3 | * DISTINCT is not implemented 4 | * subqueries are not implemented 5 | -------------------------------------------------------------------------------- /doc/misc/README.md: -------------------------------------------------------------------------------- 1 | # Generate images 2 | 3 | Install Graphviz and run next command for each gv file: 4 | 5 | ``` 6 | dot -Tpng -o proto-czarHandlesWorkerResponse.png proto-czarHandlesWorkerResponse.gv 7 | ``` 8 | -------------------------------------------------------------------------------- /doc/misc/component_interaction.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/doc/misc/component_interaction.odg -------------------------------------------------------------------------------- /doc/misc/examples/obsolete/README.txt: -------------------------------------------------------------------------------- 1 | - plotChunksCopies.tcl: while dependent on output from obsolete code, is still the 2 | only way we have of visualizing the chunk layout. Plan on some small work to port 3 | it for the current infrastructure. 4 | 5 | - rebalance.py: provides a chunk-to-node mapping. It should work fine on the new 6 | partitioner's output. It depends on loader.py. We might borrow code from this 7 | and the old loader in building the multi-node loader. 8 | 9 | - loader.py: previous loader and rebalance.py dependency 10 | 11 | -------------------------------------------------------------------------------- /doc/misc/examples/obsolete/fell.qserv.cnf: -------------------------------------------------------------------------------- 1 | [partitioner] 2 | emptyChunkListFile=emptyChunks.txt 3 | 4 | [frontend] 5 | xrootd = lsst-db2:1094 6 | scratch_path = /dev/shm/qserv 7 | 8 | [resultdb] 9 | passwd = 10 | db = qservResult 11 | unix_socket = /scratch/lsst/var/run/mysql.sock 12 | host = 13 | user = qsmaster 14 | port = 0 15 | 16 | [mysql] 17 | mysqlclient= 18 | -------------------------------------------------------------------------------- /doc/misc/examples/obsolete/ir2farm.qserv.cnf: -------------------------------------------------------------------------------- 1 | [partitioner] 2 | 3 | [frontend] 4 | xrootd = ir2farm01:1094 5 | scratch_path = /dev/shm/qserv 6 | 7 | [resultdb] 8 | passwd = 9 | db = qservResult 10 | unix_socket = /u1/lsst/var/run/mysql.sock 11 | host = 12 | user = qsmaster 13 | port = 0 14 | 15 | [mysql] 16 | mysqlclient= 17 | -------------------------------------------------------------------------------- /doc/misc/examples/obsolete/lsst-dev01.qserv.cnf: -------------------------------------------------------------------------------- 1 | 2 | [frontend] 3 | # port=7080 4 | xrootd = lsst-dev01:1094 5 | scratch_path = /dev/shm/qserv 6 | 7 | # [mgmtdb] 8 | # db=qservMeta 9 | # # Steal resultdb settings for now. 10 | 11 | [resultdb] 12 | passwd = 13 | db = qservResult 14 | unix_socket = /u1/local/mysql.sock 15 | host = 16 | user = qsmaster 17 | port = 0 18 | 19 | [partitioner] 20 | emptyChunkListFile=emptyChunks.txt 21 | 22 | # [tuning] 23 | # memoryEngine=yes 24 | 25 | # [debug] 26 | # chunkLimit=-1 27 | 28 | [mysql] 29 | # mysqlclient= 30 | mysqlclient= 31 | -------------------------------------------------------------------------------- /doc/misc/proto-czarHandlesWorkerResponse.gv: -------------------------------------------------------------------------------- 1 | digraph G { 2 | czar_xrootd_client -> "QueryRequest::ProcessResponseData" -> 3 | "MergingRequester::flush"-> "QueryRequest::_finish"; 4 | HEADER_SIZE_WAIT -> RESULT_WAIT -> RESULT_RECV -> BUFFER_DRAIN -> finish; 5 | RESULT_WAIT -> finish; 6 | RESULT_RECV -> finish; 7 | RESULT_WAIT -> RESULT_EXTRA -> RESULT_WAIT; 8 | HEADER_SIZE_WAIT -> HEADER_ERR -> failed; 9 | RESULT_WAIT -> RESULT_ERR -> failed; 10 | } -------------------------------------------------------------------------------- /doc/misc/proto-workerSendsResponse.gv: -------------------------------------------------------------------------------- 1 | digraph G { 2 | "ForemanImpl::Runner::operator()()" -> "QueryAction::act" -> "QueryAction::_dispatchChannel" -> 3 | fillSchema -> fillRows -> transmit -> transmitHeader -> transmitResult -> 4 | "Done, all rows sent"; 5 | transmitResult -> fillRows; 6 | } -------------------------------------------------------------------------------- /doc/user/index.rst: -------------------------------------------------------------------------------- 1 | ############ 2 | User's Guide 3 | ############ 4 | 5 | .. toctree:: 6 | :maxdepth: 2 7 | 8 | sql 9 | async 10 | http-frontend 11 | -------------------------------------------------------------------------------- /doc_datasets/test101/README.md: -------------------------------------------------------------------------------- 1 | 2 | Sample data and configuration for a test catalog referenced in the "Ingest Workflow Developer's Guide" 3 | ====================================================================================================== 4 | 5 | See the following section of the Guide for further details: 6 | 7 | "Ingesting Catalogs" / "Ingest Workflow Developer's Guide" / "Simple Workflow Example" 8 | 9 | -------------------------------------------------------------------------------- /doc_datasets/test101/data/Filter.csv: -------------------------------------------------------------------------------- 1 | 0 u 0 0 2 | 1 g 0 0 3 | 2 r 0 0 4 | 3 i 0 0 5 | 4 z 0 0 6 | 5 y 0 0 7 | 6 w 0 0 8 | 7 V 0 0 9 | -99 DD 0 0 10 | -------------------------------------------------------------------------------- /doc_datasets/test101/database_test101.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"test101", 5 | "auto_build_secondary_index":1, 6 | "local_load_secondary_index":1, 7 | "num_stripes":85, 8 | "num_sub_stripes":12, 9 | "overlap":0.01667 10 | } 11 | -------------------------------------------------------------------------------- /doc_datasets/test101/table_Filter.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"test101", 5 | "table":"Filter", 6 | "is_partitioned":0, 7 | "fields_terminated_by":"\\t", 8 | "schema":[ 9 | {"name":"filterId", "type":"tinyint(4) NOT NULL"}, 10 | {"name":"filterName", "type":"char(3) NOT NULL"}, 11 | {"name":"photClam", "type":"float NOT NULL"}, 12 | {"name":"photBW", "type":"float NOT NULL"} 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/Filter.tsv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case01/data/Filter.tsv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/LeapSeconds.tsv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case01/data/LeapSeconds.tsv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/Logs.tsv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case01/data/Logs.tsv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/Object.tsv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case01/data/Object.tsv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/RefSrcMatch.tsv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case01/data/RefSrcMatch.tsv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/Science_Ccd_Exposure.tsv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case01/data/Science_Ccd_Exposure.tsv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/SimRefObject.tsv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case01/data/SimRefObject.tsv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/Source.tsv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case01/data/Source.tsv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/description.yaml: -------------------------------------------------------------------------------- 1 | tables: 2 | directors: ['Object'] 3 | partitioned-tables: ['Object', 'Source'] 4 | extensions: 5 | data: '.tsv' 6 | schema: '.schema' 7 | zip: '.gz' 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/ingest/Filter.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase01", 5 | "table":"Filter", 6 | "is_partitioned":0, 7 | "schema":[ 8 | {"name":"filterId", "type":"tinyint(4) NOT NULL"}, 9 | {"name":"filterName", "type":"char(3) NOT NULL"}, 10 | {"name":"photClam", "type":"float NOT NULL"}, 11 | {"name":"photBW", "type":"float NOT NULL"} 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/ingest/LeapSeconds.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase01", 5 | "table":"LeapSeconds", 6 | "is_partitioned":0, 7 | "schema":[ 8 | {"name":"whenJd", "type":"float NOT NULL"}, 9 | {"name":"offset", "type":"float NOT NULL"}, 10 | {"name":"mjdRef", "type":"float NOT NULL"}, 11 | {"name":"drift", "type":"float NOT NULL"}, 12 | {"name":"whenMjdUtc", "type":"float DEFAULT NULL"}, 13 | {"name":"whenUtc", "type":"bigint(20) DEFAULT NULL"}, 14 | {"name":"whenTai", "type":"bigint(20) DEFAULT NULL"} 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/ingest/database.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase01", 5 | "auto_build_secondary_index":1, 6 | "local_load_secondary_index":1, 7 | "num_stripes":85, 8 | "num_sub_stripes":12, 9 | "overlap":0.01667 10 | } 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/ingest/sdqa_Metric.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase01", 5 | "table":"sdqa_Metric", 6 | "is_partitioned":0, 7 | "schema":[ 8 | {"name":"sdqa_metricId", "type":"smallint(6) NOT NULL"}, 9 | {"name":"metricName", "type":"varchar(30) NOT NULL"}, 10 | {"name":"physicalUnits", "type":"varchar(30) NOT NULL"}, 11 | {"name":"dataType", "type":"char(1) NOT NULL"}, 12 | {"name":"definition", "type":"varchar(255) NOT NULL"} 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/partition/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "htm":{ 3 | "level":8 4 | }, 5 | "dirDb":"qcase01", 6 | "dirTable":"Object", 7 | "part":{ 8 | "num-stripes":85, 9 | "num-sub-stripes":12, 10 | "chunk":"chunkId", 11 | "sub-chunk":"subChunkId", 12 | "default-overlap":0.01667 13 | }, 14 | "in":{ 15 | "csv":{ 16 | "null":"\\N", 17 | "delimiter":"\t" 18 | } 19 | }, 20 | "out":{ 21 | "csv":{ 22 | "null":"\\N", 23 | "delimiter":"\t", 24 | "escape":"\\", 25 | "no-quote":true 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/schema/Filter.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `Filter` ( 2 | `filterId` tinyint(4) NOT NULL, 3 | `filterName` char(3) NOT NULL, 4 | `photClam` float NOT NULL, 5 | `photBW` float NOT NULL 6 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/schema/LeapSeconds.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `LeapSeconds` ( 2 | `whenJd` float NOT NULL, 3 | `offset` float NOT NULL, 4 | `mjdRef` float NOT NULL, 5 | `drift` float NOT NULL, 6 | `whenMjdUtc` float DEFAULT NULL, 7 | `whenUtc` bigint(20) DEFAULT NULL, 8 | `whenTai` bigint(20) DEFAULT NULL 9 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/schema/RefSrcMatch.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `RefSrcMatch` ( 2 | `refObjectId` bigint(20) DEFAULT NULL, 3 | `sourceId` bigint(20) DEFAULT NULL, 4 | `refRa` double DEFAULT NULL, 5 | `refDec` double DEFAULT NULL, 6 | `angSep` double DEFAULT NULL, 7 | `nRefMatches` int(11) DEFAULT NULL, 8 | `nSrcMatches` int(11) DEFAULT NULL, 9 | `closestToRef` tinyint(4) DEFAULT NULL, 10 | `closestToSrc` tinyint(4) DEFAULT NULL, 11 | `flags` int(11) DEFAULT NULL, 12 | KEY `sourceId` (`sourceId`), 13 | KEY `refObjectId` (`refObjectId`) 14 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/schema/sdqa_Metric.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `sdqa_Metric` ( 2 | `sdqa_metricId` smallint(6) NOT NULL AUTO_INCREMENT, 3 | `metricName` varchar(30) NOT NULL, 4 | `physicalUnits` varchar(30) NOT NULL, 5 | `dataType` char(1) NOT NULL, 6 | `definition` varchar(255) NOT NULL, 7 | PRIMARY KEY (`sdqa_metricId`), 8 | UNIQUE KEY `UQ_sdqaMetric_metricName` (`metricName`) 9 | ) ENGINE=MyISAM AUTO_INCREMENT=54 DEFAULT CHARSET=latin1; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/data/sdqa_Metric.tsv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case01/data/sdqa_Metric.tsv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0001.2_fetchObjectByIdIN.sql: -------------------------------------------------------------------------------- 1 | -- Find objects with a particular object ids 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery009 3 | 4 | -- pragma sortresult 5 | select ra_Ps, decl_PS 6 | FROM Object 7 | WHERE objectId IN (390034570102582, 396210733076852, 393126946553816, 390030275138483) 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0002_fetchObjectByIdNoResult.sql: -------------------------------------------------------------------------------- 1 | -- Find an object with a particular object id 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery009 3 | 4 | -- not working, see ticket #1847 5 | 6 | -- pragma sortresult 7 | SELECT * 8 | FROM Object 9 | WHERE objectId = 430213989000 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0003_selectMetadataForOneGalaxy.sql: -------------------------------------------------------------------------------- 1 | -- select the full color image of a single given galaxy 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery006 3 | 4 | -- pragma sortresult 5 | SELECT s.ra, s.decl, o.raRange, o.declRange 6 | FROM Object o 7 | JOIN Source s USING (objectId) 8 | WHERE o.objectId = 390034570102582 9 | AND o.latestObsTime = s.taiMidPoint 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0003_selectMetadataForOneGalaxy_classicJOIN.sql: -------------------------------------------------------------------------------- 1 | -- pragma sortresult 2 | SELECT s.ra, s.decl, o.raRange, o.declRange 3 | FROM Object o, Source s 4 | WHERE o.objectId = 390034570102582 AND o.objectId = s.objectId AND o.latestObsTime = s.taiMidPoint; 5 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0003_selectMetadataForOneGalaxy_withUSING.sql: -------------------------------------------------------------------------------- 1 | -- select the full color image of a single given galaxy 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery006 3 | 4 | -- pragma sortresult 5 | SELECT s.ra, s.decl, o.raRange, o.declRange 6 | FROM Object o 7 | JOIN Source s USING (objectId) 8 | WHERE o.objectId = 390034570102582 9 | AND o.latestObsTime = s.taiMidPoint 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0004_lightCurve.sql: -------------------------------------------------------------------------------- 1 | -- Extract light curve for a given object (time, magnitude and position) 2 | -- See http://dev.lsstcorp.org/trac/wiki/dbQuery001 3 | 4 | -- pragma sortresult 5 | 6 | SELECT taiMidPoint, psfFlux, psfFluxSigma, ra, decl 7 | FROM Source 8 | JOIN Filter USING (filterId) 9 | WHERE objectId = 402412665835716 10 | AND filterName = 'r' 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0005_nonReplicatedTable.sql: -------------------------------------------------------------------------------- 1 | -- trivial query, should return one row (some cleverness 2 | -- is needed to execute this query on one node only!) 3 | 4 | -- pragma sortresult 5 | SELECT `offset`, mjdRef, drift FROM LeapSeconds where `offset` = 10 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0007.1_fetchSourceByObjId.sql: -------------------------------------------------------------------------------- 1 | 2 | -- this query exercises secondary index in an interesting way: 3 | -- because Qserv needs to figure out what the director table 4 | -- is and use it when setting up its secondary index. 5 | 6 | SELECT sourceId, objectId 7 | FROM Source 8 | WHERE objectId = 386942193651348 9 | ORDER BY sourceId; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0007.2_fetchSourceByObjIdSelectBLOB.sql: -------------------------------------------------------------------------------- 1 | 2 | -- this query exercises secondary index in an interesting way: 3 | -- because Qserv needs to figure out what the director table 4 | -- is and use it when setting up its secondary index. 5 | 6 | SELECT sourceId, objectId, blobField 7 | FROM Source 8 | WHERE objectId = 386942193651348 9 | ORDER BY sourceId; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0007_fetchSourceByObjId.sql: -------------------------------------------------------------------------------- 1 | 2 | -- this query exercises secondary index in an interesting way: 3 | -- because Qserv needs to figure out what the director table 4 | -- is and use it when setting up its secondary index. 5 | 6 | SELECT sourceId, objectId 7 | FROM Source 8 | WHERE objectId = 386942193651348 9 | ORDER BY sourceId; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0008.1_fetchSourceByObjIdIN_noRes.sql: -------------------------------------------------------------------------------- 1 | 2 | -- this query exercises secondary index in an interesting way: 3 | -- because Qserv needs to figure out what the director table 4 | -- is and use it when setting up its secondary index. 5 | -- This query returns 0 rows 6 | 7 | SELECT sourceId, objectId 8 | FROM Source 9 | WHERE objectId IN (1234) 10 | ORDER BY sourceId; 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0008.2_fetchSourceByObjIdIN_withRes.sql: -------------------------------------------------------------------------------- 1 | 2 | -- this query exercises secondary index in an interesting way: 3 | -- because Qserv needs to figure out what the director table 4 | -- is and use it when setting up its secondary index. 5 | --- This query returns some rows. 6 | 7 | SELECT sourceId, objectId 8 | FROM Source 9 | WHERE objectId IN (386942193651348) 10 | ORDER BY sourceId; 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0008.3_fetchSourceByObjIdIN.sql: -------------------------------------------------------------------------------- 1 | -- Qserv needs to figure out what the director table 2 | -- is and then retrieve chunkID from secondary index 3 | 4 | select COUNT(*) AS N 5 | FROM Source 6 | WHERE objectId IN (386950783579546, 386942193651348) 7 | 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0008.4_fetchSourceByObjIdBETWEEN.sql: -------------------------------------------------------------------------------- 1 | -- Qserv needs to figure out what the director table 2 | -- is and then retrieve chunkID from secondary index 3 | 4 | select COUNT(*) AS N 5 | FROM Source 6 | WHERE objectId BETWEEN 386942193651348 AND 386950783579546 7 | 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0008_fetchSourceByObjIdIN_withRes.sql: -------------------------------------------------------------------------------- 1 | 2 | -- this query exercises secondary index in an interesting way: 3 | -- because Qserv needs to figure out what the director table 4 | -- is and use it when setting up its secondary index. 5 | --- This query returns some rows. 6 | 7 | SELECT sourceId, objectId 8 | FROM Source 9 | WHERE objectId IN (386942193651348) 10 | ORDER BY sourceId; 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0010_leapSec.sql: -------------------------------------------------------------------------------- 1 | -- This query is frequently executed by buildbot 2 | 3 | -- See ticket #2048 4 | 5 | SELECT `offset`, mjdRef, drift, whenUtc 6 | FROM LeapSeconds 7 | WHERE whenUtc < 39900600000000000000000000 8 | ORDER BY whenUtc DESC 9 | LIMIT 1; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0012.1_raftAndCcd.sql: -------------------------------------------------------------------------------- 1 | -- Test ORDER BY against non-chunked data 2 | 3 | SELECT sce.filterId, sce.filterName 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE (sce.visit = 887404831) 6 | AND (sce.raftName = '3,3') 7 | AND (sce.ccdName LIKE '%') 8 | ORDER BY filterId 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0012.2_raftAndCcd.sql: -------------------------------------------------------------------------------- 1 | -- Test ORDER BY ... LIMIT ... against 2 | -- non-chunked data 3 | 4 | SELECT sce.filterId, sce.filterName 5 | FROM Science_Ccd_Exposure AS sce 6 | WHERE (sce.visit = 887404831) 7 | AND (sce.raftName = '3,3') 8 | AND (sce.ccdName LIKE '%') 9 | ORDER BY filterId LIMIT 5 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0012.3_raftAndCcd.sql: -------------------------------------------------------------------------------- 1 | -- pragma sortresult 2 | 3 | SELECT sce.filterId, sce.filterName, sce.ccdName 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE (sce.visit = 887404831) 6 | AND (sce.raftName = '3,3') 7 | AND (sce.ccdName NOT LIKE '0,2'); 8 | 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0012_raftAndCcd.sql: -------------------------------------------------------------------------------- 1 | -- interesting syntax 2 | 3 | -- pragma sortresult 4 | SELECT sce.filterId, sce.filterName 5 | FROM Science_Ccd_Exposure AS sce 6 | WHERE (sce.visit = 887404831) 7 | AND (sce.raftName = '3,3') 8 | AND (sce.ccdName LIKE '%') 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/0013_groupedLogicalTerm.sql: -------------------------------------------------------------------------------- 1 | -- Used to reproduce DM-15491: Parenthesis are ignored in the WHERE clause of qserv queries 2 | 3 | select objectId, ra_PS 4 | from Object 5 | where ra_PS > 359.5 and (objectId = 417853073271391 or objectId = 399294519599888) 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1002_coneMagColor.sql: -------------------------------------------------------------------------------- 1 | -- Cone-magnitude-color search 2 | -- See http://dev.lsstcorp.org/trac/wiki/db/queries/003 3 | 4 | -- pragma sortresult 5 | SELECT COUNT(*) as OBJ_COUNT 6 | FROM Object 7 | WHERE ra_PS BETWEEN 0.1 AND 4 -- noQserv 8 | AND decl_PS BETWEEN -6 AND 6 -- noQserv 9 | -- withQserv WHERE qserv_areaspec_box(0.1, -6, 4, 6) 10 | AND scisql_fluxToAbMag(zFlux_PS) BETWEEN 20 AND 24 11 | AND scisql_fluxToAbMag(gFlux_PS)-scisql_fluxToAbMag(rFlux_PS) BETWEEN 0.1 AND 0.9 12 | AND scisql_fluxToAbMag(iFlux_PS)-scisql_fluxToAbMag(zFlux_PS) BETWEEN 0.1 AND 1.0 13 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1002_coneMagColor_noalias.sql: -------------------------------------------------------------------------------- 1 | -- Cone-magnitude-color search 2 | -- See http://dev.lsstcorp.org/trac/wiki/db/queries/003 3 | 4 | -- pragma noheader sortresult 5 | SELECT COUNT(*) 6 | FROM Object 7 | WHERE ra_PS BETWEEN 0.1 AND 4 -- noQserv 8 | AND decl_PS BETWEEN -6 AND 6 -- noQserv 9 | -- withQserv WHERE qserv_areaspec_box(0.1, -6, 4, 6) 10 | AND scisql_fluxToAbMag(zFlux_PS) BETWEEN 20 AND 24 11 | AND scisql_fluxToAbMag(gFlux_PS)-scisql_fluxToAbMag(rFlux_PS) BETWEEN 0.1 AND 0.9 12 | AND scisql_fluxToAbMag(iFlux_PS)-scisql_fluxToAbMag(zFlux_PS) BETWEEN 0.1 AND 1.0 13 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1003_coneMagColorEmptyRes.sql: -------------------------------------------------------------------------------- 1 | -- Cone-magnitude-color search 2 | -- See http://dev.lsstcorp.org/trac/wiki/db/queries/003 3 | 4 | -- See ticket #2051 5 | 6 | -- pragma sortresult 7 | SELECT COUNT(*) as OBJ_COUNT 8 | FROM Object 9 | WHERE ra_PS BETWEEN 0 AND 4 -- noQserv 10 | AND decl_PS BETWEEN -6 AND -5 -- noQserv 11 | -- withQserv WHERE qserv_areaspec_box(0, -6, 4, -5) 12 | AND scisql_fluxToAbMag(zFlux_PS) BETWEEN 20 AND 24 13 | AND scisql_fluxToAbMag(gFlux_PS)-scisql_fluxToAbMag(rFlux_PS) BETWEEN 0.1 AND 0.2 14 | AND scisql_fluxToAbMag(iFlux_PS)-scisql_fluxToAbMag(zFlux_PS) BETWEEN 0.1 AND 0.2 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1004.1_varObjects.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | -- ORDER BY is performed by mysql-proxy but 5 | -- AVG() still has to trigger aggregation 6 | -- step. 7 | 8 | -- pragma noheader 9 | SELECT objectId, AVG(ra_PS) as ra 10 | FROM Object 11 | WHERE ra_PS BETWEEN 0 AND 3 -- noQserv 12 | AND decl_PS BETWEEN 0 AND 10 -- noQserv 13 | -- withQserv WHERE qserv_areaspec_box(0, 0, 3, 10) 14 | GROUP BY objectId 15 | ORDER BY ra 16 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1004_varObjects.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | SELECT objectId 5 | FROM Object 6 | WHERE ra_PS BETWEEN 0 AND 3 -- noQserv 7 | AND decl_PS BETWEEN 0 AND 10 -- noQserv 8 | -- withQserv WHERE qserv_areaspec_box(0, 0, 3, 10) 9 | -- AND variability > 0.8 10 | ORDER BY objectId 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1005_allGalaxiesInArea.sql: -------------------------------------------------------------------------------- 1 | -- Select all galaxies in a given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery014 3 | 4 | -- pragma sortresult 5 | 6 | SELECT objectId 7 | FROM Object 8 | WHERE ra_PS BETWEEN 1.0 AND 2.0 -- noQserv 9 | AND decl_PS BETWEEN -6.0 AND -4.0 -- noQserv 10 | -- withQserv WHERE qserv_areaspec_box(1.0, -6.0, 2.0, -4.0) 11 | AND rRadius_SG > 0.5 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1006_qserv_func_with_equals.1.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | SELECT objectId 5 | FROM Object 6 | WHERE ra_PS BETWEEN 0 AND 3 -- noQserv 7 | AND decl_PS BETWEEN 0 AND 10 -- noQserv 8 | -- withQserv WHERE 1 = qserv_areaspec_box(0, 0, 3, 10) 9 | ORDER BY objectId 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1006_qserv_func_with_equals.2.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | SELECT objectId 5 | FROM Object 6 | WHERE ra_PS BETWEEN 0 AND 3 -- noQserv 7 | AND decl_PS BETWEEN 0 AND 10 -- noQserv 8 | -- withQserv WHERE qserv_areaspec_box(0, 0, 3, 10) = 1 9 | ORDER BY objectId 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1011_objectsForExposure.sql: -------------------------------------------------------------------------------- 1 | -- joins, but for limited number of visits 2 | -- sort by is here purely so that we can compare results from mysql and qserv 3 | 4 | SELECT objectId 5 | FROM Source s 6 | JOIN Science_Ccd_Exposure sce USING (scienceCcdExposureId) 7 | WHERE sce.visit IN (885449631,886257441,886472151) ORDER BY objectId LIMIT 10 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1030_timeSeries.sql: -------------------------------------------------------------------------------- 1 | -- Select time series data for all objects 2 | -- in a given area of the sky, 3 | -- in a given photometric band 4 | -- Similar query: http://dev.lsstcorp.org/trac/wiki/dbQuery007 5 | 6 | -- See ticket #2052: https://dev.lsstcorp.org/trac/ticket/2052 7 | 8 | -- pragma noheader 9 | SELECT objectId, taiMidPoint, scisql_fluxToAbMag(psfFlux) 10 | FROM Source 11 | JOIN Object USING(objectId) 12 | JOIN Filter USING(filterId) 13 | WHERE ra_PS BETWEEN 355 AND 360 -- noQserv 14 | and decl_PS BETWEEN 0 AND 20 -- noQserv 15 | -- withQserv WHERE qserv_areaspec_box(355, 0, 360, 20) 16 | AND filterName = 'g' 17 | ORDER BY objectId, taiMidPoint ASC 18 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1051_nn.sql: -------------------------------------------------------------------------------- 1 | -- Find near-neighbor objects in a given region 2 | 3 | 4 | -- See ticket #1840 5 | -- Test DM-1582: Qserv spatial restrictor names 6 | -- must be case-insensitive 7 | 8 | -- pragma sortresult 9 | SELECT o1.objectId AS objId1, 10 | o2.objectId AS objId2, 11 | scisql_angSep(o1.ra_PS, o1.decl_PS, o2.ra_PS, o2.decl_PS) AS distance 12 | FROM Object o1, 13 | Object o2 14 | WHERE o1.ra_PS BETWEEN 0 AND 0.2 -- noQserv 15 | AND o1.decl_PS between 0 and 1 -- noQserv 16 | -- withQserv WHERE qserv_areaspec_box(0, 0, 0.2, 1) 17 | AND scisql_angSep(o1.ra_PS, o1.decl_PS, o2.ra_PS, o2.decl_PS) < 0.016 18 | AND o1.objectId <> o2.objectId 19 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1060_selectPoly.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to return [VAR]BINARY data. 2 | 3 | -- pragma sortresult 4 | SELECT scienceCcdExposureId, hex(poly) as hexPoly 5 | FROM Science_Ccd_Exposure; 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1083_null_safe_equals_op.sql: -------------------------------------------------------------------------------- 1 | -- find columns whose value is NULL using the null safe 2 | -- equals operator, `<=>` 3 | 4 | 5 | -- pragma sortresult 6 | 7 | select objectId from Object where raRange <=> NULL; 8 | 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1084_not_like.sql: -------------------------------------------------------------------------------- 1 | -- test for NOT LIKE 2 | 3 | SELECT filterId,filterName,photClam,photBW FROM Filter WHERE filterName NOT LIKE 'Z'; 4 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1084_null_safe_equals_op.sql: -------------------------------------------------------------------------------- 1 | -- find columns whose value is NULL using the null safe 2 | -- equals operator, `<=>` 3 | 4 | 5 | -- pragma sortresult 6 | 7 | select objectId from Object where raRange <=> NULL; 8 | 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1086_not_between.sql: -------------------------------------------------------------------------------- 1 | -- test for NOT BETWEEN 2 | 3 | 4 | -- pragma sortresult 5 | 6 | SELECT objectId,ra_PS FROM Object WHERE objectId NOT BETWEEN 417857368235490 AND 420949744686724 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1087_and_alt.sql: -------------------------------------------------------------------------------- 1 | -- test for && 2 | 3 | -- pragma sortresult 4 | 5 | select objectId, iRadius_SG, ra_PS, decl_PS from Object where iRadius_SG > .5 && ra_PS < 2 && decl_PS < 3; 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1088_or_alt.sql: -------------------------------------------------------------------------------- 1 | -- test for || 2 | 3 | -- pragma sortresult 4 | 5 | select objectId from Object where objectId < 400000000000000 || objectId > 430000000000000 ORDER BY objectId; 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1089_not_in.sql: -------------------------------------------------------------------------------- 1 | -- test for NOT IN 2 | 3 | -- pragma sortresult 4 | 5 | SELECT objectId, ra_PS FROM Object WHERE objectId NOT IN (417857368235490, 420949744686724, 420954039650823); 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1090_modulo.sql: -------------------------------------------------------------------------------- 1 | -- test for the modulo operator 2 | 3 | -- pragma sortresult 4 | 5 | select objectId, ra_PS, decl_PS from Object where ra_PS % 3 > 1.5 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1091_mod.sql: -------------------------------------------------------------------------------- 1 | -- test for the MOD operator 2 | 3 | -- pragma sortresult 4 | 5 | select objectId, ra_PS, decl_PS from Object where ra_PS MOD 3 > 1.5 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1092_div.sql: -------------------------------------------------------------------------------- 1 | -- test for the DIV operator 2 | 3 | -- pragma sortresult 4 | 5 | SELECT objectId from Object where ra_PS DIV 2 > 1 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1093_bitwise_and.sql: -------------------------------------------------------------------------------- 1 | -- test for the & operator 2 | 3 | -- pragma sortresult 4 | 5 | SELECT objectId from Object where objectId & 1 = 1; 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1094_bitwise_or.sql: -------------------------------------------------------------------------------- 1 | -- test for the | operator 2 | 3 | select objectId from Object where objectId = 399324584348580 | 1; -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1095_bitwise_right_shift.sql: -------------------------------------------------------------------------------- 1 | -- test for the >> operator 2 | 3 | SELECT filterId,filterName,photClam,photBW FROM Filter WHERE filterId >> 1 = 1; 4 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1096_bitwise_left_shift.sql: -------------------------------------------------------------------------------- 1 | -- test for the << operator 2 | 3 | SELECT filterId,filterName,photClam,photBW FROM Filter WHERE filterId << 1 = 2; 4 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1097_bitwise_xor.sql: -------------------------------------------------------------------------------- 1 | -- test for the ^ operator 2 | 3 | SELECT filterId,filterName,photClam,photBW FROM Filter WHERE filterId ^ 3 != 0; 4 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1098_negative_one.sql: -------------------------------------------------------------------------------- 1 | -- regression test for DM-16613 2 | -- tests constant value -1 in e.g. 'WHERE x > -1' 3 | -- -1 and -2 were parsing differently than other decimal integers because of 4 | -- placeholder lexer values TWO_DECIMAL, ONE_DECIMAL, AND ZERO_DECIMAL, which 5 | -- are necessary for cases where the grammar uses decimal integers in quotes, 6 | -- for example 'boolValue=('0' | '1')'. This was fixed with prioritization of 7 | -- ONE_DECIMAL and the others with respect to DECIMAL_LITERAL in the lexer. 8 | 9 | -- pragma sortresult 10 | 11 | select objectId from Object where ra_PS > -1; 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1099_two_group_by_columns.sql: -------------------------------------------------------------------------------- 1 | -- regression test for DM-17092 2 | -- tests that a query with a GROUP BY clause with 2 columns returns correct results. 3 | 4 | -- pragma sortresult 5 | 6 | select objectId, filterId from Source group by objectId, filterId; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1100_aliasInSelect.sql: -------------------------------------------------------------------------------- 1 | -- tests that a query with an alias in the select list parses, runs, and returns correct results. 2 | 3 | -- pragma sortresult 4 | 5 | SELECT objectId - 1 AS objLessOne FROM Object; 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1101.1_having.sql: -------------------------------------------------------------------------------- 1 | -- Tests that the having clause is handled properly 2 | -- pragma sortresult 3 | -- pragma noheader 4 | 5 | SELECT objectId, 6 | MAX(raFlux) - MIN(raFlux) 7 | FROM Source 8 | GROUP BY objectId 9 | HAVING MAX(raFlux)-MIN(raFlux) > 5; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1101.2_having.sql: -------------------------------------------------------------------------------- 1 | -- Tests that the having clause is handled properly 2 | -- pragma sortresult 3 | 4 | SELECT objectId, 5 | MAX(raFlux) - MIN(raFlux) AS flx 6 | FROM Source 7 | GROUP BY objectId 8 | HAVING MAX(raFlux)-MIN(raFlux) > 5; 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1101.3_having.sql: -------------------------------------------------------------------------------- 1 | -- Tests that the having clause is handled properly 2 | -- pragma sortresult 3 | 4 | SELECT objectId, 5 | MAX(raFlux) - MIN(raFlux) AS flx 6 | FROM Source 7 | GROUP BY objectId 8 | HAVING flx > 5; 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1102_having_with_limit.sql: -------------------------------------------------------------------------------- 1 | -- Tests that the having clause is handled properly 2 | -- pragma sortresult 3 | 4 | SELECT objectId, 5 | MAX(raFlux) - MIN(raFlux) as `flx` 6 | FROM Source 7 | GROUP BY objectId 8 | HAVING `flx` > 5 9 | LIMIT 5; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/1104_column_disambiguation.sql: -------------------------------------------------------------------------------- 1 | -- Select the same column name from different tables 2 | -- Verifies that the columns are disambiguated to coexist in the 3 | -- results table, and re-ambiguated so that only the column name 4 | -- appears in the results returned to the user (as is normal 5 | -- mysql behavior) 6 | 7 | -- pragma sortresult 8 | 9 | SELECT Object.htmId20, Source.htmId20 FROM Object JOIN Source ON Object.objectId = Source.objectId; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/2100_groupByChunkId.sql: -------------------------------------------------------------------------------- 1 | -- chunkId column must be filled in input data so that mysql mode 2 | -- can give same answers as Qserv 3 | 4 | SELECT count(*) AS n, AVG(ra_PS), AVG(decl_PS), chunkId 5 | FROM Object 6 | GROUP BY chunkId; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/3005_orderByRA.sql: -------------------------------------------------------------------------------- 1 | SELECT objectId, ra_PS 2 | FROM Object 3 | WHERE ra_PS BETWEEN 0. AND 1. 4 | AND decl_PS BETWEEN 0. AND 1. 5 | ORDER BY ra_PS; 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/3006.1_selectAs.sql: -------------------------------------------------------------------------------- 1 | -- Test support for multiple ORDER BY fields 2 | 3 | SELECT ra_PS AS ra, 4 | decl_PS AS decl 5 | FROM Object 6 | WHERE ra_PS BETWEEN 0. AND 1. 7 | AND decl_PS BETWEEN 0. AND 1. 8 | ORDER BY ra, decl; 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/3006_selectAs.sql: -------------------------------------------------------------------------------- 1 | SELECT ra_PS AS ra 2 | FROM Object 3 | WHERE ra_PS BETWEEN 0. AND 1. 4 | AND decl_PS BETWEEN 0. AND 1. 5 | ORDER BY ra; 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/3008_showColumns.sql: -------------------------------------------------------------------------------- 1 | SHOW COLUMNS FROM Object; 2 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/3011_selectSample.sql: -------------------------------------------------------------------------------- 1 | SELECT uFlux_PS, gFlux_PS, rFlux_PS, 2 | iFlux_PS, zFlux_PS, yFlux_PS 3 | FROM Object 4 | WHERE (objectId % 100 ) = 57 5 | ORDER BY uFlux_PS, gFlux_PS, rFlux_PS, 6 | iFlux_PS, zFlux_PS, yFlux_PS; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/3014_limitAfterAreaspec.sql: -------------------------------------------------------------------------------- 1 | -- Note: result ordering before limiting th eresult is required in Qserv 2 | -- to get the deterministic output. 3 | 4 | -- This is testing syntax (limit after areaspec) 5 | 6 | -- See ticket #2200 7 | 8 | SELECT objectId 9 | FROM Object 10 | WHERE ra_PS BETWEEN 0.1 AND 4 -- noQserv 11 | AND decl_PS BETWEEN -6 AND 6 -- noQserv 12 | -- withQserv WHERE qserv_areaspec_box(0.1, -6, 4, 6) 13 | ORDER BY objectId 14 | LIMIT 10 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/8003_areaWithLimitClause.sql: -------------------------------------------------------------------------------- 1 | -- This is testing syntax (limit after areaspec) 2 | 3 | -- See ticket #2200 4 | 5 | SELECT COUNT(*) 6 | FROM Object 7 | WHERE ra_PS BETWEEN 355 AND 356 -- noQserv 8 | AND decl_PS BETWEEN 0 AND 1 -- noQserv 9 | -- withQserv WHERE qserv_areaspec_box(355, 0, 356, 1) 10 | LIMIT 10 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/9000_caseinsensitiveUDF.sql: -------------------------------------------------------------------------------- 1 | -- Test case-insensitive names for 2 | -- Qserv spatial restrictor 3 | -- inspired by 1004_varObjects.sql 4 | 5 | SELECT objectId 6 | FROM Object 7 | WHERE ra_PS BETWEEN 0 AND 3 -- noQserv 8 | AND decl_PS BETWEEN 0 AND 10 -- noQserv 9 | -- withQserv WHERE QsErV_ArEaSpEc_BoX(0, 0, 3, 10) 10 | -- AND variability > 0.8 11 | ORDER BY objectId 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/9001_quoteTabInBlob.sql: -------------------------------------------------------------------------------- 1 | -- Test to be sure that a blob with a backslash 2 | -- in it is loaded the same in qserv as baseline 3 | -- test databases 4 | 5 | SELECT blobField 6 | FROM Source 7 | WHERE sourceId=29759322768015696; 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/9002_secIdxCompEq.sql: -------------------------------------------------------------------------------- 1 | -- Test to verify that a query returns correct results with a secondary index equality comparison. 2 | -- pragma sortresult 3 | 4 | SELECT objectId 5 | FROM Object 6 | WHERE objectId = 405483567466455; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/9003_secIdxCompLt.sql: -------------------------------------------------------------------------------- 1 | -- Test to verify that a query returns correct results with a secondary index less than comparison. 2 | -- pragma sortresult 3 | 4 | SELECT objectId 5 | FROM Object 6 | WHERE objectId < 400000000000000; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/9004_secIdxCompGt.sql: -------------------------------------------------------------------------------- 1 | -- Test to verify that a query returns correct results with a secondary index greater than comparison. 2 | -- pragma sortresult 3 | 4 | SELECT objectId 5 | FROM Object 6 | WHERE objectId > 400000000000000; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_columns/3004_nonExistingColumn.sql: -------------------------------------------------------------------------------- 1 | -- Selecting a non existing field 2 | 3 | SELECT o.foobar 4 | FROM Object o 5 | WHERE o.objectid = 402391191015221 ; 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_columns/README.txt: -------------------------------------------------------------------------------- 1 | Queries found in this folder are referring to columns that do not exist in 2 | existingt tables of the catalog and they may need to be eliminated. It's not 3 | clear why the queries were put here. 4 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/0011_sdqaMetric.sql: -------------------------------------------------------------------------------- 1 | -- interesting syntax 2 | 3 | -- See ticket #2049 4 | -- This is a WONTFIX because NAME_CONST is a MySQL-ism. 5 | -- COLLATE will be low-priority if/when we have a test case for it that 6 | -- doesn't include MySQL-isms. 7 | 8 | SELECT sdqa_metricId 9 | FROM sdqa_Metric 10 | WHERE metricName = NAME_CONST('metricName_',_latin1'ip.isr.numSaturatedPixels' COLLATE 'latin1_swedish_ci') -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/1012_orderByClause.sql: -------------------------------------------------------------------------------- 1 | -- Unsupported syntax: 2 | -- ERROR 4110 (Proxy): Query processing error: QI=?: Failed to instantiate 3 | -- query: ParseException:Error parsing query, near "ABS(iE1_SG)", qserv does not 4 | -- support functions in ORDER BY. 5 | 6 | -- Just testing ORDER BY 7 | -- (This query does not have real scientific meaning..) 8 | 9 | -- pragma noheader 10 | 11 | SELECT objectId, iE1_SG, ABS(iE1_SG) 12 | FROM Object 13 | WHERE iE1_SG between -0.1 and 0.1 14 | ORDER BY ABS(iE1_SG); 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/1013_orderByClauseRounded.sql: -------------------------------------------------------------------------------- 1 | -- Unsupported syntax: 2 | -- ERROR 4110 (Proxy): Query processing error: QI=?: Failed to instantiate 3 | -- query: ParseException:Error parsing query, near "ROUND(ABS(iE1_SG),3)", 4 | -- qserv does not support functions in ORDER BY. 5 | 6 | -- Variation of the previous query, with "round" 7 | -- (This query does not have real scientific meaning..) 8 | 9 | SELECT objectId, ROUND(iE1_SG, 3), ROUND(ABS(iE1_SG), 3) 10 | FROM Object 11 | WHERE iE1_SG between -0.1 and 0.1 12 | ORDER BY ROUND(ABS(iE1_SG), 3); 13 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/1081_refMatch2.sql: -------------------------------------------------------------------------------- 1 | -- Unsupported syntax: 2 | -- ERROR 4110 (Proxy): Query processing error: QI=?: Failed to instantiate 3 | -- query: ParseException:qserv can not parse query, near 4 | -- "LEFT JOIN SimRefObject t ON(o2t.refObjectId=t.refObjectId)" 5 | 6 | SELECT count(*) 7 | FROM Object o 8 | INNER JOIN RefObjMatch o2t ON (o.objectId = o2t.objectId) 9 | LEFT JOIN SimRefObject t ON (o2t.refObjectId = t.refObjectId) 10 | WHERE closestToObj = 1 11 | OR closestToObj is NULL 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/2006_randomSample.sql: -------------------------------------------------------------------------------- 1 | -- Unsupported syntax due to the placeholder ':percentage'. 2 | -- The query may need to be rewritten to replace the placeholder with 3 | -- so,me meaningful value. 4 | 5 | -- Random sample of the dataq 6 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery004 7 | 8 | 9 | SELECT fluxToAbMag(uFlux_PS), 10 | fluxToAbMag(gFlux_PS), 11 | fluxToAbMag(rFlux_PS), 12 | fluxToAbMag(iFlux_PS), 13 | fluxToAbMag(zFlux_PS), 14 | fluxToAbMag(yFlux_PS) 15 | FROM Object 16 | WHERE (objectId % 100 ) = :percentage 17 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/3001_SelectInPoly.sql: -------------------------------------------------------------------------------- 1 | 2 | SET @poly = scisql_s2CPolyToBin(359.5, -5.0, 3 | 0.05, -5.0, 4 | 0.05, 3.5, 5 | 359.5, 3.5); 6 | 7 | SELECT count(*) 8 | FROM Object 9 | where scisql_s2PtInCPoly(ra_PS, decl_PS, @poly) = 1 ; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/3002_sameColumnName.sql: -------------------------------------------------------------------------------- 1 | 2 | SELECT o1.ra_PS,o2.ra_PS 3 | FROM Object o1, Object o2 4 | WHERE o1.objectid = 402391191015221 5 | AND o2.objectid = 390030275138483 ; 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/3003_SameColumnTwice.sql: -------------------------------------------------------------------------------- 1 | -- Selecting the same column twice 2 | 3 | SELECT o.ra_PS,o.decl_PS,o.ra_PS 4 | FROM Object o 5 | WHERE o.objectid = 402391191015221 ; 6 | 7 | 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/3007_countGroupBy.sql: -------------------------------------------------------------------------------- 1 | 2 | SELECT count(src.sourceId), avg(o.ra_PS), avg(o.decl_PS) 3 | FROM Object o, Source src 4 | WHERE ra_PS BETWEEN 0. AND 1. 5 | AND decl_PS BETWEEN 0. AND 1. 6 | GROUP BY src.objectId ; 7 | 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/3009_subquery.sql: -------------------------------------------------------------------------------- 1 | 2 | SELECT src.sourceId 3 | FROM Source src 4 | WHERE src.objectId IN ( 5 | SELECT objectId 6 | FROM Object o 7 | WHERE ra_PS BETWEEN 0. AND 1. 8 | AND decl_PS BETWEEN 0. AND 1. 9 | ) ; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/3015_orderByFunction.sql: -------------------------------------------------------------------------------- 1 | -- Functions in the ORDER BY clause aren't supported by Qserv. 2 | 3 | SELECT objectID 4 | FROM Object 5 | WHERE scisql_fluxToAbMag(zFlux_PS) BETWEEN 20 AND 24 6 | ORDER BY (scisql_fluxToAbMag(gFlux_PS)-scisql_fluxToAbMag(rFlux_PS)) 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/3016_selectAllPairsWithinDistance.sql: -------------------------------------------------------------------------------- 1 | -- Select all pairs within some distance of points in region 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- based on https://dev.lsstcorp.org/trac/wiki/db/queries/022 4 | 5 | SELECT o1.objectId, o2.objectId 6 | FROM Object o1, Object o2 7 | WHERE o1.ra_PS BETWEEN 0.04 AND 5. -- noQserv 8 | AND o1.decl_PS BETWEEN -3. AND 3. -- noQserv 9 | -- withQserv WHERE qserv_areaspec_box(0.04, -3., 5., 3.) 10 | AND scisql_angSep(o1.ra_PS, o1.decl_PS, o2.ra_PS, o2.decl_Ps) < 5. 11 | 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/8001_badLiteral.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | -- note wrong literal: "35 .1" instead of "35.1" 4 | 5 | SELECT count(*) 6 | FROM Object 7 | WHERE ra_PS BETWEEN 35 AND 35 .1 -- noQserv 8 | AND decl_PS BETWEEN 6 AND 6.0001 -- noQserv 9 | -- withQserv WHERE qserv_areaSpec_box(35, 6, 35 .1, 6.0001); 10 | 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/8002_badLiteral.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | -- note wrong literal: "35. 1" instead of "35.1" 4 | 5 | SELECT count(*) 6 | FROM Object 7 | WHERE ra_PS BETWEEN 35 AND 35. 1 -- noQserv 8 | AND decl_PS BETWEEN 6 AND 6.0001 -- noQserv 9 | -- withQserv WHERE qserv_areaSpec_box(35, 6, 35. 1, 6.0001); 10 | 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/8004_badArea.sql: -------------------------------------------------------------------------------- 1 | -- Bad area spec box 2 | 3 | SELECT o1.objectId, o2.objectId 4 | FROM Object o1, Object o2 5 | WHERE o1.ra_PS BETWEEN 0.04 AND -3. -- noQserv 6 | AND o1.decl_PS BETWEEN 5. AND 3. -- noQserv 7 | -- withQserv WHERE qserv_areaspec_box(0.04, 5., -3., 3.) 8 | AND scisql_angSep(o1.ra_PS, o1.decl_PS, o2.ra_PS, o2.decl_Ps) < 5. 9 | 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_syntax/README.txt: -------------------------------------------------------------------------------- 1 | Queries in this folder are based on the SQL syntax that is not presently 2 | supported by Qserv. -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_tables/1031_newTransientsForEpoch.sql: -------------------------------------------------------------------------------- 1 | -- Find new transients for a given epoch 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery005 3 | 4 | -- Missing in current schema: Alert table 5 | 6 | SELECT objectId 7 | FROM Alert 8 | JOIN _Alert2Type USING (alertId) 9 | JOIN AlertType USING (alertTypeId) 10 | WHERE alertTypeDescr = 'newTransients' 11 | AND Alert.timeGenerated BETWEEN :timeMin AND :timeMax 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_tables/1082_refMatch3.sql: -------------------------------------------------------------------------------- 1 | select objectId, sro.*, (sro.refObjectId-1)/2%pow(2,10) typeId 2 | from Source s 3 | join RefObjMatch rom using (objectId) 4 | join SimRefObject sro using (refObjectId) 5 | where isStar =1 limit 10 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_tables/1083_refMatch3.sql: -------------------------------------------------------------------------------- 1 | select objectId, sro.*, (sro.refObjectId-1)/2%pow(2,10) typeId 2 | from Source s 3 | join RefObjMatch rom using (objectId) 4 | join SimRefObject sro using (refObjectId) 5 | where isStar =1 limit 10 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_tables/1085_refMatch3.sql: -------------------------------------------------------------------------------- 1 | select objectId, sro.*, (sro.refObjectId-1)/2%pow(2,10) typeId 2 | from Source s 3 | join RefObjMatch rom using (objectId) 4 | join SimRefObject sro using (refObjectId) 5 | where isStar =1 limit 10 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_tables/2005_varObjectsOfOneType.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects of a specific type 2 | -- See http://dev.lsstcorp.org/trac/wiki/dbQuery002 3 | 4 | 5 | -- missing in current schema: variability, probability 6 | 7 | SELECT objectId 8 | FROM Object 9 | JOIN _ObjectToType USING(objectId) 10 | JOIN ObjectType USING (typeId) 11 | WHERE description = 'Supernova' 12 | AND variability > 0.8 13 | AND probability > 0.8 14 | 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_tables/3013_nonexistantTable.sql: -------------------------------------------------------------------------------- 1 | 2 | select count(*) from Sources; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case01/queries/unsupported_tables/README.txt: -------------------------------------------------------------------------------- 1 | Queries found in this folder are referring to tables that do not exist in 2 | the catalog and they may need to be eliminated. It's not clear why the queries 3 | were put here. 4 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/README.txt: -------------------------------------------------------------------------------- 1 | This test cases contains an extract of PT1.1 Source and Object tables.$ 2 | In fact first 1000 objects and theirs associated sources. 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/data/Object.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case02/data/Object.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case02/data/Source.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case02/data/Source.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case02/data/description.yaml: -------------------------------------------------------------------------------- 1 | tables: 2 | directors: ['Object'] 3 | partitioned-tables: ['Object', 'Source'] 4 | extensions: 5 | data: '.csv' 6 | schema: '.schema' 7 | zip: '.gz' 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/data/ingest/database.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase02", 5 | "auto_build_secondary_index":1, 6 | "local_load_secondary_index":1, 7 | "num_stripes":85, 8 | "num_sub_stripes":12, 9 | "overlap":0.01667 10 | } 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/data/partition/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "htm":{ 3 | "level":8 4 | }, 5 | "dirDb":"qcase02", 6 | "dirTable":"Object", 7 | "part":{ 8 | "num-stripes":85, 9 | "num-sub-stripes":12, 10 | "chunk":"chunkId", 11 | "sub-chunk":"subChunkId", 12 | "default-overlap":0.01667 13 | }, 14 | "in":{ 15 | "csv":{ 16 | "null":"\\N", 17 | "delimiter":"," 18 | } 19 | }, 20 | "out":{ 21 | "csv":{ 22 | "null":"\\N", 23 | "delimiter":",", 24 | "escape":"\\", 25 | "no-quote":true 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/0002_fetchObjectByIdNoResult.sql: -------------------------------------------------------------------------------- 1 | -- Find an object with a particular object id 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery009 3 | 4 | -- not working, see ticket #1847 5 | 6 | SELECT * 7 | FROM Object 8 | WHERE objectId = 430213989000 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/0003_selectMetadataForOneGalaxy_withUSING.sql: -------------------------------------------------------------------------------- 1 | -- select the full color image of a single given galaxy 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery006 3 | 4 | -- pragma sortresult 5 | SELECT s.ra, s.decl, o.raRange, o.declRange 6 | FROM Object o 7 | JOIN Source s USING (objectId) 8 | WHERE o.objectId = 433327840428032 9 | -- AND o.latestObsTime = s.taiMidPoint 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1002.1_coneMagColor.sql: -------------------------------------------------------------------------------- 1 | -- Cone-magnitude-color search 2 | -- See http://dev.lsstcorp.org/trac/wiki/db/queries/003 3 | 4 | SELECT COUNT(*) AS OBJ_COUNT 5 | FROM Object 6 | WHERE ra_PS BETWEEN 0.1 AND 4 -- noQserv 7 | AND decl_PS BETWEEN -6 AND 6 -- noQserv 8 | -- withQserv WHERE qserv_areaspec_box(0.1, -6, 4, 6) 9 | AND scisql_fluxToAbMag(zFlux_PS) BETWEEN 20 AND 24 10 | AND scisql_fluxToAbMag(gFlux_PS)-scisql_fluxToAbMag(rFlux_PS) BETWEEN 0.1 AND 0.9 11 | AND scisql_fluxToAbMag(iFlux_PS)-scisql_fluxToAbMag(zFlux_PS) BETWEEN 0.1 AND 1.0 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1002.2_coneMagColor.sql: -------------------------------------------------------------------------------- 1 | -- Cone-magnitude-color search 2 | -- See https://dev.lsstcorp.org/trac/wiki/db/queries/003 3 | 4 | -- See ticket #2051 5 | 6 | 7 | SELECT COUNT(*) AS OBJ_COUNT 8 | FROM Object 9 | WHERE scisql_s2PtInCircle(ra_PS, decl_PS, 1.2, 3.2, 0.5) = 1 -- noQserv 10 | -- withQserv WHERE qserv_areaspec_circle(1.2, 3.2, 0.5) 11 | AND scisql_fluxToAbMag(zFlux_PS) BETWEEN 20 AND 24 12 | AND scisql_fluxToAbMag(gFlux_PS)-scisql_fluxToAbMag(rFlux_PS) BETWEEN 0.1 AND 0.6 13 | AND scisql_fluxToAbMag(iFlux_PS)-scisql_fluxToAbMag(zFlux_PS) BETWEEN 0.1 AND 0.6 14 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1002.3_coneMagColor.sql: -------------------------------------------------------------------------------- 1 | -- Cone-magnitude-color search 2 | -- See http://dev.lsstcorp.org/trac/wiki/db/queries/003 3 | 4 | -- See ticket #2051 5 | 6 | 7 | SELECT COUNT(*) AS OBJ_COUNT 8 | FROM Object 9 | WHERE scisql_s2PtInEllipse(ra_PS, decl_PS, 1.2, 3.2, 2500, 1500, 0.2) = 1 -- noQserv 10 | -- withQserv WHERE qserv_areaspec_ellipse(1.2, 3.2, 6000, 5000, 0.2) 11 | AND scisql_fluxToAbMag(zFlux_PS) BETWEEN 20 AND 24 12 | AND scisql_fluxToAbMag(gFlux_PS)-scisql_fluxToAbMag(rFlux_PS) BETWEEN 0.1 AND 0.6 13 | AND scisql_fluxToAbMag(iFlux_PS)-scisql_fluxToAbMag(zFlux_PS) BETWEEN 0.1 AND 0.6 14 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1002.4_coneMagColor.sql: -------------------------------------------------------------------------------- 1 | -- Cone-magnitude-color search 2 | -- See http://dev.lsstcorp.org/trac/wiki/db/queries/003 3 | 4 | -- See ticket #2051 5 | 6 | SELECT COUNT(*) AS OBJ_COUNT 7 | FROM Object 8 | WHERE scisql_s2PtInCPoly(ra_PS, decl_PS, 1.0, 3.0, 1.5, 2.0, 2.0, 4.0) = 1 -- noQserv 9 | -- withQserv WHERE qserv_areaspec_poly(1.0, 3.0, 1.5, 2.0, 2.0, 4.0) 10 | AND scisql_fluxToAbMag(zFlux_PS) BETWEEN 20 AND 24 11 | AND scisql_fluxToAbMag(gFlux_PS)-scisql_fluxToAbMag(rFlux_PS) BETWEEN 0.1 AND 0.6 12 | AND scisql_fluxToAbMag(iFlux_PS)-scisql_fluxToAbMag(zFlux_PS) BETWEEN 0.1 AND 0.6 13 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1003_coneMagColorEmptyRes.sql: -------------------------------------------------------------------------------- 1 | -- Cone-magnitude-color search 2 | -- See http://dev.lsstcorp.org/trac/wiki/db/queries/003 3 | 4 | -- See ticket #2051 5 | 6 | 7 | SELECT COUNT(*) AS OBJ_COUNT 8 | FROM Object 9 | WHERE ra_PS BETWEEN 0 AND 4 -- noQserv 10 | AND decl_PS BETWEEN -6 AND -5 -- noQserv 11 | -- withQserv WHERE qserv_areaspec_box(0, -6, 4, -5) 12 | AND scisql_fluxToAbMag(zFlux_PS) BETWEEN 20 AND 24 13 | AND scisql_fluxToAbMag(gFlux_PS)-scisql_fluxToAbMag(rFlux_PS) BETWEEN 0.1 AND 0.2 14 | AND scisql_fluxToAbMag(iFlux_PS)-scisql_fluxToAbMag(zFlux_PS) BETWEEN 0.1 AND 0.2 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1004.1_varObjects.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | -- Test support for multiple ORDER BY fields 5 | 6 | SELECT objectId, ra_PS, decl_PS 7 | FROM Object 8 | WHERE ra_PS BETWEEN 0 AND 3 -- noQserv 9 | AND decl_PS BETWEEN 0 AND 10 -- noQserv 10 | -- withQserv WHERE qserv_areaspec_box(0, 0, 3, 10) 11 | ORDER BY objectId, ra_PS, decl_PS 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1004.2_varObjects.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | SELECT objectId 5 | FROM Object 6 | WHERE scisql_s2PtInCircle(ra_PS, decl_PS, 1.5, 3, 1) 7 | ORDER BY objectId 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1004.3_varObjects.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | SELECT objectId 5 | FROM Object 6 | WHERE scisql_s2PtInEllipse(ra_PS, decl_PS, 1.5, 3, 3500, 200, 0.5) 7 | ORDER BY objectId 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1004.4_varObjects.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | SELECT objectId 5 | FROM Object 6 | WHERE scisql_s2PtInCPoly(ra_PS, decl_PS, 0, 0, 3, 10, 0, 5, 3, 1) 7 | ORDER BY objectId 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1004.5_varObjects.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | -- tests combining multiple AND and OR statements 5 | 6 | SELECT objectId 7 | FROM Object 8 | WHERE scisql_s2PtInCircle(ra_PS, decl_PS, 1.5, 3, 1) 9 | AND scisql_s2PtInCircle(ra_PS, decl_PS, 1.6, 3, 1) 10 | OR scisql_s2PtInCircle(ra_PS, decl_PS, 1.4, 3, 1) 11 | ORDER BY objectId 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1004.6_varObjects.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | -- tests using a comparison expression with a function in the left side of an AND 5 | 6 | SELECT objectId 7 | FROM Object 8 | WHERE scisql_s2PtInCircle(ra_PS, decl_PS, 1.5, 3, 1) = 1 9 | AND scisql_s2PtInCircle(ra_PS, decl_PS, 1.6, 3, 1) 10 | ORDER BY objectId 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1004.7_varObjects.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | -- tests using a comparison expression with a function in the right side of an AND 5 | 6 | SELECT objectId 7 | FROM Object 8 | WHERE scisql_s2PtInCircle(ra_PS, decl_PS, 1.5, 3, 1) 9 | AND scisql_s2PtInCircle(ra_PS, decl_PS, 1.6, 3, 1) = 1 10 | ORDER BY objectId 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1004.8_varObjects.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | -- tests using a comparison expression with a function in both sides of an AND 5 | 6 | SELECT objectId 7 | FROM Object 8 | WHERE scisql_s2PtInCircle(ra_PS, decl_PS, 1.5, 3, 1) = 1 9 | AND scisql_s2PtInCircle(ra_PS, decl_PS, 1.6, 3, 1) = 1 10 | ORDER BY objectId 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1004_varObjects.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects in given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery008 3 | 4 | SELECT objectId 5 | FROM Object 6 | WHERE ra_PS BETWEEN 0 AND 3 -- noQserv 7 | AND decl_PS BETWEEN 0 AND 10 -- noQserv 8 | -- withQserv WHERE qserv_areaspec_box(0, 0, 3, 10) 9 | ORDER BY objectId 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/1051_nn.sql: -------------------------------------------------------------------------------- 1 | -- Find near-neighbor objects in a given region 2 | 3 | 4 | -- See ticket #1840 5 | 6 | -- pragma sortresult 7 | 8 | SELECT o1.objectId AS objId1, 9 | o2.objectId AS objId2, 10 | scisql_angSep(o1.ra_PS, o1.decl_PS, o2.ra_PS, o2.decl_PS) AS distance 11 | FROM Object o1, 12 | Object o2 13 | WHERE o1.ra_PS BETWEEN 1.2 AND 1.3 -- noQserv 14 | AND o1.decl_PS between 3.3 and 3.4 -- noQserv 15 | AND o2.ra_PS BETWEEN 1.2 AND 1.3 -- noQserv 16 | AND o2.decl_PS between 3.3 and 3.4 -- noQserv 17 | -- withQserv WHERE qserv_areaspec_box(1.2, 3.3, 1.3, 3.4) 18 | AND scisql_angSep(o1.ra_PS, o1.decl_PS, o2.ra_PS, o2.decl_PS) < 0.016 19 | AND o1.objectId <> o2.objectId 20 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3001_query_035.sql: -------------------------------------------------------------------------------- 1 | -- Select object based on flux interval 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Based on https://dev.lsstcorp.org/trac/wiki/db/queries/013 4 | 5 | -- pragma sortresult 6 | SELECT objectId 7 | FROM Object 8 | WHERE scisql_fluxToAbMag(uFlux_PS)-scisql_fluxToAbMag(gFlux_PS) < 2.0 9 | AND scisql_fluxToAbMag(gFlux_PS)-scisql_fluxToAbMag(rFlux_PS) < 0.1 10 | AND scisql_fluxToAbMag(rFlux_PS)-scisql_fluxToAbMag(iFlux_PS) > -0.8 11 | AND scisql_fluxToAbMag(iFlux_PS)-scisql_fluxToAbMag(zFlux_PS) < 1.4 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3005_objectCount.sql: -------------------------------------------------------------------------------- 1 | -- Count the number of Objects 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | 4 | SELECT count(*) AS OBJ_COUNT FROM Object 5 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3006_selectIntervalMagnitudes.sql: -------------------------------------------------------------------------------- 1 | -- Select object with Magnitude in intervals 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Based on https://dev.lsstcorp.org/trac/wiki/db/queries/013 4 | 5 | SELECT count(*) AS OBJ_COUNT 6 | FROM Object 7 | WHERE ra_PS BETWEEN 1.28 AND 1.38 8 | AND decl_PS BETWEEN 3.18 AND 3.34 9 | AND scisql_fluxToAbMag(zFlux_PS) 10 | BETWEEN 21 AND 21.5 11 | AND scisql_fluxToAbMag(gFlux_PS) 12 | - scisql_fluxToAbMag(rFlux_PS) 13 | BETWEEN 0.3 AND 0.4 14 | AND scisql_fluxToAbMag(iFlux_PS) 15 | - scisql_fluxToAbMag(zFlux_PS) 16 | BETWEEN 0.1 AND 0.12 17 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3007_countObjectWithColorFluxGreaterThan.sql: -------------------------------------------------------------------------------- 1 | -- Count the number of object with a color flux greater than a constant 2 | -- See https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Based on https://dev.lsstcorp.org/trac/wiki/db/queries/026 4 | 5 | SELECT COUNT(*) AS OBJ_COUNT 6 | FROM Object 7 | WHERE gFlux_PS>1e-25 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3008_selectObjectWithColorMagnitudeGreaterThan.sql: -------------------------------------------------------------------------------- 1 | -- Select object with IZ magnitude greater than a constant 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Based on https://dev.lsstcorp.org/trac/wiki/db/queries/051 4 | 5 | -- pragma sortresult 6 | SELECT objectId, ra_PS, decl_PS, 7 | uFlux_PS, gFlux_PS, rFlux_PS, 8 | iFlux_PS, zFlux_PS, yFlux_PS 9 | FROM Object 10 | WHERE scisql_fluxToAbMag(iFlux_PS) 11 | - scisql_fluxToAbMag(zFlux_PS) > 0.08 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3009_countObjectInRegionWithZFlux.sql: -------------------------------------------------------------------------------- 1 | -- Count object in a region with ZFlux in a given interval 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Based on https://dev.lsstcorp.org/trac/wiki/db/queries/020 4 | 5 | SELECT count(*) AS OBJ_COUNT 6 | FROM Object 7 | WHERE ra_PS BETWEEN 1.28 AND 1.38 8 | AND decl_PS BETWEEN 3.18 AND 3.34 9 | AND scisql_fluxToAbMag(zFlux_PS) BETWEEN 21 and 21.5 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3011_selectObjectWithMagnitudes.sql: -------------------------------------------------------------------------------- 1 | -- Select object with magnitudes between 20 and 24 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Based on https://dev.lsstcorp.org/trac/wiki/db/Qserv/OptimalPartitionSize 4 | 5 | -- pragma sortresult 6 | SELECT objectId, ra_PS, decl_PS, 7 | scisql_fluxToAbMag(zFlux_PS) AS fluxToAbMag 8 | FROM Object 9 | WHERE scisql_fluxToAbMag(zFlux_PS) 10 | BETWEEN 20 AND 24 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3011_selectObjectWithMagnitudes_noalias.sql: -------------------------------------------------------------------------------- 1 | -- Select object with magnitudes between 20 and 24 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Based on https://dev.lsstcorp.org/trac/wiki/db/Qserv/OptimalPartitionSize 4 | 5 | -- pragma noheader sortresult 6 | SELECT objectId, ra_PS, decl_PS, 7 | scisql_fluxToAbMag(zFlux_PS) 8 | FROM Object 9 | WHERE scisql_fluxToAbMag(zFlux_PS) 10 | BETWEEN 20 AND 24 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3012_selectObjectInCircularRegion.sql: -------------------------------------------------------------------------------- 1 | -- Select object in a circular region 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | 4 | 5 | SELECT count(*) AS OBJ_COUNT 6 | FROM Object 7 | WHERE scisql_angSep(ra_PS, decl_PS, 1.2, 3.2) < 0.2 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3013_joinObjectSourceInRegion_withUSING.sql: -------------------------------------------------------------------------------- 1 | -- Join Object/Source for all object in a region 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Based on https://dev.lsstcorp.org/trac/ticket/2052 4 | 5 | -- pragma sortresult 6 | SELECT objectId 7 | FROM Source 8 | JOIN Object USING(objectId) 9 | WHERE ra_PS BETWEEN 1.28 AND 1.38 10 | AND decl_PS BETWEEN 3.18 AND 3.34 11 | 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3014_joinObjectSourceTimeInterval_withUSING.sql: -------------------------------------------------------------------------------- 1 | -- Join Object and Source on a given object and for a given time interval 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Based on https://dev.lsstcorp.org/trac/wiki/db/queries/006 4 | 5 | -- pragma sortresult 6 | SELECT s.ra, s.decl 7 | FROM Object o 8 | JOIN Source s 9 | USING (objectId) 10 | WHERE o.objectId = 433327840429024 11 | AND o.latestObsTime BETWEEN s.taiMidPoint - 300 AND s.taiMidPoint + 300 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3020.2_selectObjectWithLimit.sql: -------------------------------------------------------------------------------- 1 | -- Select 10 object in a given area 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Base on https://dev.lsstcorp.org/trac/wiki/db/Qserv/Limitations 4 | 5 | SELECT * 6 | FROM Object 7 | WHERE scisql_s2PtInBox(ra_PS,decl_PS,1,3,2,4) 8 | LIMIT 10; 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3020_selectObjectWithLimit.sql: -------------------------------------------------------------------------------- 1 | -- Select 10 object in a given area 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Base on https://dev.lsstcorp.org/trac/wiki/db/Qserv/Limitations 4 | 5 | SELECT * 6 | FROM Object 7 | WHERE ra_PS BETWEEN 1 AND 2 8 | AND decl_PS BETWEEN 3 AND 4 9 | LIMIT 10; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3021.1_selectObjectSortedByRA.sql: -------------------------------------------------------------------------------- 1 | -- Select objects in a given area sorted by right ascension 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Base on https://dev.lsstcorp.org/trac/ticket/2051 4 | 5 | -- Note: Qserv requires that columns used in ORDER BY be explicitly 6 | -- mentioned in the SELECT list. Otherwise the query would fail the 7 | -- query analysis. 8 | -- Also note the area strictor function used to limit the spatial area 9 | -- inspected by the query. 10 | 11 | SELECT ra_PS,decl_PS 12 | FROM Object 13 | WHERE scisql_s2PtInBox(ra_PS,decl_PS,1.28,1.38,3.18,3.34) 14 | ORDER BY ra_PS; 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3022_selectCountObjectInBox.sql: -------------------------------------------------------------------------------- 1 | SELECT COUNT(*) 2 | FROM Object 3 | WHERE scisql_s2PtInBox(ra_PS,decl_PS,1,3,2,4); -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/3023_selectCountSourceInBox.sql: -------------------------------------------------------------------------------- 1 | SELECT COUNT(*) 2 | FROM Source 3 | WHERE scisql_s2PtInBox(ra,decl,1,3,2,4); -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/8003_areaWithLimitClause.sql: -------------------------------------------------------------------------------- 1 | -- This is testing syntax (limit after areaspec) 2 | 3 | -- See ticket #2200 4 | 5 | SELECT COUNT(*) 6 | FROM Object 7 | WHERE ra_PS BETWEEN 355 AND 356 -- noQserv 8 | AND decl_PS BETWEEN 0 AND 1 -- noQserv 9 | -- withQserv WHERE qserv_areaspec_box(355, 0, 356, 1) 10 | LIMIT 10 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_by_mysql/3010_countObjectPerChunks.sql: -------------------------------------------------------------------------------- 1 | -- Count object per Chunks 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- Based on https://dev.lsstcorp.org/trac/wiki/db/Qserv/250Development 4 | 5 | -- Note: chunkId field is not in MySQL tables. The query is still 6 | -- a valid Qserv query. 7 | 8 | SELECT count(*) AS n, 9 | AVG(ra_PS), 10 | AVG(decl_PS), 11 | objectId, 12 | chunkId 13 | FROM Object 14 | GROUP BY chunkId 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_by_mysql/3020.1_selectObjectWithLimit.sql: -------------------------------------------------------------------------------- 1 | -- This query can't be executed by MySQL since it's relying on the Qserv-specific 2 | -- area restrictor. The restrictor seem to be obsolete as it can be 3 | -- replaced with the functionally equivalent SciSQL stored orocedure that's also 4 | -- supported in MySQL: scisql_s2PtInBox(ra_PS,decl_PS,1,3,2,4) 5 | 6 | -- Select 10 object in a given area 7 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 8 | -- Base on https://dev.lsstcorp.org/trac/wiki/db/Qserv/Limitations 9 | 10 | SELECT * 11 | FROM Object 12 | WHERE qserv_areaspec_box(1,3,2,4) 13 | LIMIT 10; -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_by_mysql/README.txt: -------------------------------------------------------------------------------- 1 | The folder containers queries that are perfetly valid for Qserv, and which 2 | can't be executed in MySQL. See details in each query description. -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_columns/0006_transientVarObjNearGalaxy.sql: -------------------------------------------------------------------------------- 1 | -- Select transient variable objects near a known galaxy 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery015 3 | 4 | -- we don't have variability and extendedParamer columns 5 | 6 | SELECT v.objectId, v.ra, v.decl 7 | FROM Object v, Object o 8 | WHERE o.objectId = :objectId 9 | AND spDist(v.ra, v.decl, o.ra, o.decl, :dist) 10 | AND v.variability > 0.8 11 | AND o.extendedParameter > 0.8 12 | 13 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_columns/1005_allGalaxiesInArea.sql: -------------------------------------------------------------------------------- 1 | -- Select all galaxies in a given area 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery014 3 | 4 | -- Missing in current schema: extendedParameter 5 | 6 | SELECT objectId 7 | FROM Object 8 | WHERE ra_PS BETWEEN :raMin AND :raMax -- noQserv 9 | AND decl_PS BETWEEN :declMin AND :declMax -- noQserv 10 | -- withQserv WHERE qserv_areaspec_box(:raMin, :declMin, :raMax, :declMax) 11 | AND extendedParameter > 0.8 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_columns/README.txt: -------------------------------------------------------------------------------- 1 | Queries found in this folder are referring to columns that do not exist in 2 | existingt tables of the catalog and they may need to be eliminated. It's not 3 | clear why the queries were put here. 4 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_syntax/1012_orderByClause.sql: -------------------------------------------------------------------------------- 1 | -- The query syntax is not supported in Qserv: 2 | -- ERROR 4110 (Proxy): Query processing error: QI=?: Failed to instantiate query: ParseException:Error parsing query, near "ABS(iE1_SG)", qserv does not support functions in ORDER BY. 3 | 4 | -- Just testing ORDER BY 5 | -- (This query does not have real scientific meaning..) 6 | 7 | SELECT objectId, iE1_SG, ABS(iE1_SG) 8 | FROM Object 9 | WHERE iE1_SG between -0.1 and 0.1 10 | ORDER BY ABS(iE1_SG); 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_syntax/1013_orderByClauseRounded.sql: -------------------------------------------------------------------------------- 1 | -- The query syntax is not supported in Qserv: 2 | -- ERROR 4110 (Proxy): Query processing error: QI=?: Failed to instantiate query: ParseException:Error parsing query, near "ROUND(ABS(iE1_SG),3)", qserv does not support functions in ORDER BY. 3 | 4 | -- Variation of the previous query, with "round" 5 | -- (This query does not have real scientific meaning..) 6 | 7 | SELECT objectId, ROUND(iE1_SG, 3), ROUND(ABS(iE1_SG), 3) 8 | FROM Object 9 | WHERE iE1_SG between -0.1 and 0.1 10 | ORDER BY ROUND(ABS(iE1_SG), 3); 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_syntax/2006_randomSample.sql: -------------------------------------------------------------------------------- 1 | -- The query is referring to the non-existsing placeholder ':percentage' 2 | 3 | -- Random sample of the dataq 4 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery004 5 | 6 | 7 | SELECT fluxToAbMag(uFlux_PS), 8 | fluxToAbMag(gFlux_PS), 9 | fluxToAbMag(rFlux_PS), 10 | fluxToAbMag(iFlux_PS), 11 | fluxToAbMag(zFlux_PS), 12 | fluxToAbMag(yFlux_PS) 13 | FROM Object 14 | WHERE (objectId % 100 ) = :percentage 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_syntax/8001_badLiteral.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | -- note wrong literal: "35 .1" instead of "35.1" 4 | 5 | SELECT count(*) 6 | FROM Object 7 | WHERE ra_PS BETWEEN 35 AND 35 .1 -- noQserv 8 | AND decl_PS BETWEEN 6 AND 6.0001 -- noQserv 9 | -- withQserv WHERE qserv_areaSpec_box(35, 6, 35 .1, 6.0001); 10 | 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_syntax/8002_badLiteral.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | -- note wrong literal: "35. 1" instead of "35.1" 4 | 5 | SELECT count(*) 6 | FROM Object 7 | WHERE ra_PS BETWEEN 35 AND 35. 1 -- noQserv 8 | AND decl_PS BETWEEN 6 AND 6.0001 -- noQserv 9 | -- withQserv WHERE qserv_areaSpec_box(35, 6, 35. 1, 6.0001); 10 | 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_syntax/README.txt: -------------------------------------------------------------------------------- 1 | Queries in this folder are based on the SQL syntax that is not presently 2 | supported by Qserv. -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_tables/1011_objectsForExposure.sql: -------------------------------------------------------------------------------- 1 | -- joins, but for limited number of visits 2 | -- sort by is here purely so that we can compare results from mysql and qserv 3 | 4 | SELECT objectId 5 | FROM Source s 6 | JOIN Science_Ccd_Exposure sce USING (scienceCcdExposureId) 7 | WHERE sce.visit IN (885449631,886257441,886472151) ORDER BY objectId LIMIT 10 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_tables/1030_timeSeries.sql: -------------------------------------------------------------------------------- 1 | -- Select time series data for all objects 2 | -- in a given area of the sky, 3 | -- in a given photometric band 4 | -- Similar query: http://dev.lsstcorp.org/trac/wiki/dbQuery007 5 | 6 | -- See ticket #2052 7 | 8 | SELECT objectId, taiMidPoint, scisql_fluxToAbMag(psfFlux) 9 | FROM Source 10 | JOIN Object USING(objectId) 11 | JOIN Filter USING(filterId) 12 | WHERE ra_PS BETWEEN 355 AND 360 -- noQserv 13 | and decl_PS BETWEEN 0 AND 20 -- noQserv 14 | -- withQserv WHERE qserv_areaspec_box(355, 0, 360, 20) 15 | AND filterName = 'g' 16 | ORDER BY objectId, taiMidPoint ASC 17 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_tables/1031_newTransientsForEpoch.sql: -------------------------------------------------------------------------------- 1 | -- Find new transients for a given epoch 2 | -- http://dev.lsstcorp.org/trac/wiki/dbQuery005 3 | 4 | -- Missing in current schema: Alert table 5 | 6 | SELECT objectId 7 | FROM Alert 8 | JOIN _Alert2Type USING (alertId) 9 | JOIN AlertType USING (alertTypeId) 10 | WHERE alertTypeDescr = 'newTransients' 11 | AND Alert.timeGenerated BETWEEN :timeMin AND :timeMax 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_tables/1081_refMatch2.sql: -------------------------------------------------------------------------------- 1 | SELECT count(*) 2 | FROM Object o 3 | INNER JOIN RefObjMatch o2t ON (o.objectId = o2t.objectId) 4 | LEFT JOIN SimRefObject t ON (o2t.refObjectId = t.refObjectId) 5 | WHERE closestToObj = 1 6 | OR closestToObj is NULL 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_tables/1083_refMatch3.sql: -------------------------------------------------------------------------------- 1 | select objectId, sro.*, (sro.refObjectId-1)/2%pow(2,10) typeId 2 | from Source s 3 | join RefObjMatch rom using (objectId) 4 | join SimRefObject sro using (refObjectId) 5 | where isStar =1 limit 10 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_tables/2005_varObjectsOfOneType.sql: -------------------------------------------------------------------------------- 1 | -- Select all variable objects of a specific type 2 | -- See http://dev.lsstcorp.org/trac/wiki/dbQuery002 3 | 4 | 5 | -- missing in current schema: variability, probability 6 | 7 | SELECT objectId 8 | FROM Object 9 | JOIN _ObjectToType USING(objectId) 10 | JOIN ObjectType USING (typeId) 11 | WHERE description = 'Supernova' 12 | AND variability > 0.8 13 | AND probability > 0.8 14 | 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_tables/3023_joinObjectSourceFilter.sql: -------------------------------------------------------------------------------- 1 | -- Join on Source and Filter and select specific filter in region 2 | -- https://dev.lsstcorp.org/trac/wiki/db/Qserv/IN2P3/BenchmarkMarch2013 3 | -- https://dev.lsstcorp.org/trac/wiki/db/queries/007 4 | 5 | SELECT objectId, taiMidPoint, fluxToAbMag(psfMag) 6 | FROM Source 7 | JOIN Object USING(objectId) 8 | JOIN Filter USING(filterId) 9 | WHERE ra_PS BETWEEN 1 AND 2 -- noQserv 10 | AND decl_PS BETWEEN 3 AND 4 -- noQserv 11 | -- withQserv qserv_areaspec_box(1,3,2,4) 12 | AND filterName = 'u' 13 | AND variability BETWEEN 0 AND 2 14 | ORDER BY objectId, taiMidPoint 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case02/queries/unsupported_tables/README.txt: -------------------------------------------------------------------------------- 1 | Queries found in this folder are referring to tables that do not exist in 2 | the catalog and they may need to be eliminated. It's not clear why the queries 3 | were put here. 4 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/AvgForcedPhot.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/AvgForcedPhot.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/AvgForcedPhotYearly.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/AvgForcedPhotYearly.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/DeepCoadd.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/DeepCoadd.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/DeepCoadd_Metadata.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/DeepCoadd_Metadata.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/DeepCoadd_To_Htm10.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/DeepCoadd_To_Htm10.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/Filter.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/Filter.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/LeapSeconds.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/LeapSeconds.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/RefDeepSrcMatch.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/RefDeepSrcMatch.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/RefObject.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/RefObject.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/RunDeepForcedSource.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/RunDeepForcedSource.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/RunDeepSource.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/RunDeepSource.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/Science_Ccd_Exposure.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/Science_Ccd_Exposure.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/Science_Ccd_Exposure_Metadata.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/Science_Ccd_Exposure_Metadata.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/Science_Ccd_Exposure_Metadata_coadd_r.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/Science_Ccd_Exposure_Metadata_coadd_r.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/Science_Ccd_Exposure_To_Htm10_coadd_r.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/Science_Ccd_Exposure_To_Htm10_coadd_r.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/Science_Ccd_Exposure_coadd_r.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/Science_Ccd_Exposure_coadd_r.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/ZZZ_Db_Description.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case03/data/ZZZ_Db_Description.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/ingest/DeepCoadd_Metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase03", 5 | "table":"DeepCoadd_Metadata", 6 | "is_partitioned":0, 7 | "schema":[ 8 | {"name":"deepCoaddId", "type":"bigint(20) NOT NULL"}, 9 | {"name":"metadataKey", "type":"varchar(255) NOT NULL"}, 10 | {"name":"exposureType", "type":"tinyint(4) NOT NULL"}, 11 | {"name":"intValue", "type":"int(11) DEFAULT NULL"}, 12 | {"name":"doubleValue", "type":"double DEFAULT NULL"}, 13 | {"name":"stringValue", "type":"varchar(255) DEFAULT NULL"} 14 | ], 15 | "fields_terminated_by":"," 16 | } 17 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/ingest/DeepCoadd_To_Htm10.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase03", 5 | "table":"DeepCoadd_To_Htm10", 6 | "is_partitioned":0, 7 | "schema":[ 8 | {"name":"deepCoaddId", "type":"bigint(20) NOT NULL"}, 9 | {"name":"htmId10", "type":"int(11) NOT NULL"} 10 | ], 11 | "fields_terminated_by":"," 12 | } 13 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/ingest/Filter.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase03", 5 | "table":"Filter", 6 | "is_partitioned":0, 7 | "schema":[ 8 | {"name":"filterId", "type":"tinyint(4) NOT NULL"}, 9 | {"name":"filterName", "type":"char(3) NOT NULL"}, 10 | {"name":"photClam", "type":"float NOT NULL"}, 11 | {"name":"photBW", "type":"float NOT NULL"} 12 | ], 13 | "fields_terminated_by":"," 14 | } 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/ingest/LeapSeconds.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase03", 5 | "table":"LeapSeconds", 6 | "is_partitioned":0, 7 | "schema":[ 8 | {"name":"whenJd", "type":"float NOT NULL"}, 9 | {"name":"offset", "type":"float NOT NULL"}, 10 | {"name":"mjdRef", "type":"float NOT NULL"}, 11 | {"name":"drift", "type":"float NOT NULL"}, 12 | {"name":"whenMjdUtc", "type":"float DEFAULT NULL"}, 13 | {"name":"whenUtc", "type":"bigint(20) DEFAULT NULL"}, 14 | {"name":"whenTai", "type":"bigint(20) DEFAULT NULL"} 15 | ], 16 | "fields_terminated_by":"," 17 | } 18 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/ingest/Science_Ccd_Exposure_Metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase03", 5 | "table":"Science_Ccd_Exposure_Metadata", 6 | "is_partitioned":0, 7 | "schema":[ 8 | {"name":"scienceCcdExposureId", "type":"bigint(20) NOT NULL"}, 9 | {"name":"metadataKey", "type":"varchar(255) NOT NULL"}, 10 | {"name":"exposureType", "type":"tinyint(4) NOT NULL"}, 11 | {"name":"intValue", "type":"int(11) DEFAULT NULL"}, 12 | {"name":"doubleValue", "type":"double DEFAULT NULL"}, 13 | {"name":"stringValue", "type":"varchar(255) DEFAULT NULL"} 14 | ], 15 | "fields_terminated_by":"," 16 | } 17 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/ingest/Science_Ccd_Exposure_Metadata_coadd_r.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase03", 5 | "table":"Science_Ccd_Exposure_Metadata_coadd_r", 6 | "is_partitioned":0, 7 | "schema":[ 8 | {"name":"scienceCcdExposureId", "type":"bigint(20) NOT NULL"}, 9 | {"name":"metadataKey", "type":"varchar(255) NOT NULL"}, 10 | {"name":"exposureType", "type":"tinyint(4) NOT NULL"}, 11 | {"name":"intValue", "type":"int(11) DEFAULT NULL"}, 12 | {"name":"doubleValue", "type":"double DEFAULT NULL"}, 13 | {"name":"stringValue", "type":"varchar(255) DEFAULT NULL"} 14 | ], 15 | "fields_terminated_by":"," 16 | } 17 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/ingest/Science_Ccd_Exposure_To_Htm10_coadd_r.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase03", 5 | "table":"Science_Ccd_Exposure_To_Htm10_coadd_r", 6 | "is_partitioned":0, 7 | "schema":[ 8 | {"name":"scienceCcdExposureId", "type":"bigint(20) NOT NULL"}, 9 | {"name":"htmId10", "type":"int(11) NOT NULL"} 10 | ], 11 | "fields_terminated_by":"," 12 | } 13 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/ingest/ZZZ_Db_Description.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase03", 5 | "table":"ZZZ_Db_Description", 6 | "is_partitioned":0, 7 | "schema":[ 8 | {"name":"f", "type":"varchar(255) DEFAULT NULL"}, 9 | {"name":"r", "type":"varchar(255) DEFAULT NULL"} 10 | ], 11 | "fields_terminated_by":"," 12 | } 13 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/ingest/database.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase03", 5 | "auto_build_secondary_index":1, 6 | "local_load_secondary_index":1, 7 | "num_stripes":85, 8 | "num_sub_stripes":14, 9 | "overlap":0.001 10 | } 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/partition/DeepForcedSource.cfg.view.TODO: -------------------------------------------------------------------------------- 1 | # ============================================ 2 | # W13 DeepForcedSource view configuration file 3 | # ============================================ 4 | 5 | # TODO: DM-1728 6 | 7 | # Table primary key column. 8 | id = deepForcedSourceId 9 | 10 | # Partitioning parameters. 11 | part = { 12 | # The partitioning position is the object's point-source model position. 13 | pos = 'ra, decl' 14 | # Overlap radius in degrees. 15 | overlap = 0 16 | subChunks = 0 17 | } 18 | 19 | dirColName = "TODO" 20 | 21 | in.csv = { 22 | # List of table column names, in order of occurrence. 23 | field = [ 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/partition/DeepForcedSource.json.view.TODO-DM-1728: -------------------------------------------------------------------------------- 1 | { 2 | "id":"deepForcedSourceId", 3 | "part":{ 4 | "pos":"ra, decl", 5 | "overlap":0, 6 | "subChunks":0 7 | }, 8 | "dirColName":"TODO", 9 | "in":{ 10 | "csv":{ 11 | "field":[ 12 | ] 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/partition/DeepSource.cfg.view.TODO: -------------------------------------------------------------------------------- 1 | # ====================================== 2 | # W13 DeepSource view configuration file 3 | # ====================================== 4 | 5 | # TODO: DM-1728 6 | 7 | # Table primary key column. 8 | id = id 9 | 10 | # Partitioning parameters. 11 | part = { 12 | # The partitioning position is the object's point-source model position. 13 | pos = 'coord_ra, coord_decl' 14 | # Overlap radius in degrees. 15 | overlap = 0 16 | subChunks = 0 17 | } 18 | 19 | dirColName = "TODO" 20 | 21 | in.csv = { 22 | # List of table column names, in order of occurrence. 23 | field = [ 24 | #TODO 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/partition/DeepSource.json.view.TODO-DM-1728: -------------------------------------------------------------------------------- 1 | { 2 | "id":"id", 3 | "part":{ 4 | "pos":"coord_ra, coord_decl", 5 | "overlap":0, 6 | "subChunks":0 7 | }, 8 | "dirColName":"TODO", 9 | "in":{ 10 | "csv":{ 11 | "field":[ 12 | ] 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/partition/RefDeepSrcMatch.json: -------------------------------------------------------------------------------- 1 | { 2 | "part":{ 3 | "pos1":"ra, decl", 4 | "pos2":"coord_ra, coord_decl", 5 | "flags":"flags" 6 | }, 7 | "in":{ 8 | "csv":{ 9 | "field":[ 10 | "ra", 11 | "decl", 12 | "coord_ra", 13 | "coord_decl", 14 | "refObjectId", 15 | "deepSourceId", 16 | "angSep", 17 | "nRefMatches", 18 | "nSrcMatches", 19 | "closestToRef", 20 | "closestToSrc", 21 | "flags" 22 | ] 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/partition/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "htm":{ 3 | "level":8 4 | }, 5 | "dirDb":"qcase03", 6 | "dirTable":"RunDeepSource", 7 | "part":{ 8 | "num-stripes":85, 9 | "num-sub-stripes":14, 10 | "overlap": 0.001, 11 | "chunk":"chunkId", 12 | "sub-chunk":"subChunkId" 13 | }, 14 | "in":{ 15 | "csv":{ 16 | "null":"\\N", 17 | "delimiter":",", 18 | "escape":"\\" 19 | } 20 | }, 21 | "out":{ 22 | "csv":{ 23 | "null":"\\N", 24 | "delimiter":",", 25 | "escape":"\\", 26 | "no-quote":true 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/schema/DeepCoadd_Metadata.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `DeepCoadd_Metadata` ( 2 | `deepCoaddId` bigint(20) NOT NULL, 3 | `metadataKey` varchar(255) NOT NULL, 4 | `exposureType` tinyint(4) NOT NULL, 5 | `intValue` int(11) DEFAULT NULL, 6 | `doubleValue` double DEFAULT NULL, 7 | `stringValue` varchar(255) DEFAULT NULL, 8 | PRIMARY KEY (`deepCoaddId`,`metadataKey`), 9 | KEY `IDX_metadataKey` (`metadataKey`) 10 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/schema/DeepCoadd_To_Htm10.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `DeepCoadd_To_Htm10` ( 2 | `deepCoaddId` bigint(20) NOT NULL, 3 | `htmId10` int(11) NOT NULL, 4 | KEY `IDX_htmId10` (`htmId10`), 5 | KEY `IDX_deepCoaddId` (`deepCoaddId`) 6 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/schema/Filter.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `Filter` ( 2 | `filterId` tinyint(4) NOT NULL, 3 | `filterName` char(3) NOT NULL, 4 | `photClam` float NOT NULL, 5 | `photBW` float NOT NULL, 6 | PRIMARY KEY (`filterId`) 7 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/schema/LeapSeconds.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `LeapSeconds` ( 2 | `whenJd` float NOT NULL, 3 | `offset` float NOT NULL, 4 | `mjdRef` float NOT NULL, 5 | `drift` float NOT NULL, 6 | `whenMjdUtc` float DEFAULT NULL, 7 | `whenUtc` bigint(20) DEFAULT NULL, 8 | `whenTai` bigint(20) DEFAULT NULL 9 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/schema/Science_Ccd_Exposure_Metadata.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `Science_Ccd_Exposure_Metadata` ( 2 | `scienceCcdExposureId` bigint(20) NOT NULL, 3 | `metadataKey` varchar(255) NOT NULL, 4 | `exposureType` tinyint(4) NOT NULL, 5 | `intValue` int(11) DEFAULT NULL, 6 | `doubleValue` double DEFAULT NULL, 7 | `stringValue` varchar(255) DEFAULT NULL, 8 | PRIMARY KEY (`scienceCcdExposureId`,`metadataKey`), 9 | KEY `IDX_metadataKey` (`metadataKey`) 10 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/schema/Science_Ccd_Exposure_Metadata_coadd_r.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `Science_Ccd_Exposure_Metadata_coadd_r` ( 2 | `scienceCcdExposureId` bigint(20) NOT NULL, 3 | `metadataKey` varchar(255) NOT NULL, 4 | `exposureType` tinyint(4) NOT NULL, 5 | `intValue` int(11) DEFAULT NULL, 6 | `doubleValue` double DEFAULT NULL, 7 | `stringValue` varchar(255) DEFAULT NULL, 8 | PRIMARY KEY (`scienceCcdExposureId`,`metadataKey`), 9 | KEY `IDX_metadataKey` (`metadataKey`) 10 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/schema/Science_Ccd_Exposure_To_Htm10_coadd_r.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `Science_Ccd_Exposure_To_Htm10_coadd_r` ( 2 | `scienceCcdExposureId` bigint(20) NOT NULL, 3 | `htmId10` int(11) NOT NULL, 4 | KEY `IDX_htmId10` (`htmId10`), 5 | KEY `IDX_scienceCcdExposureId` (`scienceCcdExposureId`) 6 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/data/schema/ZZZ_Db_Description.schema: -------------------------------------------------------------------------------- 1 | CREATE TABLE `ZZZ_Db_Description` ( 2 | `f` varchar(255) DEFAULT NULL, 3 | `r` varchar(255) DEFAULT NULL 4 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 5 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0002.0_fetchRunAndFieldById.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT distinct run, field 4 | FROM Science_Ccd_Exposure 5 | WHERE (run = 94) AND (field = 535); 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0002.1.1_fetchRunAndFieldById.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterName, sce.field, sce.camcol, sce.run 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE (sce.filterName like '%') 6 | AND (sce.field = 535) 7 | AND (sce.camcol like '%') 8 | AND (sce.run = 94); 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0002.1_fetchRunAndFieldById.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterName, sce.field, sce.camcol, sce.run 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE sce.filterName like '%' 6 | AND sce.field = 535 7 | AND sce.camcol like '%' 8 | AND sce.run = 94; 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0002.2.1_fetchRunAndFieldById.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | -- note, filterName is selected twice, is that needed??? 4 | -- see #2758, it is confusing qserv 5 | SELECT sce.scienceCcdExposureId, sce.filterName, sce.field, sce.camcol, sce.run, 6 | sce.filterId, sce.ra, sce.decl, sce.crpix1, sce.crpix2, 7 | sce.crval1, sce.crval2, sce.cd1_1, sce.cd1_2, sce.cd2_1, sce.cd2_2, 8 | sce.fluxMag0, sce.fluxMag0Sigma, sce.fwhm 9 | FROM Science_Ccd_Exposure AS sce 10 | WHERE (sce.filterName = 'g') 11 | AND (sce.field = 535) 12 | AND (sce.camcol = 1) 13 | AND (sce.run = 94); 14 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0002.2_fetchRunAndFieldById.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | -- note, filterName is selected twice, is that needed??? 4 | -- see #2758, it is confusing qserv 5 | 6 | SELECT sce.scienceCcdExposureId, sce.filterName, sce.field, sce.camcol, sce.run, 7 | sce.filterId, sce.ra, sce.decl, sce.crpix1, sce.crpix2, 8 | sce.crval1, sce.crval2, sce.cd1_1, sce.cd1_2, sce.cd2_1, sce.cd2_2, 9 | sce.fluxMag0, sce.fluxMag0Sigma, sce.fwhm 10 | FROM Science_Ccd_Exposure AS sce 11 | WHERE sce.filterName = 'g' 12 | AND sce.field = 535 13 | AND sce.camcol = 1 14 | AND sce.run = 94; 15 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0002_fetchRunAndFieldById.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT DISTINCT run, field 4 | FROM Science_Ccd_Exposure 5 | WHERE run = 94 AND field = 535; 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0005_showColumnsFromRefObject.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | -- Exclude special columns added by the partitioner and the Qserv ingest system. 4 | -- If the query wouldn't be restricted the integration test would fail. 5 | SHOW COLUMNS FROM RefObject WHERE Field NOT IN ('qserv_trans_id','chunkId','subChunkId'); 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0006.1_selectExposure.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterName, sce.field, sce.camcol, sce.run 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE (sce.filterName = 'g') 6 | AND (sce.field = 670) 7 | AND (sce.camcol = 2) 8 | AND (sce.run = 7202) 9 | ; 10 | 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0006_selectExposure.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterName, sce.field, sce.camcol, sce.run 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE sce.filterName = 'g' 6 | AND sce.field = 670 7 | AND sce.camcol = 2 8 | AND sce.run = 7202 9 | ; 10 | 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0009.1_selectCCDExposure.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterId, sce.filterName 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE (sce.filterName = 'g') 6 | AND (sce.field = 670) 7 | AND (sce.camcol = 2) 8 | AND (sce.run = 7202) 9 | ; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0009_selectCCDExposure.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterId, sce.filterName 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE sce.filterName = 'g' 6 | AND sce.field = 670 7 | AND sce.camcol = 2 8 | AND sce.run = 7202 9 | ; 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0011_selectDeepCoadd.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | -- pragma sortresult 4 | SELECT DISTINCT tract,patch,filterName 5 | FROM DeepCoadd 6 | ; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0012.1_selectDistinctDeepCoaddWithGivenTractPatchFiltername.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT DISTINCT tract, patch, filterName 4 | FROM DeepCoadd 5 | WHERE (tract = 0) 6 | AND (patch = '159,2') 7 | AND (filterName = 'r'); 8 | 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0012_selectDistinctDeepCoaddWithGivenTractPatchFiltername.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | -- pragma sortresult 4 | SELECT DISTINCT tract, patch, filterName 5 | FROM DeepCoadd 6 | WHERE tract = 0 7 | AND patch = '159,2' 8 | AND filterName = 'r'; 9 | 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0013.1_selectDeepCoadd2.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterName, sce.tract, sce.patch 4 | FROM DeepCoadd AS sce 5 | WHERE (sce.filterName = 'r') 6 | AND (sce.tract = 0) 7 | AND (sce.patch = '159,3'); 8 | 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0013_selectDeepCoadd2.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | -- pragma sortresult 4 | SELECT sce.filterName, sce.tract, sce.patch 5 | FROM DeepCoadd AS sce 6 | WHERE sce.filterName = 'r' 7 | AND sce.tract = 0 8 | AND sce.patch = '159,3'; 9 | 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0014.1_selectDeepCoadd3.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.DeepCoaddId, sce.filterName, sce.tract, sce.patch, sce.filterId, 4 | sce.ra, sce.decl, sce.crpix1, sce.crpix2, sce.crval1, 5 | sce.crval2, sce.cd1_1, sce.cd1_2, sce.cd2_1, sce.cd2_2, sce.fluxMag0, 6 | sce.fluxMag0Sigma, sce.measuredFwhm 7 | FROM DeepCoadd AS sce 8 | WHERE (sce.filterName = 'r') 9 | AND (sce.tract = 0) 10 | AND (sce.patch = '159,2'); 11 | 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0014.3_selectDeepCoadd3.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.DeepCoaddId, sce.filterName, sce.tract, sce.patch, sce.filterId, 4 | sce.filterName AS filterName_1, sce.ra, sce.decl, sce.crpix1, sce.crpix2, sce.crval1, 5 | sce.crval2, sce.cd1_1, sce.cd1_2, sce.cd2_1, sce.cd2_2, sce.fluxMag0, 6 | sce.fluxMag0Sigma, sce.measuredFwhm 7 | FROM DeepCoadd AS sce 8 | WHERE (sce.filterName = 'r') 9 | AND (sce.tract = 0) 10 | AND (sce.patch = '159,2'); 11 | 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0014_selectDeepCoadd3.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | -- pragma sortresult 4 | SELECT sce.DeepCoaddId, sce.filterName, sce.tract, sce.patch, sce.filterId, 5 | sce.ra, sce.decl, sce.crpix1, sce.crpix2, sce.crval1, 6 | sce.crval2, sce.cd1_1, sce.cd1_2, sce.cd2_1, sce.cd2_2, sce.fluxMag0, 7 | sce.fluxMag0Sigma, sce.measuredFwhm 8 | FROM DeepCoadd AS sce 9 | WHERE sce.filterName = 'r' 10 | AND sce.tract = 0 11 | AND sce.patch = '159,2'; 12 | 13 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0018.1_selectDeepCoaddWithGivenTractPatchFiltername.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterId, sce.filterName 4 | FROM DeepCoadd AS sce 5 | WHERE (sce.filterName = 'r') 6 | AND (sce.tract = 0) 7 | AND (sce.patch = '159,1'); 8 | 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0018_selectDeepCoaddWithGivenTractPatchFiltername.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | -- pragma sortresult 4 | SELECT sce.filterId, sce.filterName 5 | FROM DeepCoadd AS sce 6 | WHERE sce.filterName = 'r' 7 | AND sce.tract = 0 8 | AND sce.patch = '159,1'; 9 | 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0021.1_selectScienceCCDExposure.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT distinct run, field 4 | FROM Science_Ccd_Exposure 5 | WHERE run = 94 6 | AND field = 535; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0021_selectScienceCCDExposure.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT distinct run, field 4 | FROM Science_Ccd_Exposure 5 | WHERE (run = 94) 6 | AND (field = 535); 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0022.1_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterName, sce.field, sce.camcol, sce.run 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE (sce.filterName like '%') 6 | AND (sce.field = 535) 7 | AND (sce.camcol like '%') 8 | AND (sce.run = 94); 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0022_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterName, sce.field, sce.camcol, sce.run 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE sce.filterName like '%' 6 | AND sce.field = 535 7 | AND sce.camcol like '%' 8 | AND sce.run = 94; 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0023.1_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.scienceCcdExposureId, sce.field, sce.camcol, sce.run, 4 | sce.filterId, sce.filterName, sce.ra, sce.decl, sce.crpix1, sce.crpix2, 5 | sce.crval1, sce.crval2, sce.cd1_1, sce.cd1_2, sce.cd2_1, sce.cd2_2, 6 | sce.fluxMag0, sce.fluxMag0Sigma, sce.fwhm 7 | FROM Science_Ccd_Exposure AS sce 8 | WHERE (sce.filterName = 'g') 9 | AND (sce.field = 535) 10 | AND (sce.camcol = 1) 11 | AND (sce.run = 94); 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0023_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.scienceCcdExposureId, sce.field, sce.camcol, sce.run, 4 | sce.filterId, sce.filterName, sce.ra, sce.decl, sce.crpix1, sce.crpix2, 5 | sce.crval1, sce.crval2, sce.cd1_1, sce.cd1_2, sce.cd2_1, sce.cd2_2, 6 | sce.fluxMag0, sce.fluxMag0Sigma, sce.fwhm 7 | FROM Science_Ccd_Exposure AS sce 8 | WHERE sce.filterName = 'g' 9 | AND sce.field = 535 10 | AND sce.camcol = 1 11 | AND sce.run = 94; 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0025.1_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterName, sce.field, sce.camcol, sce.run 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE (sce.filterName = 'g') 6 | AND (sce.field = 535) 7 | AND (sce.camcol = 1) 8 | AND (sce.run = 94); 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0025_selectScienceCCDExposureWithFilternameFieldCamcolRun.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterName, sce.field, sce.camcol, sce.run 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE sce.filterName = 'g' 6 | AND sce.field = 535 7 | AND sce.camcol = 1 8 | AND sce.run = 94; 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0028.1_selectScienceCCDExposure.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | 4 | SELECT sce.filterId, sce.filterName 5 | FROM Science_Ccd_Exposure AS sce 6 | WHERE (sce.filterName = 'g') 7 | AND (sce.field = 535) 8 | AND (sce.camcol = 1) 9 | AND (sce.run = 94); 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0028_selectScienceCCDExposure.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT sce.filterId, sce.filterName 4 | FROM Science_Ccd_Exposure AS sce 5 | WHERE sce.filterName = 'g' 6 | AND sce.field = 535 7 | AND sce.camcol = 1 8 | AND sce.run = 94; 9 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0030.1_selectScienceCCDExposureByRunField.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT distinct run, field 4 | FROM Science_Ccd_Exposure 5 | WHERE run = 94 AND field = 536; 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0030.2_selectScienceCCDExposureByRunField.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SELECT distinct run, field 4 | FROM Science_Ccd_Exposure 5 | WHERE (run = 94) AND (field = 536); 6 | 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0031_selectEmptyString.sql: -------------------------------------------------------------------------------- 1 | -- Used to reproduce DM-1822: Fix czar assertion failure 2 | 3 | SELECT scienceCcdExposureId, metadataKey, exposureType, intValue, doubleValue, stringValue 4 | FROM Science_Ccd_Exposure_Metadata 5 | WHERE scienceCcdExposureId=7202320671 AND stringValue=''; 6 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0032_longSelectListItem.sql: -------------------------------------------------------------------------------- 1 | -- Used to reproduce DM-20693 2 | 3 | SELECT scienceCcdExposureId FROM Science_Ccd_Exposure_To_Htm10_coadd_r; 4 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0033_selectCountFromScience_Ccd_Exposure.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM Science_Ccd_Exposure; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0034_selectCountFromScience_Ccd_Exposure_Metadata.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM Science_Ccd_Exposure_Metadata; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0035_selectCountFromScience_Ccd_Exposure_Metadata_coadd_r.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM Science_Ccd_Exposure_Metadata_coadd_r; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0036_select_CountFromScience_Ccd_Exposure_To_Htm10_coadd_r.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM Science_Ccd_Exposure_To_Htm10_coadd_r; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0037_selectCountFromScience_Ccd_Exposure_coadd_r.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM Science_Ccd_Exposure_coadd_r; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0038_selectCountFromRefObject.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM RefObject; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0039_selectCountFromRunDeepSource.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM RunDeepSource; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0040_selectCountFromRunDeepForcedSource.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM RunDeepForcedSource; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0041_selectCountFromRunDeepSrcMatch.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM RefDeepSrcMatch; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0042_selectCountFromAvgForcedPhot.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM AvgForcedPhot; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0043_selectCountFromAvgForcedPhotYearly.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM AvgForcedPhotYearly; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0044_selectCountFromDeepCoadd.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM DeepCoadd; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0045_selectCountFromDeepCoaddMetadata.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM DeepCoadd_Metadata; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0046_selectCountFromDeepCoadd_To_Htm10.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM DeepCoadd_To_Htm10; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0047_selectCountFromFilter.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM Filter; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0048_selectCountFromLeapSeconds.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM LeapSeconds; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/0049_selectCountFromZZZ_Db_Description.sql: -------------------------------------------------------------------------------- 1 | -- Basic test to ensure the table exists and has the correct number of rows 2 | SELECT COUNT(*) FROM ZZZ_Db_Description; 3 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/unsupported_syntax/0007_selectExposureWithPoly.sql: -------------------------------------------------------------------------------- 1 | -- The syntax isn't presently supported. 2 | 3 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 4 | 5 | SELECT scisql_s2CPolyToBin(54.96, -0.64, 55.12, -0.64, 6 | 55.12, -0.41, 54.96, -0.41) 7 | FROM Science_Ccd_Exposure AS sce 8 | WHERE (sce.filterName = 'g') 9 | AND (sce.field = 670) 10 | AND (sce.camcol = 2) 11 | AND (sce.run = 7202) INTO @poly; 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/unsupported_syntax/0008_selectRefObjectInPoly.sql: -------------------------------------------------------------------------------- 1 | -- The syntax isn't presently supported. 2 | 3 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 4 | 5 | SET @poly = scisql_s2CPolyToBin(54.9, -1.25, 6 | 55.0, -1.25, 7 | 55.0, -0.75, 8 | 54.9, -0.75); 9 | 10 | SELECT sro.refObjectId, sro.isStar, sro.ra, sro.decl, sro.uMag, sro.gMag, 11 | sro.rMag, sro.iMag, sro.zMag 12 | FROM RefObject AS sro 13 | WHERE (scisql_s2PtInCPoly(sro.ra, sro.decl, @poly) = 1); 14 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/unsupported_syntax/0016_selectDeepCoaddInPoly.sql: -------------------------------------------------------------------------------- 1 | -- This syntax is not presently supported in Qserv 2 | 3 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 4 | 5 | SELECT scisql_s2CPolyToBin(sce.corner1Ra, sce.corner1Decl, sce.corner2Ra, sce.corner2Decl, 6 | sce.corner3Ra, sce.corner3Decl, sce.corner4Ra, sce.corner4Decl) 7 | FROM DeepCoadd AS sce 8 | WHERE (sce.filterName = 'g') 9 | AND (sce.tract = 0) 10 | AND (sce.patch = '159,1') INTO @poly; 11 | 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/unsupported_syntax/0017_selectRefObjectInPoly.sql: -------------------------------------------------------------------------------- 1 | -- This syntax is not presently supported in Qserv 2 | 3 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 4 | 5 | SELECT sro.refObjectId, sro.isStar, sro.ra, sro.decl, sro.uMag, sro.gMag, 6 | sro.rMag, sro.iMag, sro.zMag 7 | FROM RefObject AS sro 8 | WHERE (scisql_s2PtInCPoly(sro.ra, sro.decl, @poly) = 1); 9 | 10 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/unsupported_syntax/0026_selectScienceCCDExposureInPoly.sql: -------------------------------------------------------------------------------- 1 | -- Qserv doesn't presently support nested SciSQL functions or setting SQL variables. 2 | 3 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 4 | 5 | SELECT scisql_s2CPolyToBin(sce.corner1Ra, sce.corner1Decl, sce.corner2Ra, sce.corner2Decl, 6 | sce.corner3Ra, sce.corner3Decl, sce.corner4Ra, sce.corner4Decl) 7 | FROM Science_Ccd_Exposure AS sce 8 | WHERE (sce.filterName = 'g') 9 | AND (sce.field = 535) 10 | AND (sce.camcol = 1) 11 | AND (sce.run = 94) INTO @poly; 12 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/unsupported_syntax/0027_selectRefObjectInPoly.sql: -------------------------------------------------------------------------------- 1 | -- Qserv doesn't presently support nested SciSQL functions or setting SQL variables. 2 | 3 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 4 | 5 | SET @poly = scisql_s2CPolyToBin(54.9, -1.25, 6 | 55.0, -1.25, 7 | 55.0, -0.75, 8 | 54.9, -0.75); 9 | 10 | SELECT sro.refObjectId, sro.isStar, sro.ra, sro.decl, sro.uMag, 11 | sro.gMag, sro.rMag, sro.iMag, sro.zMag 12 | FROM RefObject AS sro 13 | WHERE (scisql_s2PtInCPoly(sro.ra, sro.decl, @poly) = 1) ; 14 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/unsupported_syntax/README.txt: -------------------------------------------------------------------------------- 1 | Queries in this folder are based on the SQL syntax that is not presently 2 | supported by Qserv. -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/unsupported_tables/0001_showColumnsFromSource.sql: -------------------------------------------------------------------------------- 1 | -- The query is disabled because it refers to the table DeepSource 2 | -- which doesn't exist in this catalog. 3 | 4 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 5 | 6 | SHOW COLUMNS FROM DeepSource; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/unsupported_tables/0020_showColumnsFromDeepforcedsource.sql: -------------------------------------------------------------------------------- 1 | -- The query is disabled because it refers to the table DeepForcedSource 2 | -- which doesn't exist in this catalog. 3 | 4 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 5 | 6 | SHOW COLUMNS FROM DeepForcedSource; 7 | -------------------------------------------------------------------------------- /itest_src/datasets/case03/queries/unsupported_tables/README.txt: -------------------------------------------------------------------------------- 1 | Queries found in this folder are referring to tables that do not exist in 2 | the catalog and they may need to be eliminated. It's not clear why the queries 3 | were put here. 4 | -------------------------------------------------------------------------------- /itest_src/datasets/case04/data/DeepCoadd.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case04/data/DeepCoadd.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case04/data/DeepForcedSource.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case04/data/DeepForcedSource.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case04/data/DeepSource.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case04/data/DeepSource.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case04/data/DeepSourceDupKeys.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case04/data/DeepSourceDupKeys.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case04/data/Science_Ccd_Exposure.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/itest_src/datasets/case04/data/Science_Ccd_Exposure.csv.gz -------------------------------------------------------------------------------- /itest_src/datasets/case04/data/description.yaml: -------------------------------------------------------------------------------- 1 | tables: 2 | directors: ['DeepSource', 'DeepSourceDupKeys'] 3 | partitioned-tables: ['DeepSource', 'DeepSourceDupKeys', 'DeepForcedSource'] 4 | extensions: 5 | data: '.csv' 6 | schema: '.schema' 7 | zip: '.gz' 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case04/data/ingest/database.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 12, 3 | "auth_key":"", 4 | "database":"qcase04", 5 | "auto_build_secondary_index":1, 6 | "local_load_secondary_index":1, 7 | "num_stripes":85, 8 | "num_sub_stripes":14, 9 | "overlap":0.001 10 | } 11 | -------------------------------------------------------------------------------- /itest_src/datasets/case04/data/partition/DeepCoadd.json: -------------------------------------------------------------------------------- 1 | { 2 | "in":{ 3 | "csv":{ 4 | "enclose":"\"" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case04/data/partition/Science_Ccd_Exposure.json: -------------------------------------------------------------------------------- 1 | { 2 | "in":{ 3 | "csv":{ 4 | "enclose":"\"" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case04/data/partition/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "htm":{ 3 | "level":8 4 | }, 5 | "dirDb":"qcase04", 6 | "dirTable":"DeepSource", 7 | "part":{ 8 | "num-stripes":85, 9 | "num-sub-stripes":14, 10 | "chunk":"chunkId", 11 | "sub-chunk":"subChunkId", 12 | "overlap":0.001 13 | }, 14 | "in":{ 15 | "csv":{ 16 | "null":"\\N", 17 | "delimiter":",", 18 | "escape":"\\" 19 | } 20 | }, 21 | "out":{ 22 | "csv":{ 23 | "null":"\\N", 24 | "delimiter":",", 25 | "escape":"\\", 26 | "no-quote":true 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /itest_src/datasets/case04/queries/0001_showColumnsFromSource.sql: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SHOW COLUMNS FROM DeepSource; 4 | -------------------------------------------------------------------------------- /itest_src/datasets/case04/queries/0011_selectDeepCoadd.sql: -------------------------------------------------------------------------------- 1 | -- Note: ordering is required to compare MySQL vs Qserv results because 2 | -- partial results reported for Qserv chunked queries have non-deterministic 3 | -- order. 4 | 5 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 6 | 7 | SELECT DISTINCT tract,patch,filterName FROM DeepCoadd ORDER BY tract,patch,filterName; 8 | -------------------------------------------------------------------------------- /itest_src/datasets/case04/queries/0018_selectDeepCoaddWithGivenTractPatchFiltername.sql: -------------------------------------------------------------------------------- 1 | -- Note: this query is returning the empty result set. This may need 2 | -- to be investigated ad fixed. 3 | 4 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 5 | 6 | -- pragma sortresult 7 | SELECT sce.filterId, sce.filterName 8 | FROM DeepCoadd AS sce 9 | WHERE sce.filterName = 'r' 10 | AND sce.tract = 0 11 | AND sce.patch = '159,1'; 12 | 13 | -------------------------------------------------------------------------------- /itest_src/datasets/case04/queries/0020_showColumnsFromDeepForcedSource: -------------------------------------------------------------------------------- 1 | -- https://dev.lsstcorp.org/trac/wiki/dbPipeQAQueries 2 | 3 | SHOW COLUMNS FROM DeepForcedSource; 4 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.black] 2 | line-length = 110 3 | target-version = ['py38'] 4 | -------------------------------------------------------------------------------- /src/.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | Language: Cpp 3 | BasedOnStyle: Google 4 | ColumnLimit: 110 5 | IndentWidth: 4 6 | AccessModifierOffset: -4 7 | SortIncludes: false # reordering may break existing code 8 | ConstructorInitializerIndentWidth: 8 9 | ContinuationIndentWidth: 8 10 | CompactNamespaces: true 11 | ... 12 | -------------------------------------------------------------------------------- /src/admin/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/admin/.gitignore -------------------------------------------------------------------------------- /src/admin/bin/qserv-kraken: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import sys 4 | 5 | from lsst.qserv.testing.main import main 6 | 7 | sys.exit(main()) 8 | -------------------------------------------------------------------------------- /src/admin/etc/log.cnf: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=DEBUG, CONSOLE 2 | log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 3 | log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 4 | log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-ddTHH:mm:ss.SSSZ} LWP %-5X{LWP} %-5p %m%n 5 | 6 | log4j.logger.lsst.qserv.xrdssi.msgs=WARN 7 | -------------------------------------------------------------------------------- /src/admin/examples/_template_database.params: -------------------------------------------------------------------------------- 1 | [db_info] 2 | 3 | # For LSST, this represents L1, L2, L3 4 | storageClass: L2 5 | 6 | # Allowed values are: 0, 1 7 | # In this example partitioning is turned on 8 | partitioning: 1 9 | 10 | # If partitioning is on, you must specific partitioning strategy 11 | # partitioningStrategy: 12 | # Currently supported partitioningStrategies are: sphBox 13 | # You must also create [] section. 14 | 15 | # Partitioning for individual tables can be turn 16 | # off on table-by-table bases, see createTable 17 | # config file for details. 18 | 19 | partitioning: 1 20 | partitioningStrategy: sphBox 21 | 22 | [sphBox] 23 | nStripes: 85 24 | nSubStripes: 12 25 | overlap: 0.0001 26 | -------------------------------------------------------------------------------- /src/admin/examples/dbNonPartitioned.params: -------------------------------------------------------------------------------- 1 | [db_info] 2 | partitioning: 0 3 | -------------------------------------------------------------------------------- /src/admin/examples/dbPartitioned.params: -------------------------------------------------------------------------------- 1 | [db_info] 2 | storageClass: L2 3 | partitioning: 1 4 | partitioningStrategy: sphBox 5 | nStripes: 85 6 | nSubStripes: 12 7 | overlap: 0.0001 8 | 9 | -------------------------------------------------------------------------------- /src/admin/examples/tbSchema_Exposure.sql: -------------------------------------------------------------------------------- 1 | 2 | create table Exposure ( 3 | i int 4 | ); 5 | -------------------------------------------------------------------------------- /src/admin/examples/tbSchema_Source.sql: -------------------------------------------------------------------------------- 1 | 2 | create table Source ( 3 | sourceId bigint, 4 | ra float, 5 | decl float 6 | ); 7 | -------------------------------------------------------------------------------- /src/admin/examples/tb_Exposure.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: Exposure 3 | partitioning: 0 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tb_Exposure.sql 5 | -------------------------------------------------------------------------------- /src/admin/examples/tb_Exposure.sql: -------------------------------------------------------------------------------- 1 | 2 | create table Exposure ( 3 | i int 4 | ); 5 | -------------------------------------------------------------------------------- /src/admin/examples/tb_Object.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: Object 3 | partitioning: 1 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tb_Object.sql 5 | compression: 0 6 | subChunks: 1 7 | dirColName: objectId 8 | dirTable: Object 9 | latColName: decl_PS 10 | lonColName: ra_PS 11 | -------------------------------------------------------------------------------- /src/admin/examples/tb_Science_Ccd_Exposure.sql: -------------------------------------------------------------------------------- 1 | 2 | create table Science_Ccd_Exposure ( 3 | i int 4 | ); 5 | -------------------------------------------------------------------------------- /src/admin/examples/tb_Source.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: Source 3 | partitioning: 1 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tb_Source.sql 5 | compression: 0 6 | subChunks: 0 7 | dirTable: Object 8 | latColName: ra 9 | lonColName: decl 10 | dirColName: objId 11 | -------------------------------------------------------------------------------- /src/admin/examples/tb_Source.sql: -------------------------------------------------------------------------------- 1 | 2 | create table Source ( 3 | sourceId bigint, 4 | objId bigint, 5 | ra float, 6 | decl float 7 | ); 8 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_dbNp.params: -------------------------------------------------------------------------------- 1 | [db_info] 2 | partitioning: 0 3 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_dbPt.params: -------------------------------------------------------------------------------- 1 | [db_info] 2 | storageClass: L2 3 | partitioning: 1 4 | partitioningStrategy: sphBox 5 | nStripes: 60 6 | nSubStripes: 18 7 | overlap: 0.025 8 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_tbExposure.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: Exposure 3 | partitioning: 0 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_Exposure.sql 5 | compression: 0 6 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_tbFilter.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: Filter 3 | partitioning: 0 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_Exposure.sql 5 | compression: 0 6 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_tbLeapSeconds.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: LeapSeconds 3 | partitioning: 0 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_LeapSeconds.sql 5 | compression: 0 6 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_tbObject_ls.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: Object 3 | partitioning: 1 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_Object.sql 5 | compression: 0 6 | subChunks: 1 7 | dirColName: objectIdObjTest 8 | dirTable: Object 9 | latColName: decl_Test 10 | lonColName: ra_Test 11 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_tbObject_rp.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: Object 3 | partitioning: 1 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_Object.sql 5 | compression: 0 6 | subChunks: 1 7 | dirColName: objectIdObjTest 8 | dirTable: Object 9 | latColName: decl 10 | lonColName: ra 11 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_tbRefObjMatch.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: RefObjMatch 3 | partitioning: 1 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_RefObjMatch.sql 5 | compression: 0 6 | match: 1 7 | dirTable1: SimRefObject 8 | dirColName1: refObjectId 9 | dirTable2: Object 10 | dirColName2: objectId 11 | flagColName: flags 12 | subChunks: 0 13 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_tbScience_Ccd_Exposure.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: Science_Ccd_Exposure 3 | partitioning: 0 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_Exposure.sql 5 | compression: 0 6 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_tbSimRefObject.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: SimRefObject 3 | partitioning: 1 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_SimRefObject.sql 5 | compression: 0 6 | subChunks: 1 7 | dirColName: refObjectId 8 | dirTable: SimRefObject 9 | latColName: refDecl 10 | lonColName: refRa 11 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_tbSource.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: Source 3 | partitioning: 1 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_Source.sql 5 | compression: 0 6 | subChunks: 0 7 | dirColName: objectIdSourceTest 8 | dirTable: Object 9 | latColName: declObjectTest 10 | lonColName: raObjectTest 11 | -------------------------------------------------------------------------------- /src/admin/examples/testMap_tbSource2.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: Source2 3 | partitioning: 1 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_Source.sql 5 | compression: 0 6 | subChunks: 0 7 | dirColName: objectIdObjTest 8 | dirTable: Object 9 | -------------------------------------------------------------------------------- /src/admin/examples/testQserv_loadIt: -------------------------------------------------------------------------------- 1 | drop database LSST; 2 | create database LSST admin/examples/dbPartitioned.params; 3 | create table LSST.DeepSource admin/examples/testQserv_tbDeepSource.params; 4 | create table LSST.DeepForcedSource admin/examples/testQserv_tbDeepFSource.params; 5 | -------------------------------------------------------------------------------- /src/admin/examples/testQserv_tbDeepFSource.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: DeepForcedSource 3 | partitioning: 1 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_Object.sql 5 | compression: 0 6 | subChunks: 0 7 | dirColName: objectId 8 | dirTable: DeepSource 9 | latColName: decl 10 | lonColName: ra 11 | -------------------------------------------------------------------------------- /src/admin/examples/testQserv_tbDeepSource.params: -------------------------------------------------------------------------------- 1 | [table_info] 2 | tableName: DeepSource 3 | partitioning: 1 4 | schemaFile: /u1/qserv/sandbox/qserv/meta/examples/tbSchema_Object.sql 5 | compression: 0 6 | subChunks: 0 7 | dirColName: id 8 | dirTable: DeepSource 9 | latColName: decl 10 | lonColName: ra 11 | -------------------------------------------------------------------------------- /src/admin/python/lsst/qserv/admin/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/admin/python/lsst/qserv/admin/__init__.py -------------------------------------------------------------------------------- /src/admin/python/lsst/qserv/admin/cli/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/admin/python/lsst/qserv/admin/cli/__init__.py -------------------------------------------------------------------------------- /src/admin/python/lsst/qserv/admin/cli/chunk_0.txt: -------------------------------------------------------------------------------- 1 | 1,0.1,-89.5,123.456,0,1 2 | -------------------------------------------------------------------------------- /src/admin/python/lsst/qserv/admin/qservCli/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/admin/python/lsst/qserv/admin/qservCli/__init__.py -------------------------------------------------------------------------------- /src/admin/python/lsst/qserv/admin/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/admin/python/lsst/qserv/admin/tests/__init__.py -------------------------------------------------------------------------------- /src/admin/python/lsst/qserv/testing/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | from .config import * 3 | -------------------------------------------------------------------------------- /src/admin/python/mypy.ini: -------------------------------------------------------------------------------- 1 | [mypy] 2 | ignore_missing_imports = true 3 | disallow_incomplete_defs = true 4 | disallow_untyped_defs = true 5 | 6 | #--warn-unused-configs 7 | #--disallow-any-generics 8 | #--disallow-subclassing-any 9 | #--disallow-untyped-calls 10 | #--check-untyped-defs, 11 | #--disallow-untyped-decorators 12 | #--no-implicit-optional 13 | #--warn-redundant-casts 14 | #--warn-unused-ignores 15 | #--warn-return-any 16 | #--no-implicit-reexport 17 | #--strict-equality 18 | -------------------------------------------------------------------------------- /src/admin/templates/proxy/etc/my-proxy.cnf.jinja: -------------------------------------------------------------------------------- 1 | [mysql-proxy] 2 | 3 | proxy-address = :4040 4 | proxy-backend-addresses = {{ proxy_backend_address }} 5 | 6 | log-level=debug 7 | 8 | proxy-connect-timeout=30 9 | -------------------------------------------------------------------------------- /src/cconfig/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(cconfig SHARED) 2 | 3 | target_sources(cconfig PRIVATE 4 | CzarConfig.cc 5 | ) 6 | 7 | target_include_directories(cconfig PRIVATE 8 | ${XROOTD_INCLUDE_DIRS} 9 | ) 10 | 11 | target_link_libraries(cconfig PUBLIC 12 | log 13 | XrdSsiLib 14 | ) 15 | 16 | install( 17 | TARGETS cconfig 18 | ) 19 | -------------------------------------------------------------------------------- /src/css/python/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/css/python/__init__.py -------------------------------------------------------------------------------- /src/global/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(global SHARED) 2 | 3 | target_sources(global PRIVATE 4 | DbTable.cc 5 | debugUtil.cc 6 | ResourceUnit.cc 7 | sqltoken.cc 8 | stringUtil.cc 9 | ) 10 | 11 | target_link_libraries(global PUBLIC 12 | log 13 | ) 14 | 15 | install( 16 | TARGETS global 17 | ) 18 | 19 | add_executable(testResourceUnit testResourceUnit.cc) 20 | 21 | target_link_libraries(testResourceUnit 22 | global 23 | Boost::unit_test_framework 24 | ) 25 | 26 | add_test(NAME testResourceUnit COMMAND testResourceUnit) 27 | -------------------------------------------------------------------------------- /src/mimic/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(DIRECTORY python/lsst/utils DESTINATION ${CMAKE_INSTALL_PREFIX}/python/lsst/) 2 | -------------------------------------------------------------------------------- /src/mimic/README.txt: -------------------------------------------------------------------------------- 1 | The mimic module has small amounts of python code copied from modules that we do 2 | not want to import all of, because of unused indirect dependencies, or 3 | installation time or size. 4 | 5 | For example, lsst.log depends on a couple functions in lsst.utils, and 6 | lsst.utils depends on numpy, but lsst.log does not indirectly depend on numpy; 7 | i.e. lsst.log does not use functions in lsst.utils that depend on numpy. Since 8 | the amount of code used by lsst.log in lsst.utils is small, we copy the code 9 | here. 10 | -------------------------------------------------------------------------------- /src/mysql/SConscript.test: -------------------------------------------------------------------------------- 1 | # -*- python -*- 2 | Import('env') 3 | Import('libProducts') 4 | Import('defaultTgts') 5 | Import('findLibs') 6 | 7 | import os 8 | import itertools 9 | 10 | 11 | programs = [] 12 | # extDeps 13 | extDeps = "mysqlclient_r boost_thread boost_system log log4cxx ssl crypto".split() 14 | 15 | modDeps = 'mysql sql'.split() # deps on other modules 16 | deps = itertools.chain(*map(lambda m: defaultTgts[m], modDeps)) 17 | deps = map(lambda i:i, deps) # un-chain 18 | deps.sort(key=str) # Prevent dependency-order change rebuilding. 19 | p = env.Program(['testLocalInfile.cc'] + deps, 20 | LIBS=findLibs(extDeps)) 21 | programs.append(p) 22 | 23 | Return('programs') 24 | -------------------------------------------------------------------------------- /src/partition/config/PT1.1/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "htm": { 3 | "level": 8 4 | }, 5 | "part": { 6 | "num-stripes": 85, 7 | "num-sub-stripes": 12, 8 | "chunk": "chunkId", 9 | "sub-chunk": "subChunkId" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/partition/config/PT1.2/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "htm": { 3 | "level": 8 4 | }, 5 | "part": { 6 | "num-stripes": 85, 7 | "num-sub-stripes": 12, 8 | "chunk": "chunkId", 9 | "sub-chunk": "subChunkId" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/partition/doc/subchunks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/partition/doc/subchunks.png -------------------------------------------------------------------------------- /src/partition/tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FUNCTION(partition_tests) 2 | FOREACH(TEST IN ITEMS ${ARGV}) 3 | add_executable(${TEST} ${TEST}.cc) 4 | target_link_libraries(${TEST} PRIVATE 5 | partition 6 | Boost::filesystem 7 | Boost::unit_test_framework 8 | ) 9 | add_test(NAME ${TEST} COMMAND ${TEST}) 10 | ENDFOREACH() 11 | ENDFUNCTION() 12 | 13 | partition_tests( 14 | chunkIndex 15 | configStore 16 | csv 17 | fileUtils 18 | geometry 19 | htmIndex 20 | mapReduce 21 | objectIndex 22 | vector 23 | ) 24 | -------------------------------------------------------------------------------- /src/proto/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(proto SHARED) 2 | 3 | target_compile_options(proto PRIVATE 4 | -Wno-maybe-uninitialized 5 | ) 6 | 7 | protobuf_generate_cpp(PROTO_PB_SRCS PROTO_PB_HDRS worker.proto) 8 | 9 | target_sources(proto PRIVATE 10 | ${PROTO_PB_SRCS} 11 | ${PROTO_PB_HDRS} 12 | FrameBuffer.cc 13 | ProtoHeaderWrap.cc 14 | ScanTableInfo.cc 15 | ) 16 | 17 | target_link_libraries(proto PUBLIC 18 | log 19 | protobuf 20 | ) 21 | 22 | install( 23 | TARGETS proto 24 | ) 25 | 26 | add_executable(testProtocol testProtocol.cc) 27 | 28 | target_link_libraries(testProtocol 29 | proto 30 | crypto 31 | Boost::unit_test_framework 32 | ) 33 | 34 | add_test(NAME testProtocol COMMAND testProtocol) 35 | 36 | -------------------------------------------------------------------------------- /src/proto/COPYRIGHT: -------------------------------------------------------------------------------- 1 | 2011-2015 LSST Corp, 2015-2018 SLAC 2 | -------------------------------------------------------------------------------- /src/proxy/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(czarProxy MODULE) 2 | 3 | set_target_properties(czarProxy PROPERTIES 4 | PREFIX "" 5 | ) 6 | 7 | target_sources(czarProxy PRIVATE 8 | czarProxy.cc 9 | czarProxyLuaWrapper.cc 10 | ) 11 | 12 | target_include_directories(czarProxy PRIVATE 13 | ${LUA_INCLUDE_DIR} 14 | ) 15 | 16 | target_link_libraries(czarProxy PRIVATE 17 | log 18 | lua-5.1 19 | cconfig 20 | ccontrol 21 | czar 22 | parser 23 | qana 24 | query 25 | qdisp 26 | qproc 27 | rproc 28 | css 29 | qmeta 30 | xrdreq) 31 | 32 | install(TARGETS czarProxy DESTINATION ${CMAKE_INSTALL_PREFIX}/lua/qserv/lib) 33 | install(FILES mysqlProxy.lua DESTINATION ${CMAKE_INSTALL_PREFIX}/lua/qserv/scripts) 34 | -------------------------------------------------------------------------------- /src/proxy/README.txt: -------------------------------------------------------------------------------- 1 | 2 | # Start mysql proxy and rpcServer using provided scripts 3 | 4 | # Talk to mysql proxy from mysql client using 5 | mysql --port=4040 --protocol=TCP 6 | 7 | 8 | # packages needed for lua (on ubuntu) 9 | # liblua5.1-socket2 liblua5.1-xmlrpc0 lua 10 | 11 | # Note: luaxmlrpc 1.0b (dec 2, 2004) has a bug. 12 | # At minimum, replace "module (arg and arg[1])" with module (...)" 13 | # lua-xmlrpc author suggests using CVS head version. 14 | # We recommend unpacking Ubuntu's liblua5.1-xmlrpc0_1.0b-4_all.deb . 15 | # Put the package's /usr/share/lua/5.1/xmlrpc in $PREFIX/share/lua/5.1/xmlrpc 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/qana/README_qana.rst: -------------------------------------------------------------------------------- 1 | ============= 2 | Module "qana" 3 | ============= 4 | 5 | Overview 6 | ======== 7 | The qana module is responsible for the *analysis* of SQL queries in 8 | Qserv. It contains logic to extract query information and manipulate 9 | queries in preparation for execution and result handling. 10 | -------------------------------------------------------------------------------- /src/qhttp/testdata/css/style.css: -------------------------------------------------------------------------------- 1 | img { 2 | border: 1px solid black; 3 | position: relative; 4 | } 5 | -------------------------------------------------------------------------------- /src/qhttp/testdata/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/qhttp/testdata/images/favicon.ico -------------------------------------------------------------------------------- /src/qhttp/testdata/images/lsst.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/qhttp/testdata/images/lsst.gif -------------------------------------------------------------------------------- /src/qhttp/testdata/images/lsst.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/qhttp/testdata/images/lsst.jpg -------------------------------------------------------------------------------- /src/qhttp/testdata/images/lsst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/qhttp/testdata/images/lsst.png -------------------------------------------------------------------------------- /src/qhttp/testdata/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | qdht test 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/qhttp/testdata/js/main.js: -------------------------------------------------------------------------------- 1 | var img1 = document.getElementById("img1"); 2 | var img2 = document.getElementById("img2"); 3 | var img3 = document.getElementById("img3"); 4 | 5 | var theta = 0.0; 6 | 7 | function frame() { 8 | img1.style.top = (25 + 25*Math.sin(theta + 0.0)) + "px"; 9 | img2.style.top = (25 + 25*Math.sin(theta + 0.5)) + "px"; 10 | img3.style.top = (25 + 25*Math.sin(theta + 1.0)) + "px"; 11 | theta = theta + .02; 12 | } 13 | 14 | setInterval(frame, 5); 15 | -------------------------------------------------------------------------------- /src/qmeta/schema/migrate-2-to-3.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- Migration script from version 2 to version 3 of QMeta database: 3 | -- 4 | 5 | -- QInfo table adds resultQuery column, migration script expecets this table to exist. 6 | ALTER TABLE `QInfo` ADD COLUMN (`resultQuery` TEXT); 7 | 8 | -- QInfo table drops proxyOrderBy column 9 | ALTER TABLE `QInfo` DROP COLUMN `proxyOrderBy`; 10 | -------------------------------------------------------------------------------- /src/qmeta/schema/migrate-6-to-7.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- Migration script from version 6 to version 7 of QMeta database: 3 | -- 4 | -- 5 | -- Rename resultBytes and resultRows to collectedBytes and collectedRows in QInfo. 6 | -- Also, add finalRows to QInfo 7 | -- 8 | ALTER TABLE `QInfo` 9 | RENAME COLUMN `resultBytes` TO `collectedBytes`, 10 | RENAME COLUMN `resultRows` TO `collectedRows`, 11 | ADD `finalRows` INT DEFAULT 0 COMMENT 'number of rows in the final result'; 12 | -------------------------------------------------------------------------------- /src/qmeta/schema/migrate-7-to-8.sql: -------------------------------------------------------------------------------- 1 | -- Fix a bug that was introduced earlier. In the previous version of 2 | -- the schema these columns were defined as 'INT' (32-bits) which was 3 | -- causing Qserv to crash when result set sizes exceeded the limit. 4 | ALTER TABLE `QInfo` MODIFY COLUMN `collectedBytes` BIGINT DEFAULT 0 COMMENT 'number of bytes collected from workers'; 5 | ALTER TABLE `QInfo` MODIFY COLUMN `collectedRows` BIGINT DEFAULT 0 COMMENT 'number of rows collected from workers'; 6 | ALTER TABLE `QInfo` MODIFY COLUMN `finalRows` BIGINT DEFAULT 0 COMMENT 'number of rows in the final result'; 7 | -------------------------------------------------------------------------------- /src/qmeta/schema/migrate-8-to-9.sql: -------------------------------------------------------------------------------- 1 | -- This index had significant performance implications for Qserv. 2 | DROP INDEX IF EXISTS `QInfo_query_index` ON `QInfo`; 3 | -------------------------------------------------------------------------------- /src/replica/COPYRIGHT: -------------------------------------------------------------------------------- 1 | 2011-2015 LSST Corp, 2015-2019 SLAC 2 | -------------------------------------------------------------------------------- /src/replica/config/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(replica_config OBJECT) 2 | target_sources(replica_config PRIVATE 3 | ConfigCzar.cc 4 | ConfigDatabase.cc 5 | ConfigDatabaseFamily.cc 6 | ConfigHost.cc 7 | ConfigParserJSON.cc 8 | ConfigParserMySQL.cc 9 | ConfigTable.cc 10 | ConfigTestData.cc 11 | ConfigWorker.cc 12 | Configuration.cc 13 | ConfigurationSchema.cc 14 | ) 15 | target_link_libraries(replica_config PUBLIC 16 | log 17 | sphgeom 18 | ) -------------------------------------------------------------------------------- /src/replica/export/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(replica_export OBJECT) 2 | add_dependencies(replica_export replica_proto) 3 | target_sources(replica_export PRIVATE 4 | ExportClient.cc 5 | ExportServer.cc 6 | ExportServerConnection.cc 7 | ) 8 | target_link_libraries(replica_export PUBLIC 9 | log 10 | ) 11 | -------------------------------------------------------------------------------- /src/replica/ingest/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(replica_ingest OBJECT) 2 | add_dependencies(replica_ingest replica_proto) 3 | target_sources(replica_ingest PRIVATE 4 | IngestClient.cc 5 | IngestDataHttpSvcMod.cc 6 | IngestFileHttpSvcMod.cc 7 | IngestFileSvc.cc 8 | IngestHttpSvc.cc 9 | IngestHttpSvcMod.cc 10 | IngestRequest.cc 11 | IngestRequestMgr.cc 12 | IngestResourceMgr.cc 13 | IngestResourceMgrP.cc 14 | IngestResourceMgrT.cc 15 | IngestSvc.cc 16 | IngestSvcConn.cc 17 | IngestUtils.cc 18 | TransactionContrib.cc 19 | ) 20 | target_link_libraries(replica_ingest PUBLIC 21 | log 22 | ) 23 | -------------------------------------------------------------------------------- /src/replica/mysql/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(replica_mysql OBJECT) 2 | add_dependencies(replica_mysql replica_proto) 3 | target_sources(replica_mysql PRIVATE 4 | DatabaseMySQL.cc 5 | DatabaseMySQLGenerator.cc 6 | DatabaseMySQLRow.cc 7 | DatabaseMySQLTypes.cc 8 | DatabaseMySQLUtils.cc 9 | ) 10 | target_link_libraries(replica_mysql PUBLIC 11 | log 12 | ) 13 | -------------------------------------------------------------------------------- /src/replica/proto/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | protobuf_generate_cpp(REPLICA_PB_SRCS REPLICA_PB_HDRS protocol.proto) 2 | 3 | add_library(replica_proto OBJECT) 4 | target_sources(replica_proto PRIVATE 5 | ${REPLICA_PB_SRCS} 6 | ${REPLICA_PB_HDRS} 7 | ) 8 | -------------------------------------------------------------------------------- /src/replica/python/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/replica/python/__init__.py -------------------------------------------------------------------------------- /src/replica/registry/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(replica_registry OBJECT) 2 | target_sources(replica_registry PRIVATE 3 | Registry.cc 4 | RegistryHttpSvc.cc 5 | RegistryHttpSvcMod.cc 6 | RegistryServices.cc 7 | ) 8 | target_link_libraries(replica_registry PUBLIC 9 | log 10 | ) 11 | -------------------------------------------------------------------------------- /src/replica/schema/migrate-10-to-11.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- Changes needed for the RefMatch tables 3 | -- 4 | ALTER TABLE `config_database_table` ADD COLUMN `director_table2` VARCHAR(255) DEFAULT "" AFTER `director_key` ; 5 | ALTER TABLE `config_database_table` ADD COLUMN `director_key2` VARCHAR(255) DEFAULT "" AFTER `director_table2` ; 6 | ALTER TABLE `config_database_table` ADD COLUMN `flag` VARCHAR(255) DEFAULT "" AFTER `director_key2` ; 7 | ALTER TABLE `config_database_table` ADD COLUMN `ang_sep` DOUBLE DEFAULT 0 AFTER `flag` ; 8 | -------------------------------------------------------------------------------- /src/replica/schema/migrate-13-to-14.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `config_database_table` 2 | ADD COLUMN `unique_primary_key` BOOLEAN NOT NULL DEFAULT TRUE 3 | AFTER `ang_sep`; 4 | -------------------------------------------------------------------------------- /src/replica/schema/migrate-4-to-5.sql: -------------------------------------------------------------------------------- 1 | -- Drop these obsolete columns left over the original implementation of the job classes 2 | ALTER TABLE `job` DROP COLUMN `exclusive` ; 3 | ALTER TABLE `job` DROP COLUMN `preemptable` ; 4 | -------------------------------------------------------------------------------- /src/replica/schema/migrate-6-to-7.sql: -------------------------------------------------------------------------------- 1 | -- This table used to store the general configuration parameters of the system. 2 | -- It's no longer used in the current version of the code. 3 | 4 | DROP TABLE IF EXISTS `config`; 5 | -------------------------------------------------------------------------------- /src/replica/services/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(replica_services OBJECT) 2 | target_sources(replica_services PRIVATE 3 | ChunkLocker.cc 4 | DatabaseServices.cc 5 | DatabaseServicesMySQL.cc 6 | DatabaseServicesPool.cc 7 | ServiceProvider.cc 8 | ) 9 | target_link_libraries(replica_services PUBLIC 10 | log 11 | ) 12 | -------------------------------------------------------------------------------- /src/replica/util/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(replica_util OBJECT) 2 | add_dependencies(replica_util replica_proto) 3 | target_sources(replica_util PRIVATE 4 | ChttpSvc.cc 5 | ChunkNumber.cc 6 | ChunkedTable.cc 7 | Common.cc 8 | Csv.cc 9 | FileUtils.cc 10 | HttpSvc.cc 11 | Mutex.cc 12 | NamedMutexRegistry.cc 13 | Performance.cc 14 | ProtocolBuffer.cc 15 | ReplicaInfo.cc 16 | SqlSchemaUtils.cc 17 | SuccessRateGenerator.cc 18 | ) 19 | target_link_libraries(replica_util PUBLIC 20 | log 21 | sphgeom 22 | ) 23 | -------------------------------------------------------------------------------- /src/replica/worker/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(replica_worker OBJECT) 2 | add_dependencies(replica_worker replica_proto) 3 | target_sources(replica_worker PRIVATE 4 | FileClient.cc 5 | FileServer.cc 6 | FileServerConnection.cc 7 | WorkerDeleteRequest.cc 8 | WorkerDirectorIndexRequest.cc 9 | WorkerEchoRequest.cc 10 | WorkerFindAllRequest.cc 11 | WorkerFindRequest.cc 12 | WorkerProcessor.cc 13 | WorkerProcessorThread.cc 14 | WorkerReplicationRequest.cc 15 | WorkerRequest.cc 16 | WorkerServer.cc 17 | WorkerServerConnection.cc 18 | WorkerSqlRequest.cc 19 | ) 20 | target_link_libraries(replica_worker PUBLIC 21 | log 22 | ) 23 | -------------------------------------------------------------------------------- /src/rproc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(rproc SHARED) 2 | add_dependencies(rproc proto) 3 | 4 | target_sources(rproc PRIVATE 5 | InfileMerger.cc 6 | ) 7 | 8 | target_link_libraries(rproc PUBLIC 9 | boost_regex 10 | cconfig 11 | log 12 | ) 13 | 14 | install(TARGETS rproc 15 | EXPORT qserv 16 | ) 17 | 18 | install(DIRECTORY python/ DESTINATION ${CMAKE_INSTALL_PREFIX}/python/lsst/qserv/rproc) 19 | install(DIRECTORY schema/ DESTINATION ${CMAKE_INSTALL_PREFIX}/qserv/smig/rproc/schema/) 20 | -------------------------------------------------------------------------------- /src/rproc/python/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/rproc/python/__init__.py -------------------------------------------------------------------------------- /src/rproc/schema/migrate-None-to-0.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE IF NOT EXISTS qservResult; 2 | -------------------------------------------------------------------------------- /src/schema/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(DIRECTORY python/ DESTINATION ${CMAKE_INSTALL_PREFIX}/python/lsst/qserv/schema) 2 | install(DIRECTORY bin/ DESTINATION ${CMAKE_INSTALL_BINDIR}) 3 | 4 | add_test(NAME test_SchemaMigMgr 5 | COMMAND python3 -m unittest lsst.qserv.schema.tests.test_SchemaMigMgr 6 | WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/python/ 7 | ) 8 | -------------------------------------------------------------------------------- /src/schema/python/__init__.py: -------------------------------------------------------------------------------- 1 | from .schemaMigMgr import ( 2 | MigMgrArgs, 3 | MigMatch, 4 | Migration, 5 | SchemaMigMgr, 6 | SchemaUpdateRequired, 7 | Uninitialized, 8 | Version, 9 | ) 10 | from .smig import smig, smig_block 11 | -------------------------------------------------------------------------------- /src/tests/dbinit.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE LSST; 2 | CREATE DATABASE LSST_Shared; 3 | CREATE TABLE LSST.Object_314159 ( 4 | objectId BIGINT, 5 | subchunkId INT); 6 | INSERT INTO LSST.Object_314159 VALUES 7 | (1, 42), (2, 42), (3, 42), (4, 42), 8 | (5, 99), (6, 42), (7, 99), (8, 99); 9 | -------------------------------------------------------------------------------- /src/tests/setQsmasterPerm.sql: -------------------------------------------------------------------------------- 1 | GRANT SELECT ON *.* TO 'qsmaster'@'localhost'; 2 | GRANT EXECUTE ON LSST.* TO 'qsmaster'@'localhost'; 3 | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `Subchunks\_%`.* TO 'qsmaster'@'localhost' WITH GRANT OPTION; 4 | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `q\_%`.* TO 'qsmaster'@'localhost' WITH GRANT OPTION; 5 | -------------------------------------------------------------------------------- /src/tests/spdistfunc.sql: -------------------------------------------------------------------------------- 1 | delimiter // 2 | create function spdist(ra1 double, dec1 double, ra2 double, dec2 double) 3 | returns double 4 | begin 5 | declare dra double; 6 | declare ddec double; 7 | declare a double; 8 | declare b double; 9 | declare c double; 10 | set dra = radians(0.5*(ra2 - ra1)); 11 | set ddec = radians(0.5*(dec2 - dec1)); 12 | set a = pow(sin(ddec), 2) + cos(radians(dec1))*cos(radians(dec2))*pow(sin(dra), 2); 13 | set b = sqrt(a); 14 | set c = if(b > 1, 1, b); 15 | return degrees(2.0*asin(c)); 16 | end 17 | // 18 | delimiter ; 19 | -------------------------------------------------------------------------------- /src/wbase/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(wbase SHARED) 2 | add_dependencies(wbase proto) 3 | 4 | target_sources(wbase PRIVATE 5 | Base.cc 6 | FileChannelShared.cc 7 | SendChannel.cc 8 | Task.cc 9 | UserQueryInfo.cc 10 | WorkerCommand.cc 11 | ) 12 | 13 | install( 14 | TARGETS wbase 15 | ) 16 | 17 | target_include_directories(wbase PRIVATE 18 | ${XROOTD_INCLUDE_DIRS} 19 | ) 20 | 21 | target_link_libraries(wbase PUBLIC 22 | boost_regex 23 | log 24 | XrdSsiLib 25 | ) 26 | -------------------------------------------------------------------------------- /src/wconfig/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(wconfig SHARED) 2 | add_dependencies(wconfig proto) 3 | 4 | target_sources(wconfig PRIVATE 5 | WorkerConfig.cc 6 | ) 7 | 8 | target_link_libraries(wconfig PUBLIC 9 | log 10 | proto 11 | ) 12 | 13 | install( 14 | TARGETS wconfig 15 | ) 16 | 17 | add_executable(testSanityCheck testSanityCheck.cc) 18 | 19 | target_link_libraries(testSanityCheck 20 | Boost::unit_test_framework 21 | Threads::Threads 22 | ) 23 | 24 | add_test(NAME testSanityCheck COMMAND testSanityCheck) 25 | 26 | install( 27 | TARGETS wconfig 28 | ) 29 | -------------------------------------------------------------------------------- /src/wcontrol/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(wcontrol SHARED) 2 | add_dependencies(wcontrol proto) 3 | 4 | target_sources(wcontrol PRIVATE 5 | Foreman.cc 6 | ResourceMonitor.cc 7 | SqlConnMgr.cc 8 | WorkerStats.cc 9 | ) 10 | 11 | install( 12 | TARGETS wcontrol 13 | ) 14 | 15 | target_include_directories(wcontrol PRIVATE 16 | ${XROOTD_INCLUDE_DIRS} 17 | ) 18 | 19 | target_link_libraries(wcontrol PUBLIC 20 | log 21 | XrdSsiLib 22 | qhttp 23 | wdb 24 | ) 25 | -------------------------------------------------------------------------------- /src/wdb/python/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Top level wdb module 3 | """ 4 | 5 | # local imports 6 | -------------------------------------------------------------------------------- /src/wdb/schema/migrate-1-to-2.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- Migration script from version 1 to version 2 of the qservw_worker database: 3 | -- 4 | -- - grant extended privileges to user 'qsmaster' for the database tables 5 | -- 6 | 7 | GRANT ALL ON qservw_worker.* TO 'qsmaster'@'localhost'; 8 | -------------------------------------------------------------------------------- /src/worker/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/python/ DESTINATION ${CMAKE_INSTALL_PREFIX}/python/lsst/qserv/worker) 2 | install(DIRECTORY schema/ DESTINATION ${CMAKE_INSTALL_PREFIX}/qserv/smig/worker/schema/) 3 | -------------------------------------------------------------------------------- /src/worker/python/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Top level worker module 3 | """ 4 | 5 | -------------------------------------------------------------------------------- /src/wsched/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(wsched SHARED) 2 | add_dependencies(wsched proto) 3 | 4 | target_sources(wsched PRIVATE 5 | BlendScheduler.cc 6 | ChunkTasksQueue.cc 7 | GroupScheduler.cc 8 | ScanScheduler.cc 9 | SchedulerBase.cc 10 | ) 11 | 12 | target_link_libraries(wsched PUBLIC 13 | log 14 | ) 15 | 16 | install( 17 | TARGETS wsched 18 | ) 19 | 20 | add_executable(testSchedulers testSchedulers.cc) 21 | 22 | target_include_directories(testSchedulers PRIVATE 23 | ${XROOTD_INCLUDE_DIRS} 24 | ) 25 | 26 | target_link_libraries(testSchedulers PUBLIC 27 | wsched 28 | xrdsvc 29 | Boost::unit_test_framework 30 | Threads::Threads 31 | ) 32 | 33 | add_test(NAME testSchedulers COMMAND testSchedulers) 34 | -------------------------------------------------------------------------------- /src/www/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | install( 2 | DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ 3 | DESTINATION ${CMAKE_INSTALL_PREFIX}/qserv/www/ 4 | PATTERN "CMakeLists.txt" EXCLUDE 5 | PATTERN "README.md" EXCLUDE 6 | ) 7 | -------------------------------------------------------------------------------- /src/www/README.md: -------------------------------------------------------------------------------- 1 | This directory holds static web content served at runtime by Qserv. At present, this is principally 2 | the administration dashboard app. 3 | 4 | Contents of this directory (excepting `CMakeLists.txt` and `README.md`) will be copied to 5 | `/usr/local/qserv/www` in the Qserv run container image, and served from that location by the `qhttp` server 6 | embedded in the replication controller (see `replica/HttpProcessor.cc`.) 7 | -------------------------------------------------------------------------------- /src/www/assets/bootstrap-icons-1.5.0/fonts/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/www/assets/bootstrap-icons-1.5.0/fonts/bootstrap-icons.woff -------------------------------------------------------------------------------- /src/www/assets/bootstrap-icons-1.5.0/fonts/bootstrap-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/www/assets/bootstrap-icons-1.5.0/fonts/bootstrap-icons.woff2 -------------------------------------------------------------------------------- /src/www/dashboard.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Qserv monitoring dashboard 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/www/qserv/css/QservCzarConfig.css: -------------------------------------------------------------------------------- 1 | #fwk-qserv-czar-config-controls label { 2 | font-weight: bold; 3 | } 4 | table#fwk-qserv-czar-config pre { 5 | padding: 0; 6 | margin: 0; 7 | } 8 | table#fwk-qserv-czar-config th, 9 | table#fwk-qserv-czar-config td { 10 | vertical-align: top; 11 | } 12 | table#fwk-qserv-czar-config { 13 | position: relative; 14 | } 15 | table#fwk-qserv-czar-config > thead > tr > th.sticky { 16 | position:sticky; 17 | top:80px; 18 | z-index:2; 19 | } 20 | table#fwk-qserv-czar-config caption { 21 | caption-side: top; 22 | text-align: right; 23 | padding-top: 0; 24 | } 25 | table#fwk-qserv-czar-config caption.updating { 26 | background-color: #ffeeba; 27 | } 28 | -------------------------------------------------------------------------------- /src/www/qserv/css/QservPDAC.css: -------------------------------------------------------------------------------- 1 | span.code { 2 | font-family: "Courier New"; 3 | } -------------------------------------------------------------------------------- /src/www/qserv/css/QservWorkerConfig.css: -------------------------------------------------------------------------------- 1 | #fwk-worker-config-controls label { 2 | font-weight: bold; 3 | } 4 | table#fwk-worker-config caption { 5 | caption-side: top; 6 | text-align: right; 7 | padding-top: 0; 8 | } 9 | table#fwk-worker-config > thead > tr > th.sticky { 10 | position:sticky; 11 | top:80px; 12 | z-index:2; 13 | } 14 | table#fwk-worker-config tbody th, 15 | table#fwk-worker-config tbody td { 16 | vertical-align:middle; 17 | } 18 | table#fwk-worker-config pre { 19 | padding: 0; 20 | margin: 0; 21 | } 22 | table#fwk-worker-config tbody > tr > td.query_toggler:hover { 23 | cursor:pointer; 24 | } 25 | table#fwk-worker-config caption.updating { 26 | background-color: #ffeeba; 27 | } 28 | -------------------------------------------------------------------------------- /src/www/qserv/css/QservWorkerFiles.css: -------------------------------------------------------------------------------- 1 | #fwk-qserv-files-controls label { 2 | font-weight: bold; 3 | } 4 | table#fwk-qserv-files caption { 5 | caption-side: top; 6 | text-align: right; 7 | padding-top: 0; 8 | } 9 | table#fwk-qserv-files > thead > tr > th.sticky { 10 | position:sticky; 11 | top:80px; 12 | z-index:2; 13 | } 14 | table#fwk-qserv-files tbody th, 15 | table#fwk-qserv-files tbody td { 16 | vertical-align:middle; 17 | } 18 | table#fwk-qserv-files pre { 19 | padding: 0; 20 | margin: 0; 21 | } 22 | table#fwk-qserv-files caption.updating { 23 | background-color: #ffeeba; 24 | } 25 | -------------------------------------------------------------------------------- /src/www/qserv/css/QservWorkerQueries.css: -------------------------------------------------------------------------------- 1 | #fwk-qserv-queries-controls label { 2 | font-weight: bold; 3 | } 4 | table#fwk-qserv-queries caption { 5 | caption-side: top; 6 | text-align: right; 7 | padding-top: 0; 8 | } 9 | table#fwk-qserv-queries tbody th, 10 | table#fwk-qserv-queries tbody td { 11 | vertical-align:top; 12 | } 13 | table#fwk-qserv-queries pre { 14 | padding: 0; 15 | margin: 0; 16 | } 17 | table#fwk-qserv-queries caption.updating { 18 | background-color: #ffeeba; 19 | } 20 | table#fwk-qserv-queries > thead > tr > th.sticky { 21 | position:sticky; 22 | top:80px; 23 | z-index:2; 24 | } 25 | -------------------------------------------------------------------------------- /src/www/qserv/css/QservWorkerSchedulerHist.css: -------------------------------------------------------------------------------- 1 | #fwk-qserv-scheduler-hist-controls label { 2 | font-weight: bold; 3 | } 4 | table#fwk-qserv-scheduler-hist caption { 5 | caption-side: top; 6 | text-align: right; 7 | padding-top: 0; 8 | } 9 | table#fwk-qserv-scheduler-hist > thead > tr > th.sticky { 10 | position:sticky; 11 | top:80px; 12 | z-index:2; 13 | } 14 | table#fwk-qserv-scheduler-hist tbody th, 15 | table#fwk-qserv-scheduler-hist tbody td { 16 | vertical-align:middle; 17 | } 18 | table#fwk-qserv-scheduler-hist pre { 19 | padding: 0; 20 | margin: 0; 21 | } 22 | table#fwk-qserv-scheduler-hist caption.updating { 23 | background-color: #ffeeba; 24 | } -------------------------------------------------------------------------------- /src/www/qserv/css/QservWorkerSchedulers.css: -------------------------------------------------------------------------------- 1 | table#fwk-qserv-schedulers caption { 2 | caption-side: top; 3 | text-align: right; 4 | padding-top: 0; 5 | } 6 | table#fwk-qserv-schedulers tbody th, 7 | table#fwk-qserv-schedulers tbody td { 8 | vertical-align:middle; 9 | } 10 | table#fwk-qserv-schedulers pre { 11 | padding: 0; 12 | margin: 0; 13 | } 14 | table#fwk-qserv-schedulers caption.updating { 15 | background-color: #ffeeba; 16 | } 17 | table#fwk-qserv-schedulers > thead > tr > th.sticky { 18 | position:sticky; 19 | top:80px; 20 | z-index:2; 21 | } 22 | -------------------------------------------------------------------------------- /src/www/qserv/css/QservWorkerTaskHist.css: -------------------------------------------------------------------------------- 1 | #fwk-qserv-task-hist-controls label { 2 | font-weight: bold; 3 | } 4 | table#fwk-qserv-task-hist caption { 5 | caption-side: top; 6 | text-align: right; 7 | padding-top: 0; 8 | } 9 | table#fwk-qserv-task-hist > thead > tr > th.sticky { 10 | position:sticky; 11 | top:80px; 12 | z-index:2; 13 | } 14 | table#fwk-qserv-task-hist tbody th, 15 | table#fwk-qserv-task-hist tbody td { 16 | vertical-align:middle; 17 | } 18 | table#fwk-qserv-task-hist pre { 19 | padding: 0; 20 | margin: 0; 21 | } 22 | table#fwk-qserv-task-hist caption.updating { 23 | background-color: #ffeeba; 24 | } -------------------------------------------------------------------------------- /src/www/qserv/css/QservWorkerTasks.css: -------------------------------------------------------------------------------- 1 | #fwk-qserv-tasks-controls label { 2 | font-weight: bold; 3 | } 4 | table#fwk-qserv-tasks caption { 5 | caption-side: top; 6 | text-align: right; 7 | padding-top: 0; 8 | } 9 | table#fwk-qserv-tasks > thead > tr > th.sticky { 10 | position:sticky; 11 | top:80px; 12 | z-index:2; 13 | } 14 | table#fwk-qserv-tasks tbody th, 15 | table#fwk-qserv-tasks tbody td { 16 | vertical-align:middle; 17 | } 18 | table#fwk-qserv-tasks pre { 19 | padding: 0; 20 | margin: 0; 21 | } 22 | table#fwk-qserv-tasks caption.updating { 23 | background-color: #ffeeba; 24 | } 25 | -------------------------------------------------------------------------------- /src/www/qserv/css/ReplicationConfigGeneral.css: -------------------------------------------------------------------------------- 1 | table#fwk-controller-config-general pre { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | table#fwk-controller-config-general th, 6 | table#fwk-controller-config-general td { 7 | vertical-align: middle; 8 | } 9 | table#fwk-controller-config-general { 10 | position: relative; 11 | } 12 | table#fwk-controller-config-general > thead > tr > th.sticky { 13 | position:sticky; 14 | top:80px; 15 | z-index:2; 16 | } 17 | table#fwk-controller-config-general caption { 18 | caption-side: top; 19 | text-align: right; 20 | padding-top: 0; 21 | } 22 | table#fwk-controller-config-general caption.updating { 23 | background-color: #ffeeba; 24 | } 25 | -------------------------------------------------------------------------------- /src/www/qserv/css/ReplicationConfigWorkers.css: -------------------------------------------------------------------------------- 1 | table#fwk-controller-config-workers pre { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | table#fwk-controller-config-workers th, 6 | table#fwk-controller-config-workers td { 7 | vertical-align: middle; 8 | } 9 | table#fwk-controller-config-workers { 10 | position: relative; 11 | } 12 | table#fwk-controller-config-workers > thead > tr > th.sticky { 13 | position:sticky; 14 | top:80px; 15 | z-index:2; 16 | } 17 | table#fwk-controller-config-workers caption { 18 | caption-side: top; 19 | text-align: right; 20 | padding-top: 0; 21 | } 22 | table#fwk-controller-config-workers caption.updating { 23 | background-color: #ffeeba; 24 | } 25 | -------------------------------------------------------------------------------- /src/www/qserv/css/ReplicationSchema.css: -------------------------------------------------------------------------------- 1 | table#fwk-replication-schema pre { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | table#fwk-replication-schema th, 6 | table#fwk-replication-schema td { 7 | vertical-align: middle; 8 | } 9 | table#fwk-replication-schema { 10 | position: relative; 11 | } 12 | table#fwk-replication-schema > thead > tr > th.sticky { 13 | position:sticky; 14 | top:80px; 15 | z-index:2; 16 | } 17 | table#fwk-replication-schema caption { 18 | caption-side: top; 19 | text-align: right; 20 | padding-top: 0; 21 | } 22 | table#fwk-replication-schema caption.updating { 23 | background-color: #ffeeba; 24 | } 25 | -------------------------------------------------------------------------------- /src/www/qserv/css/ReplicationTools.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsst/qserv/8fdbc2fd040bc33c0fe0cd8716a607ebf3bf6600/src/www/qserv/css/ReplicationTools.css -------------------------------------------------------------------------------- /src/www/qserv/css/StatusReplicationLevel.css: -------------------------------------------------------------------------------- 1 | table#fwk-status-level pre { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | table#fwk-status-level td { 6 | vertical-align: middle; 7 | } 8 | table#fwk-status-level caption { 9 | caption-side: top; 10 | text-align: right; 11 | padding-top: 0; 12 | } 13 | table#fwk-status-level caption.updating { 14 | background-color: #ffeeba; 15 | } 16 | -------------------------------------------------------------------------------- /src/www/qserv/css/StatusWorkers.css: -------------------------------------------------------------------------------- 1 | table#fwk-status-workers pre { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | table#fwk-status-workers td { 6 | vertical-align: middle; 7 | } 8 | table#fwk-status-workers caption { 9 | caption-side: top; 10 | text-align: right; 11 | padding-top: 0; 12 | } 13 | table#fwk-status-workers caption.updating { 14 | background-color: #ffeeba; 15 | } 16 | -------------------------------------------------------------------------------- /src/www/qserv/css/ToolsSql.css: -------------------------------------------------------------------------------- 1 | table#fwk-tools-sql-resultset pre { 2 | padding: 0; 3 | margin: 0; 4 | } 5 | table#fwk-tools-sql-resultset td { 6 | vertical-align: middle; 7 | } 8 | table#fwk-tools-sql-resultset caption { 9 | caption-side: top; 10 | text-align: right; 11 | padding-top: 0; 12 | } 13 | table#fwk-tools-sql-resultset caption.updating { 14 | background-color: #ffeeba; 15 | } 16 | table#fwk-tools-sql-resultset caption.error { 17 | text-align: left; 18 | color: maroon; 19 | } 20 | #fwk-tools-sql { 21 | padding-top: 1em; 22 | } 23 | #fwk-tools-sql div.row { 24 | margin-bottom: 1em; 25 | } -------------------------------------------------------------------------------- /src/www/webfwk/css/Fwk.css: -------------------------------------------------------------------------------- 1 | .fwk-cont { 2 | padding: 1em; 3 | } 4 | -------------------------------------------------------------------------------- /src/www/webfwk/css/FwkApplicationControlApp.css: -------------------------------------------------------------------------------- 1 | #fwk-uitests-appcontrol { 2 | margin-top: 1em; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /src/www/webfwk/css/FwkTestApp.css: -------------------------------------------------------------------------------- 1 | .fwk-test-app-name { 2 | font-weight: bold; 3 | color: maroon; 4 | } 5 | -------------------------------------------------------------------------------- /src/www/webfwk/css/SimpleTableTestApp.css: -------------------------------------------------------------------------------- 1 | #fwk-uitests-simpletable > div.table-cont { 2 | float: left; 3 | margin-right: 3em; 4 | margin-bottom: 1em; 5 | } 6 | #fwk-uitests-simpletable > div.table-cont-last { 7 | clear:both; 8 | } 9 | 10 | #fwk-uitests-simpletable table > caption { 11 | caption-side: top; 12 | text-align: left; 13 | } -------------------------------------------------------------------------------- /src/www/webfwk/js/CSSLoader.js: -------------------------------------------------------------------------------- 1 | define({ 2 | load: function (url) { 3 | var link = document.createElement("link"); 4 | link.type = "text/css"; 5 | link.rel = "stylesheet"; 6 | link.href = url + "?bust="+new Date().getTime(); 7 | document.getElementsByTagName("head")[0].appendChild(link); 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /src/www/webfwk/ws/table_data.json: -------------------------------------------------------------------------------- 1 | [[1,"a"], 2 | [2,"b"], 3 | [3,"c"], 4 | [4,"d"], 5 | [5,"e"] 6 | ] -------------------------------------------------------------------------------- /src/xrdlog/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(xrdlog MODULE) 2 | 3 | target_sources(xrdlog PRIVATE 4 | XrdLogging.cc 5 | ) 6 | 7 | target_include_directories(xrdlog PRIVATE 8 | ${XROOTD_INCLUDE_DIRS} 9 | ) 10 | 11 | target_link_libraries(xrdlog PUBLIC 12 | log 13 | XrdSsiLib 14 | ) 15 | 16 | install( 17 | TARGETS xrdlog DESTINATION ${CMAKE_INSTALL_LIBDIR} 18 | ) 19 | -------------------------------------------------------------------------------- /src/xrdsvc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(xrdsvc SHARED) 2 | add_dependencies(xrdsvc proto) 3 | 4 | target_sources(xrdsvc PRIVATE 5 | ChannelStream.cc 6 | HttpModule.cc 7 | HttpMonitorModule.cc 8 | HttpReplicaMgtModule.cc 9 | HttpSvc.cc 10 | SsiProvider.cc 11 | SsiRequest.cc 12 | SsiService.cc 13 | StreamBuffer.cc 14 | ) 15 | 16 | target_include_directories(xrdsvc PRIVATE 17 | ${XROOTD_INCLUDE_DIRS} 18 | ) 19 | 20 | target_link_libraries(xrdsvc PUBLIC 21 | boost_filesystem 22 | boost_system 23 | global 24 | log 25 | mysql 26 | http 27 | sql 28 | wbase 29 | wconfig 30 | wcontrol 31 | wpublish 32 | wsched 33 | XrdSsiLib 34 | ) 35 | 36 | install( 37 | TARGETS xrdsvc 38 | ) 39 | -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | envlist = docs,docs-linkcheck 3 | isolated_build = False 4 | 5 | [testenv] 6 | skip_install = True 7 | description = Python environment. 8 | deps = 9 | sphinx 10 | documenteer[guide] 11 | 12 | [testenv:docs] 13 | description = Build documentation (HTML) with Sphinx. 14 | commands = 15 | sphinx-build --keep-going -n -W -T -b html -d {envtmpdir}/doctrees doc doc/_build/html 16 | 17 | [testenv:docs-linkcheck] 18 | description = Check links in the documentation. 19 | allowlist_externals = 20 | make 21 | commands = 22 | make linkcheck 23 | --------------------------------------------------------------------------------