368
409
// ER_INSERT_INFO 1092
369
410
// ER_INSERT_TABLE_USED 1093
370
411
// ER_LOCK_DEADLOCK 1213
371
mysqlToSqlState.put(new Integer(1205), SQL_STATE_DEADLOCK);
372
mysqlToSqlState.put(new Integer(1213), SQL_STATE_DEADLOCK);
412
mysqlToSqlState.put(Constants.integerValueOf(1205), SQL_STATE_DEADLOCK);
413
mysqlToSqlState.put(Constants.integerValueOf(1213), SQL_STATE_DEADLOCK);
374
415
mysqlToSql99State = new HashMap();
376
mysqlToSql99State.put(new Integer(1205), SQL_STATE_DEADLOCK);
377
mysqlToSql99State.put(new Integer(1213), SQL_STATE_DEADLOCK);
378
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_DUP_KEY),
417
mysqlToSql99State.put(Constants.integerValueOf(1205), SQL_STATE_DEADLOCK);
418
mysqlToSql99State.put(Constants.integerValueOf(1213), SQL_STATE_DEADLOCK);
419
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_DUP_KEY),
380
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_OUTOFMEMORY),
421
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_OUTOFMEMORY),
382
mysqlToSql99State.put(new Integer(
423
mysqlToSql99State.put(Constants.integerValueOf(
383
424
MysqlErrorNumbers.ER_OUT_OF_SORTMEMORY), "HY001");
384
425
mysqlToSql99State.put(
385
new Integer(MysqlErrorNumbers.ER_CON_COUNT_ERROR), "08004");
386
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_BAD_HOST_ERROR),
426
Constants.integerValueOf(MysqlErrorNumbers.ER_CON_COUNT_ERROR), "08004");
427
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_BAD_HOST_ERROR),
388
429
mysqlToSql99State.put(
389
new Integer(MysqlErrorNumbers.ER_HANDSHAKE_ERROR), "08S01");
390
mysqlToSql99State.put(new Integer(
430
Constants.integerValueOf(MysqlErrorNumbers.ER_HANDSHAKE_ERROR), "08S01");
431
mysqlToSql99State.put(Constants.integerValueOf(
391
432
MysqlErrorNumbers.ER_DBACCESS_DENIED_ERROR), "42000");
392
mysqlToSql99State.put(new Integer(
433
mysqlToSql99State.put(Constants.integerValueOf(
393
434
MysqlErrorNumbers.ER_ACCESS_DENIED_ERROR), "28000");
394
mysqlToSql99State.put(new Integer(
435
mysqlToSql99State.put(Constants.integerValueOf(
395
436
MysqlErrorNumbers.ER_TABLE_EXISTS_ERROR), "42S01");
396
437
mysqlToSql99State.put(
397
new Integer(MysqlErrorNumbers.ER_BAD_TABLE_ERROR), "42S02");
398
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NON_UNIQ_ERROR),
438
Constants.integerValueOf(MysqlErrorNumbers.ER_BAD_TABLE_ERROR), "42S02");
439
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_NON_UNIQ_ERROR),
400
441
mysqlToSql99State.put(
401
new Integer(MysqlErrorNumbers.ER_SERVER_SHUTDOWN), "08S01");
442
Constants.integerValueOf(MysqlErrorNumbers.ER_SERVER_SHUTDOWN), "08S01");
402
443
mysqlToSql99State.put(
403
new Integer(MysqlErrorNumbers.ER_BAD_FIELD_ERROR), "42S22");
404
mysqlToSql99State.put(new Integer(
444
Constants.integerValueOf(MysqlErrorNumbers.ER_BAD_FIELD_ERROR), "42S22");
445
mysqlToSql99State.put(Constants.integerValueOf(
405
446
MysqlErrorNumbers.ER_WRONG_FIELD_WITH_GROUP), "42000");
406
mysqlToSql99State.put(new Integer(
447
mysqlToSql99State.put(Constants.integerValueOf(
407
448
MysqlErrorNumbers.ER_WRONG_GROUP_FIELD), "42000");
408
449
mysqlToSql99State.put(
409
new Integer(MysqlErrorNumbers.ER_WRONG_SUM_SELECT), "42000");
410
mysqlToSql99State.put(new Integer(
450
Constants.integerValueOf(MysqlErrorNumbers.ER_WRONG_SUM_SELECT), "42000");
451
mysqlToSql99State.put(Constants.integerValueOf(
411
452
MysqlErrorNumbers.ER_WRONG_VALUE_COUNT), "21S01");
412
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_TOO_LONG_IDENT),
453
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_TOO_LONG_IDENT),
414
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_DUP_FIELDNAME),
455
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_DUP_FIELDNAME),
416
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_DUP_KEYNAME),
457
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_DUP_KEYNAME),
418
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_DUP_ENTRY),
459
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_DUP_ENTRY),
420
461
mysqlToSql99State.put(
421
new Integer(MysqlErrorNumbers.ER_WRONG_FIELD_SPEC), "42000");
422
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_PARSE_ERROR),
424
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_EMPTY_QUERY),
426
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NONUNIQ_TABLE),
428
mysqlToSql99State.put(
429
new Integer(MysqlErrorNumbers.ER_INVALID_DEFAULT), "42000");
430
mysqlToSql99State.put(
431
new Integer(MysqlErrorNumbers.ER_MULTIPLE_PRI_KEY), "42000");
432
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_TOO_MANY_KEYS),
434
mysqlToSql99State.put(new Integer(
462
Constants.integerValueOf(MysqlErrorNumbers.ER_WRONG_FIELD_SPEC), "42000");
463
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_PARSE_ERROR),
465
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_EMPTY_QUERY),
467
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_NONUNIQ_TABLE),
469
mysqlToSql99State.put(
470
Constants.integerValueOf(MysqlErrorNumbers.ER_INVALID_DEFAULT), "42000");
471
mysqlToSql99State.put(
472
Constants.integerValueOf(MysqlErrorNumbers.ER_MULTIPLE_PRI_KEY), "42000");
473
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_TOO_MANY_KEYS),
475
mysqlToSql99State.put(Constants.integerValueOf(
435
476
MysqlErrorNumbers.ER_TOO_MANY_KEY_PARTS), "42000");
436
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_TOO_LONG_KEY),
477
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_TOO_LONG_KEY),
438
mysqlToSql99State.put(new Integer(
479
mysqlToSql99State.put(Constants.integerValueOf(
439
480
MysqlErrorNumbers.ER_KEY_COLUMN_DOES_NOT_EXITS), "42000");
440
481
mysqlToSql99State.put(
441
new Integer(MysqlErrorNumbers.ER_BLOB_USED_AS_KEY), "42000");
442
mysqlToSql99State.put(new Integer(
482
Constants.integerValueOf(MysqlErrorNumbers.ER_BLOB_USED_AS_KEY), "42000");
483
mysqlToSql99State.put(Constants.integerValueOf(
443
484
MysqlErrorNumbers.ER_TOO_BIG_FIELDLENGTH), "42000");
444
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_WRONG_AUTO_KEY),
485
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_WRONG_AUTO_KEY),
446
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_FORCING_CLOSE),
448
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_IPSOCK_ERROR),
450
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NO_SUCH_INDEX),
487
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_FORCING_CLOSE),
489
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_IPSOCK_ERROR),
491
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_NO_SUCH_INDEX),
452
mysqlToSql99State.put(new Integer(
493
mysqlToSql99State.put(Constants.integerValueOf(
453
494
MysqlErrorNumbers.ER_WRONG_FIELD_TERMINATORS), "42000");
454
mysqlToSql99State.put(new Integer(
495
mysqlToSql99State.put(Constants.integerValueOf(
455
496
MysqlErrorNumbers.ER_BLOBS_AND_NO_TERMINATED), "42000");
456
mysqlToSql99State.put(new Integer(
497
mysqlToSql99State.put(Constants.integerValueOf(
457
498
MysqlErrorNumbers.ER_CANT_REMOVE_ALL_FIELDS), "42000");
458
mysqlToSql99State.put(new Integer(
499
mysqlToSql99State.put(Constants.integerValueOf(
459
500
MysqlErrorNumbers.ER_CANT_DROP_FIELD_OR_KEY), "42000");
460
mysqlToSql99State.put(new Integer(
501
mysqlToSql99State.put(Constants.integerValueOf(
461
502
MysqlErrorNumbers.ER_BLOB_CANT_HAVE_DEFAULT), "42000");
462
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_WRONG_DB_NAME),
503
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_WRONG_DB_NAME),
464
505
mysqlToSql99State.put(
465
new Integer(MysqlErrorNumbers.ER_WRONG_TABLE_NAME), "42000");
466
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_TOO_BIG_SELECT),
506
Constants.integerValueOf(MysqlErrorNumbers.ER_WRONG_TABLE_NAME), "42000");
507
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_TOO_BIG_SELECT),
468
mysqlToSql99State.put(new Integer(
509
mysqlToSql99State.put(Constants.integerValueOf(
469
510
MysqlErrorNumbers.ER_UNKNOWN_PROCEDURE), "42000");
470
mysqlToSql99State.put(new Integer(
511
mysqlToSql99State.put(Constants.integerValueOf(
471
512
MysqlErrorNumbers.ER_WRONG_PARAMCOUNT_TO_PROCEDURE), "42000");
472
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_UNKNOWN_TABLE),
513
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_UNKNOWN_TABLE),
474
mysqlToSql99State.put(new Integer(
515
mysqlToSql99State.put(Constants.integerValueOf(
475
516
MysqlErrorNumbers.ER_FIELD_SPECIFIED_TWICE), "42000");
476
mysqlToSql99State.put(new Integer(
517
mysqlToSql99State.put(Constants.integerValueOf(
477
518
MysqlErrorNumbers.ER_UNSUPPORTED_EXTENSION), "42000");
478
mysqlToSql99State.put(new Integer(
519
mysqlToSql99State.put(Constants.integerValueOf(
479
520
MysqlErrorNumbers.ER_TABLE_MUST_HAVE_COLUMNS), "42000");
480
mysqlToSql99State.put(new Integer(
521
mysqlToSql99State.put(Constants.integerValueOf(
481
522
MysqlErrorNumbers.ER_UNKNOWN_CHARACTER_SET), "42000");
482
523
mysqlToSql99State.put(
483
new Integer(MysqlErrorNumbers.ER_TOO_BIG_ROWSIZE), "42000");
524
Constants.integerValueOf(MysqlErrorNumbers.ER_TOO_BIG_ROWSIZE), "42000");
484
525
mysqlToSql99State.put(
485
new Integer(MysqlErrorNumbers.ER_WRONG_OUTER_JOIN), "42000");
486
mysqlToSql99State.put(new Integer(
526
Constants.integerValueOf(MysqlErrorNumbers.ER_WRONG_OUTER_JOIN), "42000");
527
mysqlToSql99State.put(Constants.integerValueOf(
487
528
MysqlErrorNumbers.ER_NULL_COLUMN_IN_INDEX), "42000");
488
mysqlToSql99State.put(new Integer(
529
mysqlToSql99State.put(Constants.integerValueOf(
489
530
MysqlErrorNumbers.ER_PASSWORD_ANONYMOUS_USER), "42000");
490
mysqlToSql99State.put(new Integer(
531
mysqlToSql99State.put(Constants.integerValueOf(
491
532
MysqlErrorNumbers.ER_PASSWORD_NOT_ALLOWED), "42000");
492
mysqlToSql99State.put(new Integer(
533
mysqlToSql99State.put(Constants.integerValueOf(
493
534
MysqlErrorNumbers.ER_PASSWORD_NO_MATCH), "42000");
494
mysqlToSql99State.put(new Integer(
535
mysqlToSql99State.put(Constants.integerValueOf(
495
536
MysqlErrorNumbers.ER_WRONG_VALUE_COUNT_ON_ROW), "21S01");
496
mysqlToSql99State.put(new Integer(
537
mysqlToSql99State.put(Constants.integerValueOf(
497
538
MysqlErrorNumbers.ER_INVALID_USE_OF_NULL), "42000");
498
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_REGEXP_ERROR),
539
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_REGEXP_ERROR),
500
mysqlToSql99State.put(new Integer(
541
mysqlToSql99State.put(Constants.integerValueOf(
501
542
MysqlErrorNumbers.ER_MIX_OF_GROUP_FUNC_AND_FIELDS), "42000");
502
mysqlToSql99State.put(new Integer(
543
mysqlToSql99State.put(Constants.integerValueOf(
503
544
MysqlErrorNumbers.ER_NONEXISTING_GRANT), "42000");
504
mysqlToSql99State.put(new Integer(
545
mysqlToSql99State.put(Constants.integerValueOf(
505
546
MysqlErrorNumbers.ER_TABLEACCESS_DENIED_ERROR), "42000");
506
mysqlToSql99State.put(new Integer(
547
mysqlToSql99State.put(Constants.integerValueOf(
507
548
MysqlErrorNumbers.ER_COLUMNACCESS_DENIED_ERROR), "42000");
508
mysqlToSql99State.put(new Integer(
549
mysqlToSql99State.put(Constants.integerValueOf(
509
550
MysqlErrorNumbers.ER_ILLEGAL_GRANT_FOR_TABLE), "42000");
510
mysqlToSql99State.put(new Integer(
551
mysqlToSql99State.put(Constants.integerValueOf(
511
552
MysqlErrorNumbers.ER_GRANT_WRONG_HOST_OR_USER), "42000");
512
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NO_SUCH_TABLE),
553
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_NO_SUCH_TABLE),
514
mysqlToSql99State.put(new Integer(
555
mysqlToSql99State.put(Constants.integerValueOf(
515
556
MysqlErrorNumbers.ER_NONEXISTING_TABLE_GRANT), "42000");
516
mysqlToSql99State.put(new Integer(
557
mysqlToSql99State.put(Constants.integerValueOf(
517
558
MysqlErrorNumbers.ER_NOT_ALLOWED_COMMAND), "42000");
518
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_SYNTAX_ERROR),
559
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_SYNTAX_ERROR),
520
mysqlToSql99State.put(new Integer(
561
mysqlToSql99State.put(Constants.integerValueOf(
521
562
MysqlErrorNumbers.ER_ABORTING_CONNECTION), "08S01");
522
mysqlToSql99State.put(new Integer(
563
mysqlToSql99State.put(Constants.integerValueOf(
523
564
MysqlErrorNumbers.ER_NET_PACKET_TOO_LARGE), "08S01");
524
mysqlToSql99State.put(new Integer(
565
mysqlToSql99State.put(Constants.integerValueOf(
525
566
MysqlErrorNumbers.ER_NET_READ_ERROR_FROM_PIPE), "08S01");
526
567
mysqlToSql99State.put(
527
new Integer(MysqlErrorNumbers.ER_NET_FCNTL_ERROR), "08S01");
528
mysqlToSql99State.put(new Integer(
568
Constants.integerValueOf(MysqlErrorNumbers.ER_NET_FCNTL_ERROR), "08S01");
569
mysqlToSql99State.put(Constants.integerValueOf(
529
570
MysqlErrorNumbers.ER_NET_PACKETS_OUT_OF_ORDER), "08S01");
530
mysqlToSql99State.put(new Integer(
571
mysqlToSql99State.put(Constants.integerValueOf(
531
572
MysqlErrorNumbers.ER_NET_UNCOMPRESS_ERROR), "08S01");
532
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NET_READ_ERROR),
573
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_NET_READ_ERROR),
534
mysqlToSql99State.put(new Integer(
575
mysqlToSql99State.put(Constants.integerValueOf(
535
576
MysqlErrorNumbers.ER_NET_READ_INTERRUPTED), "08S01");
536
mysqlToSql99State.put(new Integer(
577
mysqlToSql99State.put(Constants.integerValueOf(
537
578
MysqlErrorNumbers.ER_NET_ERROR_ON_WRITE), "08S01");
538
mysqlToSql99State.put(new Integer(
579
mysqlToSql99State.put(Constants.integerValueOf(
539
580
MysqlErrorNumbers.ER_NET_WRITE_INTERRUPTED), "08S01");
540
581
mysqlToSql99State.put(
541
new Integer(MysqlErrorNumbers.ER_TOO_LONG_STRING), "42000");
542
mysqlToSql99State.put(new Integer(
582
Constants.integerValueOf(MysqlErrorNumbers.ER_TOO_LONG_STRING), "42000");
583
mysqlToSql99State.put(Constants.integerValueOf(
543
584
MysqlErrorNumbers.ER_TABLE_CANT_HANDLE_BLOB), "42000");
544
585
mysqlToSql99State
586
.put(Constants.integerValueOf(
546
587
MysqlErrorNumbers.ER_TABLE_CANT_HANDLE_AUTO_INCREMENT),
548
mysqlToSql99State.put(new Integer(
589
mysqlToSql99State.put(Constants.integerValueOf(
549
590
MysqlErrorNumbers.ER_WRONG_COLUMN_NAME), "42000");
550
591
mysqlToSql99State.put(
551
new Integer(MysqlErrorNumbers.ER_WRONG_KEY_COLUMN), "42000");
552
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_DUP_UNIQUE),
592
Constants.integerValueOf(MysqlErrorNumbers.ER_WRONG_KEY_COLUMN), "42000");
593
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_DUP_UNIQUE),
554
mysqlToSql99State.put(new Integer(
595
mysqlToSql99State.put(Constants.integerValueOf(
555
596
MysqlErrorNumbers.ER_BLOB_KEY_WITHOUT_LENGTH), "42000");
556
mysqlToSql99State.put(new Integer(
597
mysqlToSql99State.put(Constants.integerValueOf(
557
598
MysqlErrorNumbers.ER_PRIMARY_CANT_HAVE_NULL), "42000");
558
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_TOO_MANY_ROWS),
599
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_TOO_MANY_ROWS),
560
mysqlToSql99State.put(new Integer(
601
mysqlToSql99State.put(Constants.integerValueOf(
561
602
MysqlErrorNumbers.ER_REQUIRES_PRIMARY_KEY), "42000");
562
mysqlToSql99State.put(new Integer(
603
mysqlToSql99State.put(Constants.integerValueOf(
563
604
MysqlErrorNumbers.ER_CHECK_NO_SUCH_TABLE), "42000");
564
mysqlToSql99State.put(new Integer(
605
mysqlToSql99State.put(Constants.integerValueOf(
565
606
MysqlErrorNumbers.ER_CHECK_NOT_IMPLEMENTED), "42000");
566
mysqlToSql99State.put(new Integer(
607
mysqlToSql99State.put(Constants.integerValueOf(
567
608
MysqlErrorNumbers.ER_CANT_DO_THIS_DURING_AN_TRANSACTION),
569
mysqlToSql99State.put(new Integer(
610
mysqlToSql99State.put(Constants.integerValueOf(
570
611
MysqlErrorNumbers.ER_NEW_ABORTING_CONNECTION), "08S01");
571
612
mysqlToSql99State.put(
572
new Integer(MysqlErrorNumbers.ER_MASTER_NET_READ), "08S01");
613
Constants.integerValueOf(MysqlErrorNumbers.ER_MASTER_NET_READ), "08S01");
573
614
mysqlToSql99State.put(
574
new Integer(MysqlErrorNumbers.ER_MASTER_NET_WRITE), "08S01");
575
mysqlToSql99State.put(new Integer(
615
Constants.integerValueOf(MysqlErrorNumbers.ER_MASTER_NET_WRITE), "08S01");
616
mysqlToSql99State.put(Constants.integerValueOf(
576
617
MysqlErrorNumbers.ER_TOO_MANY_USER_CONNECTIONS), "42000");
577
mysqlToSql99State.put(new Integer(
618
mysqlToSql99State.put(Constants.integerValueOf(
578
619
MysqlErrorNumbers.ER_READ_ONLY_TRANSACTION), "25000");
579
mysqlToSql99State.put(new Integer(
620
mysqlToSql99State.put(Constants.integerValueOf(
580
621
MysqlErrorNumbers.ER_NO_PERMISSION_TO_CREATE_USER), "42000");
581
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_LOCK_DEADLOCK),
622
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_LOCK_DEADLOCK),
583
mysqlToSql99State.put(new Integer(
624
mysqlToSql99State.put(Constants.integerValueOf(
584
625
MysqlErrorNumbers.ER_NO_REFERENCED_ROW), "23000");
585
mysqlToSql99State.put(new Integer(
626
mysqlToSql99State.put(Constants.integerValueOf(
586
627
MysqlErrorNumbers.ER_ROW_IS_REFERENCED), "23000");
587
mysqlToSql99State.put(new Integer(
628
mysqlToSql99State.put(Constants.integerValueOf(
588
629
MysqlErrorNumbers.ER_CONNECT_TO_MASTER), "08S01");
589
mysqlToSql99State.put(new Integer(
630
mysqlToSql99State.put(Constants.integerValueOf(
590
631
MysqlErrorNumbers.ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT),
592
mysqlToSql99State.put(new Integer(
633
mysqlToSql99State.put(Constants.integerValueOf(
593
634
MysqlErrorNumbers.ER_USER_LIMIT_REACHED), "42000");
594
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_NO_DEFAULT),
635
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_NO_DEFAULT),
596
mysqlToSql99State.put(new Integer(
637
mysqlToSql99State.put(Constants.integerValueOf(
597
638
MysqlErrorNumbers.ER_WRONG_VALUE_FOR_VAR), "42000");
598
mysqlToSql99State.put(new Integer(
639
mysqlToSql99State.put(Constants.integerValueOf(
599
640
MysqlErrorNumbers.ER_WRONG_TYPE_FOR_VAR), "42000");
600
mysqlToSql99State.put(new Integer(
641
mysqlToSql99State.put(Constants.integerValueOf(
601
642
MysqlErrorNumbers.ER_CANT_USE_OPTION_HERE), "42000");
602
mysqlToSql99State.put(new Integer(
643
mysqlToSql99State.put(Constants.integerValueOf(
603
644
MysqlErrorNumbers.ER_NOT_SUPPORTED_YET), "42000");
604
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_WRONG_FK_DEF),
645
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_WRONG_FK_DEF),
606
647
mysqlToSql99State.put(
607
new Integer(MysqlErrorNumbers.ER_OPERAND_COLUMNS), "21000");
608
mysqlToSql99State.put(new Integer(
648
Constants.integerValueOf(MysqlErrorNumbers.ER_OPERAND_COLUMNS), "21000");
649
mysqlToSql99State.put(Constants.integerValueOf(
609
650
MysqlErrorNumbers.ER_SUBQUERY_NO_1_ROW), "21000");
610
mysqlToSql99State.put(new Integer(
651
mysqlToSql99State.put(Constants.integerValueOf(
611
652
MysqlErrorNumbers.ER_ILLEGAL_REFERENCE), "42S22");
612
mysqlToSql99State.put(new Integer(
653
mysqlToSql99State.put(Constants.integerValueOf(
613
654
MysqlErrorNumbers.ER_DERIVED_MUST_HAVE_ALIAS), "42000");
614
mysqlToSql99State.put(new Integer(MysqlErrorNumbers.ER_SELECT_REDUCED),
655
mysqlToSql99State.put(Constants.integerValueOf(MysqlErrorNumbers.ER_SELECT_REDUCED),
616
mysqlToSql99State.put(new Integer(
657
mysqlToSql99State.put(Constants.integerValueOf(
617
658
MysqlErrorNumbers.ER_TABLENAME_NOT_ALLOWED_HERE), "42000");
618
mysqlToSql99State.put(new Integer(
659
mysqlToSql99State.put(Constants.integerValueOf(
619
660
MysqlErrorNumbers.ER_NOT_SUPPORTED_AUTH_MODE), "08004");
620
mysqlToSql99State.put(new Integer(
661
mysqlToSql99State.put(Constants.integerValueOf(
621
662
MysqlErrorNumbers.ER_SPATIAL_CANT_HAVE_NULL), "42000");
622
mysqlToSql99State.put(new Integer(
663
mysqlToSql99State.put(Constants.integerValueOf(
623
664
MysqlErrorNumbers.ER_COLLATION_CHARSET_MISMATCH), "42000");
624
mysqlToSql99State.put(new Integer(
665
mysqlToSql99State.put(Constants.integerValueOf(
625
666
MysqlErrorNumbers.ER_WARN_TOO_FEW_RECORDS), "01000");
626
mysqlToSql99State.put(new Integer(
667
mysqlToSql99State.put(Constants.integerValueOf(
627
668
MysqlErrorNumbers.ER_WARN_TOO_MANY_RECORDS), "01000");
628
mysqlToSql99State.put(new Integer(
669
mysqlToSql99State.put(Constants.integerValueOf(
629
670
MysqlErrorNumbers.ER_WARN_NULL_TO_NOTNULL), "01000");
630
mysqlToSql99State.put(new Integer(
671
mysqlToSql99State.put(Constants.integerValueOf(
631
672
MysqlErrorNumbers.ER_WARN_DATA_OUT_OF_RANGE), "01000");
632
mysqlToSql99State.put(new Integer(
673
mysqlToSql99State.put(Constants.integerValueOf(
633
674
MysqlErrorNumbers.ER_WARN_DATA_TRUNCATED), "01000");
634
mysqlToSql99State.put(new Integer(
675
mysqlToSql99State.put(Constants.integerValueOf(
635
676
MysqlErrorNumbers.ER_WRONG_NAME_FOR_INDEX), "42000");
636
mysqlToSql99State.put(new Integer(
677
mysqlToSql99State.put(Constants.integerValueOf(
637
678
MysqlErrorNumbers.ER_WRONG_NAME_FOR_CATALOG), "42000");
638
mysqlToSql99State.put(new Integer(
679
mysqlToSql99State.put(Constants.integerValueOf(
639
680
MysqlErrorNumbers.ER_UNKNOWN_STORAGE_ENGINE), "42000");
884
925
public static SQLException createSQLException(String message,
885
926
String sqlState) {
886
if (sqlState != null) {
887
if (sqlState.startsWith("08")) {
888
return new MySQLNonTransientConnectionException(message,
892
if (sqlState.startsWith("22")) {
893
return new MySQLDataException(message, sqlState);
896
if (sqlState.startsWith("23")) {
897
return new MySQLIntegrityConstraintViolationException(message,
901
if (sqlState.startsWith("42")) {
902
return new MySQLSyntaxErrorException(message, sqlState);
905
if (sqlState.startsWith("40")) {
906
return new MySQLTransactionRollbackException(message, sqlState);
910
return new SQLException(message, sqlState);
927
return createSQLException(message, sqlState, 0);
913
930
public static SQLException createSQLException(String message) {
914
931
return new SQLException(message);
934
public static SQLException createSQLException(String message, String sqlState, Throwable cause) {
935
if (THROWABLE_INIT_CAUSE_METHOD == null) {
937
message = message + " due to " + cause.toString();
941
SQLException sqlEx = createSQLException(message, sqlState);
943
if (cause != null && THROWABLE_INIT_CAUSE_METHOD != null) {
945
THROWABLE_INIT_CAUSE_METHOD.invoke(sqlEx, new Object[] {cause});
946
} catch (Throwable t) {
947
// we're not going to muck with that here, since it's
948
// an error condition anyway!
917
955
public static SQLException createSQLException(String message,
918
956
String sqlState, int vendorErrorCode) {
919
if (sqlState != null) {
920
if (sqlState.startsWith("08")) {
921
return new MySQLNonTransientConnectionException(message,
922
sqlState, vendorErrorCode);
925
if (sqlState.startsWith("22")) {
926
return new MySQLDataException(message, sqlState,
930
if (sqlState.startsWith("23")) {
931
return new MySQLIntegrityConstraintViolationException(message,
932
sqlState, vendorErrorCode);
935
if (sqlState.startsWith("42")) {
936
return new MySQLSyntaxErrorException(message, sqlState,
940
if (sqlState.startsWith("40")) {
941
return new MySQLTransactionRollbackException(message, sqlState,
946
return new SQLException(message, sqlState, vendorErrorCode);
957
return createSQLException(message, sqlState, vendorErrorCode, false);
960
public static SQLException createSQLException(String message,
961
String sqlState, int vendorErrorCode, boolean isTransient) {
963
if (sqlState != null) {
964
if (sqlState.startsWith("08")) {
966
if (!Util.isJdbc4()) {
967
return new MySQLTransientConnectionException(
968
message, sqlState, vendorErrorCode);
971
return (SQLException) Util
973
"com.mysql.jdbc.exceptions.jdbc4.MySQLTransientConnectionException",
974
new Class[] { String.class,
975
String.class, Integer.TYPE },
976
new Object[] { message, sqlState,
977
Constants.integerValueOf(vendorErrorCode) });
980
if (!Util.isJdbc4()) {
981
return new MySQLNonTransientConnectionException(
982
message, sqlState, vendorErrorCode);
985
return (SQLException) Util
987
"com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException",
988
new Class[] { String.class, String.class,
989
Integer.TYPE }, new Object[] {
991
Constants.integerValueOf(vendorErrorCode) });
994
if (sqlState.startsWith("22")) {
995
if (!Util.isJdbc4()) {
996
return new MySQLDataException(message, sqlState,
1000
return (SQLException) Util
1002
"com.mysql.jdbc.exceptions.jdbc4.MySQLDataException",
1003
new Class[] { String.class, String.class,
1004
Integer.TYPE }, new Object[] {
1006
Constants.integerValueOf(vendorErrorCode) });
1009
if (sqlState.startsWith("23")) {
1011
if (!Util.isJdbc4()) {
1012
return new MySQLIntegrityConstraintViolationException(
1013
message, sqlState, vendorErrorCode);
1016
return (SQLException) Util
1018
"com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException",
1019
new Class[] { String.class, String.class,
1020
Integer.TYPE }, new Object[] {
1022
Constants.integerValueOf(vendorErrorCode) });
1025
if (sqlState.startsWith("42")) {
1026
if (!Util.isJdbc4()) {
1027
return new MySQLSyntaxErrorException(message, sqlState,
1031
return (SQLException) Util
1033
"com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException",
1034
new Class[] { String.class, String.class,
1035
Integer.TYPE }, new Object[] {
1037
Constants.integerValueOf(vendorErrorCode) });
1040
if (sqlState.startsWith("40")) {
1041
if (!Util.isJdbc4()) {
1042
return new MySQLTransactionRollbackException(message,
1043
sqlState, vendorErrorCode);
1046
return (SQLException) Util
1048
"com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException",
1049
new Class[] { String.class, String.class,
1050
Integer.TYPE }, new Object[] {
1052
Constants.integerValueOf(vendorErrorCode) });
1056
return new SQLException(message, sqlState, vendorErrorCode);
1057
} catch (SQLException sqlEx) {
1058
return new SQLException(
1059
"Unable to create correct SQLException class instance, error class/codes may be incorrect. Reason: "
1060
+ Util.stackTraceToString(sqlEx),
1061
SQL_STATE_GENERAL_ERROR);
1065
public static SQLException createCommunicationsException(ConnectionImpl conn, long lastPacketSentTimeMs,
1066
Exception underlyingException) {
1067
SQLException exToReturn = null;
1069
if (!Util.isJdbc4()) {
1070
exToReturn = new CommunicationsException(conn, lastPacketSentTimeMs, underlyingException);
1074
exToReturn = (SQLException) Util.handleNewInstance(JDBC_4_COMMUNICATIONS_EXCEPTION_CTOR, new Object[] {
1075
conn, Constants.longValueOf(lastPacketSentTimeMs), underlyingException});
1076
} catch (SQLException sqlEx) {
1077
// We should _never_ get this, but let's not swallow it either
1083
if (THROWABLE_INIT_CAUSE_METHOD != null && underlyingException != null) {
1085
THROWABLE_INIT_CAUSE_METHOD.invoke(exToReturn, new Object[] {underlyingException});
1086
} catch (Throwable t) {
1087
// we're not going to muck with that here, since it's
1088
// an error condition anyway!
1096
* Creates a communications link failure message to be used
1097
* in CommunicationsException that (hopefully) has some better
1098
* information and suggestions based on heuristics.
1101
* @param lastPacketSentTimeMs
1102
* @param underlyingException
1103
* @param streamingResultSetInPlay
1106
public static String createLinkFailureMessageBasedOnHeuristics(
1107
ConnectionImpl conn,
1108
long lastPacketSentTimeMs, Exception underlyingException,
1109
boolean streamingResultSetInPlay) {
1110
long serverTimeoutSeconds = 0;
1111
boolean isInteractiveClient = false;
1114
isInteractiveClient = conn.getInteractiveClient();
1116
String serverTimeoutSecondsStr = null;
1118
if (isInteractiveClient) {
1119
serverTimeoutSecondsStr = conn
1120
.getServerVariable("interactive_timeout"); //$NON-NLS-1$
1122
serverTimeoutSecondsStr = conn
1123
.getServerVariable("wait_timeout"); //$NON-NLS-1$
1126
if (serverTimeoutSecondsStr != null) {
1128
serverTimeoutSeconds = Long
1129
.parseLong(serverTimeoutSecondsStr);
1130
} catch (NumberFormatException nfe) {
1131
serverTimeoutSeconds = 0;
1136
StringBuffer exceptionMessageBuf = new StringBuffer();
1138
if (lastPacketSentTimeMs == 0) {
1139
lastPacketSentTimeMs = System.currentTimeMillis();
1142
long timeSinceLastPacket = (System.currentTimeMillis() - lastPacketSentTimeMs) / 1000;
1144
int dueToTimeout = DUE_TO_TIMEOUT_FALSE;
1146
StringBuffer timeoutMessageBuf = null;
1148
if (streamingResultSetInPlay) {
1149
exceptionMessageBuf.append(Messages
1150
.getString("CommunicationsException.ClientWasStreaming")); //$NON-NLS-1$
1152
if (serverTimeoutSeconds != 0) {
1153
if (timeSinceLastPacket > serverTimeoutSeconds) {
1154
dueToTimeout = DUE_TO_TIMEOUT_TRUE;
1156
timeoutMessageBuf = new StringBuffer();
1158
timeoutMessageBuf.append(Messages
1159
.getString("CommunicationsException.2")); //$NON-NLS-1$
1161
if (!isInteractiveClient) {
1162
timeoutMessageBuf.append(Messages
1163
.getString("CommunicationsException.3")); //$NON-NLS-1$
1165
timeoutMessageBuf.append(Messages
1166
.getString("CommunicationsException.4")); //$NON-NLS-1$
1170
} else if (timeSinceLastPacket > DEFAULT_WAIT_TIMEOUT_SECONDS) {
1171
dueToTimeout = DUE_TO_TIMEOUT_MAYBE;
1173
timeoutMessageBuf = new StringBuffer();
1175
timeoutMessageBuf.append(Messages
1176
.getString("CommunicationsException.5")); //$NON-NLS-1$
1177
timeoutMessageBuf.append(Messages
1178
.getString("CommunicationsException.6")); //$NON-NLS-1$
1179
timeoutMessageBuf.append(Messages
1180
.getString("CommunicationsException.7")); //$NON-NLS-1$
1181
timeoutMessageBuf.append(Messages
1182
.getString("CommunicationsException.8")); //$NON-NLS-1$
1185
if (dueToTimeout == DUE_TO_TIMEOUT_TRUE
1186
|| dueToTimeout == DUE_TO_TIMEOUT_MAYBE) {
1188
exceptionMessageBuf.append(Messages
1189
.getString("CommunicationsException.9")); //$NON-NLS-1$
1190
exceptionMessageBuf.append(timeSinceLastPacket);
1191
exceptionMessageBuf.append(Messages
1192
.getString("CommunicationsException.10")); //$NON-NLS-1$
1194
if (timeoutMessageBuf != null) {
1195
exceptionMessageBuf.append(timeoutMessageBuf);
1198
exceptionMessageBuf.append(Messages
1199
.getString("CommunicationsException.11")); //$NON-NLS-1$
1200
exceptionMessageBuf.append(Messages
1201
.getString("CommunicationsException.12")); //$NON-NLS-1$
1202
exceptionMessageBuf.append(Messages
1203
.getString("CommunicationsException.13")); //$NON-NLS-1$
1207
// Attempt to determine the reason for the underlying exception
1208
// (we can only make a best-guess here)
1211
if (underlyingException instanceof BindException) {
1212
if (conn.getLocalSocketAddress() != null
1213
&& !Util.interfaceExists(conn
1214
.getLocalSocketAddress())) {
1215
exceptionMessageBuf.append(Messages
1216
.getString("CommunicationsException.19a")); //$NON-NLS-1$
1218
// too many client connections???
1219
exceptionMessageBuf.append(Messages
1220
.getString("CommunicationsException.14")); //$NON-NLS-1$
1221
exceptionMessageBuf.append(Messages
1222
.getString("CommunicationsException.15")); //$NON-NLS-1$
1223
exceptionMessageBuf.append(Messages
1224
.getString("CommunicationsException.16")); //$NON-NLS-1$
1225
exceptionMessageBuf.append(Messages
1226
.getString("CommunicationsException.17")); //$NON-NLS-1$
1227
exceptionMessageBuf.append(Messages
1228
.getString("CommunicationsException.18")); //$NON-NLS-1$
1229
exceptionMessageBuf.append(Messages
1230
.getString("CommunicationsException.19")); //$NON-NLS-1$
1236
if (exceptionMessageBuf.length() == 0) {
1237
// We haven't figured out a good reason, so copy it.
1238
exceptionMessageBuf.append(Messages
1239
.getString("CommunicationsException.20")); //$NON-NLS-1$
1241
if (THROWABLE_INIT_CAUSE_METHOD == null &&
1242
underlyingException != null) {
1243
exceptionMessageBuf.append(Messages
1244
.getString("CommunicationsException.21")); //$NON-NLS-1$
1245
exceptionMessageBuf.append(Util
1246
.stackTraceToString(underlyingException));
1249
if (conn != null && conn.getMaintainTimeStats()
1250
&& !conn.getParanoid()) {
1252
.append("\n\nLast packet sent to the server was ");
1253
exceptionMessageBuf.append(System.currentTimeMillis()
1254
- lastPacketSentTimeMs);
1255
exceptionMessageBuf.append(" ms ago.");
1259
return exceptionMessageBuf.toString();