Annotation of embedaddon/php/ext/pdo/pdo_sqlstate.c, revision 1.1

1.1     ! misho       1: /*
        !             2:   +----------------------------------------------------------------------+
        !             3:   | PHP Version 5                                                        |
        !             4:   +----------------------------------------------------------------------+
        !             5:   | Copyright (c) 1997-2012 The PHP Group                                |
        !             6:   +----------------------------------------------------------------------+
        !             7:   | This source file is subject to version 3.01 of the PHP license,      |
        !             8:   | that is bundled with this package in the file LICENSE, and is        |
        !             9:   | available through the world-wide-web at the following url:           |
        !            10:   | http://www.php.net/license/3_01.txt                                  |
        !            11:   | If you did not receive a copy of the PHP license and are unable to   |
        !            12:   | obtain it through the world-wide-web, please send a note to          |
        !            13:   | license@php.net so we can mail you a copy immediately.               |
        !            14:   +----------------------------------------------------------------------+
        !            15:   | Author: Wez Furlong <wez@php.net>                                    |
        !            16:   +----------------------------------------------------------------------+
        !            17: */
        !            18: 
        !            19: /* $Id: pdo_sqlstate.c 321634 2012-01-01 13:15:04Z felipe $ */
        !            20: 
        !            21: #ifdef HAVE_CONFIG_H
        !            22: #include "config.h"
        !            23: #endif
        !            24: 
        !            25: #include "php.h"
        !            26: #include "php_ini.h"
        !            27: #include "ext/standard/info.h"
        !            28: #include "php_pdo.h"
        !            29: #include "php_pdo_driver.h"
        !            30: 
        !            31: struct pdo_sqlstate_info {
        !            32:        const char state[5];
        !            33:        const char *desc;
        !            34: };
        !            35: 
        !            36: static HashTable err_hash;
        !            37: 
        !            38: static const struct pdo_sqlstate_info err_initializer[] = {
        !            39:        { "00000",      "No error" },
        !            40:        { "01000",      "Warning" },
        !            41:        { "01001",      "Cursor operation conflict" },
        !            42:        { "01002",      "Disconnect error" },
        !            43:        { "01003",      "NULL value eliminated in set function" },
        !            44:        { "01004",      "String data, right truncated" },
        !            45:        { "01006",      "Privilege not revoked" },
        !            46:        { "01007",      "Privilege not granted" },
        !            47:        { "01008",      "Implicit zero bit padding" },
        !            48:        { "0100C",      "Dynamic result sets returned" },
        !            49:        { "01P01",      "Deprecated feature" },
        !            50:        { "01S00",      "Invalid connection string attribute" },
        !            51:        { "01S01",      "Error in row" },
        !            52:        { "01S02",      "Option value changed" },
        !            53:        { "01S06",      "Attempt to fetch before the result set returned the first rowset" },
        !            54:        { "01S07",      "Fractional truncation" },
        !            55:        { "01S08",      "Error saving File DSN" },
        !            56:        { "01S09",      "Invalid keyword" },
        !            57:        { "02000",      "No data" },
        !            58:        { "02001",      "No additional dynamic result sets returned" },
        !            59:        { "03000",      "Sql statement not yet complete" },
        !            60:        { "07002",      "COUNT field incorrect" },
        !            61:        { "07005",      "Prepared statement not a cursor-specification" },
        !            62:        { "07006",      "Restricted data type attribute violation" },
        !            63:        { "07009",      "Invalid descriptor index" },
        !            64:        { "07S01",      "Invalid use of default parameter" },
        !            65:        { "08000",      "Connection exception" },
        !            66:        { "08001",      "Client unable to establish connection" },
        !            67:        { "08002",      "Connection name in use" },
        !            68:        { "08003",      "Connection does not exist" },
        !            69:        { "08004",      "Server rejected the connection" },
        !            70:        { "08006",      "Connection failure" },
        !            71:        { "08007",      "Connection failure during transaction" },
        !            72:        { "08S01",      "Communication link failure" },
        !            73:        { "09000",      "Triggered action exception" },
        !            74:        { "0A000",      "Feature not supported" },
        !            75:        { "0B000",      "Invalid transaction initiation" },
        !            76:        { "0F000",      "Locator exception" },
        !            77:        { "0F001",      "Invalid locator specification" },
        !            78:        { "0L000",      "Invalid grantor" },
        !            79:        { "0LP01",      "Invalid grant operation" },
        !            80:        { "0P000",      "Invalid role specification" },
        !            81:        { "21000",      "Cardinality violation" },
        !            82:        { "21S01",      "Insert value list does not match column list" },
        !            83:        { "21S02",      "Degree of derived table does not match column list" },
        !            84:        { "22000",      "Data exception" },
        !            85:        { "22001",      "String data, right truncated" },
        !            86:        { "22002",      "Indicator variable required but not supplied" },
        !            87:        { "22003",      "Numeric value out of range" },
        !            88:        { "22004",      "Null value not allowed" },
        !            89:        { "22005",      "Error in assignment" },
        !            90:        { "22007",      "Invalid datetime format" },
        !            91:        { "22008",      "Datetime field overflow" },
        !            92:        { "22009",      "Invalid time zone displacement value" },
        !            93:        { "2200B",      "Escape character conflict" },
        !            94:        { "2200C",      "Invalid use of escape character" },
        !            95:        { "2200D",      "Invalid escape octet" },
        !            96:        { "2200F",      "Zero length character string" },
        !            97:        { "2200G",      "Most specific type mismatch" },
        !            98:        { "22010",      "Invalid indicator parameter value" },
        !            99:        { "22011",      "Substring error" },
        !           100:        { "22012",      "Division by zero" },
        !           101:        { "22015",      "Interval field overflow" },
        !           102:        { "22018",      "Invalid character value for cast specification" },
        !           103:        { "22019",      "Invalid escape character" },
        !           104:        { "2201B",      "Invalid regular expression" },
        !           105:        { "2201E",      "Invalid argument for logarithm" },
        !           106:        { "2201F",      "Invalid argument for power function" },
        !           107:        { "2201G",      "Invalid argument for width bucket function" },
        !           108:        { "22020",      "Invalid limit value" },
        !           109:        { "22021",      "Character not in repertoire" },
        !           110:        { "22022",      "Indicator overflow" },
        !           111:        { "22023",      "Invalid parameter value" },
        !           112:        { "22024",      "Unterminated c string" },
        !           113:        { "22025",      "Invalid escape sequence" },
        !           114:        { "22026",      "String data, length mismatch" },
        !           115:        { "22027",      "Trim error" },
        !           116:        { "2202E",      "Array subscript error" },
        !           117:        { "22P01",      "Floating point exception" },
        !           118:        { "22P02",      "Invalid text representation" },
        !           119:        { "22P03",      "Invalid binary representation" },
        !           120:        { "22P04",      "Bad copy file format" },
        !           121:        { "22P05",      "Untranslatable character" },
        !           122:        { "23000",      "Integrity constraint violation" },
        !           123:        { "23001",      "Restrict violation" },
        !           124:        { "23502",      "Not null violation" },
        !           125:        { "23503",      "Foreign key violation" },
        !           126:        { "23505",      "Unique violation" },
        !           127:        { "23514",      "Check violation" },
        !           128:        { "24000",      "Invalid cursor state" },
        !           129:        { "25000",      "Invalid transaction state" },
        !           130:        { "25001",      "Active sql transaction" },
        !           131:        { "25002",      "Branch transaction already active" },
        !           132:        { "25003",      "Inappropriate access mode for branch transaction" },
        !           133:        { "25004",      "Inappropriate isolation level for branch transaction" },
        !           134:        { "25005",      "No active sql transaction for branch transaction" },
        !           135:        { "25006",      "Read only sql transaction" },
        !           136:        { "25007",      "Schema and data statement mixing not supported" },
        !           137:        { "25008",      "Held cursor requires same isolation level" },
        !           138:        { "25P01",      "No active sql transaction" },
        !           139:        { "25P02",      "In failed sql transaction" },
        !           140:        { "25S01",      "Transaction state" },
        !           141:        { "25S02",      "Transaction is still active" },
        !           142:        { "25S03",      "Transaction is rolled back" },
        !           143:        { "26000",      "Invalid sql statement name" },
        !           144:        { "27000",      "Triggered data change violation" },
        !           145:        { "28000",      "Invalid authorization specification" },
        !           146:        { "2B000",      "Dependent privilege descriptors still exist" },
        !           147:        { "2BP01",      "Dependent objects still exist" },
        !           148:        { "2D000",      "Invalid transaction termination" },
        !           149:        { "2F000",      "Sql routine exception" },
        !           150:        { "2F002",      "Modifying sql data not permitted" },
        !           151:        { "2F003",      "Prohibited sql statement attempted" },
        !           152:        { "2F004",      "Reading sql data not permitted" },
        !           153:        { "2F005",      "Function executed no return statement" },
        !           154:        { "34000",      "Invalid cursor name" },
        !           155:        { "38000",      "External routine exception" },
        !           156:        { "38001",      "Containing sql not permitted" },
        !           157:        { "38002",      "Modifying sql data not permitted" },
        !           158:        { "38003",      "Prohibited sql statement attempted" },
        !           159:        { "38004",      "Reading sql data not permitted" },
        !           160:        { "39000",      "External routine invocation exception" },
        !           161:        { "39001",      "Invalid sqlstate returned" },
        !           162:        { "39004",      "Null value not allowed" },
        !           163:        { "39P01",      "Trigger protocol violated" },
        !           164:        { "39P02",      "Srf protocol violated" },
        !           165:        { "3B000",      "Savepoint exception" },
        !           166:        { "3B001",      "Invalid savepoint specification" },
        !           167:        { "3C000",      "Duplicate cursor name" },
        !           168:        { "3D000",      "Invalid catalog name" },
        !           169:        { "3F000",      "Invalid schema name" },
        !           170:        { "40000",      "Transaction rollback" },
        !           171:        { "40001",      "Serialization failure" },
        !           172:        { "40002",      "Transaction integrity constraint violation" },
        !           173:        { "40003",      "Statement completion unknown" },
        !           174:        { "40P01",      "Deadlock detected" },
        !           175:        { "42000",      "Syntax error or access violation" },
        !           176:        { "42501",      "Insufficient privilege" },
        !           177:        { "42601",      "Syntax error" },
        !           178:        { "42602",      "Invalid name" },
        !           179:        { "42611",      "Invalid column definition" },
        !           180:        { "42622",      "Name too long" },
        !           181:        { "42701",      "Duplicate column" },
        !           182:        { "42702",      "Ambiguous column" },
        !           183:        { "42703",      "Undefined column" },
        !           184:        { "42704",      "Undefined object" },
        !           185:        { "42710",      "Duplicate object" },
        !           186:        { "42712",      "Duplicate alias" },
        !           187:        { "42723",      "Duplicate function" },
        !           188:        { "42725",      "Ambiguous function" },
        !           189:        { "42803",      "Grouping error" },
        !           190:        { "42804",      "Datatype mismatch" },
        !           191:        { "42809",      "Wrong object type" },
        !           192:        { "42830",      "Invalid foreign key" },
        !           193:        { "42846",      "Cannot coerce" },
        !           194:        { "42883",      "Undefined function" },
        !           195:        { "42939",      "Reserved name" },
        !           196:        { "42P01",      "Undefined table" },
        !           197:        { "42P02",      "Undefined parameter" },
        !           198:        { "42P03",      "Duplicate cursor" },
        !           199:        { "42P04",      "Duplicate database" },
        !           200:        { "42P05",      "Duplicate prepared statement" },
        !           201:        { "42P06",      "Duplicate schema" },
        !           202:        { "42P07",      "Duplicate table" },
        !           203:        { "42P08",      "Ambiguous parameter" },
        !           204:        { "42P09",      "Ambiguous alias" },
        !           205:        { "42P10",      "Invalid column reference" },
        !           206:        { "42P11",      "Invalid cursor definition" },
        !           207:        { "42P12",      "Invalid database definition" },
        !           208:        { "42P13",      "Invalid function definition" },
        !           209:        { "42P14",      "Invalid prepared statement definition" },
        !           210:        { "42P15",      "Invalid schema definition" },
        !           211:        { "42P16",      "Invalid table definition" },
        !           212:        { "42P17",      "Invalid object definition" },
        !           213:        { "42P18",      "Indeterminate datatype" },
        !           214:        { "42S01",      "Base table or view already exists" },
        !           215:        { "42S02",      "Base table or view not found" },
        !           216:        { "42S11",      "Index already exists" },
        !           217:        { "42S12",      "Index not found" },
        !           218:        { "42S21",      "Column already exists" },
        !           219:        { "42S22",      "Column not found" },
        !           220:        { "44000",      "WITH CHECK OPTION violation" },
        !           221:        { "53000",      "Insufficient resources" },
        !           222:        { "53100",      "Disk full" },
        !           223:        { "53200",      "Out of memory" },
        !           224:        { "53300",      "Too many connections" },
        !           225:        { "54000",      "Program limit exceeded" },
        !           226:        { "54001",      "Statement too complex" },
        !           227:        { "54011",      "Too many columns" },
        !           228:        { "54023",      "Too many arguments" },
        !           229:        { "55000",      "Object not in prerequisite state" },
        !           230:        { "55006",      "Object in use" },
        !           231:        { "55P02",      "Cant change runtime param" },
        !           232:        { "55P03",      "Lock not available" },
        !           233:        { "57000",      "Operator intervention" },
        !           234:        { "57014",      "Query canceled" },
        !           235:        { "57P01",      "Admin shutdown" },
        !           236:        { "57P02",      "Crash shutdown" },
        !           237:        { "57P03",      "Cannot connect now" },
        !           238:        { "58030",      "Io error" },
        !           239:        { "58P01",      "Undefined file" },
        !           240:        { "58P02",      "Duplicate file" },
        !           241:        { "F0000",      "Config file error" },
        !           242:        { "F0001",      "Lock file exists" },
        !           243:        { "HY000",      "General error" },
        !           244:        { "HY001",      "Memory allocation error" },
        !           245:        { "HY003",      "Invalid application buffer type" },
        !           246:        { "HY004",      "Invalid SQL data type" },
        !           247:        { "HY007",      "Associated statement is not prepared" },
        !           248:        { "HY008",      "Operation canceled" },
        !           249:        { "HY009",      "Invalid use of null pointer" },
        !           250:        { "HY010",      "Function sequence error" },
        !           251:        { "HY011",      "Attribute cannot be set now" },
        !           252:        { "HY012",      "Invalid transaction operation code" },
        !           253:        { "HY013",      "Memory management error" },
        !           254:        { "HY014",      "Limit on the number of handles exceeded" },
        !           255:        { "HY015",      "No cursor name available" },
        !           256:        { "HY016",      "Cannot modify an implementation row descriptor" },
        !           257:        { "HY017",      "Invalid use of an automatically allocated descriptor handle" },
        !           258:        { "HY018",      "Server declined cancel request" },
        !           259:        { "HY019",      "Non-character and non-binary data sent in pieces" },
        !           260:        { "HY020",      "Attempt to concatenate a null value" },
        !           261:        { "HY021",      "Inconsistent descriptor information" },
        !           262:        { "HY024",      "Invalid attribute value" },
        !           263:        { "HY090",      "Invalid string or buffer length" },
        !           264:        { "HY091",      "Invalid descriptor field identifier" },
        !           265:        { "HY092",      "Invalid attribute/option identifier" },
        !           266:        { "HY093",      "Invalid parameter number" },
        !           267:        { "HY095",      "Function type out of range" },
        !           268:        { "HY096",      "Invalid information type" },
        !           269:        { "HY097",      "Column type out of range" },
        !           270:        { "HY098",      "Scope type out of range" },
        !           271:        { "HY099",      "Nullable type out of range" },
        !           272:        { "HY100",      "Uniqueness option type out of range" },
        !           273:        { "HY101",      "Accuracy option type out of range" },
        !           274:        { "HY103",      "Invalid retrieval code" },
        !           275:        { "HY104",      "Invalid precision or scale value" },
        !           276:        { "HY105",      "Invalid parameter type" },
        !           277:        { "HY106",      "Fetch type out of range" },
        !           278:        { "HY107",      "Row value out of range" },
        !           279:        { "HY109",      "Invalid cursor position" },
        !           280:        { "HY110",      "Invalid driver completion" },
        !           281:        { "HY111",      "Invalid bookmark value" },
        !           282:        { "HYC00",      "Optional feature not implemented" },
        !           283:        { "HYT00",      "Timeout expired" },
        !           284:        { "HYT01",      "Connection timeout expired" },
        !           285:        { "IM001",      "Driver does not support this function" },
        !           286:        { "IM002",      "Data source name not found and no default driver specified" },
        !           287:        { "IM003",      "Specified driver could not be loaded" },
        !           288:        { "IM004",      "Driver's SQLAllocHandle on SQL_HANDLE_ENV failed" },
        !           289:        { "IM005",      "Driver's SQLAllocHandle on SQL_HANDLE_DBC failed" },
        !           290:        { "IM006",      "Driver's SQLSetConnectAttr failed" },
        !           291:        { "IM007",      "No data source or driver specified; dialog prohibited" },
        !           292:        { "IM008",      "Dialog failed" },
        !           293:        { "IM009",      "Unable to load translation DLL" },
        !           294:        { "IM010",      "Data source name too long" },
        !           295:        { "IM011",      "Driver name too long" },
        !           296:        { "IM012",      "DRIVER keyword syntax error" },
        !           297:        { "IM013",      "Trace file error" },
        !           298:        { "IM014",      "Invalid name of File DSN" },
        !           299:        { "IM015",      "Corrupt file data source" },
        !           300:        { "P0000",      "Plpgsql error" },
        !           301:        { "P0001",      "Raise exception" },
        !           302:        { "XX000",      "Internal error" },
        !           303:        { "XX001",      "Data corrupted" },
        !           304:        { "XX002",      "Index corrupted" }
        !           305: };
        !           306: 
        !           307: void pdo_sqlstate_fini_error_table(void)
        !           308: {
        !           309:        zend_hash_destroy(&err_hash);
        !           310: }
        !           311: 
        !           312: int pdo_sqlstate_init_error_table(void)
        !           313: {
        !           314:        int i;
        !           315:        const struct pdo_sqlstate_info *info;
        !           316: 
        !           317:        if (FAILURE == zend_hash_init(&err_hash,
        !           318:                        sizeof(err_initializer)/sizeof(err_initializer[0]), NULL, NULL, 1)) {
        !           319:                return FAILURE;
        !           320:        }
        !           321: 
        !           322:        for (i = 0; i < sizeof(err_initializer)/sizeof(err_initializer[0]); i++) {
        !           323:                info = &err_initializer[i];
        !           324: 
        !           325:                zend_hash_add(&err_hash, info->state, sizeof(info->state), &info, sizeof(info), NULL);
        !           326:        }
        !           327: 
        !           328:        return SUCCESS;
        !           329: }
        !           330: 
        !           331: const char *pdo_sqlstate_state_to_description(char *state)
        !           332: {
        !           333:        const struct pdo_sqlstate_info **info;
        !           334:        if (SUCCESS == zend_hash_find(&err_hash, state, sizeof(err_initializer[0].state),
        !           335:                        (void**)&info)) {
        !           336:                return (*info)->desc;
        !           337:        }
        !           338:        return NULL;
        !           339: }
        !           340: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>