diff --git a/ddl/partition.go b/ddl/partition.go
index <HASH>..<HASH> 100644
--- a/ddl/partition.go
+++ b/ddl/partition.go
@@ -50,8 +50,19 @@ func buildTablePartitionInfo(ctx sessionctx.Context, d *ddl, s *ast.CreateTableS
 		enable = false
 	default:
 		// When tidb_enable_table_partition = 'auto',
-		// Partition by range expression is enabled by default.
-		if s.Partition.Tp == model.PartitionTypeRange && s.Partition.ColumnNames == nil {
+		if s.Partition.Tp == model.PartitionTypeRange {
+			// Partition by range expression is enabled by default.
+			if s.Partition.ColumnNames == nil {
+				enable = true
+			}
+			// Partition by range columns and just one column.
+			if len(s.Partition.ColumnNames) == 1 {
+				enable = true
+			}
+		}
+		// Partition by hash is enabled by default.
+		// Note that linear hash is not enabled.
+		if s.Partition.Tp == model.PartitionTypeHash {
 			enable = true
 		}
 	}
ddl: enable hash partition and range columns partition by default (#<I>)