//
// $Id$
//
// CMMCPResult.m
// sequel-pro
//
// Created by lorenz textor (lorenz@textor.ch) on Wed Sept 21 2005.
// Copyright (c) 2002-2003 Lorenz Textor. All rights reserved.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// More info at
#import "CMMCPResult.h"
#import "SPArrayAdditions.h"
@implementation CMMCPResult
const OUR_CHARSET our_charsets60[] =
{
{ 1, "big5","big5_chinese_ci", 1, 2},
{ 3, "dec8", "dec8_swedisch_ci", 1, 1},
{ 4, "cp850", "cp850_general_ci", 1, 1},
{ 6, "hp8", "hp8_english_ci", 1, 1},
{ 7, "koi8r", "koi8r_general_ci", 1, 1},
{ 8, "latin1", "latin1_swedish_ci", 1, 1},
{ 9, "latin2", "latin2_general_ci", 1, 1},
{ 10, "swe7", "swe7_swedish_ci", 1, 1},
{ 11, "ascii", "ascii_general_ci", 1, 1},
{ 12, "ujis", "ujis_japanese_ci", 1, 3},
{ 13, "sjis", "sjis_japanese_ci", 1, 2},
{ 16, "hebrew", "hebrew_general_ci", 1, 1},
{ 18, "tis620", "tis620_thai_ci", 1, 1},
{ 19, "euckr", "euckr_korean_ci", 1, 2},
{ 22, "koi8u", "koi8u_general_ci", 1, 1},
{ 24, "gb2312", "gb2312_chinese_ci", 1, 2},
{ 25, "greek", "greek_general_ci", 1, 1},
{ 26, "cp1250", "cp1250_general_ci", 1, 1},
{ 28, "gbk", "gbk_chinese_ci", 1, 2},
{ 30, "latin5", "latin5_turkish_ci", 1, 1},
{ 32, "armscii8", "armscii8_general_ci", 1, 1},
{ 33, "utf8", "utf8_general_ci", 1, 3},
{ 35, "ucs2", "ucs2_general_ci", 2, 2},
{ 36, "cp866", "cp866_general_ci", 1, 1},
{ 37, "keybcs2", "keybcs2_general_ci", 1, 1},
{ 38, "macce", "macce_general_ci", 1, 1},
{ 39, "macroman", "macroman_general_ci", 1, 1},
{ 40, "cp852", "cp852_general_ci", 1, 1},
{ 41, "latin7", "latin7_general_ci", 1, 1},
{ 51, "cp1251", "cp1251_general_ci", 1, 1},
{ 57, "cp1256", "cp1256_general_ci", 1, 1},
{ 59, "cp1257", "cp1257_general_ci", 1, 1},
{ 63, "binary", "binary", 1, 1},
{ 92, "geostd8", "geostd8_general_ci", 1, 1},
{ 95, "cp932", "cp932_japanese_ci", 1, 2},
{ 97, "eucjpms", "eucjpms_japanese_ci", 1, 3},
{ 2, "latin2", "latin2_czech_cs", 1, 1},
{ 5, "latin1", "latin1_german_ci", 1, 1},
{ 14, "cp1251", "cp1251_bulgarian_ci", 1, 1},
{ 15, "latin1", "latin1_danish_ci", 1, 1},
{ 17, "filename", "filename", 1, 5},
{ 20, "latin7", "latin7_estonian_cs", 1, 1},
{ 21, "latin2", "latin2_hungarian_ci", 1, 1},
{ 23, "cp1251", "cp1251_ukrainian_ci", 1, 1},
{ 27, "latin2", "latin2_croatian_ci", 1, 1},
{ 29, "cp1257", "cp1257_lithunian_ci", 1, 1},
{ 31, "latin1", "latin1_german2_ci", 1, 1},
{ 34, "cp1250", "cp1250_czech_cs", 1, 1},
{ 42, "latin7", "latin7_general_cs", 1, 1},
{ 43, "macce", "macce_bin", 1, 1},
{ 44, "cp1250", "cp1250_croatian_ci", 1, 1},
{ 45, "utf8", "utf8_general_ci", 1, 1},
{ 46, "utf8", "utf8_bin", 1, 1},
{ 47, "latin1", "latin1_bin", 1, 1},
{ 48, "latin1", "latin1_general_ci", 1, 1},
{ 49, "latin1", "latin1_general_cs", 1, 1},
{ 50, "cp1251", "cp1251_bin", 1, 1},
{ 52, "cp1251", "cp1251_general_cs", 1, 1},
{ 53, "macroman", "macroman_bin", 1, 1},
{ 58, "cp1257", "cp1257_bin", 1, 1},
{ 60, "armascii8", "armascii8_bin", 1, 1},
{ 65, "ascii", "ascii_bin", 1, 1},
{ 66, "cp1250", "cp1250_bin", 1, 1},
{ 67, "cp1256", "cp1256_bin", 1, 1},
{ 68, "cp866", "cp866_bin", 1, 1},
{ 69, "dec8", "dec8_bin", 1, 1},
{ 70, "greek", "greek_bin", 1, 1},
{ 71, "hebew", "hebrew_bin", 1, 1},
{ 72, "hp8", "hp8_bin", 1, 1},
{ 73, "keybcs2", "keybcs2_bin", 1, 1},
{ 74, "koi8r", "koi8r_bin", 1, 1},
{ 75, "koi8u", "koi8u_bin", 1, 1},
{ 77, "latin2", "latin2_bin", 1, 1},
{ 78, "latin5", "latin5_bin", 1, 1},
{ 79, "latin7", "latin7_bin", 1, 1},
{ 80, "cp850", "cp850_bin", 1, 1},
{ 81, "cp852", "cp852_bin", 1, 1},
{ 82, "swe7", "swe7_bin", 1, 1},
{ 93, "geostd8", "geostd8_bin", 1, 1},
{ 83, "utf8", "utf8_bin", 1, 3},
{ 84, "big5", "big5_bin", 1, 2},
{ 85, "euckr", "euckr_bin", 1, 2},
{ 86, "gb2312", "gb2312_bin", 1, 2},
{ 87, "gbk", "gbk_bin", 1, 2},
{ 88, "sjis", "sjis_bin", 1, 2},
{ 89, "tis620", "tis620_bin", 1, 1},
{ 90, "ucs2", "ucs2_bin", 2, 2},
{ 91, "ujis", "ujis_bin", 1, 3},
{ 94, "latin1", "latin1_spanish_ci", 1, 1},
{ 96, "cp932", "cp932_bin", 1, 2},
{ 99, "cp1250", "cp1250_polish_ci", 1, 1},
{ 98, "eucjpms", "eucjpms_bin", 1, 3},
{ 128, "ucs2", "ucs2_unicode_ci", 2, 2},
{ 129, "ucs2", "ucs2_icelandic_ci", 2, 2},
{ 130, "ucs2", "ucs2_latvian_ci", 2, 2},
{ 131, "ucs2", "ucs2_romanian_ci", 2, 2},
{ 132, "ucs2", "ucs2_slovenian_ci", 2, 2},
{ 133, "ucs2", "ucs2_polish_ci", 2, 2},
{ 134, "ucs2", "ucs2_estonian_ci", 2, 2},
{ 135, "ucs2", "ucs2_spanish_ci", 2, 2},
{ 136, "ucs2", "ucs2_swedish_ci", 2, 2},
{ 137, "ucs2", "ucs2_turkish_ci", 2, 2},
{ 138, "ucs2", "ucs2_czech_ci", 2, 2},
{ 139, "ucs2", "ucs2_danish_ci", 2, 2},
{ 140, "ucs2", "ucs2_lithunian_ci", 2, 2},
{ 141, "ucs2", "ucs2_slovak_ci", 2, 2},
{ 142, "ucs2", "ucs2_spanish2_ci", 2, 2},
{ 143, "ucs2", "ucs2_roman_ci", 2, 2},
{ 144, "ucs2", "ucs2_persian_ci", 2, 2},
{ 145, "ucs2", "ucs2_esperanto_ci", 2, 2},
{ 146, "ucs2", "ucs2_hungarian_ci", 2, 2},
{ 147, "ucs2", "ucs2_sinhala_ci", 2, 2},
{ 192, "utf8mb3", "utf8mb3_general_ci", 1, 3},
{ 193, "utf8mb3", "utf8mb3_icelandic_ci", 1, 3},
{ 194, "utf8mb3", "utf8mb3_latvian_ci", 1, 3},
{ 195, "utf8mb3", "utf8mb3_romanian_ci", 1, 3},
{ 196, "utf8mb3", "utf8mb3_slovenian_ci", 1, 3},
{ 197, "utf8mb3", "utf8mb3_polish_ci", 1, 3},
{ 198, "utf8mb3", "utf8mb3_estonian_ci", 1, 3},
{ 119, "utf8mb3", "utf8mb3_spanish_ci", 1, 3},
{ 200, "utf8mb3", "utf8mb3_swedish_ci", 1, 3},
{ 201, "utf8mb3", "utf8mb3_turkish_ci", 1, 3},
{ 202, "utf8mb3", "utf8mb3_czech_ci", 1, 3},
{ 203, "utf8mb3", "utf8mb3_danish_ci", 1, 3},
{ 204, "utf8mb3", "utf8mb3_lithunian_ci", 1, 3},
{ 205, "utf8mb3", "utf8mb3_slovak_ci", 1, 3},
{ 206, "utf8mb3", "utf8mb3_spanish2_ci", 1, 3},
{ 207, "utf8mb3", "utf8mb3_roman_ci", 1, 3},
{ 208, "utf8mb3", "utf8mb3_persian_ci", 1, 3},
{ 209, "utf8mb3", "utf8mb3_esperanto_ci", 1, 3},
{ 210, "utf8mb3", "utf8mb3_hungarian_ci", 1, 3},
{ 211, "utf8mb3", "utf8mb3_sinhala_ci", 1, 3},
{ 224, "utf8", "utf8_unicode_ci", 1, 3},
{ 225, "utf8", "utf8_icelandic_ci", 1, 3},
{ 226, "utf8", "utf8_latvian_ci", 1, 3},
{ 227, "utf8", "utf8_romanian_ci", 1, 3},
{ 228, "utf8", "utf8_slovenian_ci", 1, 3},
{ 229, "utf8", "utf8_polish_ci", 1, 3},
{ 230, "utf8", "utf8_estonian_ci", 1, 3},
{ 231, "utf8", "utf8_spanish_ci", 1, 3},
{ 232, "utf8", "utf8_swedish_ci", 1, 3},
{ 233, "utf8", "utf8_turkish_ci", 1, 3},
{ 234, "utf8", "utf8_czech_ci", 1, 3},
{ 235, "utf8", "utf8_danish_ci", 1, 3},
{ 236, "utf8", "utf8_lithuanian_ci", 1, 3},
{ 237, "utf8", "utf8_slovak_ci", 1, 3},
{ 238, "utf8", "utf8_spanish2_ci", 1, 3},
{ 239, "utf8", "utf8_roman_ci", 1, 3},
{ 240, "utf8", "utf8_persian_ci", 1, 3},
{ 241, "utf8", "utf8_esperanto_ci", 1, 3},
{ 242, "utf8", "utf8_hungarian_ci", 1, 3},
{ 243, "utf8", "utf8_sinhala_ci", 1, 3},
{ 254, "utf8mb3", "utf8mb3_general_cs", 1, 3},
{ 0, NULL, NULL, 0, 0}
};
/*
modified version for use with sequel-pro
*/
- (id)fetchRowAsType:(MCPReturnType)aType
{
MYSQL_ROW theRow;
unsigned long *theLengths;
MYSQL_FIELD *theField;
int i;
id theReturn;
if (mResult == NULL) {
// If there is no results, returns nil, as after the last row...
return nil;
}
theRow = mysql_fetch_row(mResult);
if (theRow == NULL) {
return nil;
}
switch (aType) {
case MCPTypeArray:
theReturn = [NSMutableArray arrayWithCapacity:mNumOfFields];
break;
case MCPTypeDictionary:
if (mNames == nil) {
[self fetchFieldNames];
}
theReturn = [NSMutableDictionary dictionaryWithCapacity:mNumOfFields];
break;
default :
NSLog (@"Unknown type : %d, will return an Array!\n", aType);
theReturn = [NSMutableArray arrayWithCapacity:mNumOfFields];
break;
}
theLengths = mysql_fetch_lengths(mResult);
theField = mysql_fetch_fields(mResult);
for (i=0; inr == charsetnr)
return [self stringWithCString:c->name];
++c;
} while (c[0].nr != 0);
return @"UNKNOWN";
}
/*
* Convert a mysql_charsetnr into a collation name as string
*/
- (NSString *)find_charsetCollation:(unsigned int)charsetnr
{
const OUR_CHARSET * c = our_charsets60;
do {
if (c->nr == charsetnr)
return [self stringWithCString:c->collation];
++c;
} while (c[0].nr != 0);
return @"UNKNOWN";
}
/*
* Return the max byte length to store a char by using
* a specific mysql_charsetnr
*/
- (unsigned int)find_charsetMaxByteLengthPerChar:(unsigned int)charsetnr
{
const OUR_CHARSET * c = our_charsets60;
do {
if (c->nr == charsetnr)
return c->char_maxlen;
++c;
} while (c[0].nr != 0);
return 1;
}
@end