diff --git a/Docs/Makefile.am b/Docs/Makefile.am
index 156d26a9a025e414d6a4caf764f41fdd040908e1..80832719893edbf1badc922cb1b9cddfb6f57c66 100644
--- a/Docs/Makefile.am
+++ b/Docs/Makefile.am
@@ -27,7 +27,7 @@ EXTRA_DIST =		$(noinst_SCRIPTS) $(BUILT_SOURCES) mysqld_error.txt \
 all:			$(targets) txt_files
 
 txt_files:		../INSTALL-SOURCE ../COPYING ../COPYING.LIB \
-			../MIRRORS INSTALL-BINARY
+			INSTALL-BINARY # ../MIRRORS
 
 CLEAN_FILES:		$(BUILD_SOURCES)
 	touch $(BUILD_SOURCES)
@@ -254,8 +254,8 @@ INSTALL-BINARY:	mysql.info $(GT)
 ../COPYING.LIB:		mysql.info $(GT)
 	perl -w $(GT) mysql.info "LGPL license" "Function Index" > $@
 
-../MIRRORS:		manual.texi $(srcdir)/Support/generate-mirror-listing.pl
-	perl -w $(srcdir)/Support/generate-mirror-listing.pl manual.texi > $@
+#../MIRRORS:		manual.texi $(srcdir)/Support/generate-mirror-listing.pl
+#	perl -w $(srcdir)/Support/generate-mirror-listing.pl manual.texi > $@
 
 # Don't update the files from bitkeeper
 %::SCCS/s.%
diff --git a/Docs/manual.texi b/Docs/manual.texi
index 639c20676115e7bb92d91957ccbec001d032f470..3066f50683873053a10b3166c92c571d1fa0ee35 100644
--- a/Docs/manual.texi
+++ b/Docs/manual.texi
@@ -33551,7 +33551,8 @@ SELECT [STRAIGHT_JOIN]
     [INTO @{OUTFILE | DUMPFILE@} 'file_name' export_options]
     [FROM table_references
       [WHERE where_definition]
-      [GROUP BY @{unsigned_integer | col_name | formula@} [ASC | DESC], ...]
+      [GROUP BY @{unsigned_integer | col_name | formula@} [ASC | DESC], ...
+        [WITH @{CUBE | ROLLUP@}] ]
       [HAVING where_definition]
       [ORDER BY @{unsigned_integer | col_name | formula@} [ASC | DESC] ,...]
       [LIMIT [offset,] rows]
@@ -33760,6 +33761,10 @@ If you are not getting the results you expect from your query, please
 read the @code{GROUP BY} description.
 @xref{Group by functions}.
 
+@item
+Since Version 3.23.12 MySQL supports @code{CUBE} and @code{ROLLUP}
+clauses. @xref{CUBE and ROLLUP}.
+
 @item
 @cindex hints
 @code{STRAIGHT_JOIN} forces the optimiser to join the tables in the order in
@@ -33869,6 +33874,7 @@ the examined rows will be write locked.
 @menu
 * JOIN::                        @code{JOIN} Syntax
 * UNION::                       @code{UNION} Syntax
+* CUBE and ROLLUP               @code{CUBE} and @code{ROLLUP} Syntax
 @end menu
 
 @node JOIN, UNION, SELECT, SELECT
@@ -34033,7 +34039,7 @@ mysql> SELECT * FROM table1 IGNORE INDEX (key3)
 @xref{LEFT JOIN optimisation, , @code{LEFT JOIN} optimisation}.
 
 
-@node UNION,  , JOIN, SELECT
+@node UNION, CUBE and ROLLUP, JOIN, SELECT
 @subsubsection @code{UNION} Syntax
 
 @findex UNION
@@ -34078,6 +34084,141 @@ UNION
 ORDER BY a;
 @end example
 
+@node CUBE and ROLLUP, , UNION, SELECT
+@subsubsection @code{CUBE} and @code{ROLLUP} Syntax
+
+Documentation for OLAP extension
+
+Introduction 
+------------
+
+MySQL will first support CUBE and ROLLUP operators from entire OLAP
+functionality.  
+
+The  CUBE  and ROLLUP extensions  to  SQL make querying  and reporting
+easier  in data warehousing  environments. ROLLUP creates subtotals at
+increasing levels of aggregation, from the most detailed up to a grand
+total. CUBE  is an extension   similar to  ROLLUP,  enabling a  single
+statement to calculate all possible combinations of subtotals.
+
+
+Syntax: 
+------	
+
+The syntax supported by the enhanced mysql for CUBE and ROLLUP
+operators.  
+
+CUBE 
+---- 
+
+SELECT field1, field2, ... AGGR(fieldn) FROM
+table GROUP BY field1, field2 field(n-1) WITH CUBE 
+
+This would generate the aggregates with group bys of all the
+combinations of dimensions.
+
+ROLLUP:
+-----        
+
+	SELECT field1, field2, ... AGGR(fieldn) FROM table 
+	GROUP BY field1, field2 field(n-1) WITH ROLLUP 
+
+Example:
+-------
+
+mysql> select * from sales;
++------------+---------------+------+--------+
+| product    | country       | year | profit |
++------------+---------------+------+--------+
+| Computer   | India         | 2000 |   1200 |
+| TV         | United States | 1999 |    150 |
+| Calculator | United States | 1999 |     50 |
+| Computer   | United States | 1999 |   1500 |
+| Computer   | United States | 2000 |   1500 |
+| TV         | United States | 2000 |    150 |
+| TV         | India         | 2000 |    100 |
+| TV         | India         | 2000 |    100 |
+| Calculator | United States | 2000 |     75 |
+| Calculator | India         | 2000 |     75 |
+| TV         | India         | 1999 |    100 |
+| Computer   | India         | 1999 |   1200 |
+| Computer   | United States | 2000 |   1500 |
+| Calculator | United States | 2000 |     75 |
++------------+---------------+------+--------+
+14 rows in set (0.00 sec)
+
+
+ 
+mysql> Select sales.product, sales.country , sales.year, sum(profit) from 
+sales group by product, country, year with cube;
+
++------------+---------------+------+-------------+
+| product    | country       | year | sum(profit) |
++------------+---------------+------+-------------+
+| Calculator | India         | 2000 |          75 |
+| Calculator | United States | 1999 |          50 |
+| Calculator | United States | 2000 |         150 |
+| Computer   | India         | 1999 |        1200 |
+| Computer   | India         | 2000 |        1200 |
+| Computer   | United States | 1999 |        1500 |
+| Computer   | United States | 2000 |        3000 |
+| TV         | India         | 1999 |         100 |
+| TV         | India         | 2000 |         200 |
+| TV         | United States | 1999 |         150 |
+| TV         | United States | 2000 |         150 |
+| ALL        | India         | 1999 |        1300 |
+| ALL        | India         | 2000 |        1475 |
+| ALL        | United States | 1999 |        1700 |
+| ALL        | United States | 2000 |        3300 |
+| Calculator | ALL           | 1999 |          50 |
+| Calculator | ALL           | 2000 |         225 |
+| Computer   | ALL           | 1999 |        2700 |
+| Computer   | ALL           | 2000 |        4200 |
+| TV         | ALL           | 1999 |         250 |
+| TV         | ALL           | 2000 |         350 |
+| Calculator | India         | 0    |          75 |
+| Calculator | United States | 0    |         200 |
+| Computer   | India         | 0    |        2400 |
+| Computer   | United States | 0    |        4500 |
+| TV         | India         | 0    |         300 |
+| TV         | United States | 0    |         300 |
+| ALL        | ALL           | 1999 |        3000 |
+| ALL        | ALL           | 2000 |        4775 |
+| ALL        | India         | 0    |        2775 |
+| ALL        | United States | 0    |        5000 |
+| Calculator | ALL           | 0    |         275 |
+| Computer   | ALL           | 0    |        6900 |
+| TV         | ALL           | 0    |         600 |
+| ALL        | ALL           | 0    |        7775 |
++------------+---------------+------+-------------+
+35 rows in set (0.00 sec)
+
+
+MySQL supports now CUBE and ROLLUP extensions, with all  functions
+that one wishes to use with them.
+
+Those extensions already work in all tested combinations. They work
+with UNION's, should work with sub-selects in 4.1 and derived tables. 
+
+TODO
+----
+
+For the moment, ORDER and LIMIT are disabled for CUBE and ROLLUP. This
+however remains to be added later.
+
+Another feature that has to be added later is grouping of select list
+itmes in order to alleviate user errors. For the moment, missing
+(hidden) columns are not used at all.
+
+Third feature to be done is to make  SQL SET OPTION to set values for
+all values of the column optionally to:
+
+* ALL (as it is now)
+* NULL 
+* blank
+
+-------------------------------------------------------------------------
+
 @findex HANDLER
 @node HANDLER, INSERT, SELECT, Data Manipulation
 @subsection @code{HANDLER} Syntax
@@ -49700,146 +49841,9 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
 Fixed a bug that made the pager option in the mysql client non-functional.
 @item
 Added full @code{AUTO_INCREMENT} support to @code{MERGE} tables.
-@end itemize
 @item
-Added OLAP functionality.
-
-@c Arjen , please add the following text somewhere appropriate in the 
-text above:
-
--------------------------------------------------------------------------
-
-Documentation for OLAP extension
-
-Introduction 
-------------
-
-MySQL will first support CUBE and ROLLUP operators from entire OLAP
-functionality.  
-
-The  CUBE  and ROLLUP extensions  to  SQL make querying  and reporting
-easier  in data warehousing  environments. ROLLUP creates subtotals at
-increasing levels of aggregation, from the most detailed up to a grand
-total. CUBE  is an extension   similar to  ROLLUP,  enabling a  single
-statement to calculate all possible combinations of subtotals.
-
-
-Syntax: 
-------	
-
-The syntax supported by the enhanced mysql for CUBE and ROLLUP
-operators.  
-
-CUBE 
----- 
-
-SELECT field1, field2, ... AGGR(fieldn) FROM
-table GROUP BY field1, field2 field(n-1) WITH CUBE 
-
-This would generate the aggregates with group bys of all the
-combinations of dimensions.
-
-ROLLUP:
------        
-
-	SELECT field1, field2, ... AGGR(fieldn) FROM table 
-	GROUP BY field1, field2 field(n-1) WITH ROLLUP 
-
-Example:
--------
-
-mysql> select * from sales;
-+------------+---------------+------+--------+
-| product    | country       | year | profit |
-+------------+---------------+------+--------+
-| Computer   | India         | 2000 |   1200 |
-| TV         | United States | 1999 |    150 |
-| Calculator | United States | 1999 |     50 |
-| Computer   | United States | 1999 |   1500 |
-| Computer   | United States | 2000 |   1500 |
-| TV         | United States | 2000 |    150 |
-| TV         | India         | 2000 |    100 |
-| TV         | India         | 2000 |    100 |
-| Calculator | United States | 2000 |     75 |
-| Calculator | India         | 2000 |     75 |
-| TV         | India         | 1999 |    100 |
-| Computer   | India         | 1999 |   1200 |
-| Computer   | United States | 2000 |   1500 |
-| Calculator | United States | 2000 |     75 |
-+------------+---------------+------+--------+
-14 rows in set (0.00 sec)
-
-
- 
-mysql> Select sales.product, sales.country , sales.year, sum(profit) from 
-sales group by product, country, year with cube;
-
-+------------+---------------+------+-------------+
-| product    | country       | year | sum(profit) |
-+------------+---------------+------+-------------+
-| Calculator | India         | 2000 |          75 |
-| Calculator | United States | 1999 |          50 |
-| Calculator | United States | 2000 |         150 |
-| Computer   | India         | 1999 |        1200 |
-| Computer   | India         | 2000 |        1200 |
-| Computer   | United States | 1999 |        1500 |
-| Computer   | United States | 2000 |        3000 |
-| TV         | India         | 1999 |         100 |
-| TV         | India         | 2000 |         200 |
-| TV         | United States | 1999 |         150 |
-| TV         | United States | 2000 |         150 |
-| ALL        | India         | 1999 |        1300 |
-| ALL        | India         | 2000 |        1475 |
-| ALL        | United States | 1999 |        1700 |
-| ALL        | United States | 2000 |        3300 |
-| Calculator | ALL           | 1999 |          50 |
-| Calculator | ALL           | 2000 |         225 |
-| Computer   | ALL           | 1999 |        2700 |
-| Computer   | ALL           | 2000 |        4200 |
-| TV         | ALL           | 1999 |         250 |
-| TV         | ALL           | 2000 |         350 |
-| Calculator | India         | 0    |          75 |
-| Calculator | United States | 0    |         200 |
-| Computer   | India         | 0    |        2400 |
-| Computer   | United States | 0    |        4500 |
-| TV         | India         | 0    |         300 |
-| TV         | United States | 0    |         300 |
-| ALL        | ALL           | 1999 |        3000 |
-| ALL        | ALL           | 2000 |        4775 |
-| ALL        | India         | 0    |        2775 |
-| ALL        | United States | 0    |        5000 |
-| Calculator | ALL           | 0    |         275 |
-| Computer   | ALL           | 0    |        6900 |
-| TV         | ALL           | 0    |         600 |
-| ALL        | ALL           | 0    |        7775 |
-+------------+---------------+------+-------------+
-35 rows in set (0.00 sec)
-
-
-MySQL supports now CUBE and ROLLUP extensions, with all  functions
-that one wishes to use with them.
-
-Those extensions already work in all tested combinations. They work
-with UNION's, should work with sub-selects in 4.1 and derived tables. 
-
-TODO
-----
-
-For the moment, ORDER and LIMIT are disabled for CUBE and ROLLUP. This
-however remains to be added later.
-
-Another feature that has to be added later is grouping of select list
-itmes in order to alleviate user errors. For the moment, missing
-(hidden) columns are not used at all.
-
-Third feature to be done is to make  SQL SET OPTION to set values for
-all values of the column optionally to:
-
-* ALL (as it is now)
-* NULL 
-* blank
-
--------------------------------------------------------------------------
+Added support for @code{CUBE} and @code{ROLLUP}.
+@end itemize
 
 @node News-4.0.2, News-4.0.1, News-4.0.3, News-4.0.x
 @appendixsubsec Changes in release 4.0.2 (01 July 2002)
diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test
index 483ff3167400d94a0df2b961f01441e2b32931f3..86e787db0a357768cf90324f0ade7ae5ba4efc02 100644
--- a/mysql-test/t/merge.test
+++ b/mysql-test/t/merge.test
@@ -129,18 +129,18 @@ drop table t3,t1,t2;
 
 drop table if exists t6, t5, t4, t3, t2, t1;
 # first testing of common stuff with new parameters
-create table t1 (a int not null, b int not null, key(a,b));
-create table t2 (a int not null, b int not null, key(a,b));
+create table t1 (a int not null, b int not null auto_increment, primary key(a,b));
+create table t2 (a int not null, b int not null auto_increment, primary key(a,b));
 create table t3 (a int not null, b int not null, key(a,b)) UNION=(t1,t2) INSERT_METHOD=NO;
 create table t4 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=NO;
-create table t5 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=FIRST;
-create table t6 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
+create table t5 (a int not null, b int not null auto_increment, primary key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=FIRST;
+create table t6 (a int not null, b int not null auto_increment, primary key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
 show create table t3;
 show create table t4;
 show create table t5;
 show create table t6;
-insert into t1 values (1,1),(1,2),(1,3),(1,4);
-insert into t2 values (2,1),(2,2),(2,3),(2,4);
+insert into t1 values (1,NULL),(1,NULL),(1,NULL),(1,NULL);
+insert into t2 values (2,NULL),(2,NULL),(2,NULL),(2,NULL);
 select * from t3 order by b,a limit 3;
 select * from t4 order by b,a limit 3;
 select * from t5 order by b,a limit 3,3;
@@ -167,7 +167,16 @@ select * from t2 order by a,b;
 select * from t3 order by a,b;
 select * from t4 order by a,b;
 select * from t5 order by a,b;
+# auto_increment
+select 1;
+insert into t5 values (1,NULL),(5,NULL);
+insert into t6 values (2,NULL),(6,NULL);
+select * from t1 order by a,b;
+select * from t2 order by a,b;
+select * from t5 order by a,b;
+select * from t6 order by a,b;
 drop table if exists t6, t5, t4, t3, t2, t1;
+
 CREATE TABLE t1 (  a int(11) NOT NULL default '0',  b int(11) NOT NULL default '0',  PRIMARY KEY  (a,b)) TYPE=MyISAM;
 INSERT INTO t1 VALUES (1,1), (2,1);
 CREATE TABLE t2 (  a int(11) NOT NULL default '0',  b int(11) NOT NULL default '0',  PRIMARY KEY  (a,b)) TYPE=MyISAM;