diff --git a/sql/swad.sql b/sql/swad.sql index d7e9172d..51f476bb 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -215,15 +215,15 @@ CREATE TABLE IF NOT EXISTS countries ( CtyCod INT NOT NULL, Alpha2 CHAR(2) NOT NULL, MapAttribution TEXT NOT NULL, - Name_ca VARCHAR(255) NOT NULL, - Name_de VARCHAR(255) NOT NULL, - Name_en VARCHAR(255) NOT NULL, - Name_es VARCHAR(255) NOT NULL, - Name_fr VARCHAR(255) NOT NULL, - Name_gn VARCHAR(255) NOT NULL, - Name_it VARCHAR(255) NOT NULL, - Name_pl VARCHAR(255) NOT NULL, - Name_pt VARCHAR(255) NOT NULL, + Name_ca VARCHAR(767) NOT NULL, + Name_de VARCHAR(767) NOT NULL, + Name_en VARCHAR(767) NOT NULL, + Name_es VARCHAR(767) NOT NULL, + Name_fr VARCHAR(767) NOT NULL, + Name_gn VARCHAR(767) NOT NULL, + Name_it VARCHAR(767) NOT NULL, + Name_pl VARCHAR(767) NOT NULL, + Name_pt VARCHAR(767) NOT NULL, WWW_ca VARCHAR(255) NOT NULL, WWW_de VARCHAR(255) NOT NULL, WWW_en VARCHAR(255) NOT NULL, diff --git a/swad_changelog.h b/swad_changelog.h index 32687050..252e9d03 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -204,13 +204,26 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.155.2 (2017-03-09)" +#define Log_PLATFORM_VERSION "SWAD 16.155.3 (2017-03-09)" #define CSS_FILE "swad16.147.css" #define JS_FILE "swad16.144.js" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1 /* + Version 16.155.3: Mar 10, 2017 Adjusting size of database fields. + Code refactoring related with renaming country name. (216620 lines) + 9 changes necessary in database: +ALTER TABLE countries CHANGE COLUMN Name_ca Name_ca VARCHAR(767) NOT NULL; +ALTER TABLE countries CHANGE COLUMN Name_de Name_de VARCHAR(767) NOT NULL; +ALTER TABLE countries CHANGE COLUMN Name_en Name_en VARCHAR(767) NOT NULL; +ALTER TABLE countries CHANGE COLUMN Name_es Name_es VARCHAR(767) NOT NULL; +ALTER TABLE countries CHANGE COLUMN Name_fr Name_fr VARCHAR(767) NOT NULL; +ALTER TABLE countries CHANGE COLUMN Name_gn Name_gn VARCHAR(767) NOT NULL; +ALTER TABLE countries CHANGE COLUMN Name_it Name_it VARCHAR(767) NOT NULL; +ALTER TABLE countries CHANGE COLUMN Name_pl Name_pl VARCHAR(767) NOT NULL; +ALTER TABLE countries CHANGE COLUMN Name_pt Name_pt VARCHAR(767) NOT NULL; + Version 16.155.2: Mar 09, 2017 Adjusting size of database fields. (216596 lines) 1 change necessary in database: ALTER TABLE chat CHANGE COLUMN RoomCode RoomCode VARCHAR(16) NOT NULL; diff --git a/swad_country.c b/swad_country.c index 0b85322f..54a5d86c 100644 --- a/swad_country.c +++ b/swad_country.c @@ -85,6 +85,8 @@ static long Cty_GetParamOtherCtyCod (void); static bool Cty_CheckIfNumericCountryCodeExists (long CtyCod); static bool Cty_CheckIfAlpha2CountryCodeExists (const char Alpha2[2 + 1]); static bool Cty_CheckIfCountryNameExists (Txt_Language_t Language,const char *Name,long CtyCod); +static void Cty_UpdateCtyNameDB (long CtyCod,const char *FieldName,const char *NewCtyName); + static void Cty_PutFormToCreateCountry (void); static void Cty_PutHeadCountriesForEdition (void); static void Cty_CreateCountry (struct Country *Cty); @@ -803,7 +805,7 @@ void Cty_DrawCountryMapAndNameWithLink (struct Country *Cty,Act_Action_t Action, const char *ClassLink) { extern const char *Txt_Go_to_X; - char CountryName[Hie_MAX_BYTES_FULL_NAME + 1]; + char CountryName[Cty_MAX_BYTES_NAME + 1]; /***** Start form *****/ Act_FormGoToStart (Action); @@ -819,7 +821,7 @@ void Cty_DrawCountryMapAndNameWithLink (struct Country *Cty,Act_Action_t Action, /***** Write country name and end link *****/ Str_Copy (CountryName,Cty->Name[Gbl.Prefs.Language], - Hie_MAX_BYTES_FULL_NAME); + Cty_MAX_BYTES_NAME); fprintf (Gbl.F.Out," %s (%s)" "" "", @@ -1099,7 +1101,7 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData) /* Get the name of the country in current language */ Str_Copy (Cty->Name[Gbl.Prefs.Language],row[2], - Hie_MAX_BYTES_FULL_NAME); + Cty_MAX_BYTES_NAME); break; case Cty_GET_EXTRA_DATA: /* Get the name of the country in several languages */ @@ -1108,7 +1110,7 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData) Lan++) { Str_Copy (Cty->Name[Lan],row[1 + Lan], - Hie_MAX_BYTES_FULL_NAME); + Cty_MAX_BYTES_NAME); Str_Copy (Cty->WWW[Lan],row[1 + Txt_NUM_LANGUAGES + Lan], Cns_MAX_BYTES_WWW); } @@ -1212,7 +1214,7 @@ void Cty_WriteSelectorOfCountry (void) void Cty_WriteCountryName (long CtyCod,const char *ClassLink) { extern struct Act_Actions Act_Actions[Act_NUM_ACTIONS]; - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]; + char CtyName[Cty_MAX_BYTES_NAME + 1]; char ActTxt[Act_MAX_BYTES_ACTION_TXT + 1]; bool PutForm = ClassLink && !Gbl.Form.Inside && // Only if not inside another form @@ -1279,7 +1281,7 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD Lan++) if (Lan == Gbl.Prefs.Language) Str_Copy (Cty->Name[Lan],Txt_Another_country, - Hie_MAX_BYTES_FULL_NAME); + Cty_MAX_BYTES_NAME); else Cty->Name[Lan][0] = '\0'; return false; @@ -1355,7 +1357,7 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD case Cty_GET_BASIC_DATA: /* Get name and WWW of the country in current language */ Str_Copy (Cty->Name[Gbl.Prefs.Language],row[1], - Hie_MAX_BYTES_FULL_NAME); + Cty_MAX_BYTES_NAME); Str_Copy (Cty->WWW[Gbl.Prefs.Language],row[2], Cns_MAX_BYTES_WWW); break; @@ -1366,7 +1368,7 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD Lan++) { Str_Copy (Cty->Name[Lan],row[Lan], - Hie_MAX_BYTES_FULL_NAME); + Cty_MAX_BYTES_NAME); Str_Copy (Cty->WWW[Lan],row[Txt_NUM_LANGUAGES + Lan], Cns_MAX_BYTES_WWW); } @@ -1398,7 +1400,7 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD /***************************** Get country name ******************************/ /*****************************************************************************/ -void Cty_GetCountryName (long CtyCod,char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]) +void Cty_GetCountryName (long CtyCod,char CtyName[Cty_MAX_BYTES_NAME + 1]) { extern const char *Txt_STR_LANG_ID[1 + Txt_NUM_LANGUAGES]; char Query[128]; @@ -1407,7 +1409,7 @@ void Cty_GetCountryName (long CtyCod,char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]) static struct { long CtyCod; - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]; + char CtyName[Cty_MAX_BYTES_NAME + 1]; } Cached = { -1L, @@ -1433,7 +1435,7 @@ void Cty_GetCountryName (long CtyCod,char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]) /* Get the name of the country */ Str_Copy (Cached.CtyName,row[0], - Hie_MAX_BYTES_FULL_NAME); + Cty_MAX_BYTES_NAME); } else Cached.CtyName[0] = '\0'; @@ -1443,7 +1445,7 @@ void Cty_GetCountryName (long CtyCod,char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]) } Str_Copy (CtyName,Cached.CtyName, - Hie_MAX_BYTES_FULL_NAME); + Cty_MAX_BYTES_NAME); } } @@ -1604,7 +1606,7 @@ static void Cty_ListCountriesForEdition (void) fprintf (Gbl.F.Out,"", - Hie_MAX_CHARS_FULL_NAME, + Cty_MAX_CHARS_NAME, Cty->Name[Lan],Gbl.Form.Id); Act_FormEnd (); fprintf (Gbl.F.Out,""); @@ -1721,10 +1723,10 @@ void Cty_RenameCountry (void) extern const char *Txt_The_country_X_has_been_renamed_as_Y; extern const char *Txt_STR_LANG_ID[1 + Txt_NUM_LANGUAGES]; extern const char *Txt_The_name_of_the_country_X_has_not_changed; - char Query[512]; struct Country *Cty; - char NewCtyName[Hie_MAX_BYTES_FULL_NAME + 1]; + char NewCtyName[Cty_MAX_BYTES_NAME + 1]; Txt_Language_t Language; + char FieldName[4 + 1 + 2 + 1]; // Example: "Name_en" Cty = &Gbl.Ctys.EditingCty; @@ -1736,7 +1738,7 @@ void Cty_RenameCountry (void) Language = Pre_GetParamLanguage (); /* Get the new name for the country */ - Par_GetParToText ("Name",NewCtyName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParToText ("Name",NewCtyName,Cty_MAX_BYTES_NAME); /***** Get from the database the data of the country *****/ Cty_GetDataOfCountryByCod (Cty,Cty_GET_EXTRA_DATA); @@ -1763,12 +1765,10 @@ void Cty_RenameCountry (void) else { /* Update the table changing old name by new name */ - sprintf (Query,"UPDATE countries SET Name_%s='%s'" - " WHERE CtyCod='%03ld'", - Txt_STR_LANG_ID[Language],NewCtyName,Cty->CtyCod); - DB_QueryUPDATE (Query,"can not update the name of a country"); + sprintf (FieldName,"Name_%s",Txt_STR_LANG_ID[Language]); + Cty_UpdateCtyNameDB (Cty->CtyCod,FieldName,NewCtyName); - /***** Write message to show the change made *****/ + /* Write message to show the change made */ sprintf (Gbl.Message,Txt_The_country_X_has_been_renamed_as_Y, Cty->Name[Language],NewCtyName); Lay_ShowAlert (Lay_SUCCESS,Gbl.Message); @@ -1784,7 +1784,7 @@ void Cty_RenameCountry (void) /***** Show the form again *****/ Str_Copy (Cty->Name[Language],NewCtyName, - Hie_MAX_BYTES_FULL_NAME); + Cty_MAX_BYTES_NAME); Cty_EditCountries (); } @@ -1794,7 +1794,7 @@ void Cty_RenameCountry (void) static bool Cty_CheckIfNumericCountryCodeExists (long CtyCod) { - char Query[256]; + char Query[128]; /***** Get number of countries with a name from database *****/ sprintf (Query,"SELECT COUNT(*) FROM countries WHERE CtyCod='%03ld'", @@ -1808,7 +1808,7 @@ static bool Cty_CheckIfNumericCountryCodeExists (long CtyCod) static bool Cty_CheckIfAlpha2CountryCodeExists (const char Alpha2[2 + 1]) { - char Query[512]; + char Query[128]; /***** Get number of countries with a name from database *****/ sprintf (Query,"SELECT COUNT(*) FROM countries WHERE Alpha2='%s'", @@ -1823,7 +1823,7 @@ static bool Cty_CheckIfAlpha2CountryCodeExists (const char Alpha2[2 + 1]) static bool Cty_CheckIfCountryNameExists (Txt_Language_t Language,const char *Name,long CtyCod) { extern const char *Txt_STR_LANG_ID[1 + Txt_NUM_LANGUAGES]; - char Query[512]; + char Query[256 + Cty_MAX_BYTES_NAME]; /***** Get number of countries with a name from database *****/ sprintf (Query,"SELECT COUNT(*) FROM countries" @@ -1832,6 +1832,20 @@ static bool Cty_CheckIfCountryNameExists (Txt_Language_t Language,const char *Na return (DB_QueryCOUNT (Query,"can not check if the name of a country already existed") != 0); } +/*****************************************************************************/ +/************ Update institution name in table of institutions ***************/ +/*****************************************************************************/ + +static void Cty_UpdateCtyNameDB (long CtyCod,const char *FieldName,const char *NewCtyName) + { + char Query[128 + Cty_MAX_BYTES_NAME]; + + /***** Update country changing old name by new name */ + sprintf (Query,"UPDATE countries SET %s='%s' WHERE CtyCod='%03ld'", + FieldName,NewCtyName,CtyCod); + DB_QueryUPDATE (Query,"can not update the name of a country"); + } + /*****************************************************************************/ /************************ Change the URL of a country ************************/ /*****************************************************************************/ @@ -1855,7 +1869,7 @@ void Cty_ChangeCtyWWW (void) Language = Pre_GetParamLanguage (); /* Get the new WWW for the country */ - Par_GetParToText ("WWW",NewWWW,Hie_MAX_BYTES_FULL_NAME); + Par_GetParToText ("WWW",NewWWW,Cns_MAX_BYTES_WWW); /***** Get from the database the data of the country *****/ Cty_GetDataOfCountryByCod (Cty,Cty_GET_EXTRA_DATA); @@ -1983,7 +1997,7 @@ static void Cty_PutFormToCreateCountry (void) " required=\"required\" />" "", Txt_STR_LANG_ID[Lan], - Hie_MAX_CHARS_FULL_NAME, + Cty_MAX_CHARS_NAME, Cty->Name[Lan]); /* WWW */ @@ -2116,7 +2130,7 @@ void Cty_RecFormNewCountry (void) Lan++) { sprintf (ParamName,"Name_%s",Txt_STR_LANG_ID[Lan]); - Par_GetParToText (ParamName,Cty->Name[Lan],Hie_MAX_BYTES_FULL_NAME); + Par_GetParToText (ParamName,Cty->Name[Lan],Cty_MAX_BYTES_NAME); if (Cty->Name[Lan][0]) // If there's a country name { @@ -2155,7 +2169,7 @@ void Cty_RecFormNewCountry (void) /**************************** Create a new country ***************************/ /*****************************************************************************/ -#define Cty_MAX_BYTES_SUBQUERY_CTYS_NAME ((1 + Txt_NUM_LANGUAGES) * Hie_MAX_BYTES_FULL_NAME) +#define Cty_MAX_BYTES_SUBQUERY_CTYS_NAME ((1 + Txt_NUM_LANGUAGES) * Cty_MAX_BYTES_NAME) #define Cty_MAX_BYTES_SUBQUERY_CTYS_WWW ((1 + Txt_NUM_LANGUAGES) * Cns_MAX_BYTES_WWW) static void Cty_CreateCountry (struct Country *Cty) diff --git a/swad_country.h b/swad_country.h index 689a88e1..c88b303a 100644 --- a/swad_country.h +++ b/swad_country.h @@ -40,11 +40,14 @@ #define Cty_MAX_COUNTRS_PER_USR 10 // Used in list of my countries +#define Cty_MAX_CHARS_NAME (48 - 1) // 47 +#define Cty_MAX_BYTES_NAME ((Cty_MAX_CHARS_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 767 + struct Country { long CtyCod; char Alpha2[2 + 1]; - char Name[1 + Txt_NUM_LANGUAGES][Hie_MAX_BYTES_FULL_NAME + 1]; + char Name[1 + Txt_NUM_LANGUAGES][Cty_MAX_BYTES_NAME + 1]; char WWW [1 + Txt_NUM_LANGUAGES][Cns_MAX_BYTES_WWW + 1]; unsigned NumUsrsWhoClaimToBelongToCty; unsigned NumInss; @@ -96,7 +99,7 @@ void Cty_FreeListCountries (void); void Cty_WriteSelectorOfCountry (void); void Cty_WriteCountryName (long CtyCod,const char *ClassLink); bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraData); -void Cty_GetCountryName (long CtyCod,char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]); +void Cty_GetCountryName (long CtyCod,char CtyName[Cty_MAX_BYTES_NAME + 1]); void Cty_PutParamCtyCod (long CtyCod); long Cty_GetAndCheckParamOtherCtyCod (void); void Cty_RemoveCountry (void); diff --git a/swad_database.c b/swad_database.c index f621dd75..0684695f 100644 --- a/swad_database.c +++ b/swad_database.c @@ -434,7 +434,7 @@ mysql> DESCRIBE centres; "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_SHRT_NAME "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_FULL_NAME "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW - "PhotoAttribution TEXT NOT NULL," + "PhotoAttribution TEXT NOT NULL," // Img_MAX_BYTES_ATTRIBUTION "UNIQUE INDEX(CtrCod)," "INDEX(InsCod)," "INDEX(PlcCod)," @@ -468,9 +468,9 @@ mysql> DESCRIBE clicks_without_photo; 2 rows in set (0.00 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS clicks_without_photo (" - "UsrCod INT NOT NULL," - "NumClicks INT NOT NULL," - "UNIQUE INDEX(UsrCod))"); + "UsrCod INT NOT NULL," + "NumClicks INT NOT NULL," + "UNIQUE INDEX(UsrCod))"); /***** Table clipboard *****/ /* @@ -489,16 +489,16 @@ mysql> DESCRIBE clipboard; 7 rows in set (0.00 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS clipboard (" - "UsrCod INT NOT NULL," - "FileBrowser TINYINT NOT NULL," - "Cod INT NOT NULL DEFAULT -1," - "WorksUsrCod INT NOT NULL," - "FileType TINYINT NOT NULL DEFAULT 0," - "Path TEXT COLLATE latin1_bin NOT NULL," - "CopyTime TIMESTAMP," - "UNIQUE INDEX(UsrCod)," - "INDEX(FileBrowser,Cod)," - "INDEX(WorksUsrCod))"); + "UsrCod INT NOT NULL," + "FileBrowser TINYINT NOT NULL," + "Cod INT NOT NULL DEFAULT -1," + "WorksUsrCod INT NOT NULL," + "FileType TINYINT NOT NULL DEFAULT 0," + "Path TEXT COLLATE latin1_bin NOT NULL," // PATH_MAX + "CopyTime TIMESTAMP," + "UNIQUE INDEX(UsrCod)," + "INDEX(FileBrowser,Cod)," + "INDEX(WorksUsrCod))"); /***** Table connected *****/ /* @@ -514,13 +514,13 @@ mysql> DESCRIBE connected; 4 rows in set (0,00 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS connected (" - "UsrCod INT NOT NULL," - "RoleInLastCrs TINYINT NOT NULL DEFAULT 0," - "LastCrsCod INT NOT NULL DEFAULT -1," - "LastTime DATETIME NOT NULL," - "UNIQUE INDEX(UsrCod)," - "INDEX(RoleInLastCrs)," - "INDEX(LastCrsCod))"); + "UsrCod INT NOT NULL," + "RoleInLastCrs TINYINT NOT NULL DEFAULT 0," + "LastCrsCod INT NOT NULL DEFAULT -1," + "LastTime DATETIME NOT NULL," + "UNIQUE INDEX(UsrCod)," + "INDEX(RoleInLastCrs)," + "INDEX(LastCrsCod))"); /***** Table countries *****/ /* @@ -531,15 +531,15 @@ mysql> DESCRIBE countries; | CtyCod | int(11) | NO | PRI | NULL | | | Alpha2 | char(2) | NO | UNI | NULL | | | MapAttribution | text | NO | | NULL | | -| Name_ca | varchar(255) | NO | MUL | NULL | | -| Name_de | varchar(255) | NO | MUL | NULL | | -| Name_en | varchar(255) | NO | MUL | NULL | | -| Name_es | varchar(255) | NO | MUL | NULL | | -| Name_fr | varchar(255) | NO | MUL | NULL | | -| Name_gn | varchar(255) | NO | MUL | NULL | | -| Name_it | varchar(255) | NO | MUL | NULL | | -| Name_pl | varchar(255) | NO | MUL | NULL | | -| Name_pt | varchar(255) | NO | MUL | NULL | | +| Name_ca | varchar(767) | NO | MUL | NULL | | +| Name_de | varchar(767) | NO | MUL | NULL | | +| Name_en | varchar(767) | NO | MUL | NULL | | +| Name_es | varchar(767) | NO | MUL | NULL | | +| Name_fr | varchar(767) | NO | MUL | NULL | | +| Name_gn | varchar(767) | NO | MUL | NULL | | +| Name_it | varchar(767) | NO | MUL | NULL | | +| Name_pl | varchar(767) | NO | MUL | NULL | | +| Name_pt | varchar(767) | NO | MUL | NULL | | | WWW_ca | varchar(255) | NO | | NULL | | | WWW_de | varchar(255) | NO | | NULL | | | WWW_en | varchar(255) | NO | | NULL | | @@ -550,40 +550,40 @@ mysql> DESCRIBE countries; | WWW_pl | varchar(255) | NO | | NULL | | | WWW_pt | varchar(255) | NO | | NULL | | +----------------+--------------+------+-----+---------+-------+ -21 rows in set (0.00 sec) +21 rows in set (0,00 sec) */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS countries (" - "CtyCod INT NOT NULL," - "Alpha2 CHAR(2) NOT NULL," - "MapAttribution TEXT NOT NULL," - "Name_ca VARCHAR(255) NOT NULL," - "Name_de VARCHAR(255) NOT NULL," - "Name_en VARCHAR(255) NOT NULL," - "Name_es VARCHAR(255) NOT NULL," - "Name_fr VARCHAR(255) NOT NULL," - "Name_gn VARCHAR(255) NOT NULL," - "Name_it VARCHAR(255) NOT NULL," - "Name_pl VARCHAR(255) NOT NULL," - "Name_pt VARCHAR(255) NOT NULL," - "WWW_ca VARCHAR(255) NOT NULL," - "WWW_de VARCHAR(255) NOT NULL," - "WWW_en VARCHAR(255) NOT NULL," - "WWW_es VARCHAR(255) NOT NULL," - "WWW_fr VARCHAR(255) NOT NULL," - "WWW_gn VARCHAR(255) NOT NULL," - "WWW_it VARCHAR(255) NOT NULL," - "WWW_pl VARCHAR(255) NOT NULL," - "WWW_pt VARCHAR(255) NOT NULL," - "UNIQUE INDEX(CtyCod),UNIQUE INDEX(Alpha2)," - "INDEX(Name_ca)," - "INDEX(Name_de)," - "INDEX(Name_en)," - "INDEX(Name_es)," - "INDEX(Name_fr)," - "INDEX(Name_gn)," - "INDEX(Name_it)," - "INDEX(Name_pl)," - "INDEX(Name_pt))"); // ISO 3166-1 country codes + "CtyCod INT NOT NULL," + "Alpha2 CHAR(2) NOT NULL," + "MapAttribution TEXT NOT NULL," // Img_MAX_BYTES_ATTRIBUTION + "Name_ca VARCHAR(767) NOT NULL," // Cty_MAX_BYTES_NAME + "Name_de VARCHAR(767) NOT NULL," // Cty_MAX_BYTES_NAME + "Name_en VARCHAR(767) NOT NULL," // Cty_MAX_BYTES_NAME + "Name_es VARCHAR(767) NOT NULL," // Cty_MAX_BYTES_NAME + "Name_fr VARCHAR(767) NOT NULL," // Cty_MAX_BYTES_NAME + "Name_gn VARCHAR(767) NOT NULL," // Cty_MAX_BYTES_NAME + "Name_it VARCHAR(767) NOT NULL," // Cty_MAX_BYTES_NAME + "Name_pl VARCHAR(767) NOT NULL," // Cty_MAX_BYTES_NAME + "Name_pt VARCHAR(767) NOT NULL," // Cty_MAX_BYTES_NAME + "WWW_ca VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW + "WWW_de VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW + "WWW_en VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW + "WWW_es VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW + "WWW_fr VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW + "WWW_gn VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW + "WWW_it VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW + "WWW_pl VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW + "WWW_pt VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW + "UNIQUE INDEX(CtyCod),UNIQUE INDEX(Alpha2)," + "INDEX(Name_ca)," + "INDEX(Name_de)," + "INDEX(Name_en)," + "INDEX(Name_es)," + "INDEX(Name_fr)," + "INDEX(Name_gn)," + "INDEX(Name_it)," + "INDEX(Name_pl)," + "INDEX(Name_pt))"); // ISO 3166-1 country codes /***** Table courses *****/ /*