diff --git a/applications/plugins/org.csstudio.archive.reader.rdb/preferences.ini b/applications/plugins/org.csstudio.archive.reader.rdb/preferences.ini
index fa77b06a56c..04014f24d07 100644
--- a/applications/plugins/org.csstudio.archive.reader.rdb/preferences.ini
+++ b/applications/plugins/org.csstudio.archive.reader.rdb/preferences.ini
@@ -27,5 +27,8 @@ fetch_size=1000
# MySQL:
# use_stored_procedure=archive.get_browser_data
+# PostgreSQL
+# use_stored_procedure=public.get_browser_data
+
# Don't use stored procedure
-use_stored_procedure=
\ No newline at end of file
+use_stored_procedure=
diff --git a/applications/plugins/org.csstudio.archive.reader.rdb/src/org/csstudio/archive/reader/rdb/RDBArchiveReader.java b/applications/plugins/org.csstudio.archive.reader.rdb/src/org/csstudio/archive/reader/rdb/RDBArchiveReader.java
index 7b5ebfd3ffe..46af8379f68 100644
--- a/applications/plugins/org.csstudio.archive.reader.rdb/src/org/csstudio/archive/reader/rdb/RDBArchiveReader.java
+++ b/applications/plugins/org.csstudio.archive.reader.rdb/src/org/csstudio/archive/reader/rdb/RDBArchiveReader.java
@@ -114,7 +114,7 @@ public RDBArchiveReader(final String url, final String user,
break;
case PostgreSQL:
is_oracle = false;
- this.stored_procedure = "";
+ this.stored_procedure = stored_procedure;
break;
case Oracle:
is_oracle = true;
diff --git a/applications/plugins/org.csstudio.archive.reader.rdb/src/org/csstudio/archive/reader/rdb/StoredProcedureValueIterator.java b/applications/plugins/org.csstudio.archive.reader.rdb/src/org/csstudio/archive/reader/rdb/StoredProcedureValueIterator.java
index 8c00382f77b..c70e2c6a2ec 100644
--- a/applications/plugins/org.csstudio.archive.reader.rdb/src/org/csstudio/archive/reader/rdb/StoredProcedureValueIterator.java
+++ b/applications/plugins/org.csstudio.archive.reader.rdb/src/org/csstudio/archive/reader/rdb/StoredProcedureValueIterator.java
@@ -10,8 +10,12 @@
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
+import java.sql.Types;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.sql.Date;
import java.util.List;
+import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -81,6 +85,9 @@ private void executeProcedure(final Timestamp start, final Timestamp end,
case MySQL:
sql = "{call " + stored_procedure + "(?, ?, ?, ?)}";
break;
+ case PostgreSQL:
+ sql = "{? = call " + stored_procedure + "(?, ?, ?, ?)}";
+ break;
case Oracle:
sql = "begin ? := " + stored_procedure + "(?, ?, ?, ?); end;";
break;
@@ -104,6 +111,26 @@ private void executeProcedure(final Timestamp start, final Timestamp end,
statement.setInt(4, count);
result = statement.executeQuery();
}
+ else if(dialect == RDBUtil.Dialect.PostgreSQL)
+ { //PostgreSQL
+ boolean autoCommit = reader.getRDB().getConnection().getAutoCommit();
+ // Disable auto-commit to determine sample with PostgreSQL when fetch direction is FETCH_FORWARD
+ if (autoCommit) {
+ reader.getRDB().getConnection().setAutoCommit(false);
+ }
+ statement.registerOutParameter(1, Types.OTHER);
+ statement.setLong(2, channel_id);
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
+ statement.setString(3, sdf.format(new Date(TimestampHelper.toSQLTimestamp(start).getTime())));
+ statement.setString(4, sdf.format(new Date(TimestampHelper.toSQLTimestamp(end).getTime())));
+ statement.setLong(5, count);
+ statement.setFetchDirection(ResultSet.FETCH_FORWARD);
+ statement.setFetchSize(1000);
+ statement.execute();
+ result = (ResultSet) statement.getObject(1);
+ }
+
else
{ //ORACLE
statement.registerOutParameter(1, OracleTypes.CURSOR);
@@ -246,5 +273,14 @@ public void close()
super.close();
index = -1;
values = null;
+ if (reader.getRDB().getDialect() == Dialect.PostgreSQL) {
+ // Restore default auto-commit on result set close
+ try {
+ reader.getRDB().getConnection().setAutoCommit(true);
+ } catch (Exception e) {
+ // Ignore
+ }
+ }
+
}
}
diff --git a/products/ITER/features/org.eclipse.iter.ui.feature/feature.xml b/products/ITER/features/org.eclipse.iter.ui.feature/feature.xml
index 06fd054b38d..50519bfe1df 100644
--- a/products/ITER/features/org.eclipse.iter.ui.feature/feature.xml
+++ b/products/ITER/features/org.eclipse.iter.ui.feature/feature.xml
@@ -88,7 +88,7 @@ of the distribution package.
-
+
diff --git a/products/ITER/products/org.csstudio.iter.alarm.beast.server.product/demo/m-TEST-BEAST/src/main/beast/jms.ini b/products/ITER/products/org.csstudio.iter.alarm.beast.server.product/demo/m-TEST-BEAST/src/main/beast/jms.ini
index 6606b40c458..2366c86ac17 100755
--- a/products/ITER/products/org.csstudio.iter.alarm.beast.server.product/demo/m-TEST-BEAST/src/main/beast/jms.ini
+++ b/products/ITER/products/org.csstudio.iter.alarm.beast.server.product/demo/m-TEST-BEAST/src/main/beast/jms.ini
@@ -1,7 +1,9 @@
org.csstudio.logging.jms2rdb/httpd_port=4914
org.csstudio.logging.jms2rdb/jms_url=failover:(tcp://localhost:61616)
org.csstudio.logging.jms2rdb/jms_topic=demo_SERVER, demo_CLIENT, demo_TALK, LOG, TALK, WRITE
-org.csstudio.logging.jms2rdb/rdb_url=jdbc:postgresql://localhost/css_log_3_0_0?user=log&password=$log
+org.csstudio.logging.jms2rdb/rdb_url=jdbc:postgresql://localhost/css_log_3_0_0
+org.csstudio.logging.jms2rdb/rdb_user=log_ro
+org.csstudio.logging.jms2rdb/rdb_password=$log
org.csstudio.logging.jms2rdb/rdb_schema=
diff --git a/products/ITER/products/org.csstudio.iter.css.product/css.sh b/products/ITER/products/org.csstudio.iter.css.product/css.sh
index cbfb90b93c2..5eb290af059 100755
--- a/products/ITER/products/org.csstudio.iter.css.product/css.sh
+++ b/products/ITER/products/org.csstudio.iter.css.product/css.sh
@@ -1,8 +1,8 @@
#!/bin/bash
#+======================================================================
-# $HeadURL: https://svnpub.iter.org/codac/iter/codac/dev/units/m-css-iter/trunk/org.csstudio.iter.css.product/css.sh $
-# $Id: css.sh 31100 2012-10-23 20:17:15Z zagara $
+# $HeadURL: https://svnpub.iter.org/codac/iter/codac/dev/units/m-css/trunk/products/ITER/products/org.csstudio.iter.css.product/css.sh $
+# $Id: css.sh 49232 2014-08-25 15:17:45Z zagara $
#
# Project : CODAC Core System
#
@@ -28,23 +28,25 @@ CODAC_ROOT=$(readlink -f "$0" | sed -n -e 's|^\(/[^/]*/[^/]*\)/.*|\1|p')
# If user args do not contain any argument starting with -
# add --launcher.openFile before to interpret them as files to open
-OPEN_FILE_ARG="--launcher.openFile"
-USER_ARGS=""
+OPEN_FILES=()
+USER_ARGS=()
while [ -n "$1" ]; do
case $1 in
+ --launcher.openFile)
+ ;;
+ -*)
+ USER_ARGS=("${USER_ARGS[@]}" "$1")
+ ;;
*)
- USER_ARGS="${USER_ARGS:+${USER_ARGS} }\"$1\"";
- if [[ "${1:0:1}" == "-" ]]; then
- OPEN_FILE_ARG="";
- fi
- shift 1;;
+ OPEN_FILES=("${OPEN_FILES[@]}" "$(readlink -fm "$1")")
+ ;;
esac
+ shift 1
done
-if [[ USER_ARGS != "" ]]; then
- USER_ARGS="${OPEN_FILE_ARG} ${USER_ARGS}"
+if [ ${#OPEN_FILES[@]} -gt 0 ]; then
+ USER_ARGS=("${USER_ARGS[@]}" "--launcher.openFile" "${OPEN_FILES[@]}")
fi
-
-set -- ${USER_ARGS} -share_link /opt/codac/opi=CSS/opi,/opt/codac/examples=CSS/examples,/opt/codac/opi/boy/SymbolLibrary=CSS/SymbolLibrary
+set -- -share_link /opt/codac/opi=CSS/opi,/opt/codac/examples=CSS/examples,/opt/codac/opi/boy/SymbolLibrary=CSS/SymbolLibrary "${USER_ARGS[@]}"
. ${CODAC_ROOT}/bin/codacenv
. ${CODAC_ROOT}/bin/css-wrapper-script
diff --git a/products/ITER/products/org.csstudio.iter.css.product/plugin_customization.ini b/products/ITER/products/org.csstudio.iter.css.product/plugin_customization.ini
index 09efe20ea64..7d3d8157cce 100644
--- a/products/ITER/products/org.csstudio.iter.css.product/plugin_customization.ini
+++ b/products/ITER/products/org.csstudio.iter.css.product/plugin_customization.ini
@@ -113,6 +113,9 @@ org.csstudio.utility.pvmanager.loc/zero_initialization=true
org.csstudio.trends.databrowser2/urls=jdbc:postgresql://localhost/css_archive_3_0_0|Archive RDB
org.csstudio.trends.databrowser2/email_default_sender=CSS Data Browser
+#PostgreSQL stored procedure
+org.csstudio.archive.reader.rdb/use_stored_procedure=public.get_browser_data
+
# Default data sources for newly added channels
# Format: ||
# xnds: URLs use the key. Other URLs might ignore the key.
diff --git a/products/ITER/products/org.csstudio.iter.jms2rdb.product/plugin_customization.ini b/products/ITER/products/org.csstudio.iter.jms2rdb.product/plugin_customization.ini
index 09e01db6695..8cbb194716c 100755
--- a/products/ITER/products/org.csstudio.iter.jms2rdb.product/plugin_customization.ini
+++ b/products/ITER/products/org.csstudio.iter.jms2rdb.product/plugin_customization.ini
@@ -2,7 +2,9 @@
org.csstudio.logging.jms2rdb/jms_topic=CODAC_AlarmHandler_SERVER, CODAC_AlarmHandler_CLIENT, CODAC_AlarmHandler_TALK, LOG, TALK, WRITE
# Database connection
-org.csstudio.logging.jms2rdb/rdb_url=jdbc:postgresql://localhost/css_log_3_0_0?user=log&password=$log
+org.csstudio.logging.jms2rdb/rdb_url=jdbc:postgresql://localhost/css_log_3_0_0
+org.csstudio.logging.jms2rdb/rdb_user=log_ro
+org.csstudio.logging.jms2rdb/rdb_password=$log
# Logging preferences
org.csstudio.logging/file_level=CONFIG