Build: Update version to 1.21.0 and add release notes
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index 24cc915..50f0f94 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -10,6 +10,25 @@
 Current list of bugs and issues can be found at https://issues.apache.org/jira/browse/MADLIB.
 
 —-------------------------------------------------------------------------
+MADlib v1.21.0:
+
+Release Date: 2023-March-XX
+
+New features:
+    - Graph: Add warm start for weakly connected components
+    - Graph: Add multicolumn identifier support for SSSP and APSP
+    - Build: Add support for Photon3 OS
+
+Improvements:
+    - XGBoost: Add support for bigint and varchar columns
+    - XGBoost: Enable eval_metrics parameter
+
+Bug fixes:
+    - XGBoost: Fix class label verification
+    - Graph: Fix SSSP negative cycle check
+    - Build: Disable TestIfNoUTF8BOM.py
+
+—-------------------------------------------------------------------------
 MADlib v1.20.0:
 
 Release Date: 2022-August-05
diff --git a/deploy/DEB/postinst b/deploy/DEB/postinst
index 6988df4..8569abe 100755
--- a/deploy/DEB/postinst
+++ b/deploy/DEB/postinst
@@ -22,7 +22,7 @@
 # Source debconf library.
 . /usr/share/debconf/confmodule
 
-MADLIB_VERSION="1.21.0-dev"
+MADLIB_VERSION="1.21.0"
 MADLIB_INSTALL_PATH="InstallPathNotFound"
 
 # Fetching configuration from debconf
diff --git a/deploy/postflight.sh b/deploy/postflight.sh
index c1de791..cecd023 100755
--- a/deploy/postflight.sh
+++ b/deploy/postflight.sh
@@ -2,7 +2,7 @@
 
 # $0 - Script Path, $1 - Package Path, $2 - Target Location, and $3 - Target Volume
 
-MADLIB_VERSION=1.21.0-dev
+MADLIB_VERSION=1.21.0
 
 # Remove existing soft links
 find $2/usr/local/madlib/bin -depth -type l -exec rm {} \; 2>/dev/null
diff --git a/pom.xml b/pom.xml
index ac46599..738d3e5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
 
   <groupId>org.apache.madlib</groupId>
   <artifactId>madlib</artifactId>
-  <version>1.21.0-dev</version>
+  <version>1.21.0</version>
   <packaging>pom</packaging>
 
   <build>
diff --git a/src/config/Version.yml b/src/config/Version.yml
index d32d6df..937913f 100644
--- a/src/config/Version.yml
+++ b/src/config/Version.yml
@@ -1 +1 @@
-version: 1.21.0-dev
+version: 1.21.0
diff --git a/src/madpack/changelist_1.20.0_1.21.0.yaml b/src/madpack/changelist_1.20.0_1.21.0.yaml
new file mode 100644
index 0000000..1f96347
--- /dev/null
+++ b/src/madpack/changelist_1.20.0_1.21.0.yaml
@@ -0,0 +1,58 @@
+# ------------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ------------------------------------------------------------------------------
+
+# Changelist for MADlib version rel/v1.20.0 to release-121
+
+# This file contains all changes that were introduced in a new version of
+# MADlib. This changelist is used by the upgrade script to detect what objects
+# should be upgraded (while retaining all other objects from the previous version)
+
+# New modules (actually .sql_in files) added in upgrade version
+# For these files the sql_in code is retained as is with the functions in the
+# file installed on the upgrade version. All other files (that don't have
+# updates), are cleaned up to remove object replacements
+new module:
+
+# Changes in the types (UDT) including removal and modification
+udt:
+    xgb_gridsearch_train_results_type:
+
+# List of the UDF changes that affect the user externally. This includes change
+# in function name, return type, argument order or types, or removal of
+# the function. In each case, the original function is as good as removed and a
+# new function is created. In such cases, we should abort the upgrade if there
+# are user views dependent on this function, since the original function will
+# not be present in the upgraded version.
+udf:
+    - __xgboost_train_parallel__:
+        rettype: schema_madlib.xgb_gridsearch_train_results_type
+        argument: bytea, text[], text, text, text, numeric, text, text
+
+# Changes to aggregates (UDA) including removal and modification
+# Overloaded functions should be mentioned separately
+uda:
+
+# List of the UDC, UDO and UDOC changes.
+udc:
+
+# Changes in the operators (UDO)
+udo:
+
+# Changes in the operator classes (UDOC)
+udoc:
diff --git a/src/ports/postgres/modules/deep_learning/madlib_keras.sql_in b/src/ports/postgres/modules/deep_learning/madlib_keras.sql_in
index edca262..a30b394 100644
--- a/src/ports/postgres/modules/deep_learning/madlib_keras.sql_in
+++ b/src/ports/postgres/modules/deep_learning/madlib_keras.sql_in
@@ -1143,7 +1143,7 @@
 start_training_time       | 2021-02-01 15:58:43.760568
 end_training_time         | 2021-02-01 15:58:44.470054
 metrics_elapsed_time      | {0.709463119506836}
-madlib_version            | 1.21.0-dev
+madlib_version            | 1.21.0
 num_classes               | {3}
 dependent_vartype         | {"character varying"}
 normalizing_const         | 1
@@ -1457,7 +1457,7 @@
 start_training_time       | 2021-01-29 14:41:16.943861
 end_training_time         | 2021-01-29 14:41:19.478149
 metrics_elapsed_time      | {2.3377411365509,2.42358803749084,2.49885511398315,2.53427410125732}
-madlib_version            | 1.21.0-dev
+madlib_version            | 1.21.0
 num_classes               | {3}
 dependent_vartype         | {"character varying"}
 normalizing_const         | 1
@@ -1627,7 +1627,7 @@
 start_training_time       | 2021-01-29 14:42:28.780276
 end_training_time         | 2021-01-29 14:42:31.177561
 metrics_elapsed_time      | {2.24628114700317,2.28473520278931,2.32178020477295,2.35844302177429,2.39726710319519}
-madlib_version            | 1.21.0-dev
+madlib_version            | 1.21.0
 num_classes               | {3}
 dependent_vartype         | {"character varying"}
 normalizing_const         | 1
@@ -1742,7 +1742,7 @@
 start_training_time       | 2021-01-29 14:44:51.176983
 end_training_time         | 2021-01-29 14:44:53.666457
 metrics_elapsed_time      | {2.48945999145508}
-madlib_version            | 1.21.0-dev
+madlib_version            | 1.21.0
 num_classes               | {3}
 dependent_vartype         | {"character varying"}
 normalizing_const         | 1
diff --git a/src/ports/postgres/modules/deep_learning/madlib_keras_automl.sql_in b/src/ports/postgres/modules/deep_learning/madlib_keras_automl.sql_in
index 1cb853d..0447610 100644
--- a/src/ports/postgres/modules/deep_learning/madlib_keras_automl.sql_in
+++ b/src/ports/postgres/modules/deep_learning/madlib_keras_automl.sql_in
@@ -1091,7 +1091,7 @@
 description               |
 start_training_time       | 2021-01-16 01:20:17
 end_training_time         | 2021-01-16 01:21:47
-madlib_version            | 1.21.0-dev
+madlib_version            | 1.21.0
 num_classes               | 3
 class_values              | {Iris-setosa,Iris-versicolor,Iris-virginica}
 dependent_vartype         | character varying
@@ -1220,7 +1220,7 @@
 description               |
 start_training_time       | 2020-10-23 00:24:43
 end_training_time         | 2020-10-23 00:28:41
-madlib_version            | 1.21.0-dev
+madlib_version            | 1.21.0
 num_classes               | 3
 class_values              | {Iris-setosa,Iris-versicolor,Iris-virginica}
 dependent_vartype         | character varying
diff --git a/src/ports/postgres/modules/deep_learning/madlib_keras_fit_multiple_model.sql_in b/src/ports/postgres/modules/deep_learning/madlib_keras_fit_multiple_model.sql_in
index 25c2f46..3664c70 100644
--- a/src/ports/postgres/modules/deep_learning/madlib_keras_fit_multiple_model.sql_in
+++ b/src/ports/postgres/modules/deep_learning/madlib_keras_fit_multiple_model.sql_in
@@ -1080,7 +1080,7 @@
 description               | 
 start_training_time       | 2021-02-05 00:40:42.695613
 end_training_time         | 2021-02-05 00:42:20.796712
-madlib_version            | 1.21.0-dev
+madlib_version            | 1.21.0
 num_classes               | {1}
 class_text_class_values   | {Iris-setosa,Iris-versicolor,Iris-virginica}
 dependent_vartype         | {"character varying"}
@@ -1245,7 +1245,7 @@
 description               | Model selection for iris dataset
 start_training_time       | 2021-02-05 01:03:11.337798
 end_training_time         | 2021-02-05 01:05:14.988912
-madlib_version            | 1.21.0-dev
+madlib_version            | 1.21.0
 num_classes               | {1}
 class_text_class_values   | {Iris-setosa,Iris-versicolor,Iris-virginica}
 dependent_vartype         | {"character varying"}
@@ -1419,7 +1419,7 @@
 description               | Simple MLP for iris dataset
 start_training_time       | 2021-02-05 01:17:19.432839
 end_training_time         | 2021-02-05 01:18:09.062384
-madlib_version            | 1.21.0-dev
+madlib_version            | 1.21.0
 num_classes               | {1}
 class_text_class_values   | {Iris-setosa,Iris-versicolor,Iris-virginica}
 dependent_vartype         | {"character varying"}
diff --git a/src/ports/postgres/modules/svm/svm.sql_in b/src/ports/postgres/modules/svm/svm.sql_in
index a1232ca..131e6be 100644
--- a/src/ports/postgres/modules/svm/svm.sql_in
+++ b/src/ports/postgres/modules/svm/svm.sql_in
@@ -938,7 +938,7 @@
 <pre class="result">
 -[ RECORD 1 ]--------+------------------------------------------------------------------------------------
 method               | SVR
-version_number       | 1.21.0-dev
+version_number       | 1.21.0
 source_table         | abalone
 model_table          | abalone_svm_gaussian_regression
 dependent_varname    | rings