Changeset 3138
- Timestamp:
- Feb 4, 2005, 3:01:57 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/archive/psdb/psDB.c (modified) (52 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/archive/psdb/psDB.c
r3137 r3138 8 8 * @author Joshua Hoblitt 9 9 * 10 * @version $Revision: 1. 4$ $Name: not supported by cvs2svn $11 * @date $Date: 2005-02-05 0 0:57:49$10 * @version $Revision: 1.5 $ $Name: not supported by cvs2svn $ 11 * @date $Date: 2005-02-05 01:01:57 $ 12 12 * 13 13 * Copyright 2005 Joshua Hoblitt, University of Hawaii … … 29 29 } mysqlType; 30 30 31 static char *p _psDBIntToString(psU64 n);32 static void p _psDBAddToLookupTable(psHash *lookupTable, const psU32 type, const char *string);33 static psHash *p _psDBGetMySQLToSQLTable(void);34 static void p _psDBMySQLToSQLTableCleanup(void);35 static psHash *p _psDBGetPSToSQLTable(void);36 static void p _psDBPSToSQLTableCleanup(void);37 static psHash *p _psDBGetSQLToPSTable(void);38 static void p _psDBSQLToPSTableCleanup(void);39 static void p _psDBPSToMySQLTableCleanup(void);40 static size_t p _psStringAppend(char **dest, const char *source);41 static bool p _psDBRunQuery(psDB *dbh, const char *query);42 static char *p _psDBGenerateWhereSQL(psMetadata *where);43 static size_t p _psStringPrepend(char **dest, const char *source);44 static psPtr p _psDBGetPTypeNull(psElemType pType);45 static char *p _psDBGenerateInsertRowSQL(const char *tableName, psMetadata *row);46 static char *p _psDBPTypeAsString(psPtr data, psElemType pType);47 static char *p _psDBGenerateCreateTableSQL(const char *tableName, psMetadata *where);48 static char *p _psDBGenerateSelectColumnSQL(const char *tableName, const char *col, const psU64 limit);49 static char *p _psDBGenerateSelectRowsSQL(const char *tableName, psMetadata *where);50 static psPtr p _psDBAllocMySQLType(enum enum_field_types type, bool isUnsigned);31 static char *psDBIntToString(psU64 n); 32 static void psDBAddToLookupTable(psHash *lookupTable, const psU32 type, const char *string); 33 static psHash *psDBGetMySQLToSQLTable(void); 34 static void psDBMySQLToSQLTableCleanup(void); 35 static psHash *psDBGetPSToSQLTable(void); 36 static void psDBPSToSQLTableCleanup(void); 37 static psHash *psDBGetSQLToPSTable(void); 38 static void psDBSQLToPSTableCleanup(void); 39 static void psDBPSToMySQLTableCleanup(void); 40 static size_t psStringAppend(char **dest, const char *source); 41 static bool psDBRunQuery(psDB *dbh, const char *query); 42 static char *psDBGenerateWhereSQL(psMetadata *where); 43 static size_t psStringPrepend(char **dest, const char *source); 44 static psPtr psDBGetPTypeNull(psElemType pType); 45 static char *psDBGenerateInsertRowSQL(const char *tableName, psMetadata *row); 46 static char *psDBPTypeAsString(psPtr data, psElemType pType); 47 static char *psDBGenerateCreateTableSQL(const char *tableName, psMetadata *where); 48 static char *psDBGenerateSelectColumnSQL(const char *tableName, const char *col, const psU64 limit); 49 static char *psDBGenerateSelectRowsSQL(const char *tableName, psMetadata *where); 50 static psPtr psDBAllocMySQLType(enum enum_field_types type, bool isUnsigned); 51 51 52 52 psDB *psDBInit(const char *host, const char *user, const char *passwd, const char *dbname) … … 77 77 78 78 // these lookup tables should probably be moved into psDB 79 p _psDBMySQLToSQLTableCleanup();80 p _psDBPSToSQLTableCleanup();81 p _psDBSQLToPSTableCleanup();82 p _psDBPSToMySQLTableCleanup();79 psDBMySQLToSQLTableCleanup(); 80 psDBPSToSQLTableCleanup(); 81 psDBSQLToPSTableCleanup(); 82 psDBPSToMySQLTableCleanup(); 83 83 } 84 84 … … 90 90 // init query with a psMemBlock 91 91 query = psStringCopy("CREATE DATABASE "); 92 p _psStringAppend(&query, dbname);92 psStringAppend(&query, dbname); 93 93 94 94 // the MySQL C API notes that mysql_create_db() is deprecated 95 status = p _psDBRunQuery(dbh, query);95 status = psDBRunQuery(dbh, query); 96 96 97 97 psFree(query); … … 118 118 // init query with a psMemBlock 119 119 query = psStringCopy("DROP DATABASE "); 120 p _psStringAppend(&query, dbname);120 psStringAppend(&query, dbname); 121 121 122 // the MySQL C API notes that mysql_dro p_db() is deprecated123 status = p _psDBRunQuery(dbh, query);122 // the MySQL C API notes that mysql_drodb() is deprecated 123 status = psDBRunQuery(dbh, query); 124 124 125 125 psFree(query); … … 133 133 bool status; 134 134 135 query = p _psDBGenerateCreateTableSQL(tableName, md);135 query = psDBGenerateCreateTableSQL(tableName, md); 136 136 137 137 fprintf(stderr, "complete query is: %s\n", query); 138 138 139 status = p _psDBRunQuery(dbh, query);139 status = psDBRunQuery(dbh, query); 140 140 psFree(query); 141 141 … … 150 150 // init query with a psMemBlock 151 151 query = psStringCopy("DROP TABLE "); 152 p _psStringAppend(&query, tableName);153 154 status = p _psDBRunQuery(dbh, query);152 psStringAppend(&query, tableName); 153 154 status = psDBRunQuery(dbh, query); 155 155 156 156 psFree(query); … … 170 170 psPtr data; 171 171 172 query = p _psDBGenerateSelectColumnSQL(tableName, col, limit);173 174 if (p _psDBRunQuery(dbh, query)) {172 query = psDBGenerateSelectColumnSQL(tableName, col, limit); 173 174 if (psDBRunQuery(dbh, query)) { 175 175 result = mysql_store_result(dbh->mysql); 176 176 } else { … … 232 232 a = (d)(strlen(b->data[i]) \ 233 233 ? atoi(b->data[i]) \ 234 : *(d *)p _psDBGetPTypeNull(e)); \234 : *(d *)psDBGetPTypeNull(e)); \ 235 235 } 236 236 … … 326 326 psPtr data; 327 327 328 query = p _psDBGenerateSelectRowsSQL(tableName, where);328 query = psDBGenerateSelectRowsSQL(tableName, where); 329 329 330 330 fprintf(stderr, "complete query is: %s\n", query); 331 331 332 if (p _psDBRunQuery(dbh, query)) {332 if (psDBRunQuery(dbh, query)) { 333 333 result = mysql_store_result(dbh->mysql); 334 334 } else { … … 351 351 fieldCount = mysql_num_fields(result); 352 352 353 mysqlToSQLTable = p _psDBGetMySQLToSQLTable();354 sqlToPSTable = p _psDBGetSQLToPSTable();353 mysqlToSQLTable = psDBGetMySQLToSQLTable(); 354 sqlToPSTable = psDBGetSQLToPSTable(); 355 355 356 356 while ((row = mysql_fetch_row(result))) { … … 363 363 // as the the mysql types do not tell you if the value is 364 364 // signed or unsigned 365 key = p _psDBIntToString((psU64)field[i].type);365 key = psDBIntToString((psU64)field[i].type); 366 366 value = psHashLookup(mysqlToSQLTable, key); 367 367 sqlType = psStringCopy(value); … … 369 369 370 370 if (field->flags & UNSIGNED_FLAG) { 371 p _psStringPrepend(&sqlType, "UNSIGNED ");371 psStringPrepend(&sqlType, "UNSIGNED "); 372 372 } 373 373 … … 383 383 type = PS_META_STR; 384 384 data = fieldLength[i] ? psStringNCopy(row[i], fieldLength[i]) 385 : p _psDBGetPTypeNull(pType);385 : psDBGetPTypeNull(pType); 386 386 } else { 387 387 type = PS_META_PRIMITIVE; … … 390 390 memcpy(data, row[i], fieldLength[i]); 391 391 } else { 392 data = p _psDBGetPTypeNull(pType);392 data = psDBGetPTypeNull(pType); 393 393 } 394 394 } … … 435 435 psU32 paramCount; 436 436 437 query = p _psDBGenerateInsertRowSQL(tableName, row);437 query = psDBGenerateInsertRowSQL(tableName, row); 438 438 439 439 fprintf(stderr, "complete query is: %s\n", query); … … 484 484 } 485 485 486 static char *p _psDBGenerateInsertRowSQL(const char *tableName, psMetadata *row)486 static char *psDBGenerateInsertRowSQL(const char *tableName, psMetadata *row) 487 487 { 488 488 char *query; … … 492 492 // init query with a psMemBlock 493 493 query = psStringCopy("INSERT INTO "); 494 p _psStringAppend(&query, tableName);495 p _psStringAppend(&query, " (");494 psStringAppend(&query, tableName); 495 psStringAppend(&query, " ("); 496 496 497 497 cursor = psListIteratorAlloc(row->list, 0); … … 499 499 // get field names 500 500 while ((item = psListGetNext(cursor))) { 501 p _psStringAppend(&query, item->name);501 psStringAppend(&query, item->name); 502 502 503 503 if (!cursor->offEnd) { 504 504 // + , + _ 505 p _psStringAppend(&query, ", ");506 } 507 } 508 509 p _psStringAppend(&query, ") VALUES (");505 psStringAppend(&query, ", "); 506 } 507 } 508 509 psStringAppend(&query, ") VALUES ("); 510 510 511 511 psListIteratorSet(cursor, 0); … … 513 513 // create field place holders 514 514 while ((item = psListGetNext(cursor))) { 515 p _psStringAppend(&query, "?");515 psStringAppend(&query, "?"); 516 516 517 517 if (!cursor->offEnd) { 518 518 // + , + _ 519 p _psStringAppend(&query, ", ");519 psStringAppend(&query, ", "); 520 520 } 521 521 } … … 523 523 psFree(cursor); 524 524 525 p _psStringAppend(&query, ")");525 psStringAppend(&query, ")"); 526 526 527 527 return query; 528 528 } 529 529 530 static char *p _psDBGenerateWhereSQL(psMetadata *where)530 static char *psDBGenerateWhereSQL(psMetadata *where) 531 531 { 532 532 char *query; … … 545 545 if (item->type == PS_META_STR) { 546 546 // + column name + _ + like + _ + ' + value + ' 547 p _psStringAppend(&query, item->name);547 psStringAppend(&query, item->name); 548 548 if (*(char *)item->data.V == '\0') { 549 p _psStringAppend(&query, " IS NULL");549 psStringAppend(&query, " IS NULL"); 550 550 } else { 551 p _psStringAppend(&query, " LIKE '");552 p _psStringAppend(&query, item->data.V);553 p _psStringAppend(&query, "'");551 psStringAppend(&query, " LIKE '"); 552 psStringAppend(&query, item->data.V); 553 psStringAppend(&query, "'"); 554 554 } 555 555 } else { … … 564 564 if (!cursor->offEnd) { 565 565 // + and 566 p _psStringAppend(&query, " AND ");566 psStringAppend(&query, " AND "); 567 567 } 568 568 } … … 573 573 } 574 574 575 static char *p _psDBGenerateCreateTableSQL(const char *tableName, psMetadata *table)575 static char *psDBGenerateCreateTableSQL(const char *tableName, psMetadata *table) 576 576 { 577 577 psMetadataItem *item; … … 586 586 587 587 // + _ + tableName + _ + ( 588 p _psStringAppend(&query, " ");589 p _psStringAppend(&query, tableName);590 p _psStringAppend(&query, " (");588 psStringAppend(&query, " "); 589 psStringAppend(&query, tableName); 590 psStringAppend(&query, " ("); 591 591 592 592 // get pType lookup table 593 colType = p _psDBGetPSToSQLTable();593 colType = psDBGetPSToSQLTable(); 594 594 595 595 // get Metadata iterator … … 599 599 while ((item = psListGetNext(cursor))) { 600 600 // + column name + _ 601 p _psStringAppend(&query, item->name);602 p _psStringAppend(&query, " ");601 psStringAppend(&query, item->name); 602 psStringAppend(&query, " "); 603 603 604 604 if (item->type == PS_META_PRIMITIVE) { 605 605 // lookup SQL column type 606 key = p _psDBIntToString((psU64)item->pType);606 key = psDBIntToString((psU64)item->pType); 607 607 value = psHashLookup(colType, key); 608 608 psFree(key); 609 609 610 610 // + column type 611 p _psStringAppend(&query, value);611 psStringAppend(&query, value); 612 612 } else if (item->type == PS_META_STR) { 613 613 // + varchar( + length + ) 614 p _psStringAppend(&query, "varchar(");615 p _psStringAppend(&query, item->data.V);616 p _psStringAppend(&query, ")");614 psStringAppend(&query, "varchar("); 615 psStringAppend(&query, item->data.V); 616 psStringAppend(&query, ")"); 617 617 } else { 618 618 // error … … 622 622 if (!cursor->offEnd) { 623 623 // + , 624 p _psStringAppend(&query, ", ");624 psStringAppend(&query, ", "); 625 625 } 626 626 } … … 633 633 while ((item = psListGetNext(cursor))) { 634 634 if ((strncmp(item->comment, "Primary Key", strlen("Primary Key"))) == 0) { 635 p _psStringAppend(&query, ", PRIMARY KEY(");636 p _psStringAppend(&query, item->name);637 p _psStringAppend(&query, ")");635 psStringAppend(&query, ", PRIMARY KEY("); 636 psStringAppend(&query, item->name); 637 psStringAppend(&query, ")"); 638 638 } else if ((strncmp(item->comment, "Key", strlen("Key"))) == 0) { 639 p _psStringAppend(&query, ", KEY(");640 p _psStringAppend(&query, item->name);641 p _psStringAppend(&query, ")");639 psStringAppend(&query, ", KEY("); 640 psStringAppend(&query, item->name); 641 psStringAppend(&query, ")"); 642 642 } 643 643 } … … 646 646 647 647 // + ) + _ + ENGINE=innodb; 648 p _psStringAppend(&query, ") ENGINE=innodb");648 psStringAppend(&query, ") ENGINE=innodb"); 649 649 650 650 return query; 651 651 } 652 652 653 static char *p _psDBGenerateSelectColumnSQL(const char *tableName, const char *col, const psU64 limit)653 static char *psDBGenerateSelectColumnSQL(const char *tableName, const char *col, const psU64 limit) 654 654 { 655 655 char *query; … … 658 658 // init query with a psMemBlock 659 659 query = psStringCopy("SELECT "); 660 p _psStringAppend(&query, col);661 p _psStringAppend(&query, " FROM ");662 p _psStringAppend(&query, tableName);660 psStringAppend(&query, col); 661 psStringAppend(&query, " FROM "); 662 psStringAppend(&query, tableName); 663 663 664 664 if (limit) { 665 p _psStringAppend(&query, " LIMIT ");666 limitString = p _psDBIntToString(limit);667 p _psStringAppend(&query, limitString);665 psStringAppend(&query, " LIMIT "); 666 limitString = psDBIntToString(limit); 667 psStringAppend(&query, limitString); 668 668 psFree(limitString); 669 669 } … … 672 672 } 673 673 674 static char *p _psDBGenerateSelectRowsSQL(const char *tableName, psMetadata *where)674 static char *psDBGenerateSelectRowsSQL(const char *tableName, psMetadata *where) 675 675 { 676 676 char *query; … … 679 679 // init query with a psMemBlock 680 680 query = psStringCopy("SELECT * FROM "); 681 p _psStringAppend(&query, tableName);682 p _psStringAppend(&query, " ");683 684 string = p _psDBGenerateWhereSQL(where);681 psStringAppend(&query, tableName); 682 psStringAppend(&query, " "); 683 684 string = psDBGenerateWhereSQL(where); 685 685 // FIXME check for error 686 p _psStringAppend(&query, string);686 psStringAppend(&query, string); 687 687 psFree(string); 688 688 … … 693 693 *(a *)myNaN = b; 694 694 695 static psPtr p _psDBGetPTypeNull(psElemType pType)695 static psPtr psDBGetPTypeNull(psElemType pType) 696 696 { 697 697 psPtr myNaN; … … 752 752 snprintf(string, length, b, *(a *)data); 753 753 754 static char *p _psDBPTypeAsString(psPtr data, psElemType pType)754 static char *psDBPTypeAsString(psPtr data, psElemType pType) 755 755 { 756 756 size_t length; … … 805 805 } 806 806 807 static bool p _psDBRunQuery(psDB *dbh, const char *query)807 static bool psDBRunQuery(psDB *dbh, const char *query) 808 808 { 809 809 if (mysql_real_query(dbh->mysql, query, (unsigned long)strlen(query)) !=0) { … … 816 816 } 817 817 818 static size_t p _psStringAppend(char **dest, const char *source)818 static size_t psStringAppend(char **dest, const char *source) 819 819 { 820 820 size_t newSize; … … 830 830 } 831 831 832 static size_t p _psStringPrepend(char **dest, const char *source)832 static size_t psStringPrepend(char **dest, const char *source) 833 833 { 834 834 size_t newSize; … … 853 853 } 854 854 855 static psHash *p _psDBGetPSToSQLTable(void)855 static psHash *psDBGetPSToSQLTable(void) 856 856 { 857 857 static psHash *lookupTable = NULL; … … 860 860 lookupTable = psHashAlloc(14); 861 861 862 p _psDBAddToLookupTable(lookupTable, PS_TYPE_S8, "TINYINT");863 p _psDBAddToLookupTable(lookupTable, PS_TYPE_S16, "SMALLINT");864 p _psDBAddToLookupTable(lookupTable, PS_TYPE_S32, "INT");865 p _psDBAddToLookupTable(lookupTable, PS_TYPE_S64, "BIGINT");866 p _psDBAddToLookupTable(lookupTable, PS_TYPE_U8, "UNSIGNED TINYINT");867 p _psDBAddToLookupTable(lookupTable, PS_TYPE_U16, "UNSIGNED SMALLINT");868 p _psDBAddToLookupTable(lookupTable, PS_TYPE_U32, "UNSIGNED INT");869 p _psDBAddToLookupTable(lookupTable, PS_TYPE_U64, "UNSIGNED BIGINT");870 p _psDBAddToLookupTable(lookupTable, PS_TYPE_F32, "FLOAT");871 p _psDBAddToLookupTable(lookupTable, PS_TYPE_F64, "DOUBLE");872 p _psDBAddToLookupTable(lookupTable, PS_TYPE_C32, "PS_TYPE_C32 is not supported");873 p _psDBAddToLookupTable(lookupTable, PS_TYPE_C64, "PS_TYPE_C64 is not supported");874 p _psDBAddToLookupTable(lookupTable, PS_TYPE_BOOL,"BOOLEAN");862 psDBAddToLookupTable(lookupTable, PS_TYPE_S8, "TINYINT"); 863 psDBAddToLookupTable(lookupTable, PS_TYPE_S16, "SMALLINT"); 864 psDBAddToLookupTable(lookupTable, PS_TYPE_S32, "INT"); 865 psDBAddToLookupTable(lookupTable, PS_TYPE_S64, "BIGINT"); 866 psDBAddToLookupTable(lookupTable, PS_TYPE_U8, "UNSIGNED TINYINT"); 867 psDBAddToLookupTable(lookupTable, PS_TYPE_U16, "UNSIGNED SMALLINT"); 868 psDBAddToLookupTable(lookupTable, PS_TYPE_U32, "UNSIGNED INT"); 869 psDBAddToLookupTable(lookupTable, PS_TYPE_U64, "UNSIGNED BIGINT"); 870 psDBAddToLookupTable(lookupTable, PS_TYPE_F32, "FLOAT"); 871 psDBAddToLookupTable(lookupTable, PS_TYPE_F64, "DOUBLE"); 872 psDBAddToLookupTable(lookupTable, PS_TYPE_C32, "PS_TYPE_C32 is not supported"); 873 psDBAddToLookupTable(lookupTable, PS_TYPE_C64, "PS_TYPE_C64 is not supported"); 874 psDBAddToLookupTable(lookupTable, PS_TYPE_BOOL,"BOOLEAN"); 875 875 // no support for CHAR, TEXT or GLOB 876 p _psDBAddToLookupTable(lookupTable, PS_TYPE_PTR, "VARCHAR");876 psDBAddToLookupTable(lookupTable, PS_TYPE_PTR, "VARCHAR"); 877 877 } 878 878 … … 883 883 } 884 884 885 static void p _psDBPSToSQLTableCleanup(void)885 static void psDBPSToSQLTableCleanup(void) 886 886 { 887 887 psHash *lookupTable; 888 888 889 lookupTable = p _psDBGetPSToSQLTable();889 lookupTable = psDBGetPSToSQLTable(); 890 890 891 891 psMemDecrRefCounter(lookupTable); … … 893 893 } 894 894 895 static psHash *p _psDBGetSQLToPSTable(void)895 static psHash *psDBGetSQLToPSTable(void) 896 896 { 897 897 static psHash *lookupTable = NULL; … … 904 904 if (!lookupTable) { 905 905 // invert the PSToSQL table 906 psToSQLTable = p _psDBGetPSToSQLTable();906 psToSQLTable = psDBGetPSToSQLTable(); 907 907 lookupTable = psHashAlloc(psToSQLTable->nbucket); 908 908 … … 927 927 } 928 928 929 static void p _psDBSQLToPSTableCleanup(void)929 static void psDBSQLToPSTableCleanup(void) 930 930 { 931 931 psHash *lookupTable; 932 932 933 lookupTable = p _psDBGetSQLToPSTable();933 lookupTable = psDBGetSQLToPSTable(); 934 934 935 935 psMemDecrRefCounter(lookupTable); … … 937 937 } 938 938 939 static psHash *p _psDBGetMySQLToSQLTable(void)939 static psHash *psDBGetMySQLToSQLTable(void) 940 940 { 941 941 static psHash *lookupTable = NULL; … … 944 944 lookupTable = psHashAlloc(20); 945 945 946 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_TINY, "TINYINT");947 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_SHORT, "SMALLINT");948 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_LONG, "INT");949 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_INT24, "MEDIUMINT");950 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_LONGLONG, "BIGINT");951 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_DECIMAL, "DECIMAL");952 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_FLOAT, "FLOAT");953 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_DOUBLE, "DOUBLE");954 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_TIMESTAMP, "TIMESTAMP");955 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_DATE, "DATE");956 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_TIME, "TIME");957 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_DATETIME, "DATETIME");958 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_YEAR, "YEAR");959 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_STRING, "CHAR");960 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_VAR_STRING,"VARCHAR");961 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_BLOB, "BLOB");962 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_SET, "SET");963 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_ENUM, "ENUM");964 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_NULL, "NULL-type");965 p _psDBAddToLookupTable(lookupTable, FIELD_TYPE_CHAR, "TINYINT");946 psDBAddToLookupTable(lookupTable, FIELD_TYPE_TINY, "TINYINT"); 947 psDBAddToLookupTable(lookupTable, FIELD_TYPE_SHORT, "SMALLINT"); 948 psDBAddToLookupTable(lookupTable, FIELD_TYPE_LONG, "INT"); 949 psDBAddToLookupTable(lookupTable, FIELD_TYPE_INT24, "MEDIUMINT"); 950 psDBAddToLookupTable(lookupTable, FIELD_TYPE_LONGLONG, "BIGINT"); 951 psDBAddToLookupTable(lookupTable, FIELD_TYPE_DECIMAL, "DECIMAL"); 952 psDBAddToLookupTable(lookupTable, FIELD_TYPE_FLOAT, "FLOAT"); 953 psDBAddToLookupTable(lookupTable, FIELD_TYPE_DOUBLE, "DOUBLE"); 954 psDBAddToLookupTable(lookupTable, FIELD_TYPE_TIMESTAMP, "TIMESTAMP"); 955 psDBAddToLookupTable(lookupTable, FIELD_TYPE_DATE, "DATE"); 956 psDBAddToLookupTable(lookupTable, FIELD_TYPE_TIME, "TIME"); 957 psDBAddToLookupTable(lookupTable, FIELD_TYPE_DATETIME, "DATETIME"); 958 psDBAddToLookupTable(lookupTable, FIELD_TYPE_YEAR, "YEAR"); 959 psDBAddToLookupTable(lookupTable, FIELD_TYPE_STRING, "CHAR"); 960 psDBAddToLookupTable(lookupTable, FIELD_TYPE_VAR_STRING,"VARCHAR"); 961 psDBAddToLookupTable(lookupTable, FIELD_TYPE_BLOB, "BLOB"); 962 psDBAddToLookupTable(lookupTable, FIELD_TYPE_SET, "SET"); 963 psDBAddToLookupTable(lookupTable, FIELD_TYPE_ENUM, "ENUM"); 964 psDBAddToLookupTable(lookupTable, FIELD_TYPE_NULL, "NULL-type"); 965 psDBAddToLookupTable(lookupTable, FIELD_TYPE_CHAR, "TINYINT"); 966 966 } 967 967 … … 972 972 } 973 973 974 static void p _psDBMySQLToSQLTableCleanup(void)974 static void psDBMySQLToSQLTableCleanup(void) 975 975 { 976 976 psHash *lookupTable; 977 977 978 lookupTable = p _psDBGetMySQLToSQLTable();978 lookupTable = psDBGetMySQLToSQLTable(); 979 979 980 980 psMemDecrRefCounter(lookupTable); … … 982 982 } 983 983 984 static psHash *p _psDBGetPSToMySQLTable(void)984 static psHash *psDBGetPSToMySQLTable(void) 985 985 { 986 986 static psHash *lookupTable = NULL; … … 989 989 lookupTable = psHashAlloc(16); 990 990 991 p _psDBAddToLookupTable(lookupTable, PS_TYPE_S8, p_psDBAllocMySQLType(MYSQL_TYPE_TINY, false));992 p _psDBAddToLookupTable(lookupTable, PS_TYPE_S16, p_psDBAllocMySQLType(MYSQL_TYPE_SHORT, false));993 p _psDBAddToLookupTable(lookupTable, PS_TYPE_S32, p_psDBAllocMySQLType(MYSQL_TYPE_LONG, false));994 p _psDBAddToLookupTable(lookupTable, PS_TYPE_S64, p_psDBAllocMySQLType(MYSQL_TYPE_LONGLONG, false));995 p _psDBAddToLookupTable(lookupTable, PS_TYPE_U8, p_psDBAllocMySQLType(MYSQL_TYPE_TINY, true));996 p _psDBAddToLookupTable(lookupTable, PS_TYPE_U16, p_psDBAllocMySQLType(MYSQL_TYPE_SHORT, true));997 p _psDBAddToLookupTable(lookupTable, PS_TYPE_U32, p_psDBAllocMySQLType(MYSQL_TYPE_LONG, true));998 p _psDBAddToLookupTable(lookupTable, PS_TYPE_U64, p_psDBAllocMySQLType(MYSQL_TYPE_LONGLONG, true));999 p _psDBAddToLookupTable(lookupTable, PS_TYPE_F32, p_psDBAllocMySQLType(MYSQL_TYPE_FLOAT, false));1000 p _psDBAddToLookupTable(lookupTable, PS_TYPE_F64, p_psDBAllocMySQLType(MYSQL_TYPE_DOUBLE, false));1001 p _psDBAddToLookupTable(lookupTable, PS_TYPE_C32, NULL); // unsupported1002 p _psDBAddToLookupTable(lookupTable, PS_TYPE_C64, NULL); // unsupported1003 p _psDBAddToLookupTable(lookupTable, PS_TYPE_BOOL, p_psDBAllocMySQLType(MYSQL_TYPE_TINY, true));1004 p _psDBAddToLookupTable(lookupTable, PS_TYPE_PTR, p_psDBAllocMySQLType(MYSQL_TYPE_VAR_STRING, false));991 psDBAddToLookupTable(lookupTable, PS_TYPE_S8, psDBAllocMySQLType(MYSQL_TYPE_TINY, false)); 992 psDBAddToLookupTable(lookupTable, PS_TYPE_S16, psDBAllocMySQLType(MYSQL_TYPE_SHORT, false)); 993 psDBAddToLookupTable(lookupTable, PS_TYPE_S32, psDBAllocMySQLType(MYSQL_TYPE_LONG, false)); 994 psDBAddToLookupTable(lookupTable, PS_TYPE_S64, psDBAllocMySQLType(MYSQL_TYPE_LONGLONG, false)); 995 psDBAddToLookupTable(lookupTable, PS_TYPE_U8, psDBAllocMySQLType(MYSQL_TYPE_TINY, true)); 996 psDBAddToLookupTable(lookupTable, PS_TYPE_U16, psDBAllocMySQLType(MYSQL_TYPE_SHORT, true)); 997 psDBAddToLookupTable(lookupTable, PS_TYPE_U32, psDBAllocMySQLType(MYSQL_TYPE_LONG, true)); 998 psDBAddToLookupTable(lookupTable, PS_TYPE_U64, psDBAllocMySQLType(MYSQL_TYPE_LONGLONG, true)); 999 psDBAddToLookupTable(lookupTable, PS_TYPE_F32, psDBAllocMySQLType(MYSQL_TYPE_FLOAT, false)); 1000 psDBAddToLookupTable(lookupTable, PS_TYPE_F64, psDBAllocMySQLType(MYSQL_TYPE_DOUBLE, false)); 1001 psDBAddToLookupTable(lookupTable, PS_TYPE_C32, NULL); // unsupported 1002 psDBAddToLookupTable(lookupTable, PS_TYPE_C64, NULL); // unsupported 1003 psDBAddToLookupTable(lookupTable, PS_TYPE_BOOL, psDBAllocMySQLType(MYSQL_TYPE_TINY, true)); 1004 psDBAddToLookupTable(lookupTable, PS_TYPE_PTR, psDBAllocMySQLType(MYSQL_TYPE_VAR_STRING, false)); 1005 1005 } 1006 1006 … … 1011 1011 } 1012 1012 1013 static psPtr p _psDBAllocMySQLType(enum enum_field_types type, bool isUnsigned)1013 static psPtr psDBAllocMySQLType(enum enum_field_types type, bool isUnsigned) 1014 1014 { 1015 1015 mysqlType *mType; … … 1022 1022 } 1023 1023 1024 static void p _psDBPSToMySQLTableCleanup(void)1024 static void psDBPSToMySQLTableCleanup(void) 1025 1025 { 1026 1026 psHash *lookupTable; 1027 1027 1028 lookupTable = p _psDBGetPSToMySQLTable();1028 lookupTable = psDBGetPSToMySQLTable(); 1029 1029 1030 1030 psMemDecrRefCounter(lookupTable); … … 1032 1032 } 1033 1033 1034 static void p _psDBAddToLookupTable(psHash *lookupTable, const psU32 type, const char *string)1034 static void psDBAddToLookupTable(psHash *lookupTable, const psU32 type, const char *string) 1035 1035 { 1036 1036 char *key; 1037 1037 char *value; 1038 1038 1039 key = p _psDBIntToString((psU64)type);1039 key = psDBIntToString((psU64)type); 1040 1040 value = psStringCopy(string); 1041 1041 … … 1046 1046 } 1047 1047 1048 static char *p _psDBIntToString(psU64 n)1048 static char *psDBIntToString(psU64 n) 1049 1049 { 1050 1050 char *string;
Note:
See TracChangeset
for help on using the changeset viewer.
