Blame ma_server.c

Packit Service 17f749
/************************************************************************************
Packit Service 17f749
   Copyright (C) 2016, 2017 MariaDB Corporation AB
Packit Service 17f749
   
Packit Service 17f749
   This library is free software; you can redistribute it and/or
Packit Service 17f749
   modify it under the terms of the GNU Library General Public
Packit Service 17f749
   License as published by the Free Software Foundation; either
Packit Service 17f749
   version 2.1 of the License, or (at your option) any later version.
Packit Service 17f749
   
Packit Service 17f749
   This library is distributed in the hope that it will be useful,
Packit Service 17f749
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 17f749
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 17f749
   Library General Public License for more details.
Packit Service 17f749
   
Packit Service 17f749
   You should have received a copy of the GNU Library General Public
Packit Service 17f749
   License along with this library; if not see <http://www.gnu.org/licenses>
Packit Service 17f749
   or write to the Free Software Foundation, Inc., 
Packit Service 17f749
   51 Franklin St., Fifth Floor, Boston, MA 02110, USA
Packit Service 17f749
*************************************************************************************/
Packit Service 17f749
Packit Service 17f749
/* Server-dependent functionality and helpers to use that functionality */
Packit Service 17f749
Packit Service 17f749
#include <ma_odbc.h>
Packit Service 17f749
Packit Service 17f749
unsigned long VersionCapabilityMap[][2]= {{100202, MADB_CAPABLE_EXEC_DIRECT},
Packit Service 17f749
                                          {100207, MADB_ENCLOSES_COLUMN_DEF_WITH_QUOTES}};
Packit Service 17f749
unsigned long ExtCapabilitiesMap[][2]= {{MARIADB_CLIENT_STMT_BULK_OPERATIONS >> 32, MADB_CAPABLE_PARAM_ARRAYS}};
Packit Service 17f749
Packit Service 17f749
/* {{{  */
Packit Service 17f749
void MADB_SetCapabilities(MADB_Dbc *Dbc, unsigned long ServerVersion)
Packit Service 17f749
{
Packit Service 17f749
  int i;
Packit Service 17f749
  unsigned long ServerCapabilities, ServerExtCapabilities;
Packit Service 17f749
Packit Service 17f749
  for (i= 0; i < sizeof(VersionCapabilityMap)/sizeof(VersionCapabilityMap[0]); ++i)
Packit Service 17f749
  {
Packit Service 17f749
    if (ServerVersion >= VersionCapabilityMap[i][0])
Packit Service 17f749
    {
Packit Service 17f749
      Dbc->ServerCapabilities |= VersionCapabilityMap[i][1];
Packit Service 17f749
    }
Packit Service 17f749
  }
Packit Service 17f749
Packit Service 17f749
  mariadb_get_infov(Dbc->mariadb, MARIADB_CONNECTION_EXTENDED_SERVER_CAPABILITIES, (void*)&ServerExtCapabilities);
Packit Service 17f749
  mariadb_get_infov(Dbc->mariadb, MARIADB_CONNECTION_SERVER_CAPABILITIES, (void*)&ServerCapabilities);
Packit Service 17f749
Packit Service 17f749
  for (i= 0; i < sizeof(ExtCapabilitiesMap)/sizeof(ExtCapabilitiesMap[0]); ++i)
Packit Service 17f749
  {
Packit Service 17f749
    if (!(Dbc->mariadb->server_capabilities & CLIENT_MYSQL)
Packit Service 17f749
      && (ServerExtCapabilities & ExtCapabilitiesMap[i][0]))
Packit Service 17f749
    {
Packit Service 17f749
      Dbc->ServerCapabilities |= ExtCapabilitiesMap[i][1];
Packit Service 17f749
    }
Packit Service 17f749
  }
Packit Service 17f749
}
Packit Service 17f749
Packit Service 17f749
BOOL MADB_ServerSupports(MADB_Dbc *Dbc, char Capability)
Packit Service 17f749
{
Packit Service 17f749
  return test(Dbc->ServerCapabilities & Capability);
Packit Service 17f749
}
Packit Service 17f749
/* }}} */
Packit Service 17f749