LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/mysql - ogrmysqldrivercore.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 38 38 100.0 %
Date: 2025-10-01 17:07:58 Functions: 5 5 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  OpenGIS Simple Features Reference Implementation
       4             :  * Purpose:  Implements OGRMySQLDriver class.
       5             :  * Author:   Frank Warmerdam, warmerdam@pobox.com
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2004, Frank Warmerdam <warmerdam@pobox.com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "gdal_frmts.h"
      14             : #include "gdalplugindriverproxy.h"
      15             : 
      16             : #include "ogrsf_frmts.h"
      17             : 
      18             : #include "ogrmysqldrivercore.h"
      19             : 
      20             : /************************************************************************/
      21             : /*                         OGRMySQLDriverIdentify()                     */
      22             : /************************************************************************/
      23             : 
      24       53452 : int OGRMySQLDriverIdentify(GDALOpenInfo *poOpenInfo)
      25             : 
      26             : {
      27       53452 :     return STARTS_WITH_CI(poOpenInfo->pszFilename, "MYSQL:");
      28             : }
      29             : 
      30             : /************************************************************************/
      31             : /*                OGRMySQLDriverSetCommonMetadata()                     */
      32             : /************************************************************************/
      33             : 
      34        1764 : void OGRMySQLDriverSetCommonMetadata(GDALDriver *poDriver)
      35             : {
      36        1764 :     poDriver->SetDescription(DRIVER_NAME);
      37        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      38        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_CREATE_LAYER, "YES");
      39        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_DELETE_LAYER, "YES");
      40        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_CREATE_FIELD, "YES");
      41        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_MEASURED_GEOMETRIES, "YES");
      42        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_Z_GEOMETRIES, "YES");
      43        1764 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "MySQL");
      44        1764 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/mysql.html");
      45             : 
      46        1764 :     poDriver->SetMetadataItem(GDAL_DMD_CONNECTION_PREFIX, "MYSQL:");
      47             : 
      48        1764 :     poDriver->SetMetadataItem(
      49             :         GDAL_DMD_OPENOPTIONLIST,
      50             :         "<OpenOptionList>"
      51             :         "  <Option name='DBNAME' type='string' description='Database name' "
      52             :         "required='true'/>"
      53             :         "  <Option name='PORT' type='int' description='Port'/>"
      54             :         "  <Option name='USER' type='string' description='User name'/>"
      55             :         "  <Option name='PASSWORD' type='string' description='Password'/>"
      56             :         "  <Option name='HOST' type='string' description='Server hostname'/>"
      57             :         "  <Option name='TABLES' type='string' description='Restricted set of "
      58             :         "tables to list (comma separated)'/>"
      59        1764 :         "</OpenOptionList>");
      60             : 
      61        1764 :     poDriver->SetMetadataItem(GDAL_DMD_CREATIONOPTIONLIST,
      62        1764 :                               "<CreationOptionList/>");
      63             : 
      64        1764 :     poDriver->SetMetadataItem(
      65             :         GDAL_DS_LAYER_CREATIONOPTIONLIST,
      66             :         "<LayerCreationOptionList>"
      67             :         "  <Option name='OVERWRITE' type='boolean' description='Whether to "
      68             :         "overwrite an existing table with the layer name to be created' "
      69             :         "default='NO'/>"
      70             :         "  <Option name='LAUNDER' type='boolean' description='Whether layer "
      71             :         "and field names will be laundered' default='YES'/>"
      72             :         "  <Option name='PRECISION' type='boolean' description='Whether fields "
      73             :         "created should keep the width and precision' default='YES'/>"
      74             :         "  <Option name='GEOMETRY_NAME' type='string' description='Name of "
      75             :         "geometry column.' default='SHAPE'/>"
      76             :         "  <Option name='SPATIAL_INDEX' type='boolean' description='Whether to "
      77             :         "create a spatial index' default='YES'/>"
      78             :         "  <Option name='FID' type='string' description='Name of the FID "
      79             :         "column to create' default='OGR_FID' deprecated_alias='MYSQL_FID'/>"
      80             :         "  <Option name='FID64' type='boolean' description='Whether to create "
      81             :         "the FID column with BIGINT type to handle 64bit wide ids' "
      82             :         "default='NO'/>"
      83             :         "  <Option name='ENGINE' type='string' description='Database engine to "
      84             :         "use.'/>"
      85        1764 :         "</LayerCreationOptionList>");
      86             : 
      87        1764 :     poDriver->SetMetadataItem(GDAL_DMD_CREATIONFIELDDATATYPES,
      88             :                               "Integer Integer64 Real String Date DateTime "
      89        1764 :                               "Time Binary");
      90        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_NOTNULL_FIELDS, "YES");
      91        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_DEFAULT_FIELDS, "YES");
      92        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_MULTIPLE_VECTOR_LAYERS, "YES");
      93        1764 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS,
      94        1764 :                               "NATIVE OGRSQL SQLITE");
      95             : 
      96        1764 :     poDriver->pfnIdentify = OGRMySQLDriverIdentify;
      97        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_OPEN, "YES");
      98        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_CREATE, "YES");
      99             : 
     100        1764 :     poDriver->SetMetadataItem(GDAL_DCAP_UPDATE, "YES");
     101        1764 :     poDriver->SetMetadataItem(GDAL_DMD_UPDATE_ITEMS, "Features");
     102        1764 : }
     103             : 
     104             : /************************************************************************/
     105             : /*                   DeclareDeferredOGRMySQLPlugin()                    */
     106             : /************************************************************************/
     107             : 
     108             : #ifdef PLUGIN_FILENAME
     109        2033 : void DeclareDeferredOGRMySQLPlugin()
     110             : {
     111        2033 :     if (GDALGetDriverByName(DRIVER_NAME) != nullptr)
     112             :     {
     113         283 :         return;
     114             :     }
     115        1750 :     auto poDriver = new GDALPluginDriverProxy(PLUGIN_FILENAME);
     116             : #ifdef PLUGIN_INSTALLATION_MESSAGE
     117             :     poDriver->SetMetadataItem(GDAL_DMD_PLUGIN_INSTALLATION_MESSAGE,
     118             :                               PLUGIN_INSTALLATION_MESSAGE);
     119             : #endif
     120        1750 :     OGRMySQLDriverSetCommonMetadata(poDriver);
     121        1750 :     GetGDALDriverManager()->DeclareDeferredPluginDriver(poDriver);
     122             : }
     123             : #endif

Generated by: LCOV version 1.14