summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <kostja@bodhi.local>2006-07-26 23:33:25 +0400
committerunknown <kostja@bodhi.local>2006-07-26 23:33:25 +0400
commit5b6016c14e1e3cc3450e67a6bba0827a4099bdbe (patch)
tree9127bb933b3774974a321dce0ca111f0e8ac8991
parenta920f554db0924b9c9c2e279003820b376d29545 (diff)
parenta7dddd3b67e70292c0813e80ad255f1dc2f3a867 (diff)
downloadmariadb-git-5b6016c14e1e3cc3450e67a6bba0827a4099bdbe.tar.gz
Merge bodhi.local:/opt/local/work/tmp_merge
into bodhi.local:/opt/local/work/mysql-5.1-runtime-merge BitKeeper/etc/ignore: auto-union BitKeeper/deleted/.del-libmysqld.dsp~78dc6a589e5a4149: Auto merged BitKeeper/deleted/.del-libmysqld.vcproj~a75d5b9a5967dea0: Auto merged BitKeeper/deleted/.del-mysqld.dsp~ffdbf2d234e23e56: Auto merged BitKeeper/deleted/.del-mysqld.vcproj~6aa7b3f9c3e28fcb: Auto merged libmysqld/Makefile.am: Auto merged mysql-test/Makefile.am: Auto merged mysql-test/r/date_formats.result: Auto merged mysql-test/r/view_grant.result: Auto merged mysql-test/t/date_formats.test: Auto merged mysql-test/t/init_connect.test: Auto merged mysql-test/t/mysqldump.test: Auto merged mysql-test/t/view_grant.test: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/handler.h: Auto merged sql/item.cc: Auto merged sql/item_create.cc: Auto merged sql/item_create.h: Auto merged sql/item_func.cc: Auto merged sql/item_strfunc.cc: Auto merged sql/item_strfunc.h: Auto merged sql/item_timefunc.cc: Auto merged sql/mysql_priv.h: Auto merged sql/opt_range.cc: Auto merged sql/set_var.h: Auto merged sql/sql_base.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_delete.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_table.cc: Auto merged sql/sql_trigger.cc: Auto merged sql/sql_udf.cc: Auto merged sql/sql_yacc.yy: Auto merged storage/ndb/include/kernel/GlobalSignalNumbers.h: Auto merged storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Auto merged storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp: Auto merged storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Auto merged storage/ndb/src/ndbapi/ndberror.c: Auto merged support-files/mysql.spec.sh: Auto merged mysql-test/r/federated.result: Use local. mysql-test/r/myisam.result: Manual merge. mysql-test/t/federated.test: Manual merge. mysql-test/t/myisam.test: Manual merge. sql/Makefile.am: Manual merge. sql/set_var.cc: Manual merge. sql/sql_parse.cc: Manual merge. sql/sql_update.cc: Manual merge. storage/myisam/mi_create.c: Manual merge.
-rw-r--r--.bzrignore8
-rw-r--r--libmysqld/Makefile.am2
-rw-r--r--mysql-test/r/date_formats.result16
-rw-r--r--mysql-test/r/init_connect.result114
-rw-r--r--mysql-test/r/init_file.result15
-rw-r--r--mysql-test/r/myisam.result13
-rw-r--r--mysql-test/r/view_grant.result53
-rw-r--r--mysql-test/std_data/init_file.dat28
-rw-r--r--mysql-test/t/date_formats.test14
-rw-r--r--mysql-test/t/federated.test40
-rw-r--r--mysql-test/t/init_connect.test203
-rw-r--r--mysql-test/t/init_file.test14
-rw-r--r--mysql-test/t/myisam.test42
-rw-r--r--mysql-test/t/mysqldump.test7
-rw-r--r--mysql-test/t/view_grant.test62
-rw-r--r--sql/Makefile.am2
-rw-r--r--sql/item_create.cc6
-rw-r--r--sql/item_create.h1
-rw-r--r--sql/item_func.cc7
-rw-r--r--sql/item_strfunc.cc65
-rw-r--r--sql/item_strfunc.h35
-rw-r--r--sql/item_timefunc.cc67
-rw-r--r--sql/mysql_priv.h18
-rw-r--r--sql/set_var.cc39
-rw-r--r--sql/set_var.h22
-rw-r--r--sql/sql_cache.cc2
-rw-r--r--sql/sql_class.cc2
-rw-r--r--sql/sql_class.h3
-rw-r--r--sql/sql_delete.cc2
-rw-r--r--sql/sql_lex.h2
-rw-r--r--sql/sql_locale.cc1607
-rw-r--r--sql/sql_parse.cc14
-rw-r--r--sql/sql_udf.cc10
-rw-r--r--sql/sql_udf.h31
-rw-r--r--sql/sql_update.cc2
-rw-r--r--sql/sql_yacc.yy7
-rw-r--r--storage/myisam/mi_create.c39
37 files changed, 2474 insertions, 140 deletions
diff --git a/.bzrignore b/.bzrignore
index 777700a202f..90e966390d2 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -1,4 +1,6 @@
*-t
+*.Plo
+*.Po
*.a
*.bb
*.bbg
@@ -12,6 +14,7 @@
*.gcov
*.idb
*.la
+*.lai
*.lib
*.lo
*.map
@@ -23,6 +26,7 @@
*.res
*.sbr
*.so
+*.so.*
*.spec
*/*_pure_*warnings
*/.pure
@@ -283,6 +287,7 @@ build_tags.sh
client/#mysql.cc#
client/*.ds?
client/*.vcproj
+client/.libs -prune
client/completion_hash.cpp
client/decimal.c
client/insert_test
@@ -578,6 +583,7 @@ libmysqld/sql_insert.cc
libmysqld/sql_lex.cc
libmysqld/sql_list.cc
libmysqld/sql_load.cc
+libmysqld/sql_locale.cc
libmysqld/sql_manager.cc
libmysqld/sql_map.cc
libmysqld/sql_olap.cc
@@ -1755,6 +1761,7 @@ test1/*
test_xml
tests/*.ds?
tests/*.vcproj
+tests/.libs -prune
tests/client_test
tests/connect_test
tests/mysql_client_test
@@ -1762,6 +1769,7 @@ thr_insert_test/*
thr_test/*
thread_test
tmp/*
+tools/.libs -prune
tools/my_vsnprintf.c
tools/mysqlmanager
tools/mysqlmngd
diff --git a/libmysqld/Makefile.am b/libmysqld/Makefile.am
index b91944ac258..befbd3fad3a 100644
--- a/libmysqld/Makefile.am
+++ b/libmysqld/Makefile.am
@@ -56,7 +56,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
key.cc lock.cc log.cc log_event.cc sql_state.c \
protocol.cc net_serv.cc opt_range.cc \
opt_sum.cc procedure.cc records.cc sql_acl.cc \
- sql_load.cc discover.cc \
+ sql_load.cc discover.cc sql_locale.cc \
sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \
sql_crypt.cc sql_db.cc sql_delete.cc sql_error.cc sql_insert.cc \
sql_lex.cc sql_list.cc sql_manager.cc sql_map.cc sql_parse.cc \
diff --git a/mysql-test/r/date_formats.result b/mysql-test/r/date_formats.result
index ea4ae8a8438..c64e723811a 100644
--- a/mysql-test/r/date_formats.result
+++ b/mysql-test/r/date_formats.result
@@ -498,6 +498,22 @@ f1 f2
Warnings:
Warning 1292 Truncated incorrect date value: '2003-04-05 g'
Warning 1292 Truncated incorrect datetime value: '2003-04-05 10:11:12.101010234567'
+set names latin1;
+select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
+date_format('2004-01-01','%W (%a), %e %M (%b) %Y')
+Thursday (Thu), 1 January (Jan) 2004
+set lc_time_names=ru_RU;
+set names koi8r;
+select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
+date_format('2004-01-01','%W (%a), %e %M (%b) %Y')
+ (), 1 () 2004
+set lc_time_names=de_DE;
+set names latin1;
+select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
+date_format('2004-01-01','%W (%a), %e %M (%b) %Y')
+Donnerstag (Do), 1 Januar (Jan) 2004
+set names latin1;
+set lc_time_names=en_US;
create table t1 (f1 datetime);
insert into t1 (f1) values ("2005-01-01");
insert into t1 (f1) values ("2005-02-01");
diff --git a/mysql-test/r/init_connect.result b/mysql-test/r/init_connect.result
index eeae422edc4..f90ee5913a1 100644
--- a/mysql-test/r/init_connect.result
+++ b/mysql-test/r/init_connect.result
@@ -22,3 +22,117 @@ set GLOBAL init_connect="adsfsdfsdfs";
select @a;
Got one of the listed errors
drop table t1;
+End of 4.1 tests
+create table t1 (x int);
+insert into t1 values (3), (5), (7);
+create table t2 (y int);
+create user mysqltest1@localhost;
+grant all privileges on test.* to mysqltest1@localhost;
+set global init_connect="create procedure p1() select * from t1";
+call p1();
+x
+3
+5
+7
+drop procedure p1;
+set global init_connect="create procedure p1(x int)\
+begin\
+ select count(*) from t1;\
+ select * from t1;\
+ set @x = x;
+end";
+call p1(42);
+count(*)
+3
+x
+3
+5
+7
+select @x;
+@x
+42
+set global init_connect="call p1(4711)";
+select @x;
+@x
+4711
+set global init_connect="drop procedure if exists p1";
+call p1();
+ERROR 42000: PROCEDURE test.p1 does not exist
+create procedure p1(out sum int)
+begin
+declare n int default 0;
+declare c cursor for select * from t1;
+declare exit handler for not found
+begin
+close c;
+set sum = n;
+end;
+open c;
+loop
+begin
+declare x int;
+fetch c into x;
+if x > 3 then
+set n = n + x;
+end if;
+end;
+end loop;
+end|
+set global init_connect="call p1(@sum)";
+select @sum;
+@sum
+12
+drop procedure p1;
+create procedure p1(tbl char(10), v int)
+begin
+set @s = concat('insert into ', tbl, ' values (?)');
+set @v = v;
+prepare stmt1 from @s;
+execute stmt1 using @v;
+deallocate prepare stmt1;
+end|
+set global init_connect="call p1('t1', 11)";
+select * from t1;
+x
+3
+5
+7
+11
+drop procedure p1;
+create function f1() returns int
+begin
+declare n int;
+select count(*) into n from t1;
+return n;
+end|
+set global init_connect="set @x = f1()";
+select @x;
+@x
+4
+set global init_connect="create view v1 as select f1()";
+select * from v1;
+f1()
+4
+set global init_connect="drop view v1";
+select * from v1;
+ERROR 42S02: Table 'test.v1' doesn't exist
+drop function f1;
+create trigger trg1
+after insert on t2
+for each row
+insert into t1 values (new.y);
+set global init_connect="insert into t2 values (13), (17), (19)";
+select * from t1;
+x
+3
+5
+7
+11
+13
+17
+19
+drop trigger trg1;
+set global init_connect=default;
+revoke all privileges, grant option from mysqltest1@localhost;
+drop user mysqltest1@localhost;
+drop table t1, t2;
diff --git a/mysql-test/r/init_file.result b/mysql-test/r/init_file.result
index 9766475a418..1569f2c3d68 100644
--- a/mysql-test/r/init_file.result
+++ b/mysql-test/r/init_file.result
@@ -1 +1,16 @@
ok
+end of 4.1 tests
+select * from t1;
+x
+3
+5
+7
+11
+13
+select * from t2;
+y
+30
+3
+11
+13
+drop table t1, t2;
diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result
index bb62f2a063b..e78782268ea 100644
--- a/mysql-test/r/myisam.result
+++ b/mysql-test/r/myisam.result
@@ -1442,6 +1442,19 @@ create table t3 (c1 int) engine=myisam pack_keys=default;
create table t4 (c1 int) engine=myisam pack_keys=2;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2' at line 1
drop table t1, t2, t3;
+show create table t1;
+show create table t1;
+create table t1 (a int) engine=myisam select 42 a;
+select * from t1;
+a
+9
+select * from t1;
+a
+99
+select * from t1;
+a
+42
+drop table t1;
create table t1 (a int not null, key `a` (a) key_block_size=1024);
show create table t1;
Table Create Table
diff --git a/mysql-test/r/view_grant.result b/mysql-test/r/view_grant.result
index 5f91127d284..30e9d1010ba 100644
--- a/mysql-test/r/view_grant.result
+++ b/mysql-test/r/view_grant.result
@@ -661,3 +661,56 @@ DROP VIEW test2.t3;
DROP TABLE test2.t1, test1.t0;
DROP DATABASE test2;
DROP DATABASE test1;
+DROP VIEW IF EXISTS v1;
+DROP VIEW IF EXISTS v2;
+DROP VIEW IF EXISTS v3;
+DROP FUNCTION IF EXISTS f1;
+DROP FUNCTION IF EXISTS f2;
+DROP PROCEDURE IF EXISTS p1;
+CREATE SQL SECURITY DEFINER VIEW v1 AS SELECT CURRENT_USER() AS cu;
+CREATE FUNCTION f1() RETURNS VARCHAR(77) SQL SECURITY INVOKER
+RETURN CURRENT_USER();
+CREATE SQL SECURITY DEFINER VIEW v2 AS SELECT f1() AS cu;
+CREATE PROCEDURE p1(OUT cu VARCHAR(77)) SQL SECURITY INVOKER
+SET cu= CURRENT_USER();
+CREATE FUNCTION f2() RETURNS VARCHAR(77) SQL SECURITY INVOKER
+BEGIN
+DECLARE cu VARCHAR(77);
+CALL p1(cu);
+RETURN cu;
+END|
+CREATE SQL SECURITY DEFINER VIEW v3 AS SELECT f2() AS cu;
+CREATE USER mysqltest_u1@localhost;
+GRANT ALL ON test.* TO mysqltest_u1@localhost;
+
+The following tests should all return 1.
+
+SELECT CURRENT_USER() = 'mysqltest_u1@localhost';
+CURRENT_USER() = 'mysqltest_u1@localhost'
+1
+SELECT f1() = 'mysqltest_u1@localhost';
+f1() = 'mysqltest_u1@localhost'
+1
+CALL p1(@cu);
+SELECT @cu = 'mysqltest_u1@localhost';
+@cu = 'mysqltest_u1@localhost'
+1
+SELECT f2() = 'mysqltest_u1@localhost';
+f2() = 'mysqltest_u1@localhost'
+1
+SELECT cu = 'root@localhost' FROM v1;
+cu = 'root@localhost'
+1
+SELECT cu = 'root@localhost' FROM v2;
+cu = 'root@localhost'
+1
+SELECT cu = 'root@localhost' FROM v3;
+cu = 'root@localhost'
+1
+DROP VIEW v3;
+DROP FUNCTION f2;
+DROP PROCEDURE p1;
+DROP FUNCTION f1;
+DROP VIEW v2;
+DROP VIEW v1;
+DROP USER mysqltest_u1@localhost;
diff --git a/mysql-test/std_data/init_file.dat b/mysql-test/std_data/init_file.dat
index 6105ca2ac1b..814e968eb31 100644
--- a/mysql-test/std_data/init_file.dat
+++ b/mysql-test/std_data/init_file.dat
@@ -1 +1,29 @@
select * from mysql.user as t1, mysql.user as t2, mysql.user as t3;
+use test;
+
+drop table if exists t1;
+create table t1 (x int);
+drop table if exists t2;
+create table t2 (y int);
+
+drop procedure if exists p1;
+create definer=root@localhost procedure p1() select * from t1;
+call p1();
+drop procedure p1;
+
+create definer=root@localhost procedure p1() insert into t1 values (3),(5),(7);
+call p1();
+
+drop function if exists f1;
+create definer=root@localhost function f1() returns int return (select count(*) from t1);
+insert into t2 set y = f1()*10;
+
+drop view if exists v1;
+create definer=root@localhost view v1 as select f1();
+insert into t2 (y) select * from v1;
+
+create trigger trg1 after insert on t2 for each row insert into t1 values (new.y);
+insert into t2 values (11), (13);
+drop procedure p1;
+drop function f1;
+drop view v1;
diff --git a/mysql-test/t/date_formats.test b/mysql-test/t/date_formats.test
index 39a530ba733..fc0985afc21 100644
--- a/mysql-test/t/date_formats.test
+++ b/mysql-test/t/date_formats.test
@@ -265,6 +265,20 @@ select str_to_date("2003-04-05 g", "%Y-%m-%d") as f1,
--enable_ps_protocol
#
+# Test of locale dependent date format (WL#2928 Date Translation NRE)
+#
+set names latin1;
+select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
+set lc_time_names=ru_RU;
+set names koi8r;
+select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
+set lc_time_names=de_DE;
+set names latin1;
+select date_format('2004-01-01','%W (%a), %e %M (%b) %Y');
+set names latin1;
+set lc_time_names=en_US;
+
+#
# Bug #14016
#
create table t1 (f1 datetime);
diff --git a/mysql-test/t/federated.test b/mysql-test/t/federated.test
index 7f7b2a4261b..032e2536f0a 100644
--- a/mysql-test/t/federated.test
+++ b/mysql-test/t/federated.test
@@ -1366,25 +1366,6 @@ drop table federated.t1, federated.t2;
connection master;
--enable_parsing
-#
-# Bug #16494: Updates that set a column to NULL fail sometimes
-#
-connection slave;
-create table t1 (id int not null auto_increment primary key, val int);
-connection master;
---replace_result $SLAVE_MYPORT SLAVE_PORT
-eval create table t1
- (id int not null auto_increment primary key, val int) engine=federated
- connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/test/t1';
-insert into t1 values (1,0),(2,0);
-update t1 set val = NULL where id = 1;
-select * from t1;
-connection slave;
-select * from t1;
-drop table t1;
-connection master;
-drop table t1;
-
#
# Additional test for bug#18437 "Wrong values inserted with a before
# update trigger on NDB table". SQL-layer didn't properly inform
@@ -1479,5 +1460,26 @@ drop table federated.t1, federated.t2;
connection slave;
drop table federated.t1, federated.t2;
+#
+# Bug #16494: Updates that set a column to NULL fail sometimes
+#
+connection slave;
+create table t1 (id int not null auto_increment primary key, val int);
+connection master;
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+eval create table t1
+ (id int not null auto_increment primary key, val int) engine=federated
+ connection='mysql://root@127.0.0.1:$SLAVE_MYPORT/test/t1';
+insert into t1 values (1,0),(2,0);
+update t1 set val = NULL where id = 1;
+select * from t1;
+connection slave;
+select * from t1;
+drop table t1;
+connection master;
+drop table t1;
+
+--echo End of 5.0 tests
source include/federated_cleanup.inc;
+
diff --git a/mysql-test/t/init_connect.test b/mysql-test/t/init_connect.test
index 0ee6387d985..31a98df33df 100644
--- a/mysql-test/t/init_connect.test
+++ b/mysql-test/t/init_connect.test
@@ -35,4 +35,205 @@ select @a;
connection con0;
drop table t1;
-# End of 4.1 tests
+disconnect con1;
+disconnect con2;
+disconnect con3;
+disconnect con4;
+disconnect con5;
+
+--echo End of 4.1 tests
+#
+# Test 5.* features
+#
+
+create table t1 (x int);
+insert into t1 values (3), (5), (7);
+create table t2 (y int);
+
+create user mysqltest1@localhost;
+grant all privileges on test.* to mysqltest1@localhost;
+#
+# Create a simple procedure
+#
+set global init_connect="create procedure p1() select * from t1";
+connect (con1,localhost,mysqltest1,,);
+connection con1;
+call p1();
+drop procedure p1;
+
+connection con0;
+disconnect con1;
+#
+# Create a multi-result set procedure
+#
+set global init_connect="create procedure p1(x int)\
+begin\
+ select count(*) from t1;\
+ select * from t1;\
+ set @x = x;
+end";
+connect (con1,localhost,mysqltest1,,);
+connection con1;
+call p1(42);
+select @x;
+
+connection con0;
+disconnect con1;
+#
+# Just call it - this will not generate any output
+#
+set global init_connect="call p1(4711)";
+connect (con1,localhost,mysqltest1,,);
+connection con1;
+select @x;
+
+connection con0;
+disconnect con1;
+#
+# Drop the procedure
+#
+set global init_connect="drop procedure if exists p1";
+connect (con1,localhost,mysqltest1,,);
+connection con1;
+--error ER_SP_DOES_NOT_EXIST
+call p1();
+
+connection con0;
+disconnect con1;
+#
+# Execution of a more complex procedure
+#
+delimiter |;
+create procedure p1(out sum int)
+begin
+ declare n int default 0;
+ declare c cursor for select * from t1;
+ declare exit handler for not found
+ begin
+ close c;
+ set sum = n;
+ end;
+
+ open c;
+ loop
+ begin
+ declare x int;
+
+ fetch c into x;
+ if x > 3 then
+ set n = n + x;
+ end if;
+ end;
+ end loop;
+end|
+delimiter ;|
+# Call the procedure with a cursor
+set global init_connect="call p1(@sum)";
+connect (con1,localhost,mysqltest1,,);
+connection con1;
+select @sum;
+
+connection con0;
+disconnect con1;
+drop procedure p1;
+#
+# Test Dynamic SQL
+#
+delimiter |;
+create procedure p1(tbl char(10), v int)
+begin
+ set @s = concat('insert into ', tbl, ' values (?)');
+ set @v = v;
+ prepare stmt1 from @s;
+ execute stmt1 using @v;
+ deallocate prepare stmt1;
+end|
+delimiter ;|
+# Call the procedure with prepared statements
+set global init_connect="call p1('t1', 11)";
+connect (con1,localhost,mysqltest1,,);
+connection con1;
+select * from t1;
+
+connection con0;
+disconnect con1;
+drop procedure p1;
+#
+# Stored functions
+#
+delimiter |;
+create function f1() returns int
+begin
+ declare n int;
+
+ select count(*) into n from t1;
+ return n;
+end|
+delimiter ;|
+# Invoke a function
+set global init_connect="set @x = f1()";
+connect (con1,localhost,mysqltest1,,);
+connection con1;
+select @x;
+
+connection con0;
+disconnect con1;
+#
+# Create a view
+#
+set global init_connect="create view v1 as select f1()";
+connect (con1,localhost,mysqltest1,,);
+connection con1;
+select * from v1;
+
+connection con0;
+disconnect con1;
+#
+# Drop the view
+#
+set global init_connect="drop view v1";
+connect (con1,localhost,mysqltest1,,);
+connection con1;
+--error ER_NO_SUCH_TABLE
+select * from v1;
+
+connection con0;
+disconnect con1;
+drop function f1;
+
+# We can't test "create trigger", since this requires super privileges
+# in 5.0, but with super privileges, init_connect is not executed.
+# (However, this can be tested in 5.1)
+#
+#set global init_connect="create trigger trg1\
+# after insert on t2\
+# for each row\
+# insert into t1 values (new.y)";
+#connect (con1,localhost,mysqltest1,,);
+#connection con1;
+#insert into t2 values (2), (4);
+#select * from t1;
+#
+#connection con0;
+#disconnect con1;
+
+create trigger trg1
+ after insert on t2
+ for each row
+ insert into t1 values (new.y);
+
+# Invoke trigger
+set global init_connect="insert into t2 values (13), (17), (19)";
+connect (con1,localhost,mysqltest1,,);
+connection con1;
+select * from t1;
+
+connection con0;
+disconnect con1;
+
+drop trigger trg1;
+set global init_connect=default;
+
+revoke all privileges, grant option from mysqltest1@localhost;
+drop user mysqltest1@localhost;
+drop table t1, t2;
diff --git a/mysql-test/t/init_file.test b/mysql-test/t/init_file.test
index 8b4b788777b..6b5e032fd99 100644
--- a/mysql-test/t/init_file.test
+++ b/mysql-test/t/init_file.test
@@ -6,5 +6,15 @@
# mysql-test/t/init_file-master.opt for the actual test
#
-# End of 4.1 tests
-echo ok;
+--echo ok
+--echo end of 4.1 tests
+#
+# Chec 5.x features
+#
+# Expected:
+# 3, 5, 7, 11, 13
+select * from t1;
+# Expected:
+# 30, 3, 11, 13
+select * from t2;
+drop table t1, t2;
diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test
index 9936b8bfc44..69d7ee51d81 100644
--- a/mysql-test/t/myisam.test
+++ b/mysql-test/t/myisam.test
@@ -718,8 +718,6 @@ UPDATE t1 AS ta1,t1 AS ta2 SET ta1.b='aaaaaa',ta2.b='bbbbbb';
SELECT * FROM t1;
DROP TABLE t1;
-# End of 4.1 tests
-
#
# Test varchar
#
@@ -817,6 +815,42 @@ alter table t1 enable keys;
show keys from t1;
drop table t1;
+#
+# Bug#8706 - temporary table with data directory option fails
+#
+connect (session1,localhost,root,,);
+connect (session2,localhost,root,,);
+
+connection session1;
+disable_query_log;
+eval create temporary table t1 (a int) engine=myisam data directory="$MYSQLTEST_VARDIR/tmp" select 9 a;
+enable_query_log;
+disable_result_log;
+show create table t1;
+enable_result_log;
+
+connection session2;
+disable_query_log;
+eval create temporary table t1 (a int) engine=myisam data directory="$MYSQLTEST_VARDIR/tmp" select 99 a;
+enable_query_log;
+disable_result_log;
+show create table t1;
+enable_result_log;
+
+connection default;
+create table t1 (a int) engine=myisam select 42 a;
+
+connection session1;
+select * from t1;
+disconnect session1;
+connection session2;
+select * from t1;
+disconnect session2;
+connection default;
+select * from t1;
+drop table t1;
+
+--echo End of 4.1 tests
#
# Bug#10056 - PACK_KEYS option take values greater than 1 while creating table
@@ -828,6 +862,8 @@ create table t3 (c1 int) engine=myisam pack_keys=default;
create table t4 (c1 int) engine=myisam pack_keys=2;
drop table t1, t2, t3;
+--echo End of 5.0 tests
+
#
# Test of key_block_size
#
@@ -890,3 +926,5 @@ drop table t1;
create table t1 (a int not null, key key_block_size=1024 (a));
--error 1064
create table t1 (a int not null, key `a` key_block_size=1024 (a));
+
+--echo End of 5.1 tests
diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test
index 74c3bb2e1d5..4a40f10b171 100644
--- a/mysql-test/t/mysqldump.test
+++ b/mysql-test/t/mysqldump.test
@@ -1168,12 +1168,11 @@ insert into t values(5, 51);
create view v1 as select qty, price, qty*price as value from t;
create view v2 as select qty from v1;
--echo mysqldump {
---exec $MYSQL_DUMP --compact -F --tab . test
---exec cat v1.sql
+--exec $MYSQL_DUMP --compact -F --tab $MYSQLTEST_VARDIR/tmp test
+--exec cat $MYSQLTEST_VARDIR/tmp/v1.sql
--echo } mysqldump {
---exec cat v2.sql
+--exec cat $MYSQLTEST_VARDIR/tmp/v2.sql
--echo } mysqldump
---rm v.sql t.sql t.txt
drop view v1;
drop view v2;
drop table t;
diff --git a/mysql-test/t/view_grant.test b/mysql-test/t/view_grant.test
index 801bd13fab7..daba7dfaa3c 100644
--- a/mysql-test/t/view_grant.test
+++ b/mysql-test/t/view_grant.test
@@ -872,3 +872,65 @@ DROP VIEW test2.t3;
DROP TABLE test2.t1, test1.t0;
DROP DATABASE test2;
DROP DATABASE test1;
+
+
+#
+# BUG#20570: CURRENT_USER() in a VIEW with SQL SECURITY DEFINER
+# returns invoker name
+#
+--disable_warnings
+DROP VIEW IF EXISTS v1;
+DROP VIEW IF EXISTS v2;
+DROP VIEW IF EXISTS v3;
+DROP FUNCTION IF EXISTS f1;
+DROP FUNCTION IF EXISTS f2;
+DROP PROCEDURE IF EXISTS p1;
+--enable_warnings
+
+CREATE SQL SECURITY DEFINER VIEW v1 AS SELECT CURRENT_USER() AS cu;
+
+CREATE FUNCTION f1() RETURNS VARCHAR(77) SQL SECURITY INVOKER
+ RETURN CURRENT_USER();
+CREATE SQL SECURITY DEFINER VIEW v2 AS SELECT f1() AS cu;
+
+CREATE PROCEDURE p1(OUT cu VARCHAR(77)) SQL SECURITY INVOKER
+ SET cu= CURRENT_USER();
+delimiter |;
+CREATE FUNCTION f2() RETURNS VARCHAR(77) SQL SECURITY INVOKER
+BEGIN
+ DECLARE cu VARCHAR(77);
+ CALL p1(cu);
+ RETURN cu;
+END|
+delimiter ;|
+CREATE SQL SECURITY DEFINER VIEW v3 AS SELECT f2() AS cu;
+
+CREATE USER mysqltest_u1@localhost;
+GRANT ALL ON test.* TO mysqltest_u1@localhost;
+
+connect (conn1, localhost, mysqltest_u1,,);
+
+--echo
+--echo The following tests should all return 1.
+--echo
+SELECT CURRENT_USER() = 'mysqltest_u1@localhost';
+SELECT f1() = 'mysqltest_u1@localhost';
+CALL p1(@cu);
+SELECT @cu = 'mysqltest_u1@localhost';
+SELECT f2() = 'mysqltest_u1@localhost';
+SELECT cu = 'root@localhost' FROM v1;
+SELECT cu = 'root@localhost' FROM v2;
+SELECT cu = 'root@localhost' FROM v3;
+
+disconnect conn1;
+connection default;
+
+DROP VIEW v3;
+DROP FUNCTION f2;
+DROP PROCEDURE p1;
+DROP FUNCTION f1;
+DROP VIEW v2;
+DROP VIEW v1;
+DROP USER mysqltest_u1@localhost;
+
+# End of 5.0 tests.
diff --git a/sql/Makefile.am b/sql/Makefile.am
index 387f18c2ae9..e453bd6010f 100644
--- a/sql/Makefile.am
+++ b/sql/Makefile.am
@@ -80,7 +80,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
mysqld.cc password.c hash_filo.cc hostname.cc \
set_var.cc sql_parse.cc sql_yacc.yy \
sql_base.cc table.cc sql_select.cc sql_insert.cc \
- sql_prepare.cc sql_error.cc \
+ sql_prepare.cc sql_error.cc sql_locale.cc \
sql_update.cc sql_delete.cc uniques.cc sql_do.cc \
procedure.cc item_uniq.cc sql_test.cc \
log.cc log_event.cc init.cc derror.cc sql_acl.cc \
diff --git a/sql/item_create.cc b/sql/item_create.cc
index bf4af2232f7..7147142d8a7 100644
--- a/sql/item_create.cc
+++ b/sql/item_create.cc
@@ -296,12 +296,6 @@ Item *create_func_pow(Item* a, Item *b)
return new Item_func_pow(a,b);
}
-Item *create_func_current_user()
-{
- current_thd->lex->safe_to_cache_query= 0;
- return new Item_func_user(TRUE);
-}
-
Item *create_func_radians(Item *a)
{
return new Item_func_units((char*) "radians",a,M_PI/180,0.0);
diff --git a/sql/item_create.h b/sql/item_create.h
index c76dc6b9ad7..9b6a74b5bdd 100644
--- a/sql/item_create.h
+++ b/sql/item_create.h
@@ -73,7 +73,6 @@ Item *create_func_period_add(Item* a, Item *b);
Item *create_func_period_diff(Item* a, Item *b);
Item *create_func_pi(void);
Item *create_func_pow(Item* a, Item *b);
-Item *create_func_current_user(void);
Item *create_func_radians(Item *a);
Item *create_func_release_lock(Item* a);
Item *create_func_repeat(Item* a, Item *b);
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 1aea388fdbb..12e3491cf23 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -2505,8 +2505,7 @@ void udf_handler::cleanup()
{
if (u_d->func_deinit != NULL)
{
- void (*deinit)(UDF_INIT *) = (void (*)(UDF_INIT*))
- u_d->func_deinit;
+ Udf_func_deinit deinit= u_d->func_deinit;
(*deinit)(&initid);
}
free_udf(u_d);
@@ -2651,9 +2650,7 @@ udf_handler::fix_fields(THD *thd, Item_result_field *func,
}
}
thd->net.last_error[0]=0;
- my_bool (*init)(UDF_INIT *, UDF_ARGS *, char *)=
- (my_bool (*)(UDF_INIT *, UDF_ARGS *, char *))
- u_d->func_init;
+ Udf_func_init init= u_d->func_init;
if ((error=(uchar) init(&initid, &f_args, thd->net.last_error)))
{
my_error(ER_CANT_INITIALIZE_UDF, MYF(0),
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index 9019b37da59..af0e79de735 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -1670,42 +1670,51 @@ String *Item_func_database::val_str(String *str)
return str;
}
-// TODO: make USER() replicate properly (currently it is replicated to "")
-String *Item_func_user::val_str(String *str)
+/*
+ TODO: make USER() replicate properly (currently it is replicated to "")
+*/
+bool Item_func_user::init(const char *user, const char *host)
{
DBUG_ASSERT(fixed == 1);
- THD *thd=current_thd;
- CHARSET_INFO *cs= system_charset_info;
- const char *host, *user;
- uint res_length;
- if (is_current)
- {
- user= thd->security_ctx->priv_user;
- host= thd->security_ctx->priv_host;
- }
- else
+ // For system threads (e.g. replication SQL thread) user may be empty
+ if (user)
{
- user= thd->main_security_ctx.user;
- host= thd->main_security_ctx.host_or_ip;
- }
+ CHARSET_INFO *cs= str_value.charset();
+ uint res_length= (strlen(user)+strlen(host)+2) * cs->mbmaxlen;
- // For system threads (e.g. replication SQL thread) user may be empty
- if (!user)
- return &my_empty_string;
- res_length= (strlen(user)+strlen(host)+2) * cs->mbmaxlen;
+ if (str_value.alloc(res_length))
+ {
+ null_value=1;
+ return TRUE;
+ }
- if (str->alloc(res_length))
- {
- null_value=1;
- return 0;
+ res_length=cs->cset->snprintf(cs, (char*)str_value.ptr(), res_length,
+ "%s@%s", user, host);
+ str_value.length(res_length);
+ str_value.mark_as_const();
}
- res_length=cs->cset->snprintf(cs, (char*)str->ptr(), res_length, "%s@%s",
- user, host);
- str->length(res_length);
- str->set_charset(cs);
- return str;
+ return FALSE;
+}
+
+
+bool Item_func_user::fix_fields(THD *thd, Item **ref)
+{
+ return (Item_func_sysconst::fix_fields(thd, ref) ||
+ init(thd->main_security_ctx.user,
+ thd->main_security_ctx.host_or_ip));
+}
+
+
+bool Item_func_current_user::fix_fields(THD *thd, Item **ref)
+{
+ if (Item_func_sysconst::fix_fields(thd, ref))
+ return TRUE;
+
+ Security_context *ctx= (context->security_ctx
+ ? context->security_ctx : thd->security_ctx);
+ return init(ctx->priv_user, ctx->priv_host);
}
diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h
index b2e63deed92..c021aacf114 100644
--- a/sql/item_strfunc.h
+++ b/sql/item_strfunc.h
@@ -393,21 +393,40 @@ public:
class Item_func_user :public Item_func_sysconst
{
- bool is_current;
+protected:
+ bool init (const char *user, const char *host);
public:
- Item_func_user(bool is_current_arg)
- :Item_func_sysconst(), is_current(is_current_arg) {}
- String *val_str(String *);
+ Item_func_user()
+ {
+ str_value.set("", 0, system_charset_info);
+ }
+ String *val_str(String *)
+ {
+ DBUG_ASSERT(fixed == 1);
+ return (null_value ? 0 : &str_value);
+ }
+ bool fix_fields(THD *thd, Item **ref);
void fix_length_and_dec()
{
max_length= ((USERNAME_LENGTH + HOSTNAME_LENGTH + 1) *
system_charset_info->mbmaxlen);
}
- const char *func_name() const
- { return is_current ? "current_user" : "user"; }
- const char *fully_qualified_func_name() const
- { return is_current ? "current_user()" : "user()"; }
+ const char *func_name() const { return "user"; }
+ const char *fully_qualified_func_name() const { return "user()"; }
+};
+
+
+class Item_func_current_user :public Item_func_user
+{
+ Name_resolution_context *context;
+
+public:
+ Item_func_current_user(Name_resolution_context *context_arg)
+ : context(context_arg) {}
+ bool fix_fields(THD *thd, Item **ref);
+ const char *func_name() const { return "current_user"; }
+ const char *fully_qualified_func_name() const { return "current_user()"; }
};
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc
index dadedef4db9..2c8d8423d50 100644
--- a/sql/item_timefunc.cc
+++ b/sql/item_timefunc.cc
@@ -30,25 +30,6 @@
/* Day number for Dec 31st, 9999 */
#define MAX_DAY_NUMBER 3652424L
-static const char *month_names[]=
-{
- "January", "February", "March", "April", "May", "June", "July", "August",
- "September", "October", "November", "December", NullS
-};
-
-TYPELIB month_names_typelib=
-{ array_elements(month_names)-1,"", month_names, NULL };
-
-static const char *day_names[]=
-{
- "Monday", "Tuesday", "Wednesday",
- "Thursday", "Friday", "Saturday" ,"Sunday", NullS
-};
-
-TYPELIB day_names_typelib=
-{ array_elements(day_names)-1,"", day_names, NULL};
-
-
/*
OPTIMIZATION TODO:
- Replace the switch with a function that should be called for each
@@ -223,8 +204,12 @@ static bool extract_date_time(DATE_TIME_FORMAT *format,
val= tmp;
break;
case 'M':
+ if ((l_time->month= check_word(my_locale_en_US.month_names,
+ val, val_end, &val)) <= 0)
+ goto err;
+ break;
case 'b':
- if ((l_time->month= check_word(&month_names_typelib,
+ if ((l_time->month= check_word(my_locale_en_US.ab_month_names,
val, val_end, &val)) <= 0)
goto err;
break;
@@ -299,8 +284,11 @@ static bool extract_date_time(DATE_TIME_FORMAT *format,
/* Exotic things */
case 'W':
+ if ((weekday= check_word(my_locale_en_US.day_names, val, val_end, &val)) <= 0)
+ goto err;
+ break;
case 'a':
- if ((weekday= check_word(&day_names_typelib, val, val_end, &val)) <= 0)
+ if ((weekday= check_word(my_locale_en_US.ab_day_names, val, val_end, &val)) <= 0)
goto err;
break;
case 'w':
@@ -502,9 +490,16 @@ bool make_date_time(DATE_TIME_FORMAT *format, TIME *l_time,
uint weekday;
ulong length;
const char *ptr, *end;
+ MY_LOCALE *locale;
+ THD *thd= current_thd;
+ char buf[STRING_BUFFER_USUAL_SIZE];
+ String tmp(buf, sizeof(buf), thd->variables.character_set_results);
+ uint errors= 0;
+ tmp.length(0);
str->length(0);
str->set_charset(&my_charset_bin);
+ locale = thd->variables.lc_time_names;
if (l_time->neg)
str->append('-');
@@ -520,26 +515,38 @@ bool make_date_time(DATE_TIME_FORMAT *format, TIME *l_time,
case 'M':
if (!l_time->month)
return 1;
- str->append(month_names[l_time->month-1]);
+ tmp.copy(locale->month_names->type_names[l_time->month-1],
+ strlen(locale->month_names->type_names[l_time->month-1]),
+ system_charset_info, tmp.charset(), &errors);
+ str->append(tmp.ptr(), tmp.length());
break;
case 'b':
if (!l_time->month)
return 1;
- str->append(month_names[l_time->month-1],3);
+ tmp.copy(locale->ab_month_names->type_names[l_time->month-1],
+ strlen(locale->ab_month_names->type_names[l_time->month-1]),
+ system_charset_info, tmp.charset(), &errors);
+ str->append(tmp.ptr(), tmp.length());
break;
case 'W':
if (type == MYSQL_TIMESTAMP_TIME)
return 1;
weekday= calc_weekday(calc_daynr(l_time->year,l_time->month,
l_time->day),0);
- str->append(day_names[weekday]);
+ tmp.copy(locale->day_names->type_names[weekday],
+ strlen(locale->day_names->type_names[weekday]),
+ system_charset_info, tmp.charset(), &errors);
+ str->append(tmp.ptr(), tmp.length());
break;
case 'a':
if (type == MYSQL_TIMESTAMP_TIME)
return 1;
weekday=calc_weekday(calc_daynr(l_time->year,l_time->month,
l_time->day),0);
- str->append(day_names[weekday],3);
+ tmp.copy(locale->ab_day_names->type_names[weekday],
+ strlen(locale->ab_day_names->type_names[weekday]),
+ system_charset_info, tmp.charset(), &errors);
+ str->append(tmp.ptr(), tmp.length());
break;
case 'D':
if (type == MYSQL_TIMESTAMP_TIME)
@@ -872,6 +879,7 @@ String* Item_func_monthname::val_str(String* str)
DBUG_ASSERT(fixed == 1);
const char *month_name;
uint month= (uint) val_int();
+ THD *thd= current_thd;
if (null_value || !month)
{
@@ -879,7 +887,7 @@ String* Item_func_monthname::val_str(String* str)
return (String*) 0;
}
null_value=0;
- month_name= month_names[month-1];
+ month_name= thd->variables.lc_time_names->month_names->type_names[month-1];
str->set(month_name, strlen(month_name), system_charset_info);
return str;
}
@@ -1004,11 +1012,12 @@ String* Item_func_dayname::val_str(String* str)
DBUG_ASSERT(fixed == 1);
uint weekday=(uint) val_int(); // Always Item_func_daynr()
const char *name;
+ THD *thd= current_thd;
if (null_value)
return (String*) 0;
- name= day_names[weekday];
+ name= thd->variables.lc_time_names->day_names->type_names[weekday];
str->set(name, strlen(name), system_charset_info);
return str;
}
@@ -1652,7 +1661,7 @@ uint Item_func_date_format::format_length(const String *format)
switch(*++ptr) {
case 'M': /* month, textual */
case 'W': /* day (of the week), textual */
- size += 9;
+ size += 64; /* large for UTF8 locale data */
break;
case 'D': /* day (of the month), numeric plus english suffix */
case 'Y': /* year, numeric, 4 digits */
@@ -1662,6 +1671,8 @@ uint Item_func_date_format::format_length(const String *format)
break;
case 'a': /* locale's abbreviated weekday name (Sun..Sat) */
case 'b': /* locale's abbreviated month name (Jan.Dec) */
+ size += 32; /* large for UTF8 locale data */
+ break;
case 'j': /* day of year (001..366) */
size += 3;
break;
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h
index 08b7467eafb..c270759f6b9 100644
--- a/sql/mysql_priv.h
+++ b/sql/mysql_priv.h
@@ -101,6 +101,23 @@ char* query_table_status(THD *thd,const char *db,const char *table_name);
extern CHARSET_INFO *system_charset_info, *files_charset_info ;
extern CHARSET_INFO *national_charset_info, *table_alias_charset;
+
+typedef struct my_locale_st
+{
+ const char *name;
+ const char *description;
+ const bool is_ascii;
+ TYPELIB *month_names;
+ TYPELIB *ab_month_names;
+ TYPELIB *day_names;
+ TYPELIB *ab_day_names;
+} MY_LOCALE;
+
+extern MY_LOCALE my_locale_en_US;
+extern MY_LOCALE *my_locales[];
+
+MY_LOCALE *my_locale_by_name(const char *name);
+
/***************************************************************************
Configuration parameters
****************************************************************************/
@@ -588,6 +605,7 @@ struct Query_cache_query_flags
ulong sql_mode;
ulong max_sort_length;
ulong group_concat_max_len;
+ MY_LOCALE *lc_time_names;
};
#define QUERY_CACHE_FLAGS_SIZE sizeof(Query_cache_query_flags)
#include "sql_cache.h"
diff --git a/sql/set_var.cc b/sql/set_var.cc
index 1176a98713d..a141e7eba39 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -109,7 +109,6 @@ extern ulong ndb_report_thresh_binlog_mem_usage;
-
static HASH system_variable_hash;
const char *bool_type_names[]= { "OFF", "ON", NullS };
TYPELIB bool_typelib=
@@ -631,6 +630,9 @@ static sys_var_thd_ha_rows sys_select_limit("sql_select_limit",
static sys_var_timestamp sys_timestamp("timestamp");
static sys_var_last_insert_id sys_last_insert_id("last_insert_id");
static sys_var_last_insert_id sys_identity("identity");
+
+static sys_var_thd_lc_time_names sys_lc_time_names("lc_time_names");
+
static sys_var_insert_id sys_insert_id("insert_id");
static sys_var_readonly sys_error_count("error_count",
OPT_SESSION,
@@ -871,6 +873,7 @@ SHOW_VAR init_vars[]= {
{"large_files_support", (char*) &opt_large_files, SHOW_BOOL},
{"large_page_size", (char*) &opt_large_page_size, SHOW_INT},
{"large_pages", (char*) &opt_large_pages, SHOW_MY_BOOL},
+ {sys_lc_time_names.name, (char*) &sys_lc_time_names, SHOW_SYS},
{sys_license.name, (char*) &sys_license, SHOW_SYS},
{sys_local_infile.name, (char*) &sys_local_infile, SHOW_SYS},
#ifdef HAVE_MLOCKALL
@@ -3011,6 +3014,40 @@ byte *sys_var_max_user_conn::value_ptr(THD *thd, enum_var_type type,
return (byte*) &(max_user_connections);
}
+bool sys_var_thd_lc_time_names::check(THD *thd, set_var *var)
+{
+ char *locale_str =var->value->str_value.c_ptr();
+ MY_LOCALE *locale_match= my_locale_by_name(locale_str);
+
+ if (locale_match == NULL)
+ {
+ my_printf_error(ER_UNKNOWN_ERROR,
+ "Unknown locale: '%s'", MYF(0), locale_str);
+ return 1;
+ }
+ var->save_result.locale_value= locale_match;
+ return 0;
+}
+
+
+bool sys_var_thd_lc_time_names::update(THD *thd, set_var *var)
+{
+ thd->variables.lc_time_names= var->save_result.locale_value;
+ return 0;
+}
+
+
+byte *sys_var_thd_lc_time_names::value_ptr(THD *thd, enum_var_type type,
+ LEX_STRING *base)
+{
+ return (byte *)(thd->variables.lc_time_names->name);
+}
+
+
+void sys_var_thd_lc_time_names::set_default(THD *thd, enum_var_type type)
+{
+ thd->variables.lc_time_names = &my_locale_en_US;
+}
/*
Functions to update thd->options bits
diff --git a/sql/set_var.h b/sql/set_var.h
index b968b4c7840..a63bcc4a55d 100644
--- a/sql/set_var.h
+++ b/sql/set_var.h
@@ -28,6 +28,8 @@
class sys_var;
class set_var;
typedef struct system_variables SV;
+typedef struct my_locale_st MY_LOCALE;
+
extern TYPELIB bool_typelib, delay_key_write_typelib, sql_mode_typelib;
typedef int (*sys_check_func)(THD *, set_var *);
@@ -903,6 +905,25 @@ public:
};
+class sys_var_thd_lc_time_names :public sys_var_thd
+{
+public:
+ sys_var_thd_lc_time_names(const char *name_arg):
+ sys_var_thd(name_arg)
+ {}
+ bool check(THD *thd, set_var *var);
+ SHOW_TYPE type() { return SHOW_CHAR; }
+ bool check_update_type(Item_result type)
+ {
+ return type != STRING_RESULT; /* Only accept strings */
+ }
+ bool check_default(enum_var_type type) { return 0; }
+ bool update(THD *thd, set_var *var);
+ byte *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
+ virtual void set_default(THD *thd, enum_var_type type);
+};
+
+
class sys_var_event_scheduler :public sys_var_long_ptr
{
/* We need a derived class only to have a warn_deprecated() */
@@ -964,6 +985,7 @@ public:
handlerton *hton;
DATE_TIME_FORMAT *date_time_format;
Time_zone *time_zone;
+ MY_LOCALE *locale_value;
} save_result;
LEX_STRING base; /* for structs */
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc
index 6e8a559ee07..e73dd4b1d09 100644
--- a/sql/sql_cache.cc
+++ b/sql/sql_cache.cc
@@ -814,6 +814,7 @@ void Query_cache::store_query(THD *thd, TABLE_LIST *tables_used)
flags.time_zone= thd->variables.time_zone;
flags.sql_mode= thd->variables.sql_mode;
flags.max_sort_length= thd->variables.max_sort_length;
+ flags.lc_time_names= thd->variables.lc_time_names;
flags.group_concat_max_len= thd->variables.group_concat_max_len;
DBUG_PRINT("qcache", ("long %d, 4.1: %d, more results %d, pkt_nr: %d, \
CS client: %u, CS result: %u, CS conn: %u, limit: %lu, TZ: 0x%lx, \
@@ -1049,6 +1050,7 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length)
flags.sql_mode= thd->variables.sql_mode;
flags.max_sort_length= thd->variables.max_sort_length;
flags.group_concat_max_len= thd->variables.group_concat_max_len;
+ flags.lc_time_names= thd->variables.lc_time_names;
DBUG_PRINT("qcache", ("long %d, 4.1: %d, more results %d, pkt_nr: %d, \
CS client: %u, CS result: %u, CS conn: %u, limit: %lu, TZ: 0x%lx, \
sql mode: 0x%lx, sort len: %lu, conncat len: %lu",
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 33069e84809..c1a3b76ce55 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -350,6 +350,7 @@ void THD::init(void)
reset_current_stmt_binlog_row_based();
#endif /*HAVE_ROW_BASED_REPLICATION*/
bzero((char *) &status_var, sizeof(status_var));
+ variables.lc_time_names = &my_locale_en_US;
}
@@ -2040,6 +2041,7 @@ void Security_context::init()
{
host= user= priv_user= ip= 0;
host_or_ip= "connecting host";
+ priv_host[0]= '\0';
#ifndef NO_EMBEDDED_ACCESS_CHECKS
db_access= NO_ACCESS;
#endif
diff --git a/sql/sql_class.h b/sql/sql_class.h
index 0e8ef66bd4e..35de14835a4 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -266,6 +266,9 @@ struct system_variables
CHARSET_INFO *collation_database;
CHARSET_INFO *collation_connection;
+ /* Locale Support */
+ MY_LOCALE *lc_time_names;
+
Time_zone *time_zone;
/* DATE, DATETIME and TIME formats */
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index fae1d90cc9a..659695e8e73 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -428,7 +428,7 @@ extern "C" int refpos_order_cmp(void* arg, const void *a,const void *b)
bool mysql_multi_delete_prepare(THD *thd)
{
LEX *lex= thd->lex;
- TABLE_LIST *aux_tables= (TABLE_LIST *)lex->auxilliary_table_list.first;
+ TABLE_LIST *aux_tables= (TABLE_LIST *)lex->auxiliary_table_list.first;
TABLE_LIST *target_tbl;
DBUG_ENTER("mysql_multi_delete_prepare");
diff --git a/sql/sql_lex.h b/sql/sql_lex.h
index 85264638551..f42f70d4397 100644
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
@@ -937,7 +937,7 @@ typedef struct st_lex : public Query_tables_list
List<Name_resolution_context> context_stack;
List<LEX_STRING> db_list;
- SQL_LIST proc_list, auxilliary_table_list, save_list;
+ SQL_LIST proc_list, auxiliary_table_list, save_list;
create_field *last_field;
Item_sum *in_sum_func;
udf_func udf;
diff --git a/sql/sql_locale.cc b/sql/sql_locale.cc
new file mode 100644
index 00000000000..9dae55e4508
--- /dev/null
+++ b/sql/sql_locale.cc
@@ -0,0 +1,1607 @@
+/* Copyright (C) 2005 MySQL AB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+/*
+ The beginnings of locale(7) support.
+ Sponsored for subset of LC_TIME support, WorkLog entry 2928, -- Josh Chamas
+
+ !! This file is built from my_locale.pl !!
+*/
+
+#include "mysql_priv.h"
+
+
+MY_LOCALE *my_locale_by_name(const char *name)
+{
+ MY_LOCALE **locale;
+ for( locale= my_locales; *locale != NULL; locale++)
+ {
+ if(!strcmp((*locale)->name, name))
+ return *locale;
+ }
+ return NULL;
+}
+
+/***** LOCALE BEGIN ar_AE: Arabic - United Arab Emirates *****/
+static const char *my_locale_month_names_ar_AE[13] =
+ {"يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر", NullS };
+static const char *my_locale_ab_month_names_ar_AE[13] =
+ {"ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس", NullS };
+static const char *my_locale_day_names_ar_AE[8] =
+ {"الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت ","الأحد", NullS };
+static const char *my_locale_ab_day_names_ar_AE[8] =
+ {"ن","ث","ر","خ","ج","س","ح", NullS };
+static TYPELIB my_locale_typelib_month_names_ar_AE =
+ { array_elements(my_locale_month_names_ar_AE)-1, "", my_locale_month_names_ar_AE, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ar_AE =
+ { array_elements(my_locale_ab_month_names_ar_AE)-1, "", my_locale_ab_month_names_ar_AE, NULL };
+static TYPELIB my_locale_typelib_day_names_ar_AE =
+ { array_elements(my_locale_day_names_ar_AE)-1, "", my_locale_day_names_ar_AE, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ar_AE =
+ { array_elements(my_locale_ab_day_names_ar_AE)-1, "", my_locale_ab_day_names_ar_AE, NULL };
+MY_LOCALE my_locale_ar_AE=
+ { "ar_AE", "Arabic - United Arab Emirates", FALSE, &my_locale_typelib_month_names_ar_AE, &my_locale_typelib_ab_month_names_ar_AE, &my_locale_typelib_day_names_ar_AE, &my_locale_typelib_ab_day_names_ar_AE };
+/***** LOCALE END ar_AE *****/
+
+/***** LOCALE BEGIN ar_BH: Arabic - Bahrain *****/
+static const char *my_locale_month_names_ar_BH[13] =
+ {"يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر", NullS };
+static const char *my_locale_ab_month_names_ar_BH[13] =
+ {"ينا","فبر","مار","أبر","ماي","يون","يول","أغس","سبت","أكت","نوف","ديس", NullS };
+static const char *my_locale_day_names_ar_BH[8] =
+ {"الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد", NullS };
+static const char *my_locale_ab_day_names_ar_BH[8] =
+ {"ن","ث","ر","خ","ج","س","ح", NullS };
+static TYPELIB my_locale_typelib_month_names_ar_BH =
+ { array_elements(my_locale_month_names_ar_BH)-1, "", my_locale_month_names_ar_BH, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ar_BH =
+ { array_elements(my_locale_ab_month_names_ar_BH)-1, "", my_locale_ab_month_names_ar_BH, NULL };
+static TYPELIB my_locale_typelib_day_names_ar_BH =
+ { array_elements(my_locale_day_names_ar_BH)-1, "", my_locale_day_names_ar_BH, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ar_BH =
+ { array_elements(my_locale_ab_day_names_ar_BH)-1, "", my_locale_ab_day_names_ar_BH, NULL };
+MY_LOCALE my_locale_ar_BH=
+ { "ar_BH", "Arabic - Bahrain", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_BH *****/
+
+/***** LOCALE BEGIN ar_JO: Arabic - Jordan *****/
+static const char *my_locale_month_names_ar_JO[13] =
+ {"كانون الثاني","شباط","آذار","نيسان","نوار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول", NullS };
+static const char *my_locale_ab_month_names_ar_JO[13] =
+ {"كانون الثاني","شباط","آذار","نيسان","نوار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول", NullS };
+static const char *my_locale_day_names_ar_JO[8] =
+ {"الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد", NullS };
+static const char *my_locale_ab_day_names_ar_JO[8] =
+ {"الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد", NullS };
+static TYPELIB my_locale_typelib_month_names_ar_JO =
+ { array_elements(my_locale_month_names_ar_JO)-1, "", my_locale_month_names_ar_JO, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ar_JO =
+ { array_elements(my_locale_ab_month_names_ar_JO)-1, "", my_locale_ab_month_names_ar_JO, NULL };
+static TYPELIB my_locale_typelib_day_names_ar_JO =
+ { array_elements(my_locale_day_names_ar_JO)-1, "", my_locale_day_names_ar_JO, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ar_JO =
+ { array_elements(my_locale_ab_day_names_ar_JO)-1, "", my_locale_ab_day_names_ar_JO, NULL };
+MY_LOCALE my_locale_ar_JO=
+ { "ar_JO", "Arabic - Jordan", FALSE, &my_locale_typelib_month_names_ar_JO, &my_locale_typelib_ab_month_names_ar_JO, &my_locale_typelib_day_names_ar_JO, &my_locale_typelib_ab_day_names_ar_JO };
+/***** LOCALE END ar_JO *****/
+
+/***** LOCALE BEGIN ar_SA: Arabic - Saudi Arabia *****/
+static const char *my_locale_month_names_ar_SA[13] =
+ {"كانون الثاني","شباط","آذار","نيسـان","أيار","حزيران","تـمـوز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول", NullS };
+static const char *my_locale_ab_month_names_ar_SA[13] =
+ {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec", NullS };
+static const char *my_locale_day_names_ar_SA[8] =
+ {"الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعـة","السبت","الأحد", NullS };
+static const char *my_locale_ab_day_names_ar_SA[8] =
+ {"Mon","Tue","Wed","Thu","Fri","Sat","Sun", NullS };
+static TYPELIB my_locale_typelib_month_names_ar_SA =
+ { array_elements(my_locale_month_names_ar_SA)-1, "", my_locale_month_names_ar_SA, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ar_SA =
+ { array_elements(my_locale_ab_month_names_ar_SA)-1, "", my_locale_ab_month_names_ar_SA, NULL };
+static TYPELIB my_locale_typelib_day_names_ar_SA =
+ { array_elements(my_locale_day_names_ar_SA)-1, "", my_locale_day_names_ar_SA, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ar_SA =
+ { array_elements(my_locale_ab_day_names_ar_SA)-1, "", my_locale_ab_day_names_ar_SA, NULL };
+MY_LOCALE my_locale_ar_SA=
+ { "ar_SA", "Arabic - Saudi Arabia", FALSE, &my_locale_typelib_month_names_ar_SA, &my_locale_typelib_ab_month_names_ar_SA, &my_locale_typelib_day_names_ar_SA, &my_locale_typelib_ab_day_names_ar_SA };
+/***** LOCALE END ar_SA *****/
+
+/***** LOCALE BEGIN ar_SY: Arabic - Syria *****/
+static const char *my_locale_month_names_ar_SY[13] =
+ {"كانون الثاني","شباط","آذار","نيسان","نواران","حزير","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول", NullS };
+static const char *my_locale_ab_month_names_ar_SY[13] =
+ {"كانون الثاني","شباط","آذار","نيسان","نوار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول", NullS };
+static const char *my_locale_day_names_ar_SY[8] =
+ {"الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد", NullS };
+static const char *my_locale_ab_day_names_ar_SY[8] =
+ {"الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد", NullS };
+static TYPELIB my_locale_typelib_month_names_ar_SY =
+ { array_elements(my_locale_month_names_ar_SY)-1, "", my_locale_month_names_ar_SY, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ar_SY =
+ { array_elements(my_locale_ab_month_names_ar_SY)-1, "", my_locale_ab_month_names_ar_SY, NULL };
+static TYPELIB my_locale_typelib_day_names_ar_SY =
+ { array_elements(my_locale_day_names_ar_SY)-1, "", my_locale_day_names_ar_SY, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ar_SY =
+ { array_elements(my_locale_ab_day_names_ar_SY)-1, "", my_locale_ab_day_names_ar_SY, NULL };
+MY_LOCALE my_locale_ar_SY=
+ { "ar_SY", "Arabic - Syria", FALSE, &my_locale_typelib_month_names_ar_SY, &my_locale_typelib_ab_month_names_ar_SY, &my_locale_typelib_day_names_ar_SY, &my_locale_typelib_ab_day_names_ar_SY };
+/***** LOCALE END ar_SY *****/
+
+/***** LOCALE BEGIN be_BY: Belarusian - Belarus *****/
+static const char *my_locale_month_names_be_BY[13] =
+ {"Студзень","Люты","Сакавік","Красавік","Травень","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Снежань", NullS };
+static const char *my_locale_ab_month_names_be_BY[13] =
+ {"Стд","Лют","Сак","Крс","Тра","Чэр","Ліп","Жнв","Врс","Кст","Ліс","Снж", NullS };
+static const char *my_locale_day_names_be_BY[8] =
+ {"Панядзелак","Аўторак","Серада","Чацвер","Пятніца","Субота","Нядзеля", NullS };
+static const char *my_locale_ab_day_names_be_BY[8] =
+ {"Пан","Аўт","Срд","Чцв","Пят","Суб","Няд", NullS };
+static TYPELIB my_locale_typelib_month_names_be_BY =
+ { array_elements(my_locale_month_names_be_BY)-1, "", my_locale_month_names_be_BY, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_be_BY =
+ { array_elements(my_locale_ab_month_names_be_BY)-1, "", my_locale_ab_month_names_be_BY, NULL };
+static TYPELIB my_locale_typelib_day_names_be_BY =
+ { array_elements(my_locale_day_names_be_BY)-1, "", my_locale_day_names_be_BY, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_be_BY =
+ { array_elements(my_locale_ab_day_names_be_BY)-1, "", my_locale_ab_day_names_be_BY, NULL };
+MY_LOCALE my_locale_be_BY=
+ { "be_BY", "Belarusian - Belarus", FALSE, &my_locale_typelib_month_names_be_BY, &my_locale_typelib_ab_month_names_be_BY, &my_locale_typelib_day_names_be_BY, &my_locale_typelib_ab_day_names_be_BY };
+/***** LOCALE END be_BY *****/
+
+/***** LOCALE BEGIN bg_BG: Bulgarian - Bulgaria *****/
+static const char *my_locale_month_names_bg_BG[13] =
+ {"януари","февруари","март","април","май","юни","юли","август","септември","октомври","ноември","декември", NullS };
+static const char *my_locale_ab_month_names_bg_BG[13] =
+ {"яну","фев","мар","апр","май","юни","юли","авг","сеп","окт","ное","дек", NullS };
+static const char *my_locale_day_names_bg_BG[8] =
+ {"понеделник","вторник","сряда","четвъртък","петък","събота","неделя", NullS };
+static const char *my_locale_ab_day_names_bg_BG[8] =
+ {"пн","вт","ср","чт","пт","сб","нд", NullS };
+static TYPELIB my_locale_typelib_month_names_bg_BG =
+ { array_elements(my_locale_month_names_bg_BG)-1, "", my_locale_month_names_bg_BG, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_bg_BG =
+ { array_elements(my_locale_ab_month_names_bg_BG)-1, "", my_locale_ab_month_names_bg_BG, NULL };
+static TYPELIB my_locale_typelib_day_names_bg_BG =
+ { array_elements(my_locale_day_names_bg_BG)-1, "", my_locale_day_names_bg_BG, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_bg_BG =
+ { array_elements(my_locale_ab_day_names_bg_BG)-1, "", my_locale_ab_day_names_bg_BG, NULL };
+MY_LOCALE my_locale_bg_BG=
+ { "bg_BG", "Bulgarian - Bulgaria", FALSE, &my_locale_typelib_month_names_bg_BG, &my_locale_typelib_ab_month_names_bg_BG, &my_locale_typelib_day_names_bg_BG, &my_locale_typelib_ab_day_names_bg_BG };
+/***** LOCALE END bg_BG *****/
+
+/***** LOCALE BEGIN ca_ES: Catalan - Catalan *****/
+static const char *my_locale_month_names_ca_ES[13] =
+ {"gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre", NullS };
+static const char *my_locale_ab_month_names_ca_ES[13] =
+ {"gen","feb","mar","abr","mai","jun","jul","ago","set","oct","nov","des", NullS };
+static const char *my_locale_day_names_ca_ES[8] =
+ {"dilluns","dimarts","dimecres","dijous","divendres","dissabte","diumenge", NullS };
+static const char *my_locale_ab_day_names_ca_ES[8] =
+ {"dl","dt","dc","dj","dv","ds","dg", NullS };
+static TYPELIB my_locale_typelib_month_names_ca_ES =
+ { array_elements(my_locale_month_names_ca_ES)-1, "", my_locale_month_names_ca_ES, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ca_ES =
+ { array_elements(my_locale_ab_month_names_ca_ES)-1, "", my_locale_ab_month_names_ca_ES, NULL };
+static TYPELIB my_locale_typelib_day_names_ca_ES =
+ { array_elements(my_locale_day_names_ca_ES)-1, "", my_locale_day_names_ca_ES, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ca_ES =
+ { array_elements(my_locale_ab_day_names_ca_ES)-1, "", my_locale_ab_day_names_ca_ES, NULL };
+MY_LOCALE my_locale_ca_ES=
+ { "ca_ES", "Catalan - Catalan", FALSE, &my_locale_typelib_month_names_ca_ES, &my_locale_typelib_ab_month_names_ca_ES, &my_locale_typelib_day_names_ca_ES, &my_locale_typelib_ab_day_names_ca_ES };
+/***** LOCALE END ca_ES *****/
+
+/***** LOCALE BEGIN cs_CZ: Czech - Czech Republic *****/
+static const char *my_locale_month_names_cs_CZ[13] =
+ {"leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec", NullS };
+static const char *my_locale_ab_month_names_cs_CZ[13] =
+ {"led","úno","bře","dub","kvě","čen","čec","srp","zář","říj","lis","pro", NullS };
+static const char *my_locale_day_names_cs_CZ[8] =
+ {"Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota","Neděle", NullS };
+static const char *my_locale_ab_day_names_cs_CZ[8] =
+ {"Po","Út","St","Čt","Pá","So","Ne", NullS };
+static TYPELIB my_locale_typelib_month_names_cs_CZ =
+ { array_elements(my_locale_month_names_cs_CZ)-1, "", my_locale_month_names_cs_CZ, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_cs_CZ =
+ { array_elements(my_locale_ab_month_names_cs_CZ)-1, "", my_locale_ab_month_names_cs_CZ, NULL };
+static TYPELIB my_locale_typelib_day_names_cs_CZ =
+ { array_elements(my_locale_day_names_cs_CZ)-1, "", my_locale_day_names_cs_CZ, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_cs_CZ =
+ { array_elements(my_locale_ab_day_names_cs_CZ)-1, "", my_locale_ab_day_names_cs_CZ, NULL };
+MY_LOCALE my_locale_cs_CZ=
+ { "cs_CZ", "Czech - Czech Republic", FALSE, &my_locale_typelib_month_names_cs_CZ, &my_locale_typelib_ab_month_names_cs_CZ, &my_locale_typelib_day_names_cs_CZ, &my_locale_typelib_ab_day_names_cs_CZ };
+/***** LOCALE END cs_CZ *****/
+
+/***** LOCALE BEGIN da_DK: Danish - Denmark *****/
+static const char *my_locale_month_names_da_DK[13] =
+ {"januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december", NullS };
+static const char *my_locale_ab_month_names_da_DK[13] =
+ {"jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec", NullS };
+static const char *my_locale_day_names_da_DK[8] =
+ {"mandag","tirsdag","onsdag","torsdag","fredag","lørdag","søndag", NullS };
+static const char *my_locale_ab_day_names_da_DK[8] =
+ {"man","tir","ons","tor","fre","lør","søn", NullS };
+static TYPELIB my_locale_typelib_month_names_da_DK =
+ { array_elements(my_locale_month_names_da_DK)-1, "", my_locale_month_names_da_DK, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_da_DK =
+ { array_elements(my_locale_ab_month_names_da_DK)-1, "", my_locale_ab_month_names_da_DK, NULL };
+static TYPELIB my_locale_typelib_day_names_da_DK =
+ { array_elements(my_locale_day_names_da_DK)-1, "", my_locale_day_names_da_DK, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_da_DK =
+ { array_elements(my_locale_ab_day_names_da_DK)-1, "", my_locale_ab_day_names_da_DK, NULL };
+MY_LOCALE my_locale_da_DK=
+ { "da_DK", "Danish - Denmark", FALSE, &my_locale_typelib_month_names_da_DK, &my_locale_typelib_ab_month_names_da_DK, &my_locale_typelib_day_names_da_DK, &my_locale_typelib_ab_day_names_da_DK };
+/***** LOCALE END da_DK *****/
+
+/***** LOCALE BEGIN de_AT: German - Austria *****/
+static const char *my_locale_month_names_de_AT[13] =
+ {"Jänner","Feber","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember", NullS };
+static const char *my_locale_ab_month_names_de_AT[13] =
+ {"Jän","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez", NullS };
+static const char *my_locale_day_names_de_AT[8] =
+ {"Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag", NullS };
+static const char *my_locale_ab_day_names_de_AT[8] =
+ {"Mon","Die","Mit","Don","Fre","Sam","Son", NullS };
+static TYPELIB my_locale_typelib_month_names_de_AT =
+ { array_elements(my_locale_month_names_de_AT)-1, "", my_locale_month_names_de_AT, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_de_AT =
+ { array_elements(my_locale_ab_month_names_de_AT)-1, "", my_locale_ab_month_names_de_AT, NULL };
+static TYPELIB my_locale_typelib_day_names_de_AT =
+ { array_elements(my_locale_day_names_de_AT)-1, "", my_locale_day_names_de_AT, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_de_AT =
+ { array_elements(my_locale_ab_day_names_de_AT)-1, "", my_locale_ab_day_names_de_AT, NULL };
+MY_LOCALE my_locale_de_AT=
+ { "de_AT", "German - Austria", FALSE, &my_locale_typelib_month_names_de_AT, &my_locale_typelib_ab_month_names_de_AT, &my_locale_typelib_day_names_de_AT, &my_locale_typelib_ab_day_names_de_AT };
+/***** LOCALE END de_AT *****/
+
+/***** LOCALE BEGIN de_DE: German - Germany *****/
+static const char *my_locale_month_names_de_DE[13] =
+ {"Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember", NullS };
+static const char *my_locale_ab_month_names_de_DE[13] =
+ {"Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez", NullS };
+static const char *my_locale_day_names_de_DE[8] =
+ {"Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag", NullS };
+static const char *my_locale_ab_day_names_de_DE[8] =
+ {"Mo","Di","Mi","Do","Fr","Sa","So", NullS };
+static TYPELIB my_locale_typelib_month_names_de_DE =
+ { array_elements(my_locale_month_names_de_DE)-1, "", my_locale_month_names_de_DE, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_de_DE =
+ { array_elements(my_locale_ab_month_names_de_DE)-1, "", my_locale_ab_month_names_de_DE, NULL };
+static TYPELIB my_locale_typelib_day_names_de_DE =
+ { array_elements(my_locale_day_names_de_DE)-1, "", my_locale_day_names_de_DE, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_de_DE =
+ { array_elements(my_locale_ab_day_names_de_DE)-1, "", my_locale_ab_day_names_de_DE, NULL };
+MY_LOCALE my_locale_de_DE=
+ { "de_DE", "German - Germany", FALSE, &my_locale_typelib_month_names_de_DE, &my_locale_typelib_ab_month_names_de_DE, &my_locale_typelib_day_names_de_DE, &my_locale_typelib_ab_day_names_de_DE };
+/***** LOCALE END de_DE *****/
+
+/***** LOCALE BEGIN en_US: English - United States *****/
+static const char *my_locale_month_names_en_US[13] =
+ {"January","February","March","April","May","June","July","August","September","October","November","December", NullS };
+static const char *my_locale_ab_month_names_en_US[13] =
+ {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec", NullS };
+static const char *my_locale_day_names_en_US[8] =
+ {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday", NullS };
+static const char *my_locale_ab_day_names_en_US[8] =
+ {"Mon","Tue","Wed","Thu","Fri","Sat","Sun", NullS };
+static TYPELIB my_locale_typelib_month_names_en_US =
+ { array_elements(my_locale_month_names_en_US)-1, "", my_locale_month_names_en_US, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_en_US =
+ { array_elements(my_locale_ab_month_names_en_US)-1, "", my_locale_ab_month_names_en_US, NULL };
+static TYPELIB my_locale_typelib_day_names_en_US =
+ { array_elements(my_locale_day_names_en_US)-1, "", my_locale_day_names_en_US, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_en_US =
+ { array_elements(my_locale_ab_day_names_en_US)-1, "", my_locale_ab_day_names_en_US, NULL };
+MY_LOCALE my_locale_en_US=
+ { "en_US", "English - United States", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+/***** LOCALE END en_US *****/
+
+/***** LOCALE BEGIN es_ES: Spanish - Spain *****/
+static const char *my_locale_month_names_es_ES[13] =
+ {"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre", NullS };
+static const char *my_locale_ab_month_names_es_ES[13] =
+ {"ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic", NullS };
+static const char *my_locale_day_names_es_ES[8] =
+ {"lunes","martes","miércoles","jueves","viernes","sábado","domingo", NullS };
+static const char *my_locale_ab_day_names_es_ES[8] =
+ {"lun","mar","mié","jue","vie","sáb","dom", NullS };
+static TYPELIB my_locale_typelib_month_names_es_ES =
+ { array_elements(my_locale_month_names_es_ES)-1, "", my_locale_month_names_es_ES, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_es_ES =
+ { array_elements(my_locale_ab_month_names_es_ES)-1, "", my_locale_ab_month_names_es_ES, NULL };
+static TYPELIB my_locale_typelib_day_names_es_ES =
+ { array_elements(my_locale_day_names_es_ES)-1, "", my_locale_day_names_es_ES, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_es_ES =
+ { array_elements(my_locale_ab_day_names_es_ES)-1, "", my_locale_ab_day_names_es_ES, NULL };
+MY_LOCALE my_locale_es_ES=
+ { "es_ES", "Spanish - Spain", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_ES *****/
+
+/***** LOCALE BEGIN et_EE: Estonian - Estonia *****/
+static const char *my_locale_month_names_et_EE[13] =
+ {"jaanuar","veebruar","märts","aprill","mai","juuni","juuli","august","september","oktoober","november","detsember", NullS };
+static const char *my_locale_ab_month_names_et_EE[13] =
+ {"jaan ","veebr","märts","apr ","mai ","juuni","juuli","aug ","sept ","okt ","nov ","dets ", NullS };
+static const char *my_locale_day_names_et_EE[8] =
+ {"esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev","pühapäev", NullS };
+static const char *my_locale_ab_day_names_et_EE[8] =
+ {"E","T","K","N","R","L","P", NullS };
+static TYPELIB my_locale_typelib_month_names_et_EE =
+ { array_elements(my_locale_month_names_et_EE)-1, "", my_locale_month_names_et_EE, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_et_EE =
+ { array_elements(my_locale_ab_month_names_et_EE)-1, "", my_locale_ab_month_names_et_EE, NULL };
+static TYPELIB my_locale_typelib_day_names_et_EE =
+ { array_elements(my_locale_day_names_et_EE)-1, "", my_locale_day_names_et_EE, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_et_EE =
+ { array_elements(my_locale_ab_day_names_et_EE)-1, "", my_locale_ab_day_names_et_EE, NULL };
+MY_LOCALE my_locale_et_EE=
+ { "et_EE", "Estonian - Estonia", FALSE, &my_locale_typelib_month_names_et_EE, &my_locale_typelib_ab_month_names_et_EE, &my_locale_typelib_day_names_et_EE, &my_locale_typelib_ab_day_names_et_EE };
+/***** LOCALE END et_EE *****/
+
+/***** LOCALE BEGIN eu_ES: Basque - Basque *****/
+static const char *my_locale_month_names_eu_ES[13] =
+ {"urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua", NullS };
+static const char *my_locale_ab_month_names_eu_ES[13] =
+ {"urt","ots","mar","api","mai","eka","uzt","abu","ira","urr","aza","abe", NullS };
+static const char *my_locale_day_names_eu_ES[8] =
+ {"astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata","igandea", NullS };
+static const char *my_locale_ab_day_names_eu_ES[8] =
+ {"al.","ar.","az.","og.","or.","lr.","ig.", NullS };
+static TYPELIB my_locale_typelib_month_names_eu_ES =
+ { array_elements(my_locale_month_names_eu_ES)-1, "", my_locale_month_names_eu_ES, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_eu_ES =
+ { array_elements(my_locale_ab_month_names_eu_ES)-1, "", my_locale_ab_month_names_eu_ES, NULL };
+static TYPELIB my_locale_typelib_day_names_eu_ES =
+ { array_elements(my_locale_day_names_eu_ES)-1, "", my_locale_day_names_eu_ES, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_eu_ES =
+ { array_elements(my_locale_ab_day_names_eu_ES)-1, "", my_locale_ab_day_names_eu_ES, NULL };
+MY_LOCALE my_locale_eu_ES=
+ { "eu_ES", "Basque - Basque", TRUE, &my_locale_typelib_month_names_eu_ES, &my_locale_typelib_ab_month_names_eu_ES, &my_locale_typelib_day_names_eu_ES, &my_locale_typelib_ab_day_names_eu_ES };
+/***** LOCALE END eu_ES *****/
+
+/***** LOCALE BEGIN fi_FI: Finnish - Finland *****/
+static const char *my_locale_month_names_fi_FI[13] =
+ {"tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu", NullS };
+static const char *my_locale_ab_month_names_fi_FI[13] =
+ {"tammi ","helmi ","maalis","huhti ","touko ","kesä  ","heinä ","elo   ","syys  ","loka  ","marras","joulu ", NullS };
+static const char *my_locale_day_names_fi_FI[8] =
+ {"maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai","sunnuntai", NullS };
+static const char *my_locale_ab_day_names_fi_FI[8] =
+ {"ma","ti","ke","to","pe","la","su", NullS };
+static TYPELIB my_locale_typelib_month_names_fi_FI =
+ { array_elements(my_locale_month_names_fi_FI)-1, "", my_locale_month_names_fi_FI, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_fi_FI =
+ { array_elements(my_locale_ab_month_names_fi_FI)-1, "", my_locale_ab_month_names_fi_FI, NULL };
+static TYPELIB my_locale_typelib_day_names_fi_FI =
+ { array_elements(my_locale_day_names_fi_FI)-1, "", my_locale_day_names_fi_FI, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_fi_FI =
+ { array_elements(my_locale_ab_day_names_fi_FI)-1, "", my_locale_ab_day_names_fi_FI, NULL };
+MY_LOCALE my_locale_fi_FI=
+ { "fi_FI", "Finnish - Finland", FALSE, &my_locale_typelib_month_names_fi_FI, &my_locale_typelib_ab_month_names_fi_FI, &my_locale_typelib_day_names_fi_FI, &my_locale_typelib_ab_day_names_fi_FI };
+/***** LOCALE END fi_FI *****/
+
+/***** LOCALE BEGIN fo_FO: Faroese - Faroe Islands *****/
+static const char *my_locale_month_names_fo_FO[13] =
+ {"januar","februar","mars","apríl","mai","juni","juli","august","september","oktober","november","desember", NullS };
+static const char *my_locale_ab_month_names_fo_FO[13] =
+ {"jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des", NullS };
+static const char *my_locale_day_names_fo_FO[8] =
+ {"mánadagur","týsdagur","mikudagur","hósdagur","fríggjadagur","leygardagur","sunnudagur", NullS };
+static const char *my_locale_ab_day_names_fo_FO[8] =
+ {"mán","týs","mik","hós","frí","ley","sun", NullS };
+static TYPELIB my_locale_typelib_month_names_fo_FO =
+ { array_elements(my_locale_month_names_fo_FO)-1, "", my_locale_month_names_fo_FO, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_fo_FO =
+ { array_elements(my_locale_ab_month_names_fo_FO)-1, "", my_locale_ab_month_names_fo_FO, NULL };
+static TYPELIB my_locale_typelib_day_names_fo_FO =
+ { array_elements(my_locale_day_names_fo_FO)-1, "", my_locale_day_names_fo_FO, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_fo_FO =
+ { array_elements(my_locale_ab_day_names_fo_FO)-1, "", my_locale_ab_day_names_fo_FO, NULL };
+MY_LOCALE my_locale_fo_FO=
+ { "fo_FO", "Faroese - Faroe Islands", FALSE, &my_locale_typelib_month_names_fo_FO, &my_locale_typelib_ab_month_names_fo_FO, &my_locale_typelib_day_names_fo_FO, &my_locale_typelib_ab_day_names_fo_FO };
+/***** LOCALE END fo_FO *****/
+
+/***** LOCALE BEGIN fr_FR: French - France *****/
+static const char *my_locale_month_names_fr_FR[13] =
+ {"janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre", NullS };
+static const char *my_locale_ab_month_names_fr_FR[13] =
+ {"jan","fév","mar","avr","mai","jun","jui","aoû","sep","oct","nov","déc", NullS };
+static const char *my_locale_day_names_fr_FR[8] =
+ {"lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche", NullS };
+static const char *my_locale_ab_day_names_fr_FR[8] =
+ {"lun","mar","mer","jeu","ven","sam","dim", NullS };
+static TYPELIB my_locale_typelib_month_names_fr_FR =
+ { array_elements(my_locale_month_names_fr_FR)-1, "", my_locale_month_names_fr_FR, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_fr_FR =
+ { array_elements(my_locale_ab_month_names_fr_FR)-1, "", my_locale_ab_month_names_fr_FR, NULL };
+static TYPELIB my_locale_typelib_day_names_fr_FR =
+ { array_elements(my_locale_day_names_fr_FR)-1, "", my_locale_day_names_fr_FR, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_fr_FR =
+ { array_elements(my_locale_ab_day_names_fr_FR)-1, "", my_locale_ab_day_names_fr_FR, NULL };
+MY_LOCALE my_locale_fr_FR=
+ { "fr_FR", "French - France", FALSE, &my_locale_typelib_month_names_fr_FR, &my_locale_typelib_ab_month_names_fr_FR, &my_locale_typelib_day_names_fr_FR, &my_locale_typelib_ab_day_names_fr_FR };
+/***** LOCALE END fr_FR *****/
+
+/***** LOCALE BEGIN gl_ES: Galician - Galician *****/
+static const char *my_locale_month_names_gl_ES[13] =
+ {"Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro", NullS };
+static const char *my_locale_ab_month_names_gl_ES[13] =
+ {"Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec", NullS };
+static const char *my_locale_day_names_gl_ES[8] =
+ {"Luns","Martes","Mércores","Xoves","Venres","Sábado","Domingo", NullS };
+static const char *my_locale_ab_day_names_gl_ES[8] =
+ {"Lun","Mar","Mér","Xov","Ven","Sáb","Dom", NullS };
+static TYPELIB my_locale_typelib_month_names_gl_ES =
+ { array_elements(my_locale_month_names_gl_ES)-1, "", my_locale_month_names_gl_ES, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_gl_ES =
+ { array_elements(my_locale_ab_month_names_gl_ES)-1, "", my_locale_ab_month_names_gl_ES, NULL };
+static TYPELIB my_locale_typelib_day_names_gl_ES =
+ { array_elements(my_locale_day_names_gl_ES)-1, "", my_locale_day_names_gl_ES, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_gl_ES =
+ { array_elements(my_locale_ab_day_names_gl_ES)-1, "", my_locale_ab_day_names_gl_ES, NULL };
+MY_LOCALE my_locale_gl_ES=
+ { "gl_ES", "Galician - Galician", FALSE, &my_locale_typelib_month_names_gl_ES, &my_locale_typelib_ab_month_names_gl_ES, &my_locale_typelib_day_names_gl_ES, &my_locale_typelib_ab_day_names_gl_ES };
+/***** LOCALE END gl_ES *****/
+
+/***** LOCALE BEGIN gu_IN: Gujarati - India *****/
+static const char *my_locale_month_names_gu_IN[13] =
+ {"જાન્યુઆરી","ફેબ્રુઆરી","માર્ચ","એપ્રિલ","મે","જુન","જુલાઇ","ઓગસ્ટ","સેપ્ટેમ્બર","ઓક્ટોબર","નવેમ્બર","ડિસેમ્બર", NullS };
+static const char *my_locale_ab_month_names_gu_IN[13] =
+ {"જાન","ફેબ","માર","એપ્ર","મે","જુન","જુલ","ઓગ","સેપ્ટ","ઓક્ટ","નોવ","ડિસ", NullS };
+static const char *my_locale_day_names_gu_IN[8] =
+ {"સોમવાર","મન્ગળવાર","બુધવાર","ગુરુવાર","શુક્રવાર","શનિવાર","રવિવાર", NullS };
+static const char *my_locale_ab_day_names_gu_IN[8] =
+ {"સોમ","મન્ગળ","બુધ","ગુરુ","શુક્ર","શનિ","રવિ", NullS };
+static TYPELIB my_locale_typelib_month_names_gu_IN =
+ { array_elements(my_locale_month_names_gu_IN)-1, "", my_locale_month_names_gu_IN, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_gu_IN =
+ { array_elements(my_locale_ab_month_names_gu_IN)-1, "", my_locale_ab_month_names_gu_IN, NULL };
+static TYPELIB my_locale_typelib_day_names_gu_IN =
+ { array_elements(my_locale_day_names_gu_IN)-1, "", my_locale_day_names_gu_IN, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_gu_IN =
+ { array_elements(my_locale_ab_day_names_gu_IN)-1, "", my_locale_ab_day_names_gu_IN, NULL };
+MY_LOCALE my_locale_gu_IN=
+ { "gu_IN", "Gujarati - India", FALSE, &my_locale_typelib_month_names_gu_IN, &my_locale_typelib_ab_month_names_gu_IN, &my_locale_typelib_day_names_gu_IN, &my_locale_typelib_ab_day_names_gu_IN };
+/***** LOCALE END gu_IN *****/
+
+/***** LOCALE BEGIN he_IL: Hebrew - Israel *****/
+static const char *my_locale_month_names_he_IL[13] =
+ {"ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר", NullS };
+static const char *my_locale_ab_month_names_he_IL[13] =
+ {"ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ", NullS };
+static const char *my_locale_day_names_he_IL[8] =
+ {"שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון", NullS };
+static const char *my_locale_ab_day_names_he_IL[8] =
+ {"ב'","ג'","ד'","ה'","ו'","ש'","א'", NullS };
+static TYPELIB my_locale_typelib_month_names_he_IL =
+ { array_elements(my_locale_month_names_he_IL)-1, "", my_locale_month_names_he_IL, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_he_IL =
+ { array_elements(my_locale_ab_month_names_he_IL)-1, "", my_locale_ab_month_names_he_IL, NULL };
+static TYPELIB my_locale_typelib_day_names_he_IL =
+ { array_elements(my_locale_day_names_he_IL)-1, "", my_locale_day_names_he_IL, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_he_IL =
+ { array_elements(my_locale_ab_day_names_he_IL)-1, "", my_locale_ab_day_names_he_IL, NULL };
+MY_LOCALE my_locale_he_IL=
+ { "he_IL", "Hebrew - Israel", FALSE, &my_locale_typelib_month_names_he_IL, &my_locale_typelib_ab_month_names_he_IL, &my_locale_typelib_day_names_he_IL, &my_locale_typelib_ab_day_names_he_IL };
+/***** LOCALE END he_IL *****/
+
+/***** LOCALE BEGIN hi_IN: Hindi - India *****/
+static const char *my_locale_month_names_hi_IN[13] =
+ {"जनवरी","फ़रवरी","मार्च","अप्रेल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर", NullS };
+static const char *my_locale_ab_month_names_hi_IN[13] =
+ {"जनवरी","फ़रवरी","मार्च","अप्रेल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर", NullS };
+static const char *my_locale_day_names_hi_IN[8] =
+ {"सोमवार ","मंगलवार ","बुधवार ","गुरुवार ","शुक्रवार ","शनिवार ","रविवार ", NullS };
+static const char *my_locale_ab_day_names_hi_IN[8] =
+ {"सोम ","मंगल ","बुध ","गुरु ","शुक्र ","शनि ","रवि ", NullS };
+static TYPELIB my_locale_typelib_month_names_hi_IN =
+ { array_elements(my_locale_month_names_hi_IN)-1, "", my_locale_month_names_hi_IN, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_hi_IN =
+ { array_elements(my_locale_ab_month_names_hi_IN)-1, "", my_locale_ab_month_names_hi_IN, NULL };
+static TYPELIB my_locale_typelib_day_names_hi_IN =
+ { array_elements(my_locale_day_names_hi_IN)-1, "", my_locale_day_names_hi_IN, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_hi_IN =
+ { array_elements(my_locale_ab_day_names_hi_IN)-1, "", my_locale_ab_day_names_hi_IN, NULL };
+MY_LOCALE my_locale_hi_IN=
+ { "hi_IN", "Hindi - India", FALSE, &my_locale_typelib_month_names_hi_IN, &my_locale_typelib_ab_month_names_hi_IN, &my_locale_typelib_day_names_hi_IN, &my_locale_typelib_ab_day_names_hi_IN };
+/***** LOCALE END hi_IN *****/
+
+/***** LOCALE BEGIN hr_HR: Croatian - Croatia *****/
+static const char *my_locale_month_names_hr_HR[13] =
+ {"Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac", NullS };
+static const char *my_locale_ab_month_names_hr_HR[13] =
+ {"Sij","Vel","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro", NullS };
+static const char *my_locale_day_names_hr_HR[8] =
+ {"Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota","Nedjelja", NullS };
+static const char *my_locale_ab_day_names_hr_HR[8] =
+ {"Pon","Uto","Sri","Čet","Pet","Sub","Ned", NullS };
+static TYPELIB my_locale_typelib_month_names_hr_HR =
+ { array_elements(my_locale_month_names_hr_HR)-1, "", my_locale_month_names_hr_HR, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_hr_HR =
+ { array_elements(my_locale_ab_month_names_hr_HR)-1, "", my_locale_ab_month_names_hr_HR, NULL };
+static TYPELIB my_locale_typelib_day_names_hr_HR =
+ { array_elements(my_locale_day_names_hr_HR)-1, "", my_locale_day_names_hr_HR, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_hr_HR =
+ { array_elements(my_locale_ab_day_names_hr_HR)-1, "", my_locale_ab_day_names_hr_HR, NULL };
+MY_LOCALE my_locale_hr_HR=
+ { "hr_HR", "Croatian - Croatia", FALSE, &my_locale_typelib_month_names_hr_HR, &my_locale_typelib_ab_month_names_hr_HR, &my_locale_typelib_day_names_hr_HR, &my_locale_typelib_ab_day_names_hr_HR };
+/***** LOCALE END hr_HR *****/
+
+/***** LOCALE BEGIN hu_HU: Hungarian - Hungary *****/
+static const char *my_locale_month_names_hu_HU[13] =
+ {"január","február","március","április","május","június","július","augusztus","szeptember","október","november","december", NullS };
+static const char *my_locale_ab_month_names_hu_HU[13] =
+ {"jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec", NullS };
+static const char *my_locale_day_names_hu_HU[8] =
+ {"hétfő","kedd","szerda","csütörtök","péntek","szombat","vasárnap", NullS };
+static const char *my_locale_ab_day_names_hu_HU[8] =
+ {"h","k","sze","cs","p","szo","v", NullS };
+static TYPELIB my_locale_typelib_month_names_hu_HU =
+ { array_elements(my_locale_month_names_hu_HU)-1, "", my_locale_month_names_hu_HU, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_hu_HU =
+ { array_elements(my_locale_ab_month_names_hu_HU)-1, "", my_locale_ab_month_names_hu_HU, NULL };
+static TYPELIB my_locale_typelib_day_names_hu_HU =
+ { array_elements(my_locale_day_names_hu_HU)-1, "", my_locale_day_names_hu_HU, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_hu_HU =
+ { array_elements(my_locale_ab_day_names_hu_HU)-1, "", my_locale_ab_day_names_hu_HU, NULL };
+MY_LOCALE my_locale_hu_HU=
+ { "hu_HU", "Hungarian - Hungary", FALSE, &my_locale_typelib_month_names_hu_HU, &my_locale_typelib_ab_month_names_hu_HU, &my_locale_typelib_day_names_hu_HU, &my_locale_typelib_ab_day_names_hu_HU };
+/***** LOCALE END hu_HU *****/
+
+/***** LOCALE BEGIN id_ID: Indonesian - Indonesia *****/
+static const char *my_locale_month_names_id_ID[13] =
+ {"Januari","Pebruari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember", NullS };
+static const char *my_locale_ab_month_names_id_ID[13] =
+ {"Jan","Peb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des", NullS };
+static const char *my_locale_day_names_id_ID[8] =
+ {"Senin","Selasa","Rabu","Kamis","Jumat","Sabtu","Minggu", NullS };
+static const char *my_locale_ab_day_names_id_ID[8] =
+ {"Sen","Sel","Rab","Kam","Jum","Sab","Min", NullS };
+static TYPELIB my_locale_typelib_month_names_id_ID =
+ { array_elements(my_locale_month_names_id_ID)-1, "", my_locale_month_names_id_ID, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_id_ID =
+ { array_elements(my_locale_ab_month_names_id_ID)-1, "", my_locale_ab_month_names_id_ID, NULL };
+static TYPELIB my_locale_typelib_day_names_id_ID =
+ { array_elements(my_locale_day_names_id_ID)-1, "", my_locale_day_names_id_ID, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_id_ID =
+ { array_elements(my_locale_ab_day_names_id_ID)-1, "", my_locale_ab_day_names_id_ID, NULL };
+MY_LOCALE my_locale_id_ID=
+ { "id_ID", "Indonesian - Indonesia", TRUE, &my_locale_typelib_month_names_id_ID, &my_locale_typelib_ab_month_names_id_ID, &my_locale_typelib_day_names_id_ID, &my_locale_typelib_ab_day_names_id_ID };
+/***** LOCALE END id_ID *****/
+
+/***** LOCALE BEGIN is_IS: Icelandic - Iceland *****/
+static const char *my_locale_month_names_is_IS[13] =
+ {"janúar","febrúar","mars","apríl","maí","júní","júlí","ágúst","september","október","nóvember","desember", NullS };
+static const char *my_locale_ab_month_names_is_IS[13] =
+ {"jan","feb","mar","apr","maí","jún","júl","ágú","sep","okt","nóv","des", NullS };
+static const char *my_locale_day_names_is_IS[8] =
+ {"mánudagur","þriðjudagur","miðvikudagur","fimmtudagur","föstudagur","laugardagur","sunnudagur", NullS };
+static const char *my_locale_ab_day_names_is_IS[8] =
+ {"mán","þri","mið","fim","fös","lau","sun", NullS };
+static TYPELIB my_locale_typelib_month_names_is_IS =
+ { array_elements(my_locale_month_names_is_IS)-1, "", my_locale_month_names_is_IS, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_is_IS =
+ { array_elements(my_locale_ab_month_names_is_IS)-1, "", my_locale_ab_month_names_is_IS, NULL };
+static TYPELIB my_locale_typelib_day_names_is_IS =
+ { array_elements(my_locale_day_names_is_IS)-1, "", my_locale_day_names_is_IS, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_is_IS =
+ { array_elements(my_locale_ab_day_names_is_IS)-1, "", my_locale_ab_day_names_is_IS, NULL };
+MY_LOCALE my_locale_is_IS=
+ { "is_IS", "Icelandic - Iceland", FALSE, &my_locale_typelib_month_names_is_IS, &my_locale_typelib_ab_month_names_is_IS, &my_locale_typelib_day_names_is_IS, &my_locale_typelib_ab_day_names_is_IS };
+/***** LOCALE END is_IS *****/
+
+/***** LOCALE BEGIN it_CH: Italian - Switzerland *****/
+static const char *my_locale_month_names_it_CH[13] =
+ {"gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre", NullS };
+static const char *my_locale_ab_month_names_it_CH[13] =
+ {"gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic", NullS };
+static const char *my_locale_day_names_it_CH[8] =
+ {"lunedì","martedì","mercoledì","giovedì","venerdì","sabato","domenica", NullS };
+static const char *my_locale_ab_day_names_it_CH[8] =
+ {"lun","mar","mer","gio","ven","sab","dom", NullS };
+static TYPELIB my_locale_typelib_month_names_it_CH =
+ { array_elements(my_locale_month_names_it_CH)-1, "", my_locale_month_names_it_CH, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_it_CH =
+ { array_elements(my_locale_ab_month_names_it_CH)-1, "", my_locale_ab_month_names_it_CH, NULL };
+static TYPELIB my_locale_typelib_day_names_it_CH =
+ { array_elements(my_locale_day_names_it_CH)-1, "", my_locale_day_names_it_CH, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_it_CH =
+ { array_elements(my_locale_ab_day_names_it_CH)-1, "", my_locale_ab_day_names_it_CH, NULL };
+MY_LOCALE my_locale_it_CH=
+ { "it_CH", "Italian - Switzerland", FALSE, &my_locale_typelib_month_names_it_CH, &my_locale_typelib_ab_month_names_it_CH, &my_locale_typelib_day_names_it_CH, &my_locale_typelib_ab_day_names_it_CH };
+/***** LOCALE END it_CH *****/
+
+/***** LOCALE BEGIN ja_JP: Japanese - Japan *****/
+static const char *my_locale_month_names_ja_JP[13] =
+ {"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月", NullS };
+static const char *my_locale_ab_month_names_ja_JP[13] =
+ {" 1月"," 2月"," 3月"," 4月"," 5月"," 6月"," 7月"," 8月"," 9月","10月","11月","12月", NullS };
+static const char *my_locale_day_names_ja_JP[8] =
+ {"月曜日","火曜日","水曜日","木曜日","金曜日","土曜日","日曜日", NullS };
+static const char *my_locale_ab_day_names_ja_JP[8] =
+ {"月","火","水","木","金","土","日", NullS };
+static TYPELIB my_locale_typelib_month_names_ja_JP =
+ { array_elements(my_locale_month_names_ja_JP)-1, "", my_locale_month_names_ja_JP, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ja_JP =
+ { array_elements(my_locale_ab_month_names_ja_JP)-1, "", my_locale_ab_month_names_ja_JP, NULL };
+static TYPELIB my_locale_typelib_day_names_ja_JP =
+ { array_elements(my_locale_day_names_ja_JP)-1, "", my_locale_day_names_ja_JP, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ja_JP =
+ { array_elements(my_locale_ab_day_names_ja_JP)-1, "", my_locale_ab_day_names_ja_JP, NULL };
+MY_LOCALE my_locale_ja_JP=
+ { "ja_JP", "Japanese - Japan", FALSE, &my_locale_typelib_month_names_ja_JP, &my_locale_typelib_ab_month_names_ja_JP, &my_locale_typelib_day_names_ja_JP, &my_locale_typelib_ab_day_names_ja_JP };
+/***** LOCALE END ja_JP *****/
+
+/***** LOCALE BEGIN ko_KR: Korean - Korea *****/
+static const char *my_locale_month_names_ko_KR[13] =
+ {"일월","이월","삼월","사월","오월","유월","칠월","팔월","구월","시월","십일월","십이월", NullS };
+static const char *my_locale_ab_month_names_ko_KR[13] =
+ {" 1월"," 2월"," 3월"," 4월"," 5월"," 6월"," 7월"," 8월"," 9월","10월","11월","12월", NullS };
+static const char *my_locale_day_names_ko_KR[8] =
+ {"월요일","화요일","수요일","목요일","금요일","토요일","일요일", NullS };
+static const char *my_locale_ab_day_names_ko_KR[8] =
+ {"월","화","수","목","금","토","일", NullS };
+static TYPELIB my_locale_typelib_month_names_ko_KR =
+ { array_elements(my_locale_month_names_ko_KR)-1, "", my_locale_month_names_ko_KR, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ko_KR =
+ { array_elements(my_locale_ab_month_names_ko_KR)-1, "", my_locale_ab_month_names_ko_KR, NULL };
+static TYPELIB my_locale_typelib_day_names_ko_KR =
+ { array_elements(my_locale_day_names_ko_KR)-1, "", my_locale_day_names_ko_KR, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ko_KR =
+ { array_elements(my_locale_ab_day_names_ko_KR)-1, "", my_locale_ab_day_names_ko_KR, NULL };
+MY_LOCALE my_locale_ko_KR=
+ { "ko_KR", "Korean - Korea", FALSE, &my_locale_typelib_month_names_ko_KR, &my_locale_typelib_ab_month_names_ko_KR, &my_locale_typelib_day_names_ko_KR, &my_locale_typelib_ab_day_names_ko_KR };
+/***** LOCALE END ko_KR *****/
+
+/***** LOCALE BEGIN lt_LT: Lithuanian - Lithuania *****/
+static const char *my_locale_month_names_lt_LT[13] =
+ {"sausio","vasario","kovo","balandžio","gegužės","birželio","liepos","rugpjūčio","rugsėjo","spalio","lapkričio","gruodžio", NullS };
+static const char *my_locale_ab_month_names_lt_LT[13] =
+ {"Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rgp","Rgs","Spa","Lap","Grd", NullS };
+static const char *my_locale_day_names_lt_LT[8] =
+ {"Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis","Sekmadienis", NullS };
+static const char *my_locale_ab_day_names_lt_LT[8] =
+ {"Pr","An","Tr","Kt","Pn","Št","Sk", NullS };
+static TYPELIB my_locale_typelib_month_names_lt_LT =
+ { array_elements(my_locale_month_names_lt_LT)-1, "", my_locale_month_names_lt_LT, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_lt_LT =
+ { array_elements(my_locale_ab_month_names_lt_LT)-1, "", my_locale_ab_month_names_lt_LT, NULL };
+static TYPELIB my_locale_typelib_day_names_lt_LT =
+ { array_elements(my_locale_day_names_lt_LT)-1, "", my_locale_day_names_lt_LT, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_lt_LT =
+ { array_elements(my_locale_ab_day_names_lt_LT)-1, "", my_locale_ab_day_names_lt_LT, NULL };
+MY_LOCALE my_locale_lt_LT=
+ { "lt_LT", "Lithuanian - Lithuania", FALSE, &my_locale_typelib_month_names_lt_LT, &my_locale_typelib_ab_month_names_lt_LT, &my_locale_typelib_day_names_lt_LT, &my_locale_typelib_ab_day_names_lt_LT };
+/***** LOCALE END lt_LT *****/
+
+/***** LOCALE BEGIN lv_LV: Latvian - Latvia *****/
+static const char *my_locale_month_names_lv_LV[13] =
+ {"janvāris","februāris","marts","aprīlis","maijs","jūnijs","jūlijs","augusts","septembris","oktobris","novembris","decembris", NullS };
+static const char *my_locale_ab_month_names_lv_LV[13] =
+ {"jan","feb","mar","apr","mai","jūn","jūl","aug","sep","okt","nov","dec", NullS };
+static const char *my_locale_day_names_lv_LV[8] =
+ {"pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena","svētdiena", NullS };
+static const char *my_locale_ab_day_names_lv_LV[8] =
+ {"P ","O ","T ","C ","Pk","S ","Sv", NullS };
+static TYPELIB my_locale_typelib_month_names_lv_LV =
+ { array_elements(my_locale_month_names_lv_LV)-1, "", my_locale_month_names_lv_LV, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_lv_LV =
+ { array_elements(my_locale_ab_month_names_lv_LV)-1, "", my_locale_ab_month_names_lv_LV, NULL };
+static TYPELIB my_locale_typelib_day_names_lv_LV =
+ { array_elements(my_locale_day_names_lv_LV)-1, "", my_locale_day_names_lv_LV, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_lv_LV =
+ { array_elements(my_locale_ab_day_names_lv_LV)-1, "", my_locale_ab_day_names_lv_LV, NULL };
+MY_LOCALE my_locale_lv_LV=
+ { "lv_LV", "Latvian - Latvia", FALSE, &my_locale_typelib_month_names_lv_LV, &my_locale_typelib_ab_month_names_lv_LV, &my_locale_typelib_day_names_lv_LV, &my_locale_typelib_ab_day_names_lv_LV };
+/***** LOCALE END lv_LV *****/
+
+/***** LOCALE BEGIN mk_MK: Macedonian - FYROM *****/
+static const char *my_locale_month_names_mk_MK[13] =
+ {"јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември", NullS };
+static const char *my_locale_ab_month_names_mk_MK[13] =
+ {"јан","фев","мар","апр","мај","јун","јул","авг","сеп","окт","ное","дек", NullS };
+static const char *my_locale_day_names_mk_MK[8] =
+ {"понеделник","вторник","среда","четврток","петок","сабота","недела", NullS };
+static const char *my_locale_ab_day_names_mk_MK[8] =
+ {"пон","вто","сре","чет","пет","саб","нед", NullS };
+static TYPELIB my_locale_typelib_month_names_mk_MK =
+ { array_elements(my_locale_month_names_mk_MK)-1, "", my_locale_month_names_mk_MK, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_mk_MK =
+ { array_elements(my_locale_ab_month_names_mk_MK)-1, "", my_locale_ab_month_names_mk_MK, NULL };
+static TYPELIB my_locale_typelib_day_names_mk_MK =
+ { array_elements(my_locale_day_names_mk_MK)-1, "", my_locale_day_names_mk_MK, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_mk_MK =
+ { array_elements(my_locale_ab_day_names_mk_MK)-1, "", my_locale_ab_day_names_mk_MK, NULL };
+MY_LOCALE my_locale_mk_MK=
+ { "mk_MK", "Macedonian - FYROM", FALSE, &my_locale_typelib_month_names_mk_MK, &my_locale_typelib_ab_month_names_mk_MK, &my_locale_typelib_day_names_mk_MK, &my_locale_typelib_ab_day_names_mk_MK };
+/***** LOCALE END mk_MK *****/
+
+/***** LOCALE BEGIN mn_MN: Mongolia - Mongolian *****/
+static const char *my_locale_month_names_mn_MN[13] =
+ {"Нэгдүгээр сар","Хоёрдугаар сар","Гуравдугаар сар","Дөрөвдүгээр сар","Тавдугаар сар","Зургаадугар сар","Долоодугаар сар","Наймдугаар сар","Есдүгээр сар","Аравдугаар сар","Арваннэгдүгээр сар","Арванхоёрдгаар сар", NullS };
+static const char *my_locale_ab_month_names_mn_MN[13] =
+ {"1-р","2-р","3-р","4-р","5-р","6-р","7-р","8-р","9-р","10-р","11-р","12-р", NullS };
+static const char *my_locale_day_names_mn_MN[8] =
+ {"Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням", NullS };
+static const char *my_locale_ab_day_names_mn_MN[8] =
+ {"Да","Мя","Лх","Пү","Ба","Бя","Ня", NullS };
+static TYPELIB my_locale_typelib_month_names_mn_MN =
+ { array_elements(my_locale_month_names_mn_MN)-1, "", my_locale_month_names_mn_MN, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_mn_MN =
+ { array_elements(my_locale_ab_month_names_mn_MN)-1, "", my_locale_ab_month_names_mn_MN, NULL };
+static TYPELIB my_locale_typelib_day_names_mn_MN =
+ { array_elements(my_locale_day_names_mn_MN)-1, "", my_locale_day_names_mn_MN, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_mn_MN =
+ { array_elements(my_locale_ab_day_names_mn_MN)-1, "", my_locale_ab_day_names_mn_MN, NULL };
+MY_LOCALE my_locale_mn_MN=
+ { "mn_MN", "Mongolia - Mongolian", FALSE, &my_locale_typelib_month_names_mn_MN, &my_locale_typelib_ab_month_names_mn_MN, &my_locale_typelib_day_names_mn_MN, &my_locale_typelib_ab_day_names_mn_MN };
+/***** LOCALE END mn_MN *****/
+
+/***** LOCALE BEGIN ms_MY: Malay - Malaysia *****/
+static const char *my_locale_month_names_ms_MY[13] =
+ {"Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember", NullS };
+static const char *my_locale_ab_month_names_ms_MY[13] =
+ {"Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogos","Sep","Okt","Nov","Dis", NullS };
+static const char *my_locale_day_names_ms_MY[8] =
+ {"Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu","Ahad", NullS };
+static const char *my_locale_ab_day_names_ms_MY[8] =
+ {"Isn","Sel","Rab","Kha","Jum","Sab","Ahd", NullS };
+static TYPELIB my_locale_typelib_month_names_ms_MY =
+ { array_elements(my_locale_month_names_ms_MY)-1, "", my_locale_month_names_ms_MY, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ms_MY =
+ { array_elements(my_locale_ab_month_names_ms_MY)-1, "", my_locale_ab_month_names_ms_MY, NULL };
+static TYPELIB my_locale_typelib_day_names_ms_MY =
+ { array_elements(my_locale_day_names_ms_MY)-1, "", my_locale_day_names_ms_MY, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ms_MY =
+ { array_elements(my_locale_ab_day_names_ms_MY)-1, "", my_locale_ab_day_names_ms_MY, NULL };
+MY_LOCALE my_locale_ms_MY=
+ { "ms_MY", "Malay - Malaysia", TRUE, &my_locale_typelib_month_names_ms_MY, &my_locale_typelib_ab_month_names_ms_MY, &my_locale_typelib_day_names_ms_MY, &my_locale_typelib_ab_day_names_ms_MY };
+/***** LOCALE END ms_MY *****/
+
+/***** LOCALE BEGIN nb_NO: Norwegian(Bokml) - Norway *****/
+static const char *my_locale_month_names_nb_NO[13] =
+ {"januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember", NullS };
+static const char *my_locale_ab_month_names_nb_NO[13] =
+ {"jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des", NullS };
+static const char *my_locale_day_names_nb_NO[8] =
+ {"mandag","tirsdag","onsdag","torsdag","fredag","lørdag","søndag", NullS };
+static const char *my_locale_ab_day_names_nb_NO[8] =
+ {"man","tir","ons","tor","fre","lør","søn", NullS };
+static TYPELIB my_locale_typelib_month_names_nb_NO =
+ { array_elements(my_locale_month_names_nb_NO)-1, "", my_locale_month_names_nb_NO, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_nb_NO =
+ { array_elements(my_locale_ab_month_names_nb_NO)-1, "", my_locale_ab_month_names_nb_NO, NULL };
+static TYPELIB my_locale_typelib_day_names_nb_NO =
+ { array_elements(my_locale_day_names_nb_NO)-1, "", my_locale_day_names_nb_NO, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_nb_NO =
+ { array_elements(my_locale_ab_day_names_nb_NO)-1, "", my_locale_ab_day_names_nb_NO, NULL };
+MY_LOCALE my_locale_nb_NO=
+ { "nb_NO", "Norwegian(Bokml) - Norway", FALSE, &my_locale_typelib_month_names_nb_NO, &my_locale_typelib_ab_month_names_nb_NO, &my_locale_typelib_day_names_nb_NO, &my_locale_typelib_ab_day_names_nb_NO };
+/***** LOCALE END nb_NO *****/
+
+/***** LOCALE BEGIN nl_NL: Dutch - The Netherlands *****/
+static const char *my_locale_month_names_nl_NL[13] =
+ {"januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december", NullS };
+static const char *my_locale_ab_month_names_nl_NL[13] =
+ {"jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec", NullS };
+static const char *my_locale_day_names_nl_NL[8] =
+ {"maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag","zondag", NullS };
+static const char *my_locale_ab_day_names_nl_NL[8] =
+ {"ma","di","wo","do","vr","za","zo", NullS };
+static TYPELIB my_locale_typelib_month_names_nl_NL =
+ { array_elements(my_locale_month_names_nl_NL)-1, "", my_locale_month_names_nl_NL, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_nl_NL =
+ { array_elements(my_locale_ab_month_names_nl_NL)-1, "", my_locale_ab_month_names_nl_NL, NULL };
+static TYPELIB my_locale_typelib_day_names_nl_NL =
+ { array_elements(my_locale_day_names_nl_NL)-1, "", my_locale_day_names_nl_NL, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_nl_NL =
+ { array_elements(my_locale_ab_day_names_nl_NL)-1, "", my_locale_ab_day_names_nl_NL, NULL };
+MY_LOCALE my_locale_nl_NL=
+ { "nl_NL", "Dutch - The Netherlands", TRUE, &my_locale_typelib_month_names_nl_NL, &my_locale_typelib_ab_month_names_nl_NL, &my_locale_typelib_day_names_nl_NL, &my_locale_typelib_ab_day_names_nl_NL };
+/***** LOCALE END nl_NL *****/
+
+/***** LOCALE BEGIN pl_PL: Polish - Poland *****/
+static const char *my_locale_month_names_pl_PL[13] =
+ {"styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień", NullS };
+static const char *my_locale_ab_month_names_pl_PL[13] =
+ {"sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru", NullS };
+static const char *my_locale_day_names_pl_PL[8] =
+ {"poniedziałek","wtorek","środa","czwartek","piątek","sobota","niedziela", NullS };
+static const char *my_locale_ab_day_names_pl_PL[8] =
+ {"pon","wto","śro","czw","pią","sob","nie", NullS };
+static TYPELIB my_locale_typelib_month_names_pl_PL =
+ { array_elements(my_locale_month_names_pl_PL)-1, "", my_locale_month_names_pl_PL, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_pl_PL =
+ { array_elements(my_locale_ab_month_names_pl_PL)-1, "", my_locale_ab_month_names_pl_PL, NULL };
+static TYPELIB my_locale_typelib_day_names_pl_PL =
+ { array_elements(my_locale_day_names_pl_PL)-1, "", my_locale_day_names_pl_PL, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_pl_PL =
+ { array_elements(my_locale_ab_day_names_pl_PL)-1, "", my_locale_ab_day_names_pl_PL, NULL };
+MY_LOCALE my_locale_pl_PL=
+ { "pl_PL", "Polish - Poland", FALSE, &my_locale_typelib_month_names_pl_PL, &my_locale_typelib_ab_month_names_pl_PL, &my_locale_typelib_day_names_pl_PL, &my_locale_typelib_ab_day_names_pl_PL };
+/***** LOCALE END pl_PL *****/
+
+/***** LOCALE BEGIN pt_BR: Portugese - Brazil *****/
+static const char *my_locale_month_names_pt_BR[13] =
+ {"janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro", NullS };
+static const char *my_locale_ab_month_names_pt_BR[13] =
+ {"Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez", NullS };
+static const char *my_locale_day_names_pt_BR[8] =
+ {"segunda","terça","quarta","quinta","sexta","sábado","domingo", NullS };
+static const char *my_locale_ab_day_names_pt_BR[8] =
+ {"Seg","Ter","Qua","Qui","Sex","Sáb","Dom", NullS };
+static TYPELIB my_locale_typelib_month_names_pt_BR =
+ { array_elements(my_locale_month_names_pt_BR)-1, "", my_locale_month_names_pt_BR, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_pt_BR =
+ { array_elements(my_locale_ab_month_names_pt_BR)-1, "", my_locale_ab_month_names_pt_BR, NULL };
+static TYPELIB my_locale_typelib_day_names_pt_BR =
+ { array_elements(my_locale_day_names_pt_BR)-1, "", my_locale_day_names_pt_BR, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_pt_BR =
+ { array_elements(my_locale_ab_day_names_pt_BR)-1, "", my_locale_ab_day_names_pt_BR, NULL };
+MY_LOCALE my_locale_pt_BR=
+ { "pt_BR", "Portugese - Brazil", FALSE, &my_locale_typelib_month_names_pt_BR, &my_locale_typelib_ab_month_names_pt_BR, &my_locale_typelib_day_names_pt_BR, &my_locale_typelib_ab_day_names_pt_BR };
+/***** LOCALE END pt_BR *****/
+
+/***** LOCALE BEGIN pt_PT: Portugese - Portugal *****/
+static const char *my_locale_month_names_pt_PT[13] =
+ {"Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro", NullS };
+static const char *my_locale_ab_month_names_pt_PT[13] =
+ {"Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez", NullS };
+static const char *my_locale_day_names_pt_PT[8] =
+ {"Segunda","Terça","Quarta","Quinta","Sexta","Sábado","Domingo", NullS };
+static const char *my_locale_ab_day_names_pt_PT[8] =
+ {"Seg","Ter","Qua","Qui","Sex","Sáb","Dom", NullS };
+static TYPELIB my_locale_typelib_month_names_pt_PT =
+ { array_elements(my_locale_month_names_pt_PT)-1, "", my_locale_month_names_pt_PT, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_pt_PT =
+ { array_elements(my_locale_ab_month_names_pt_PT)-1, "", my_locale_ab_month_names_pt_PT, NULL };
+static TYPELIB my_locale_typelib_day_names_pt_PT =
+ { array_elements(my_locale_day_names_pt_PT)-1, "", my_locale_day_names_pt_PT, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_pt_PT =
+ { array_elements(my_locale_ab_day_names_pt_PT)-1, "", my_locale_ab_day_names_pt_PT, NULL };
+MY_LOCALE my_locale_pt_PT=
+ { "pt_PT", "Portugese - Portugal", FALSE, &my_locale_typelib_month_names_pt_PT, &my_locale_typelib_ab_month_names_pt_PT, &my_locale_typelib_day_names_pt_PT, &my_locale_typelib_ab_day_names_pt_PT };
+/***** LOCALE END pt_PT *****/
+
+/***** LOCALE BEGIN ro_RO: Romanian - Romania *****/
+static const char *my_locale_month_names_ro_RO[13] =
+ {"Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie", NullS };
+static const char *my_locale_ab_month_names_ro_RO[13] =
+ {"ian","feb","mar","apr","mai","iun","iul","aug","sep","oct","nov","dec", NullS };
+static const char *my_locale_day_names_ro_RO[8] =
+ {"Luni","Marţi","Miercuri","Joi","Vineri","SîmbĂtĂ","DuminicĂ", NullS };
+static const char *my_locale_ab_day_names_ro_RO[8] =
+ {"Lu","Ma","Mi","Jo","Vi","Sî","Du", NullS };
+static TYPELIB my_locale_typelib_month_names_ro_RO =
+ { array_elements(my_locale_month_names_ro_RO)-1, "", my_locale_month_names_ro_RO, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ro_RO =
+ { array_elements(my_locale_ab_month_names_ro_RO)-1, "", my_locale_ab_month_names_ro_RO, NULL };
+static TYPELIB my_locale_typelib_day_names_ro_RO =
+ { array_elements(my_locale_day_names_ro_RO)-1, "", my_locale_day_names_ro_RO, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ro_RO =
+ { array_elements(my_locale_ab_day_names_ro_RO)-1, "", my_locale_ab_day_names_ro_RO, NULL };
+MY_LOCALE my_locale_ro_RO=
+ { "ro_RO", "Romanian - Romania", FALSE, &my_locale_typelib_month_names_ro_RO, &my_locale_typelib_ab_month_names_ro_RO, &my_locale_typelib_day_names_ro_RO, &my_locale_typelib_ab_day_names_ro_RO };
+/***** LOCALE END ro_RO *****/
+
+/***** LOCALE BEGIN ru_RU: Russian - Russia *****/
+static const char *my_locale_month_names_ru_RU[13] =
+ {"Января","Февраля","Марта","Апреля","Мая","Июня","Июля","Августа","Сентября","Октября","Ноября","Декабря", NullS };
+static const char *my_locale_ab_month_names_ru_RU[13] =
+ {"Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек", NullS };
+static const char *my_locale_day_names_ru_RU[8] =
+ {"Понедельник","Вторник","Среда","Четверг","Пятница","Суббота","Воскресенье", NullS };
+static const char *my_locale_ab_day_names_ru_RU[8] =
+ {"Пнд","Втр","Срд","Чтв","Птн","Сбт","Вск", NullS };
+static TYPELIB my_locale_typelib_month_names_ru_RU =
+ { array_elements(my_locale_month_names_ru_RU)-1, "", my_locale_month_names_ru_RU, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ru_RU =
+ { array_elements(my_locale_ab_month_names_ru_RU)-1, "", my_locale_ab_month_names_ru_RU, NULL };
+static TYPELIB my_locale_typelib_day_names_ru_RU =
+ { array_elements(my_locale_day_names_ru_RU)-1, "", my_locale_day_names_ru_RU, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ru_RU =
+ { array_elements(my_locale_ab_day_names_ru_RU)-1, "", my_locale_ab_day_names_ru_RU, NULL };
+MY_LOCALE my_locale_ru_RU=
+ { "ru_RU", "Russian - Russia", FALSE, &my_locale_typelib_month_names_ru_RU, &my_locale_typelib_ab_month_names_ru_RU, &my_locale_typelib_day_names_ru_RU, &my_locale_typelib_ab_day_names_ru_RU };
+/***** LOCALE END ru_RU *****/
+
+/***** LOCALE BEGIN ru_UA: Russian - Ukraine *****/
+static const char *my_locale_month_names_ru_UA[13] =
+ {"Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь", NullS };
+static const char *my_locale_ab_month_names_ru_UA[13] =
+ {"Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек", NullS };
+static const char *my_locale_day_names_ru_UA[8] =
+ {"Понедельник","Вторник","Среда","Четверг","Пятница","Суббота","Воскресенье", NullS };
+static const char *my_locale_ab_day_names_ru_UA[8] =
+ {"Пнд","Вто","Срд","Чтв","Птн","Суб","Вск", NullS };
+static TYPELIB my_locale_typelib_month_names_ru_UA =
+ { array_elements(my_locale_month_names_ru_UA)-1, "", my_locale_month_names_ru_UA, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ru_UA =
+ { array_elements(my_locale_ab_month_names_ru_UA)-1, "", my_locale_ab_month_names_ru_UA, NULL };
+static TYPELIB my_locale_typelib_day_names_ru_UA =
+ { array_elements(my_locale_day_names_ru_UA)-1, "", my_locale_day_names_ru_UA, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ru_UA =
+ { array_elements(my_locale_ab_day_names_ru_UA)-1, "", my_locale_ab_day_names_ru_UA, NULL };
+MY_LOCALE my_locale_ru_UA=
+ { "ru_UA", "Russian - Ukraine", FALSE, &my_locale_typelib_month_names_ru_UA, &my_locale_typelib_ab_month_names_ru_UA, &my_locale_typelib_day_names_ru_UA, &my_locale_typelib_ab_day_names_ru_UA };
+/***** LOCALE END ru_UA *****/
+
+/***** LOCALE BEGIN sk_SK: Slovak - Slovakia *****/
+static const char *my_locale_month_names_sk_SK[13] =
+ {"január","február","marec","apríl","máj","jún","júl","august","september","október","november","december", NullS };
+static const char *my_locale_ab_month_names_sk_SK[13] =
+ {"jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec", NullS };
+static const char *my_locale_day_names_sk_SK[8] =
+ {"Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota","Nedeľa", NullS };
+static const char *my_locale_ab_day_names_sk_SK[8] =
+ {"Po","Ut","St","Št","Pi","So","Ne", NullS };
+static TYPELIB my_locale_typelib_month_names_sk_SK =
+ { array_elements(my_locale_month_names_sk_SK)-1, "", my_locale_month_names_sk_SK, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_sk_SK =
+ { array_elements(my_locale_ab_month_names_sk_SK)-1, "", my_locale_ab_month_names_sk_SK, NULL };
+static TYPELIB my_locale_typelib_day_names_sk_SK =
+ { array_elements(my_locale_day_names_sk_SK)-1, "", my_locale_day_names_sk_SK, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_sk_SK =
+ { array_elements(my_locale_ab_day_names_sk_SK)-1, "", my_locale_ab_day_names_sk_SK, NULL };
+MY_LOCALE my_locale_sk_SK=
+ { "sk_SK", "Slovak - Slovakia", FALSE, &my_locale_typelib_month_names_sk_SK, &my_locale_typelib_ab_month_names_sk_SK, &my_locale_typelib_day_names_sk_SK, &my_locale_typelib_ab_day_names_sk_SK };
+/***** LOCALE END sk_SK *****/
+
+/***** LOCALE BEGIN sl_SI: Slovenian - Slovenia *****/
+static const char *my_locale_month_names_sl_SI[13] =
+ {"januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december", NullS };
+static const char *my_locale_ab_month_names_sl_SI[13] =
+ {"jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec", NullS };
+static const char *my_locale_day_names_sl_SI[8] =
+ {"ponedeljek","torek","sreda","četrtek","petek","sobota","nedelja", NullS };
+static const char *my_locale_ab_day_names_sl_SI[8] =
+ {"pon","tor","sre","čet","pet","sob","ned", NullS };
+static TYPELIB my_locale_typelib_month_names_sl_SI =
+ { array_elements(my_locale_month_names_sl_SI)-1, "", my_locale_month_names_sl_SI, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_sl_SI =
+ { array_elements(my_locale_ab_month_names_sl_SI)-1, "", my_locale_ab_month_names_sl_SI, NULL };
+static TYPELIB my_locale_typelib_day_names_sl_SI =
+ { array_elements(my_locale_day_names_sl_SI)-1, "", my_locale_day_names_sl_SI, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_sl_SI =
+ { array_elements(my_locale_ab_day_names_sl_SI)-1, "", my_locale_ab_day_names_sl_SI, NULL };
+MY_LOCALE my_locale_sl_SI=
+ { "sl_SI", "Slovenian - Slovenia", FALSE, &my_locale_typelib_month_names_sl_SI, &my_locale_typelib_ab_month_names_sl_SI, &my_locale_typelib_day_names_sl_SI, &my_locale_typelib_ab_day_names_sl_SI };
+/***** LOCALE END sl_SI *****/
+
+/***** LOCALE BEGIN sq_AL: Albanian - Albania *****/
+static const char *my_locale_month_names_sq_AL[13] =
+ {"janar","shkurt","mars","prill","maj","qershor","korrik","gusht","shtator","tetor","nëntor","dhjetor", NullS };
+static const char *my_locale_ab_month_names_sq_AL[13] =
+ {"Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gsh","Sht","Tet","Nën","Dhj", NullS };
+static const char *my_locale_day_names_sq_AL[8] =
+ {"e hënë ","e martë ","e mërkurë ","e enjte ","e premte ","e shtunë ","e diel ", NullS };
+static const char *my_locale_ab_day_names_sq_AL[8] =
+ {"Hën ","Mar ","Mër ","Enj ","Pre ","Sht ","Die ", NullS };
+static TYPELIB my_locale_typelib_month_names_sq_AL =
+ { array_elements(my_locale_month_names_sq_AL)-1, "", my_locale_month_names_sq_AL, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_sq_AL =
+ { array_elements(my_locale_ab_month_names_sq_AL)-1, "", my_locale_ab_month_names_sq_AL, NULL };
+static TYPELIB my_locale_typelib_day_names_sq_AL =
+ { array_elements(my_locale_day_names_sq_AL)-1, "", my_locale_day_names_sq_AL, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_sq_AL =
+ { array_elements(my_locale_ab_day_names_sq_AL)-1, "", my_locale_ab_day_names_sq_AL, NULL };
+MY_LOCALE my_locale_sq_AL=
+ { "sq_AL", "Albanian - Albania", FALSE, &my_locale_typelib_month_names_sq_AL, &my_locale_typelib_ab_month_names_sq_AL, &my_locale_typelib_day_names_sq_AL, &my_locale_typelib_ab_day_names_sq_AL };
+/***** LOCALE END sq_AL *****/
+
+/***** LOCALE BEGIN sr_YU: Servian - Yugoslavia *****/
+static const char *my_locale_month_names_sr_YU[13] =
+ {"januar","februar","mart","april","maj","juni","juli","avgust","septembar","oktobar","novembar","decembar", NullS };
+static const char *my_locale_ab_month_names_sr_YU[13] =
+ {"jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec", NullS };
+static const char *my_locale_day_names_sr_YU[8] =
+ {"ponedeljak","utorak","sreda","četvrtak","petak","subota","nedelja", NullS };
+static const char *my_locale_ab_day_names_sr_YU[8] =
+ {"pon","uto","sre","čet","pet","sub","ned", NullS };
+static TYPELIB my_locale_typelib_month_names_sr_YU =
+ { array_elements(my_locale_month_names_sr_YU)-1, "", my_locale_month_names_sr_YU, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_sr_YU =
+ { array_elements(my_locale_ab_month_names_sr_YU)-1, "", my_locale_ab_month_names_sr_YU, NULL };
+static TYPELIB my_locale_typelib_day_names_sr_YU =
+ { array_elements(my_locale_day_names_sr_YU)-1, "", my_locale_day_names_sr_YU, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_sr_YU =
+ { array_elements(my_locale_ab_day_names_sr_YU)-1, "", my_locale_ab_day_names_sr_YU, NULL };
+MY_LOCALE my_locale_sr_YU=
+ { "sr_YU", "Servian - Yugoslavia", FALSE, &my_locale_typelib_month_names_sr_YU, &my_locale_typelib_ab_month_names_sr_YU, &my_locale_typelib_day_names_sr_YU, &my_locale_typelib_ab_day_names_sr_YU };
+/***** LOCALE END sr_YU *****/
+
+/***** LOCALE BEGIN sv_SE: Swedish - Sweden *****/
+static const char *my_locale_month_names_sv_SE[13] =
+ {"januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december", NullS };
+static const char *my_locale_ab_month_names_sv_SE[13] =
+ {"jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec", NullS };
+static const char *my_locale_day_names_sv_SE[8] =
+ {"måndag","tisdag","onsdag","torsdag","fredag","lördag","söndag", NullS };
+static const char *my_locale_ab_day_names_sv_SE[8] =
+ {"mån","tis","ons","tor","fre","lör","sön", NullS };
+static TYPELIB my_locale_typelib_month_names_sv_SE =
+ { array_elements(my_locale_month_names_sv_SE)-1, "", my_locale_month_names_sv_SE, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_sv_SE =
+ { array_elements(my_locale_ab_month_names_sv_SE)-1, "", my_locale_ab_month_names_sv_SE, NULL };
+static TYPELIB my_locale_typelib_day_names_sv_SE =
+ { array_elements(my_locale_day_names_sv_SE)-1, "", my_locale_day_names_sv_SE, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_sv_SE =
+ { array_elements(my_locale_ab_day_names_sv_SE)-1, "", my_locale_ab_day_names_sv_SE, NULL };
+MY_LOCALE my_locale_sv_SE=
+ { "sv_SE", "Swedish - Sweden", FALSE, &my_locale_typelib_month_names_sv_SE, &my_locale_typelib_ab_month_names_sv_SE, &my_locale_typelib_day_names_sv_SE, &my_locale_typelib_ab_day_names_sv_SE };
+/***** LOCALE END sv_SE *****/
+
+/***** LOCALE BEGIN ta_IN: Tamil - India *****/
+static const char *my_locale_month_names_ta_IN[13] =
+ {"ஜனவரி","பெப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்ட்","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்r", NullS };
+static const char *my_locale_ab_month_names_ta_IN[13] =
+ {"ஜனவரி","பெப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்ட்","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்r", NullS };
+static const char *my_locale_day_names_ta_IN[8] =
+ {"திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி","ஞாயிறு", NullS };
+static const char *my_locale_ab_day_names_ta_IN[8] =
+ {"த","ச","ப","வ","வ","ச","ஞ", NullS };
+static TYPELIB my_locale_typelib_month_names_ta_IN =
+ { array_elements(my_locale_month_names_ta_IN)-1, "", my_locale_month_names_ta_IN, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ta_IN =
+ { array_elements(my_locale_ab_month_names_ta_IN)-1, "", my_locale_ab_month_names_ta_IN, NULL };
+static TYPELIB my_locale_typelib_day_names_ta_IN =
+ { array_elements(my_locale_day_names_ta_IN)-1, "", my_locale_day_names_ta_IN, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ta_IN =
+ { array_elements(my_locale_ab_day_names_ta_IN)-1, "", my_locale_ab_day_names_ta_IN, NULL };
+MY_LOCALE my_locale_ta_IN=
+ { "ta_IN", "Tamil - India", FALSE, &my_locale_typelib_month_names_ta_IN, &my_locale_typelib_ab_month_names_ta_IN, &my_locale_typelib_day_names_ta_IN, &my_locale_typelib_ab_day_names_ta_IN };
+/***** LOCALE END ta_IN *****/
+
+/***** LOCALE BEGIN te_IN: Telugu - India *****/
+static const char *my_locale_month_names_te_IN[13] =
+ {"జనవరి","ఫిబ్రవరి","మార్చి","ఏప్రిల్","మే","జూన్","జూలై","ఆగస్టు","సెప్టెంబర్","అక్టోబర్","నవంబర్","డిసెంబర్", NullS };
+static const char *my_locale_ab_month_names_te_IN[13] =
+ {"జనవరి","ఫిబ్రవరి","మార్చి","ఏప్రిల్","మే","జూన్","జూలై","ఆగస్టు","సెప్టెంబర్","అక్టోబర్","నవంబర్","డిసెంబర్", NullS };
+static const char *my_locale_day_names_te_IN[8] =
+ {"సోమవారం","మంగళవారం","బుధవారం","గురువారం","శుక్రవారం","శనివారం","ఆదివారం", NullS };
+static const char *my_locale_ab_day_names_te_IN[8] =
+ {"సోమ","మంగళ","బుధ","గురు","శుక్ర","శని","ఆది", NullS };
+static TYPELIB my_locale_typelib_month_names_te_IN =
+ { array_elements(my_locale_month_names_te_IN)-1, "", my_locale_month_names_te_IN, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_te_IN =
+ { array_elements(my_locale_ab_month_names_te_IN)-1, "", my_locale_ab_month_names_te_IN, NULL };
+static TYPELIB my_locale_typelib_day_names_te_IN =
+ { array_elements(my_locale_day_names_te_IN)-1, "", my_locale_day_names_te_IN, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_te_IN =
+ { array_elements(my_locale_ab_day_names_te_IN)-1, "", my_locale_ab_day_names_te_IN, NULL };
+MY_LOCALE my_locale_te_IN=
+ { "te_IN", "Telugu - India", FALSE, &my_locale_typelib_month_names_te_IN, &my_locale_typelib_ab_month_names_te_IN, &my_locale_typelib_day_names_te_IN, &my_locale_typelib_ab_day_names_te_IN };
+/***** LOCALE END te_IN *****/
+
+/***** LOCALE BEGIN th_TH: Thai - Thailand *****/
+static const char *my_locale_month_names_th_TH[13] =
+ {"มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม", NullS };
+static const char *my_locale_ab_month_names_th_TH[13] =
+ {"ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค.", NullS };
+static const char *my_locale_day_names_th_TH[8] =
+ {"จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์","อาทิตย์", NullS };
+static const char *my_locale_ab_day_names_th_TH[8] =
+ {"จ.","อ.","พ.","พฤ.","ศ.","ส.","อา.", NullS };
+static TYPELIB my_locale_typelib_month_names_th_TH =
+ { array_elements(my_locale_month_names_th_TH)-1, "", my_locale_month_names_th_TH, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_th_TH =
+ { array_elements(my_locale_ab_month_names_th_TH)-1, "", my_locale_ab_month_names_th_TH, NULL };
+static TYPELIB my_locale_typelib_day_names_th_TH =
+ { array_elements(my_locale_day_names_th_TH)-1, "", my_locale_day_names_th_TH, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_th_TH =
+ { array_elements(my_locale_ab_day_names_th_TH)-1, "", my_locale_ab_day_names_th_TH, NULL };
+MY_LOCALE my_locale_th_TH=
+ { "th_TH", "Thai - Thailand", FALSE, &my_locale_typelib_month_names_th_TH, &my_locale_typelib_ab_month_names_th_TH, &my_locale_typelib_day_names_th_TH, &my_locale_typelib_ab_day_names_th_TH };
+/***** LOCALE END th_TH *****/
+
+/***** LOCALE BEGIN tr_TR: Turkish - Turkey *****/
+static const char *my_locale_month_names_tr_TR[13] =
+ {"Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık", NullS };
+static const char *my_locale_ab_month_names_tr_TR[13] =
+ {"Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara", NullS };
+static const char *my_locale_day_names_tr_TR[8] =
+ {"Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi","Pazar", NullS };
+static const char *my_locale_ab_day_names_tr_TR[8] =
+ {"Pzt","Sal","Çrş","Prş","Cum","Cts","Paz", NullS };
+static TYPELIB my_locale_typelib_month_names_tr_TR =
+ { array_elements(my_locale_month_names_tr_TR)-1, "", my_locale_month_names_tr_TR, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_tr_TR =
+ { array_elements(my_locale_ab_month_names_tr_TR)-1, "", my_locale_ab_month_names_tr_TR, NULL };
+static TYPELIB my_locale_typelib_day_names_tr_TR =
+ { array_elements(my_locale_day_names_tr_TR)-1, "", my_locale_day_names_tr_TR, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_tr_TR =
+ { array_elements(my_locale_ab_day_names_tr_TR)-1, "", my_locale_ab_day_names_tr_TR, NULL };
+MY_LOCALE my_locale_tr_TR=
+ { "tr_TR", "Turkish - Turkey", FALSE, &my_locale_typelib_month_names_tr_TR, &my_locale_typelib_ab_month_names_tr_TR, &my_locale_typelib_day_names_tr_TR, &my_locale_typelib_ab_day_names_tr_TR };
+/***** LOCALE END tr_TR *****/
+
+/***** LOCALE BEGIN uk_UA: Ukrainian - Ukraine *****/
+static const char *my_locale_month_names_uk_UA[13] =
+ {"Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень", NullS };
+static const char *my_locale_ab_month_names_uk_UA[13] =
+ {"Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру", NullS };
+static const char *my_locale_day_names_uk_UA[8] =
+ {"Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота","Неділя", NullS };
+static const char *my_locale_ab_day_names_uk_UA[8] =
+ {"Пнд","Втр","Срд","Чтв","Птн","Сбт","Ндл", NullS };
+static TYPELIB my_locale_typelib_month_names_uk_UA =
+ { array_elements(my_locale_month_names_uk_UA)-1, "", my_locale_month_names_uk_UA, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_uk_UA =
+ { array_elements(my_locale_ab_month_names_uk_UA)-1, "", my_locale_ab_month_names_uk_UA, NULL };
+static TYPELIB my_locale_typelib_day_names_uk_UA =
+ { array_elements(my_locale_day_names_uk_UA)-1, "", my_locale_day_names_uk_UA, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_uk_UA =
+ { array_elements(my_locale_ab_day_names_uk_UA)-1, "", my_locale_ab_day_names_uk_UA, NULL };
+MY_LOCALE my_locale_uk_UA=
+ { "uk_UA", "Ukrainian - Ukraine", FALSE, &my_locale_typelib_month_names_uk_UA, &my_locale_typelib_ab_month_names_uk_UA, &my_locale_typelib_day_names_uk_UA, &my_locale_typelib_ab_day_names_uk_UA };
+/***** LOCALE END uk_UA *****/
+
+/***** LOCALE BEGIN ur_PK: Urdu - Pakistan *****/
+static const char *my_locale_month_names_ur_PK[13] =
+ {"جنوري","فروري","مارچ","اپريل","مٓی","جون","جولاي","اگست","ستمبر","اكتوبر","نومبر","دسمبر", NullS };
+static const char *my_locale_ab_month_names_ur_PK[13] =
+ {"جنوري","فروري","مارچ","اپريل","مٓی","جون","جولاي","اگست","ستمبر","اكتوبر","نومبر","دسمبر", NullS };
+static const char *my_locale_day_names_ur_PK[8] =
+ {"پير","منگل","بدھ","جمعرات","جمعه","هفته","اتوار", NullS };
+static const char *my_locale_ab_day_names_ur_PK[8] =
+ {"پير","منگل","بدھ","جمعرات","جمعه","هفته","اتوار", NullS };
+static TYPELIB my_locale_typelib_month_names_ur_PK =
+ { array_elements(my_locale_month_names_ur_PK)-1, "", my_locale_month_names_ur_PK, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_ur_PK =
+ { array_elements(my_locale_ab_month_names_ur_PK)-1, "", my_locale_ab_month_names_ur_PK, NULL };
+static TYPELIB my_locale_typelib_day_names_ur_PK =
+ { array_elements(my_locale_day_names_ur_PK)-1, "", my_locale_day_names_ur_PK, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_ur_PK =
+ { array_elements(my_locale_ab_day_names_ur_PK)-1, "", my_locale_ab_day_names_ur_PK, NULL };
+MY_LOCALE my_locale_ur_PK=
+ { "ur_PK", "Urdu - Pakistan", FALSE, &my_locale_typelib_month_names_ur_PK, &my_locale_typelib_ab_month_names_ur_PK, &my_locale_typelib_day_names_ur_PK, &my_locale_typelib_ab_day_names_ur_PK };
+/***** LOCALE END ur_PK *****/
+
+/***** LOCALE BEGIN vi_VN: Vietnamese - Vietnam *****/
+static const char *my_locale_month_names_vi_VN[13] =
+ {"Tháng một","Tháng hai","Tháng ba","Tháng tư","Tháng năm","Tháng sáu","Tháng bảy","Tháng tám","Tháng chín","Tháng mười","Tháng mười một","Tháng mười hai", NullS };
+static const char *my_locale_ab_month_names_vi_VN[13] =
+ {"Thg 1","Thg 2","Thg 3","Thg 4","Thg 5","Thg 6","Thg 7","Thg 8","Thg 9","Thg 10","Thg 11","Thg 12", NullS };
+static const char *my_locale_day_names_vi_VN[8] =
+ {"Thứ hai ","Thứ ba ","Thứ tư ","Thứ năm ","Thứ sáu ","Thứ bảy ","Chủ nhật ", NullS };
+static const char *my_locale_ab_day_names_vi_VN[8] =
+ {"Th 2 ","Th 3 ","Th 4 ","Th 5 ","Th 6 ","Th 7 ","CN ", NullS };
+static TYPELIB my_locale_typelib_month_names_vi_VN =
+ { array_elements(my_locale_month_names_vi_VN)-1, "", my_locale_month_names_vi_VN, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_vi_VN =
+ { array_elements(my_locale_ab_month_names_vi_VN)-1, "", my_locale_ab_month_names_vi_VN, NULL };
+static TYPELIB my_locale_typelib_day_names_vi_VN =
+ { array_elements(my_locale_day_names_vi_VN)-1, "", my_locale_day_names_vi_VN, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_vi_VN =
+ { array_elements(my_locale_ab_day_names_vi_VN)-1, "", my_locale_ab_day_names_vi_VN, NULL };
+MY_LOCALE my_locale_vi_VN=
+ { "vi_VN", "Vietnamese - Vietnam", FALSE, &my_locale_typelib_month_names_vi_VN, &my_locale_typelib_ab_month_names_vi_VN, &my_locale_typelib_day_names_vi_VN, &my_locale_typelib_ab_day_names_vi_VN };
+/***** LOCALE END vi_VN *****/
+
+/***** LOCALE BEGIN zh_CN: Chinese - Peoples Republic of China *****/
+static const char *my_locale_month_names_zh_CN[13] =
+ {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月", NullS };
+static const char *my_locale_ab_month_names_zh_CN[13] =
+ {" 1月"," 2月"," 3月"," 4月"," 5月"," 6月"," 7月"," 8月"," 9月","10月","11月","12月", NullS };
+static const char *my_locale_day_names_zh_CN[8] =
+ {"星期一","星期二","星期三","星期四","星期五","星期六","星期日", NullS };
+static const char *my_locale_ab_day_names_zh_CN[8] =
+ {"一","二","三","四","五","六","日", NullS };
+static TYPELIB my_locale_typelib_month_names_zh_CN =
+ { array_elements(my_locale_month_names_zh_CN)-1, "", my_locale_month_names_zh_CN, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_zh_CN =
+ { array_elements(my_locale_ab_month_names_zh_CN)-1, "", my_locale_ab_month_names_zh_CN, NULL };
+static TYPELIB my_locale_typelib_day_names_zh_CN =
+ { array_elements(my_locale_day_names_zh_CN)-1, "", my_locale_day_names_zh_CN, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_zh_CN =
+ { array_elements(my_locale_ab_day_names_zh_CN)-1, "", my_locale_ab_day_names_zh_CN, NULL };
+MY_LOCALE my_locale_zh_CN=
+ { "zh_CN", "Chinese - Peoples Republic of China", FALSE, &my_locale_typelib_month_names_zh_CN, &my_locale_typelib_ab_month_names_zh_CN, &my_locale_typelib_day_names_zh_CN, &my_locale_typelib_ab_day_names_zh_CN };
+/***** LOCALE END zh_CN *****/
+
+/***** LOCALE BEGIN zh_TW: Chinese - Taiwan *****/
+static const char *my_locale_month_names_zh_TW[13] =
+ {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月", NullS };
+static const char *my_locale_ab_month_names_zh_TW[13] =
+ {" 1月"," 2月"," 3月"," 4月"," 5月"," 6月"," 7月"," 8月"," 9月","10月","11月","12月", NullS };
+static const char *my_locale_day_names_zh_TW[8] =
+ {"週一","週二","週三","週四","週五","週六","週日", NullS };
+static const char *my_locale_ab_day_names_zh_TW[8] =
+ {"一","二","三","四","五","六","日", NullS };
+static TYPELIB my_locale_typelib_month_names_zh_TW =
+ { array_elements(my_locale_month_names_zh_TW)-1, "", my_locale_month_names_zh_TW, NULL };
+static TYPELIB my_locale_typelib_ab_month_names_zh_TW =
+ { array_elements(my_locale_ab_month_names_zh_TW)-1, "", my_locale_ab_month_names_zh_TW, NULL };
+static TYPELIB my_locale_typelib_day_names_zh_TW =
+ { array_elements(my_locale_day_names_zh_TW)-1, "", my_locale_day_names_zh_TW, NULL };
+static TYPELIB my_locale_typelib_ab_day_names_zh_TW =
+ { array_elements(my_locale_ab_day_names_zh_TW)-1, "", my_locale_ab_day_names_zh_TW, NULL };
+MY_LOCALE my_locale_zh_TW=
+ { "zh_TW", "Chinese - Taiwan", FALSE, &my_locale_typelib_month_names_zh_TW, &my_locale_typelib_ab_month_names_zh_TW, &my_locale_typelib_day_names_zh_TW, &my_locale_typelib_ab_day_names_zh_TW };
+/***** LOCALE END zh_TW *****/
+
+/***** LOCALE BEGIN ar_DZ: Arabic - Algeria *****/
+MY_LOCALE my_locale_ar_DZ=
+ { "ar_DZ", "Arabic - Algeria", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_DZ *****/
+
+/***** LOCALE BEGIN ar_EG: Arabic - Egypt *****/
+MY_LOCALE my_locale_ar_EG=
+ { "ar_EG", "Arabic - Egypt", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_EG *****/
+
+/***** LOCALE BEGIN ar_IN: Arabic - Iran *****/
+MY_LOCALE my_locale_ar_IN=
+ { "ar_IN", "Arabic - Iran", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_IN *****/
+
+/***** LOCALE BEGIN ar_IQ: Arabic - Iraq *****/
+MY_LOCALE my_locale_ar_IQ=
+ { "ar_IQ", "Arabic - Iraq", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_IQ *****/
+
+/***** LOCALE BEGIN ar_KW: Arabic - Kuwait *****/
+MY_LOCALE my_locale_ar_KW=
+ { "ar_KW", "Arabic - Kuwait", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_KW *****/
+
+/***** LOCALE BEGIN ar_LB: Arabic - Lebanon *****/
+MY_LOCALE my_locale_ar_LB=
+ { "ar_LB", "Arabic - Lebanon", FALSE, &my_locale_typelib_month_names_ar_JO, &my_locale_typelib_ab_month_names_ar_JO, &my_locale_typelib_day_names_ar_JO, &my_locale_typelib_ab_day_names_ar_JO };
+/***** LOCALE END ar_LB *****/
+
+/***** LOCALE BEGIN ar_LY: Arabic - Libya *****/
+MY_LOCALE my_locale_ar_LY=
+ { "ar_LY", "Arabic - Libya", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_LY *****/
+
+/***** LOCALE BEGIN ar_MA: Arabic - Morocco *****/
+MY_LOCALE my_locale_ar_MA=
+ { "ar_MA", "Arabic - Morocco", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_MA *****/
+
+/***** LOCALE BEGIN ar_OM: Arabic - Oman *****/
+MY_LOCALE my_locale_ar_OM=
+ { "ar_OM", "Arabic - Oman", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_OM *****/
+
+/***** LOCALE BEGIN ar_QA: Arabic - Qatar *****/
+MY_LOCALE my_locale_ar_QA=
+ { "ar_QA", "Arabic - Qatar", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_QA *****/
+
+/***** LOCALE BEGIN ar_SD: Arabic - Sudan *****/
+MY_LOCALE my_locale_ar_SD=
+ { "ar_SD", "Arabic - Sudan", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_SD *****/
+
+/***** LOCALE BEGIN ar_TN: Arabic - Tunisia *****/
+MY_LOCALE my_locale_ar_TN=
+ { "ar_TN", "Arabic - Tunisia", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_TN *****/
+
+/***** LOCALE BEGIN ar_YE: Arabic - Yemen *****/
+MY_LOCALE my_locale_ar_YE=
+ { "ar_YE", "Arabic - Yemen", FALSE, &my_locale_typelib_month_names_ar_BH, &my_locale_typelib_ab_month_names_ar_BH, &my_locale_typelib_day_names_ar_BH, &my_locale_typelib_ab_day_names_ar_BH };
+/***** LOCALE END ar_YE *****/
+
+/***** LOCALE BEGIN de_BE: German - Belgium *****/
+MY_LOCALE my_locale_de_BE=
+ { "de_BE", "German - Belgium", FALSE, &my_locale_typelib_month_names_de_DE, &my_locale_typelib_ab_month_names_de_DE, &my_locale_typelib_day_names_de_DE, &my_locale_typelib_ab_day_names_de_DE };
+/***** LOCALE END de_BE *****/
+
+/***** LOCALE BEGIN de_CH: German - Switzerland *****/
+MY_LOCALE my_locale_de_CH=
+ { "de_CH", "German - Switzerland", FALSE, &my_locale_typelib_month_names_de_DE, &my_locale_typelib_ab_month_names_de_DE, &my_locale_typelib_day_names_de_DE, &my_locale_typelib_ab_day_names_de_DE };
+/***** LOCALE END de_CH *****/
+
+/***** LOCALE BEGIN de_LU: German - Luxembourg *****/
+MY_LOCALE my_locale_de_LU=
+ { "de_LU", "German - Luxembourg", FALSE, &my_locale_typelib_month_names_de_DE, &my_locale_typelib_ab_month_names_de_DE, &my_locale_typelib_day_names_de_DE, &my_locale_typelib_ab_day_names_de_DE };
+/***** LOCALE END de_LU *****/
+
+/***** LOCALE BEGIN en_AU: English - Australia *****/
+MY_LOCALE my_locale_en_AU=
+ { "en_AU", "English - Australia", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+/***** LOCALE END en_AU *****/
+
+/***** LOCALE BEGIN en_CA: English - Canada *****/
+MY_LOCALE my_locale_en_CA=
+ { "en_CA", "English - Canada", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+/***** LOCALE END en_CA *****/
+
+/***** LOCALE BEGIN en_GB: English - United Kingdom *****/
+MY_LOCALE my_locale_en_GB=
+ { "en_GB", "English - United Kingdom", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+/***** LOCALE END en_GB *****/
+
+/***** LOCALE BEGIN en_IN: English - India *****/
+MY_LOCALE my_locale_en_IN=
+ { "en_IN", "English - India", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+/***** LOCALE END en_IN *****/
+
+/***** LOCALE BEGIN en_NZ: English - New Zealand *****/
+MY_LOCALE my_locale_en_NZ=
+ { "en_NZ", "English - New Zealand", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+/***** LOCALE END en_NZ *****/
+
+/***** LOCALE BEGIN en_PH: English - Philippines *****/
+MY_LOCALE my_locale_en_PH=
+ { "en_PH", "English - Philippines", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+/***** LOCALE END en_PH *****/
+
+/***** LOCALE BEGIN en_ZA: English - South Africa *****/
+MY_LOCALE my_locale_en_ZA=
+ { "en_ZA", "English - South Africa", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+/***** LOCALE END en_ZA *****/
+
+/***** LOCALE BEGIN en_ZW: English - Zimbabwe *****/
+MY_LOCALE my_locale_en_ZW=
+ { "en_ZW", "English - Zimbabwe", TRUE, &my_locale_typelib_month_names_en_US, &my_locale_typelib_ab_month_names_en_US, &my_locale_typelib_day_names_en_US, &my_locale_typelib_ab_day_names_en_US };
+/***** LOCALE END en_ZW *****/
+
+/***** LOCALE BEGIN es_AR: Spanish - Argentina *****/
+MY_LOCALE my_locale_es_AR=
+ { "es_AR", "Spanish - Argentina", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_AR *****/
+
+/***** LOCALE BEGIN es_BO: Spanish - Bolivia *****/
+MY_LOCALE my_locale_es_BO=
+ { "es_BO", "Spanish - Bolivia", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_BO *****/
+
+/***** LOCALE BEGIN es_CL: Spanish - Chile *****/
+MY_LOCALE my_locale_es_CL=
+ { "es_CL", "Spanish - Chile", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_CL *****/
+
+/***** LOCALE BEGIN es_CO: Spanish - Columbia *****/
+MY_LOCALE my_locale_es_CO=
+ { "es_CO", "Spanish - Columbia", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_CO *****/
+
+/***** LOCALE BEGIN es_CR: Spanish - Costa Rica *****/
+MY_LOCALE my_locale_es_CR=
+ { "es_CR", "Spanish - Costa Rica", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_CR *****/
+
+/***** LOCALE BEGIN es_DO: Spanish - Dominican Republic *****/
+MY_LOCALE my_locale_es_DO=
+ { "es_DO", "Spanish - Dominican Republic", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_DO *****/
+
+/***** LOCALE BEGIN es_EC: Spanish - Ecuador *****/
+MY_LOCALE my_locale_es_EC=
+ { "es_EC", "Spanish - Ecuador", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_EC *****/
+
+/***** LOCALE BEGIN es_GT: Spanish - Guatemala *****/
+MY_LOCALE my_locale_es_GT=
+ { "es_GT", "Spanish - Guatemala", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_GT *****/
+
+/***** LOCALE BEGIN es_HN: Spanish - Honduras *****/
+MY_LOCALE my_locale_es_HN=
+ { "es_HN", "Spanish - Honduras", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_HN *****/
+
+/***** LOCALE BEGIN es_MX: Spanish - Mexico *****/
+MY_LOCALE my_locale_es_MX=
+ { "es_MX", "Spanish - Mexico", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_MX *****/
+
+/***** LOCALE BEGIN es_NI: Spanish - Nicaragua *****/
+MY_LOCALE my_locale_es_NI=
+ { "es_NI", "Spanish - Nicaragua", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_NI *****/
+
+/***** LOCALE BEGIN es_PA: Spanish - Panama *****/
+MY_LOCALE my_locale_es_PA=
+ { "es_PA", "Spanish - Panama", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_PA *****/
+
+/***** LOCALE BEGIN es_PE: Spanish - Peru *****/
+MY_LOCALE my_locale_es_PE=
+ { "es_PE", "Spanish - Peru", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_PE *****/
+
+/***** LOCALE BEGIN es_PR: Spanish - Puerto Rico *****/
+MY_LOCALE my_locale_es_PR=
+ { "es_PR", "Spanish - Puerto Rico", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_PR *****/
+
+/***** LOCALE BEGIN es_PY: Spanish - Paraguay *****/
+MY_LOCALE my_locale_es_PY=
+ { "es_PY", "Spanish - Paraguay", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_PY *****/
+
+/***** LOCALE BEGIN es_SV: Spanish - El Salvador *****/
+MY_LOCALE my_locale_es_SV=
+ { "es_SV", "Spanish - El Salvador", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_SV *****/
+
+/***** LOCALE BEGIN es_US: Spanish - United States *****/
+MY_LOCALE my_locale_es_US=
+ { "es_US", "Spanish - United States", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_US *****/
+
+/***** LOCALE BEGIN es_UY: Spanish - Uruguay *****/
+MY_LOCALE my_locale_es_UY=
+ { "es_UY", "Spanish - Uruguay", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_UY *****/
+
+/***** LOCALE BEGIN es_VE: Spanish - Venezuela *****/
+MY_LOCALE my_locale_es_VE=
+ { "es_VE", "Spanish - Venezuela", FALSE, &my_locale_typelib_month_names_es_ES, &my_locale_typelib_ab_month_names_es_ES, &my_locale_typelib_day_names_es_ES, &my_locale_typelib_ab_day_names_es_ES };
+/***** LOCALE END es_VE *****/
+
+/***** LOCALE BEGIN fr_BE: French - Belgium *****/
+MY_LOCALE my_locale_fr_BE=
+ { "fr_BE", "French - Belgium", FALSE, &my_locale_typelib_month_names_fr_FR, &my_locale_typelib_ab_month_names_fr_FR, &my_locale_typelib_day_names_fr_FR, &my_locale_typelib_ab_day_names_fr_FR };
+/***** LOCALE END fr_BE *****/
+
+/***** LOCALE BEGIN fr_CA: French - Canada *****/
+MY_LOCALE my_locale_fr_CA=
+ { "fr_CA", "French - Canada", FALSE, &my_locale_typelib_month_names_fr_FR, &my_locale_typelib_ab_month_names_fr_FR, &my_locale_typelib_day_names_fr_FR, &my_locale_typelib_ab_day_names_fr_FR };
+/***** LOCALE END fr_CA *****/
+
+/***** LOCALE BEGIN fr_CH: French - Switzerland *****/
+MY_LOCALE my_locale_fr_CH=
+ { "fr_CH", "French - Switzerland", FALSE, &my_locale_typelib_month_names_fr_FR, &my_locale_typelib_ab_month_names_fr_FR, &my_locale_typelib_day_names_fr_FR, &my_locale_typelib_ab_day_names_fr_FR };
+/***** LOCALE END fr_CH *****/
+
+/***** LOCALE BEGIN fr_LU: French - Luxembourg *****/
+MY_LOCALE my_locale_fr_LU=
+ { "fr_LU", "French - Luxembourg", FALSE, &my_locale_typelib_month_names_fr_FR, &my_locale_typelib_ab_month_names_fr_FR, &my_locale_typelib_day_names_fr_FR, &my_locale_typelib_ab_day_names_fr_FR };
+/***** LOCALE END fr_LU *****/
+
+/***** LOCALE BEGIN it_IT: Italian - Italy *****/
+MY_LOCALE my_locale_it_IT=
+ { "it_IT", "Italian - Italy", FALSE, &my_locale_typelib_month_names_it_CH, &my_locale_typelib_ab_month_names_it_CH, &my_locale_typelib_day_names_it_CH, &my_locale_typelib_ab_day_names_it_CH };
+/***** LOCALE END it_IT *****/
+
+/***** LOCALE BEGIN nl_BE: Dutch - Belgium *****/
+MY_LOCALE my_locale_nl_BE=
+ { "nl_BE", "Dutch - Belgium", TRUE, &my_locale_typelib_month_names_nl_NL, &my_locale_typelib_ab_month_names_nl_NL, &my_locale_typelib_day_names_nl_NL, &my_locale_typelib_ab_day_names_nl_NL };
+/***** LOCALE END nl_BE *****/
+
+/***** LOCALE BEGIN no_NO: Norwegian - Norway *****/
+MY_LOCALE my_locale_no_NO=
+ { "no_NO", "Norwegian - Norway", FALSE, &my_locale_typelib_month_names_nb_NO, &my_locale_typelib_ab_month_names_nb_NO, &my_locale_typelib_day_names_nb_NO, &my_locale_typelib_ab_day_names_nb_NO };
+/***** LOCALE END no_NO *****/
+
+/***** LOCALE BEGIN sv_FI: Swedish - Finland *****/
+MY_LOCALE my_locale_sv_FI=
+ { "sv_FI", "Swedish - Finland", FALSE, &my_locale_typelib_month_names_sv_SE, &my_locale_typelib_ab_month_names_sv_SE, &my_locale_typelib_day_names_sv_SE, &my_locale_typelib_ab_day_names_sv_SE };
+/***** LOCALE END sv_FI *****/
+
+/***** LOCALE BEGIN zh_HK: Chinese - Hong Kong SAR *****/
+MY_LOCALE my_locale_zh_HK=
+ { "zh_HK", "Chinese - Hong Kong SAR", FALSE, &my_locale_typelib_month_names_zh_CN, &my_locale_typelib_ab_month_names_zh_CN, &my_locale_typelib_day_names_zh_CN, &my_locale_typelib_ab_day_names_zh_CN };
+/***** LOCALE END zh_HK *****/
+
+MY_LOCALE *my_locales[]=
+ {
+ &my_locale_en_US,
+ &my_locale_en_GB,
+ &my_locale_ja_JP,
+ &my_locale_sv_SE,
+ &my_locale_de_DE,
+ &my_locale_fr_FR,
+ &my_locale_ar_AE,
+ &my_locale_ar_BH,
+ &my_locale_ar_JO,
+ &my_locale_ar_SA,
+ &my_locale_ar_SY,
+ &my_locale_be_BY,
+ &my_locale_bg_BG,
+ &my_locale_ca_ES,
+ &my_locale_cs_CZ,
+ &my_locale_da_DK,
+ &my_locale_de_AT,
+ &my_locale_es_ES,
+ &my_locale_et_EE,
+ &my_locale_eu_ES,
+ &my_locale_fi_FI,
+ &my_locale_fo_FO,
+ &my_locale_gl_ES,
+ &my_locale_gu_IN,
+ &my_locale_he_IL,
+ &my_locale_hi_IN,
+ &my_locale_hr_HR,
+ &my_locale_hu_HU,
+ &my_locale_id_ID,
+ &my_locale_is_IS,
+ &my_locale_it_CH,
+ &my_locale_ko_KR,
+ &my_locale_lt_LT,
+ &my_locale_lv_LV,
+ &my_locale_mk_MK,
+ &my_locale_mn_MN,
+ &my_locale_ms_MY,
+ &my_locale_nb_NO,
+ &my_locale_nl_NL,
+ &my_locale_pl_PL,
+ &my_locale_pt_BR,
+ &my_locale_pt_PT,
+ &my_locale_ro_RO,
+ &my_locale_ru_RU,
+ &my_locale_ru_UA,
+ &my_locale_sk_SK,
+ &my_locale_sl_SI,
+ &my_locale_sq_AL,
+ &my_locale_sr_YU,
+ &my_locale_ta_IN,
+ &my_locale_te_IN,
+ &my_locale_th_TH,
+ &my_locale_tr_TR,
+ &my_locale_uk_UA,
+ &my_locale_ur_PK,
+ &my_locale_vi_VN,
+ &my_locale_zh_CN,
+ &my_locale_zh_TW,
+ &my_locale_ar_DZ,
+ &my_locale_ar_EG,
+ &my_locale_ar_IN,
+ &my_locale_ar_IQ,
+ &my_locale_ar_KW,
+ &my_locale_ar_LB,
+ &my_locale_ar_LY,
+ &my_locale_ar_MA,
+ &my_locale_ar_OM,
+ &my_locale_ar_QA,
+ &my_locale_ar_SD,
+ &my_locale_ar_TN,
+ &my_locale_ar_YE,
+ &my_locale_de_BE,
+ &my_locale_de_CH,
+ &my_locale_de_LU,
+ &my_locale_en_AU,
+ &my_locale_en_CA,
+ &my_locale_en_IN,
+ &my_locale_en_NZ,
+ &my_locale_en_PH,
+ &my_locale_en_ZA,
+ &my_locale_en_ZW,
+ &my_locale_es_AR,
+ &my_locale_es_BO,
+ &my_locale_es_CL,
+ &my_locale_es_CO,
+ &my_locale_es_CR,
+ &my_locale_es_DO,
+ &my_locale_es_EC,
+ &my_locale_es_GT,
+ &my_locale_es_HN,
+ &my_locale_es_MX,
+ &my_locale_es_NI,
+ &my_locale_es_PA,
+ &my_locale_es_PE,
+ &my_locale_es_PR,
+ &my_locale_es_PY,
+ &my_locale_es_SV,
+ &my_locale_es_US,
+ &my_locale_es_UY,
+ &my_locale_es_VE,
+ &my_locale_fr_BE,
+ &my_locale_fr_CA,
+ &my_locale_fr_CH,
+ &my_locale_fr_LU,
+ &my_locale_it_IT,
+ &my_locale_nl_BE,
+ &my_locale_no_NO,
+ &my_locale_sv_FI,
+ &my_locale_zh_HK,
+ NULL
+ };
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index b86dfa91a15..b8ee994821f 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -1298,6 +1298,12 @@ pthread_handler_t handle_bootstrap(void *arg)
thd->security_ctx->priv_user=
thd->security_ctx->user= (char*) my_strdup("boot", MYF(MY_WME));
thd->security_ctx->priv_host[0]=0;
+ /*
+ Make the "client" handle multiple results. This is necessary
+ to enable stored procedures with SELECTs and Dynamic SQL
+ in init-file.
+ */
+ thd->client_capabilities|= CLIENT_MULTI_RESULTS;
buff= (char*) thd->net.buff;
thd->init_for_queries();
@@ -3502,7 +3508,7 @@ end_with_restore_list:
{
DBUG_ASSERT(first_table == all_tables && first_table != 0);
TABLE_LIST *aux_tables=
- (TABLE_LIST *)thd->lex->auxilliary_table_list.first;
+ (TABLE_LIST *)thd->lex->auxiliary_table_list.first;
multi_delete *result;
if (!thd->locked_tables &&
@@ -6024,7 +6030,7 @@ void mysql_init_multi_delete(LEX *lex)
mysql_init_select(lex);
lex->select_lex.select_limit= 0;
lex->unit.select_limit_cnt= HA_POS_ERROR;
- lex->select_lex.table_list.save_and_clear(&lex->auxilliary_table_list);
+ lex->select_lex.table_list.save_and_clear(&lex->auxiliary_table_list);
lex->lock_option= using_update_log ? TL_READ_NO_INSERT : TL_READ;
lex->query_tables= 0;
lex->query_tables_last= &lex->query_tables;
@@ -7443,7 +7449,7 @@ bool multi_delete_precheck(THD *thd, TABLE_LIST *tables)
{
SELECT_LEX *select_lex= &thd->lex->select_lex;
TABLE_LIST *aux_tables=
- (TABLE_LIST *)thd->lex->auxilliary_table_list.first;
+ (TABLE_LIST *)thd->lex->auxiliary_table_list.first;
TABLE_LIST **save_query_tables_own_last= thd->lex->query_tables_own_last;
DBUG_ENTER("multi_delete_precheck");
@@ -7496,7 +7502,7 @@ bool multi_delete_set_locks_and_link_aux_tables(LEX *lex)
lex->table_count= 0;
- for (target_tbl= (TABLE_LIST *)lex->auxilliary_table_list.first;
+ for (target_tbl= (TABLE_LIST *)lex->auxiliary_table_list.first;
target_tbl; target_tbl= target_tbl->next_local)
{
lex->table_count++;
diff --git a/sql/sql_udf.cc b/sql/sql_udf.cc
index b92a9363a22..13302c2c3f7 100644
--- a/sql/sql_udf.cc
+++ b/sql/sql_udf.cc
@@ -57,7 +57,7 @@ static char *init_syms(udf_func *tmp, char *nm)
{
char *end;
- if (!((tmp->func= dlsym(tmp->dlhandle, tmp->name.str))))
+ if (!((tmp->func= (Udf_func_any) dlsym(tmp->dlhandle, tmp->name.str))))
return tmp->name.str;
end=strmov(nm,tmp->name.str);
@@ -65,18 +65,18 @@ static char *init_syms(udf_func *tmp, char *nm)
if (tmp->type == UDFTYPE_AGGREGATE)
{
(void)strmov(end, "_clear");
- if (!((tmp->func_clear= dlsym(tmp->dlhandle, nm))))
+ if (!((tmp->func_clear= (Udf_func_clear) dlsym(tmp->dlhandle, nm))))
return nm;
(void)strmov(end, "_add");
- if (!((tmp->func_add= dlsym(tmp->dlhandle, nm))))
+ if (!((tmp->func_add= (Udf_func_add) dlsym(tmp->dlhandle, nm))))
return nm;
}
(void) strmov(end,"_deinit");
- tmp->func_deinit= dlsym(tmp->dlhandle, nm);
+ tmp->func_deinit= (Udf_func_deinit) dlsym(tmp->dlhandle, nm);
(void) strmov(end,"_init");
- tmp->func_init= dlsym(tmp->dlhandle, nm);
+ tmp->func_init= (Udf_func_init) dlsym(tmp->dlhandle, nm);
/*
to prefent loading "udf" from, e.g. libc.so
diff --git a/sql/sql_udf.h b/sql/sql_udf.h
index d0729deecaa..21cf735f5ab 100644
--- a/sql/sql_udf.h
+++ b/sql/sql_udf.h
@@ -23,6 +23,15 @@
enum Item_udftype {UDFTYPE_FUNCTION=1,UDFTYPE_AGGREGATE};
+typedef void (*Udf_func_clear)(UDF_INIT *, uchar *, uchar *);
+typedef void (*Udf_func_add)(UDF_INIT *, UDF_ARGS *, uchar *, uchar *);
+typedef void (*Udf_func_deinit)(UDF_INIT*);
+typedef my_bool (*Udf_func_init)(UDF_INIT *, UDF_ARGS *, char *);
+typedef void (*Udf_func_any)();
+typedef double (*Udf_func_double)(UDF_INIT *, UDF_ARGS *, uchar *, uchar *);
+typedef longlong (*Udf_func_longlong)(UDF_INIT *, UDF_ARGS *, uchar *,
+ uchar *);
+
typedef struct st_udf_func
{
LEX_STRING name;
@@ -30,11 +39,11 @@ typedef struct st_udf_func
Item_udftype type;
char *dl;
void *dlhandle;
- void *func;
- void *func_init;
- void *func_deinit;
- void *func_clear;
- void *func_add;
+ Udf_func_any func;
+ Udf_func_init func_init;
+ Udf_func_deinit func_deinit;
+ Udf_func_clear func_clear;
+ Udf_func_add func_add;
ulong usage_count;
} udf_func;
@@ -76,8 +85,7 @@ class udf_handler :public Sql_alloc
*null_value=1;
return 0.0;
}
- double (*func)(UDF_INIT *, UDF_ARGS *, uchar *, uchar *)=
- (double (*)(UDF_INIT *, UDF_ARGS *, uchar *, uchar *)) u_d->func;
+ Udf_func_double func= (Udf_func_double) u_d->func;
double tmp=func(&initid, &f_args, &is_null, &error);
if (is_null || error)
{
@@ -95,8 +103,7 @@ class udf_handler :public Sql_alloc
*null_value=1;
return LL(0);
}
- longlong (*func)(UDF_INIT *, UDF_ARGS *, uchar *, uchar *)=
- (longlong (*)(UDF_INIT *, UDF_ARGS *, uchar *, uchar *)) u_d->func;
+ Udf_func_longlong func= (Udf_func_longlong) u_d->func;
longlong tmp=func(&initid, &f_args, &is_null, &error);
if (is_null || error)
{
@@ -110,8 +117,7 @@ class udf_handler :public Sql_alloc
void clear()
{
is_null= 0;
- void (*func)(UDF_INIT *, uchar *, uchar *)=
- (void (*)(UDF_INIT *, uchar *, uchar *)) u_d->func_clear;
+ Udf_func_clear func= u_d->func_clear;
func(&initid, &is_null, &error);
}
void add(my_bool *null_value)
@@ -121,8 +127,7 @@ class udf_handler :public Sql_alloc
*null_value=1;
return;
}
- void (*func)(UDF_INIT *, UDF_ARGS *, uchar *, uchar *)=
- (void (*)(UDF_INIT *, UDF_ARGS *, uchar *, uchar *)) u_d->func_add;
+ Udf_func_add func= u_d->func_add;
func(&initid, &f_args, &is_null, &error);
*null_value= (my_bool) (is_null || error);
}
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index 881d4ba1357..1b97acbcbfe 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -459,7 +459,7 @@ int mysql_update(THD *thd,
can_compare_record= (!(table->file->ha_table_flags() &
HA_PARTIAL_COLUMN_READ) ||
bitmap_is_subset(table->write_set, table->read_set));
-
+
while (!(error=info.read_record(&info)) && !thd->killed)
{
if (!(select && select->skip_record()))
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 3fa536b99ae..ff422c4418c 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -6159,7 +6159,10 @@ simple_expr:
Lex->safe_to_cache_query=0;
}
| CURRENT_USER optional_braces
- { $$= create_func_current_user(); }
+ {
+ $$= new Item_func_current_user(Lex->current_context());
+ Lex->safe_to_cache_query= 0;
+ }
| DATE_ADD_INTERVAL '(' expr ',' interval_expr interval ')'
{ $$= new Item_date_add_interval($3,$5,$6,0); }
| DATE_SUB_INTERVAL '(' expr ',' interval_expr interval ')'
@@ -6518,7 +6521,7 @@ simple_expr:
| UNIX_TIMESTAMP '(' expr ')'
{ $$= new Item_func_unix_timestamp($3); }
| USER '(' ')'
- { $$= new Item_func_user(FALSE); Lex->safe_to_cache_query=0; }
+ { $$= new Item_func_user(); Lex->safe_to_cache_query=0; }
| UTC_DATE_SYM optional_braces
{ $$= new Item_func_curdate_utc(); Lex->safe_to_cache_query=0;}
| UTC_TIME_SYM optional_braces
diff --git a/storage/myisam/mi_create.c b/storage/myisam/mi_create.c
index c5a9af08def..a0b3f657867 100644
--- a/storage/myisam/mi_create.c
+++ b/storage/myisam/mi_create.c
@@ -574,9 +574,22 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
{
char *iext= strrchr(ci->index_file_name, '.');
int have_iext= iext && !strcmp(iext, MI_NAME_IEXT);
-
- fn_format(filename, ci->index_file_name, "", MI_NAME_IEXT,
- MY_UNPACK_FILENAME| (have_iext ? MY_REPLACE_EXT :MY_APPEND_EXT));
+ if (options & HA_OPTION_TMP_TABLE)
+ {
+ char *path;
+ /* chop off the table name, tempory tables use generated name */
+ if ((path= strrchr(ci->index_file_name, FN_LIBCHAR)))
+ *path= '\0';
+ fn_format(filename, name, ci->index_file_name, MI_NAME_IEXT,
+ MY_REPLACE_DIR | MY_UNPACK_FILENAME |
+ (have_iext ? MY_REPLACE_EXT : MY_APPEND_EXT));
+ }
+ else
+ {
+ fn_format(filename, ci->index_file_name, "", MI_NAME_IEXT,
+ MY_UNPACK_FILENAME | (have_iext ? MY_REPLACE_EXT :
+ MY_APPEND_EXT));
+ }
fn_format(linkname, name, "", MI_NAME_IEXT,
MY_UNPACK_FILENAME|MY_APPEND_EXT);
linkname_ptr=linkname;
@@ -639,9 +652,23 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
char *dext= strrchr(ci->data_file_name, '.');
int have_dext= dext && !strcmp(dext, MI_NAME_DEXT);
- fn_format(filename, ci->data_file_name, "", MI_NAME_DEXT,
- MY_UNPACK_FILENAME |
- (have_dext ? MY_REPLACE_EXT : MY_APPEND_EXT));
+ if (options & HA_OPTION_TMP_TABLE)
+ {
+ char *path;
+ /* chop off the table name, tempory tables use generated name */
+ if ((path= strrchr(ci->data_file_name, FN_LIBCHAR)))
+ *path= '\0';
+ fn_format(filename, name, ci->data_file_name, MI_NAME_DEXT,
+ MY_REPLACE_DIR | MY_UNPACK_FILENAME |
+ (have_dext ? MY_REPLACE_EXT : MY_APPEND_EXT));
+ }
+ else
+ {
+ fn_format(filename, ci->data_file_name, "", MI_NAME_DEXT,
+ MY_UNPACK_FILENAME |
+ (have_dext ? MY_REPLACE_EXT : MY_APPEND_EXT));
+ }
+
fn_format(linkname, name, "",MI_NAME_DEXT,
MY_UNPACK_FILENAME | MY_APPEND_EXT);
linkname_ptr=linkname;