精华内容
下载资源
问答
  • 登录zabbix4.0界面,出现报错:SQL statement execution has failed "INSERT INTO sessions (sessionid,userid,lastaccess,status) VALUES ('6d1a0523bd8cd53179fcdfc3c397d343','1','1608889582','0')". 我遇到的...

    登录zabbix4.0界面,出现报错:SQL statement execution has failed "INSERT INTO sessions (sessionid,userid,lastaccess,status) VALUES ('6d1a0523bd8cd53179fcdfc3c397d343','1','1608889582','0')".

    我遇到的情况是服务器突然断电,再开机后登录zabbix web界面出现此情况

    初步判断为mysql数据库文件损坏,而且数据很重要,立马做了以下备份操作

    1.发现数据库登录失败,挂掉了,服务已经不存在

    日志疯狂报错

    进入紧急模式,先导出一份数据出来,修改mariadb 的my.cnf配置

    [root@zabbix ~]# vim /etc/my.cnf
    
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    # Settings user and group are ignored when systemd is used.
    # If you need to run mysqld under a different user or group,
    # customize your systemd unit file for mariadb according to the
    # instructions in http://fedoraproject.org/wiki/Systemd
    innodb_force_recovery = 6
    innodb_purge_thread = 0
    [mysqld_safe]
    log-error=/var/log/mariadb/mariadb.log
    pid-file=/var/run/mariadb/mariadb.pid
    
    #
    # include all files from the config directory
    #
    !includedir /etc/my.cnf.d
    

    innodb_force_recovery=0   表示当需要恢复时执行所有的恢复操作;

    innodb_force_recovery=1   表示忽略检查到的corrupt页;

    innodb_force_recovery=2   表示阻止主线程的运行,如主线程需要执行full purge操作,会导致crash;

    innodb_force_recovery=3   表示不执行事务回滚操作;

    innodb_force_recovery=4   表示不执行插入缓冲的合并操作;

    innodb_force_recovery=5   表示不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交;

    innodb_force_recovery=6   表示不执行前滚的操作,强制重启!

     注:我这里的环境不加innodb_purge_thread = 0 服务依然启动不起来,具体原因不明
    重新启动服务
    [root@zabbix ~]# systemctl start mariadb
    [root@zabbix ~]# systemctl status mariadb
    ● mariadb.service - MariaDB database server
       Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
       Active: active (running) since 五 2020-12-25 18:06:59 CST; 50s ago
      Process: 73481 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
      Process: 73444 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
     Main PID: 73480 (mysqld_safe)
       CGroup: /system.slice/mariadb.service
               ├─73480 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
               └─73665 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/maria...
    
    12月 25 18:06:57 zabbix systemd[1]: Starting MariaDB database server...
    12月 25 18:06:57 zabbix mariadb-prepare-db-dir[73444]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done.
    12月 25 18:06:57 zabbix mariadb-prepare-db-dir[73444]: If this is not the case, make sure the /var/lib/mysql is empty before running ma...b-dir.
    12月 25 18:06:57 zabbix mysqld_safe[73480]: 201225 18:06:57 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
    12月 25 18:06:58 zabbix mysqld_safe[73480]: 201225 18:06:58 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    12月 25 18:06:59 zabbix systemd[1]: Started MariaDB database server.
    Hint: Some lines were ellipsized, use -l to show in full.
    

     导出zabbix数据库的数据到根目录命名为zabbix.sql

    [root@zabbix ~]# mysqldump --single-transaction -u root -h 127.0.0.1 --password=vrgv123.  zabbix  > /zabbix.sql
    
     导出之后,把之前的mariadb数据库重新安装,这里需要注意下,使用yum remove 卸载时,data数据可能还在,需要通过/etc/my.cfg文件查看下data具体路径,删除后,再重新安装mariadb,之后设置zabbix用户权限,导入zabbix.sql文件到zabbix数据库,,重新启动zabbix服务恢复正常
    展开全文
  • 报错提示:SQL statement execution has failed "INSERT INTO sessions (sessionid,userid,lastaccess,status) VALUES ('a76ecbade0f8496adcade2c6c3156830','1','1615907275','0')" ===========================...

    报错提示:SQL statement execution has failed "INSERT INTO sessions (sessionid,userid,lastaccess,status) VALUES ('a76ecbade0f8496adcade2c6c3156830','1','1615907275','0')"

    案例的zabbix环境配置:

    =======================================================================

    解决方案:登录Mysql,SET GLOBAL read_only=off; 测试解决!

    ========================================================================

    修改参数: 测试成功后记得在mysql的配置文件里也修改一下,下次MySQL重启时不用再次修改;

    登录成功!

    其他相关问题:

    问题一描述:手动修改了Zabbix的密码,重启数据库后报错:UPDATE users SET passwd='$2y$10$8fF6########BVYFCRJ0hRz81lL01I.jifvUw$$6' WHERE userid='1'

    解决方式:初步判断是可能zabbix没有权限:select user,host from mysql.user;查看当前的zabbix用户;  grant all on zabbix.* to  'zabbix'@'%';  敷了一波权限;

    =======================分割线==================================

    问题二描述:虚拟机环境测试时,换了个网络环境(从公司到住处),虚拟机的IP换了,zabbix网址打不开

    解决方式:应是zabbix server配置问题,vim /etc/zabbix/web/zabbix.conf.php  更新DBServer IP为DB的当前IP地址; systemctl  restart  zabbix-server zabbix-agent httpd 重启一下zabbix服务;

    ps:其实遇到了n个问题,凭搜索大法多可以搜到,这几个不好搜Mark在这里吧~~~

    =======================分割线==================================

     

    ==End,就总结到这里,若有疑问欢迎评论交流,如果觉得对你有帮助,可以小小的赞赏一杯奶茶钱,谢谢!! ==

    123哦

     

     

     

     

     

     

     

     

    展开全文
  • $add_sql = "INSERT into sessionBasket (userid) VALUES ( '". isset($_SESSION["userid"]) ? $_SESSION["userid"] : "") ."'"; <p>It would save me so much time on variable checking and branching because ...
  • activiti中的bug列表

    万次阅读 2016-11-21 17:30:42
    ] - An enum type form property in model designed in Activiti modeler does not show during execution [ ACT-2221 ] - Admin completed instances > show variable id instead of name [ ACT-2231 ] - type ENUM...

    分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519)

    Bug

    • [ACT-1968] - Custom Database schema on PostgreSQL not working
    • [ACT-4113] - REST Task API Not working: /service/runtime/tasks?assigneeLike=XX and service/runtime/tasks?ownerLike=YY
    • [ACT-4193] - Bug in 'Like' expressions in Activiti Rest?
    • [ACT-4199] - DefaultDeploymentCache uses non thread safe HashMap
    • [ACT-4212] - Mutating list variable for users in parallel multi instance tasks causes floating executions

    Task

    • [ACT-4210] - Add category as query param and json field for Task Rest API

    Improvement

    • [ACT-4074] - Activiti Spring Boot REST API starter does not use IdentityServiceUserDetailsService
    • [ACT-4206] - Webservice endpoint address should be customizable

    Release Notes - Activiti - Version 5.21.0

    Highlights

    This release contains some quite important bugfixes, more specifically

    • it fixes some cases where the end time was not set for activities in a process definition under certain conditions.
    • A concurrency bug was discovered when using delegateExpressions together with field injection. Make sure to read the updated documentation section on the use of 'delegateExpression'.

    Included in this release is the 'secure scripting' feature (for javascript), which allows to execute scripts in a secure way. You can find the documentation in the 'advanced' section of the user guide.

    All changes:

    Bug

    • [ACT-2081] - taskCandidateOrAssigned doesn't work with custom GroupEntityManager and UserEntityManager
    • [ACT-4090] - Boundary timer with fixed number of repeats fires all events at once when attached to nested activity
    • [ACT-4152] - Task Category not included in query result under MS SQL Server 2012
    • [ACT-4171] - End time incorrectly set on multi-instance subprocess historic activity
    • [ACT-4172] - DelegateExpression usage not thread-safe
    • [ACT-4176] - End time not correctly set on historic activity
    • [ACT-4185] - NullpointerException occured on referring HistoricVariableUpdate(Serializable Type)
    • [ACT-4186] - ConcurrentModificationException when event listener removes itself
    • [ACT-4189] - Process diagram generator: support multiple pools
    • [ACT-4190] - Job with null due date is never picked up again
    • [ACT-4181] - fix or queries containing processDefinitionKey clause eliminated adhoc tasks from result set
    • [ACT-4184] - Fetching historic task with task local and process variables returns current task variables

    New Feature

    • [ACT-4166] - Support for multiple signal start events
    • [ACT-4167] - Support for multiple timer start events
    • [ACT-4177] - Secure scripting feature
    • [ACT-4179] - Allow to set business calendar on timer event definition
    • [ACT-4180] - Process diagram generator: allow to change font for annotations
    • [ACT-4182] - Query historic variables with a list of execution/task ids
    • [ACT-4183] - Explorer: omitting the protocol (scheme) in order to preserve the protocol of the current page
    • [ACT-4187] - Make variable limit configurable when fetching variables
    • [ACT-4188] - Add support for associations in auto layout and diagram generator

    Improvement

    • [ACT-2146] - Consider switching around the firing of TaskListeners and ActivitiEventListeners

    Release Notes - Activiti - Version 5.20.0

    Highlights

    This is a bugfix release (mainly fixing the bug around losing message and signal start event subscriptions on process definition redeployment, see ACT-4117).

    Bug

    • [ACT-2163] - Fix some bugs and optimize display on text in workflow drawing
    • [ACT-4051] - Spring Boot support does not discover processes in external JARs
    • [ACT-4097] - Subprocess start events not present in historic activity instance list
    • [ACT-4101] - NPE when there are multiple routes to terminateEndEvent, and both are reached
    • [ACT-4109] - Database exception when using both processInstanceId and executionId on HistoricVariableInstanceQuery
    • [ACT-4112] - Subscribed Event Deleted after the related process is redeployed (MySQL database)
    • [ACT-4117] - Signal and Boundary event subscription are lost when deploying a new process definition version
    • [ACT-4118] - Signal and Message start event are not restored when deleting the latest version of a deployment
    • [ACT-4119] - Stale ProcessDefinition cache when modifying the suspensionState
    • [ACT-4130] - Unused assignment and possible integer overflow
    • [ACT-4131] - Message events are not restored after deployment for processes with tenant id
    • [ACT-4137] - Historic process instance endTime not set when using terminate end event

    Task

    • [ACT-4091] - Tasks list empty in executionEntity
    • [ACT-4104] - Boundary message event isn't exported

    Improvement

    • [ACT-4064] - Missing some search filters in "Get historic task instances" REST service

    Release Notes - Activiti - Version 5.19.0

    Highlights

    • We introduced a new service DynamicBpmnService that allows you to change a defined set of properties of a process definition without needing to redeployhttp://bpmn20inaction.blogspot.com/2015/10/adding-dynamic-behaviour-to-activiti.html
    • Improved support for the terminate end event. According to the BPMN spec a terminate end event should only terminate the current scope. So in case of a multi instance sub process, a terminate end event inside that multi instance sub process should only kill a single instance and the rest of the instances (of the multi instance) will continue. And in case a call activity kicks off a sub process, a terminate end event in the sub process will only kill the sub process instance, and the parent process will continue. We've added a new attribute on the terminate end event (activiti:terminateAll) that allows you to terminate all parent scopes if the value is set to true. By default only the current scope is killed.
    • ACT-4072 was fixed, a repeating timer (time cycle) now works according to the defined duration values
    • Various bug fixes

    Check out the Release notes for more details

    Bug fixes and various smaller improvements

    Bug

    • [ACT-1768] - Revision of same variable is always zero
    • [ACT-2129] - Activiti can't store string variables with length >2000 and <4000 characters in oracle db
    • [ACT-2163] - Fix some bugs and optimize display on text in workflow drawing
    • [ACT-3997] - Validate bpmn components for max length
    • [ACT-4066] - Timer Start Event ignores Time Cycle value if iteration count not present
    • [ACT-4069] - Activiti Spring Boot REST API starter incompatible with Spring Boot HATEOAS starter
    • [ACT-4079] - NullPointerException in DbSqlSessionFactory.isBulkInsertable() when Custom Entity is inserted
    • [ACT-4084] - Multi instance parallel task fails with empty collection

    New Feature

    • [ACT-4010] - Design tools should support message artifact - what is the runtime implementation for registering custom messages?

    Task

    • [ACT-4045] - enable shared process definitions per tenants
    • [ACT-4072] - Repeating timer with no repetition bound does not follow duration
    • [ACT-4080] - Verify terminate end behavior

    Release Notes - Activiti - Version 5.18.0

    Highlights

    • We introduced bulk inserts. For more information you can read more about it in this blog post http://www.jorambarrez.be/blog/2015/07/20/the-activiti-performance-showdown-2015/
    • We enhanced the OR query support, it's now possible to use multiple OR parts in one query
    • Improvements to the async executor we introduced in Activiti 5.17.0. There were some cases that could result in deadlock exceptions and that's resolved in this version.
    • Improvements to the Activiti Modeler with terminate end events, cancel event and transaction support, and more intermediate catch and throw event support. Also, improvements to interrupting and non-interrupting solid and dashed line for boundary events.
    • Upgraded Spring dependency version to 4.1. Activiti is still working with Spring 4.0.x and 3.x as well
    • Various bug fixes

    Known issues

    • There's a known issue with Chrome and the Activiti Explorer / Vaadin 6. You can get a blank screen in the details part of the Explorer. This is a known issue for Vaadin 6 and Chrome 43 and 44. There are bug fixes under way with Chrome 45, so that might fix it. Other browsers like Firefox work fine.

    Backwards incompatible changes

    • https://activiti.atlassian.net/browse/ACT-2186 : When variables are removed, the historic variable entry is also removed. In earlier versions, the value of the historic variable was set tonull.
    • https://activiti.atlassian.net/browse/ACT-4036 : when using an execution listener for the start event, in combination with multi instance, the behavior is changed. In 5.18, there will be one extra invocation of the execution listener (when entering the multi instance, without the loopCounter variable being said). For more information, check the section Multi instance and execution listeners in the user guide.

    Bug fixes and various smaller improvements

    Check out the Release notes for more details

    Bug

    • [ACT-2100] - Compensation event endTime is not logged
    • [ACT-2173] - Add support of import relative to the BPMN description
    • [ACT-2175] - NPE when retrieving a local variable with a null value multiple times
    • [ACT-2176] - SkipExpression support is not completing skipped user tasks
    • [ACT-2179] - unable to use Date process variable in timeDuration
    • [ACT-2182] - Historic process instance query is missing columns for MS SQL
    • [ACT-2185] - Unexpected behavior calling a suspended process as a called activity
    • [ACT-2186] - Historic variable is not removed when variable is removed
    • [ACT-2188] - New Modeler - Missing "cancelActivity" in the BoundaryMessageEvent
    • [ACT-2194] - NPE when using parallel multi-instance on embedded subprocess
    • [ACT-2195] - Int type for data object not working in Activiti Designer
    • [ACT-2198] - Exporting/importing model changes name of Message
    • [ACT-2199] - Boundary Signal Event ignores "cancel activity" flag
    • [ACT-2203] - Fix potential null pointer deferences and other
    • [ACT-2210] - Add support for terminate event in Modeler
    • [ACT-2217] - JPAEntityScanner / EntityMetaData cannot deal with Id methods defined in generic super classes
    • [ACT-2219] - Wrong redirected URI when converting a deployed process to editable model
    • [ACT-2220] - An enum type form property in model designed in Activiti modeler does not show during execution
    • [ACT-2221] - Admin completed instances > show variable id instead of name
    • [ACT-2231] - type ENUM not supported in Activti 5.17
    • [ACT-2232] - Activiti REST not support Groovy script
    • [ACT-2236] - Import of process model corrupts boundary events
    • [ACT-3999] - ClassCastException when importing a WSDL
    • [ACT-4001] - CxfWsdlImporter does not import correctly inherited types
    • [ACT-4011] - Duplicate event when deleting a candidate group
    • [ACT-4012] - IllegalArgumentException when invoking a service task requiring a date
    • [ACT-4021] - Asynchronous tasks on model created via the AngularJS modeler are handled as synchronous ones
    • [ACT-4022] - TimerStartEvent with Time Cycle fires erratically
    • [ACT-4025] - Problem import / export task listeners in Alfresco Modeler
    • [ACT-4026] - DB2/LINUXPPC64 not supported by the Activiti workflow engine
    • [ACT-4032] - Activiti Explorer fails to render this process when uploaded
    • [ACT-4034] - ProcessDefinitionQuery doesn't account for tenantId
    • [ACT-4035] - async executor with all jobs set to exclusive executes in parallel
    • [ACT-4036] - Multi instance: loopCounter is null in the first iteration
    • [ACT-4038] - Database product name support for DB2 for z/OS
    • [ACT-4041] - formKey return value is null when using taskQuery with includeProcessVariables()
    • [ACT-4042] - BulkInsert fails on DB2 (zos)

    Improvement

    • [ACT-2066] - Add index on ACT_HI_TASKINST(PROC_INST_ID_)
    • [ACT-2135] - Limit copied camel properties to activiti
    • [ACT-2189] - Extension elements are not parsed from Lane definition
    • [ACT-2200] - "call-activity" element click to related diagram in Eclipse activiti designer.(solved)
    • [ACT-2233] - Unable to override DbSqlSessionFactory via spring config
    • [ACT-4013] - Support for TerminateEndEvent in AngularJS Modeler
    • [ACT-4014] - Handle the bulk insert queries at db level

    New Feature

    • [ACT-1662] - New methods processDefinitionIds(Set<String> processDefinitionIds) and processDefinitionKeys(Set<String> processDefinitionKeys)
    • [ACT-1832] - Provide full support for TerminateEndEvent
    • [ACT-2008] - Support Attachments in MailActivityBehavior
    • [ACT-2196] - Query Tasks by multiple process instance ids
    • [ACT-2205] - Query historical processes by multiple process definition keys
    • [ACT-4004] - Add support for conditional events
    • [ACT-4005] - Add support for compensation boundary events, compensation intermediate throwing Events and compensation handlers
    • [ACT-4029] - Allow tasks, historic task instances and executions to be queried by a list of process definition keys
    • [ACT-4033] - Add execution id to Camel exchange for calling specific instance of a task

    Task

    • [ACT-4000] - HistoricVariableInstanceQuery does not support filtering by executionId
    • [ACT-4017] - Display BPMNs correctly when coordinates are negative
    • [ACT-4028] - Issue with DrawMultilineText method

    Release Notes - Activiti - Version 5.17.0

    Highlights

    • We introduced a fully tested and brand new Async executor, which supersedes the old Job executor. The new Async executor uses less database queries to execute asynchronous jobs and is more performant in general. By default the Activiti Engine still uses the old Job executor, so you have to explicitly choose for the new Async executor by setting the asyncExecutorEnabled property in the process engine configuration. For more details you can look at the advanced section of the user guide.
    • The Activiti Modeler is fully revised and is implemented using Angular JS. This is donated from the Alfresco Activiti BPMN editor that's part of the Alfresco Activiti Enterprise offering. The new Angular JS Activiti Modeler is LGPL licensed. Note that some dialogs are not yet ported to the new Activiti Modeler, but you'll also find quite a bit of new functionality, including Mule and Camel tasks and being able to define a sequence flow order for an exclusive gateway. Any help with adding new features is really appreciated.
    • The user guide has been revamped with a rewrite to AsciiDoc
    • It's now possible to start a process instance a skip tasks based on a skipExpression. This is very handy when you are migrating process instances to the Activiti Engine (thanks to Robert Hafner for the pull request).
    • We added a new module named activiti-jmx to the Activiti project, which enables JMX for the Activiti Engine. Read Saeids blog for more details (thanks Saeid).
    • Variable fetching has been optimized for process instances and executions in general.
    • The database upgrade scripts use a different minor version than the JAR version. With the 5.17.0 release, the database version is 5.17.0.2. This versioning enables us to release snapshots and still be able to upgrade from a snapshot release to a stable release. For a 5.17.1 release the database version will be 5.17.1.x where x can be any number. So only the last minor version number can differ from the Activiti Engine release version.

    Specific notes

    • Note that the version number is 5.17.0 instead of 5.17. Make sure you use version 5.17.0 for your Maven dependency.

    Bug fixes and various smaller improvements

    Check out the Release notes for more details

    Bug

    • [ACT-1527] - ProcessDiagramGenerator misses instructions for message start event
    • [ACT-1544] - Asynchronous Continuations join exception
    • [ACT-1849] - Null pointer exception when deploying a workflow created by Activiti explorer integrated workflow editor
    • [ACT-1900] - RuntimeService.getVariables(String, Collection) fetches all variables from DB
    • [ACT-2061] - Suspicious instanceOf test
    • [ACT-2062] - FeatureDescriptor's setValue method will not accept a null value
    • [ACT-2068] - update for redundant namespace usage
    • [ACT-2071] - Non executable processes are no validation failure
    • [ACT-2083] - Autolayout fails with subprocess data objects
    • [ACT-2084] - TaskService.unclaim(taskId) does not fire an ActivitiEvent
    • [ACT-2088] - drawEventBasedGateway does not work
    • [ACT-2093] - the label of sequenceFlow is wrong
    • [ACT-2096] - Deadlock while concurrently finishing process instances on MSSQL
    • [ACT-2102] - Duplicate condition in 'if' statement
    • [ACT-2103] - Sql bug with task query when using OR statement
    • [ACT-2116] - Fix unreachable code in org.activiti.engine.test.api.event.DatabaseEventLoggerTest
    • [ACT-2120] - JobRetryCmd doesn't use tenantId to query the activity
    • [ACT-2145] - Activiti Modeler UserTask form property expression problem
    • [ACT-2151] - Deployment fails when Intermediate Event is waiting for same message as start message
    • [ACT-2155] - Boolean field form is converted to String
    • [ACT-2157] - Activiti diagram drawing missing some nodes
    • [ACT-2159] - Infinite loop when using multi instance service task
    • [ACT-2164] - The converter BPMN to XML does not manage correctly /definitions/message/@itemRef
    • [ACT-2166] - Missing ${prefix} before ACT_ID_MEMBERSHIP in script /org/activiti/db/mapping/entity/Task.xml
    • [ACT-2168] - Standard XML preamble is missing on SOAP request sent
    • [ACT-2171] - NPE, integrity constraint violation, and timers firing after task completion on processes with certain combinations of timers, messages, and user tasks

    Improvement

    • [ACT-2089] - Task sorting on due date needs to place those with due date null after those with a duedate
    • [ACT-2091] - Add likeIgnoreCase for most used properties with like query
    • [ACT-2092] - Create parent interface for TaskQuery and HistoricTaskInstanceQuery that groups all common methods
    • [ACT-2094] - New method "getVariableInstances()" on VariableScopeImpl

    New Feature

    • [ACT-1963] - Data Object support for Activiti Modeler
    • [ACT-2073] - Document custom identity link feature in User Guide
    • [ACT-2074] - add support for custom identity links to Modeler

    Release Notes - Activiti - Version 5.16.4

    Highlights

    • First implementation of a new lock free job executor (New job executor wiki). Note that exclusive jobs and suspended process instances are not supported yet.
    • Restlet has been replaced with Spring MVC for the REST API

    Implementation changes

    • https://activiti.atlassian.net/browse/ACT-2071: A deployment must always contain at least one executable (property 'isExecutable' on the process element) process definition to be deployable. However, a deployment can now contain process definitions that are not executable. Before, any non-executable process definition would result in a validation error. Now, these are warnings which do not prevent the deployment.

    Release Notes - Activiti - Version 5.16.1

    Highlights

    • Bug fix for database constraint issue, introduced in 5.16
    • Basic OR query support for process instances and task. You can now query with one OR statement chain included using the query api

    Release Notes - Activiti - Version 5.16

    Highlights

    • Added Spring boot support and more Spring annotation support in general (thanks to Josh Long)
    • Refactoring of the job executor to simplify its logic and prevent possible long wait times.
    • Added new event log table that stores process engine events when wanted, by default this is switched off.
    • Introduction of Crystalball, which is an experimental new project that allows you to replay and simulate process instances (Thanks to Martin)
    • Upgraded to Spring 4.x and Restlet 2.2.x
    • Various fixes and improvements

    Bug fixes and various smaller improvements

    Check out the Release notes for more details

    Bug

    • [ACT-1945] - Empty diagram produces xml parse error
    • [ACT-1955] - Can not use table-driven editor (Kickstart) with LDAP-User
    • [ACT-1977] - 5.15.1 release missing activiti-process-validation jar file
    • [ACT-1978] - Obsolete signal subscriptions are not being removed, causing signals to be fired in old process definitions
    • [ACT-1988] - Camel routes containing activiti consumers cannot be adviced.
    • [ACT-1995] - ExtensionElement does not parse correctly and xml generation contains redundant namespace declarations
    • [ACT-2000] - custom attribute parser fails with empty string for namespace
    • [ACT-2005] - NPE ValuedDataObjectXMLConverter class for empty-valued data objects
    • [ACT-2016] - Tenancy does not work for call activity
    • [ACT-2023] - Optimize namespace usage - redundant namespace usage in XML
    • [ACT-2026] - Modeler workspace never opens
    • [ACT-2027] - MessageEventDefinitionParseHandler does not set extension elements.
    • [ACT-2033] - Camel component cannot be multi instance
    • [ACT-2042] - runtimeService.deleteProcessInstance does not set process instance end time when current activity is a scope
    • [ACT-2047] - Incorrect self comparison of value with itself
    • [ACT-2048] - Redundant null check in org.activiti.engine.impl.persistence.entity.JobEntity
    • [ACT-2049] - Multi tenancy support is not working in case of duplicate filtering while deploying processes
    • [ACT-2050] - Suspicious equals() test in org.activiti.engine.impl.persistence.entity.DeploymentEntityManager
    • [ACT-2052] - Subprocess DataObjects created in wrong scope.
    • [ACT-2055] - Subprocess extensions are not getting parsed
    • [ACT-2056] - Incorrect 'contains' comparison
    • [ACT-2057] - Equals method for ValuedDataObject should use .equals()
    • [ACT-2058] - Null deference possible
    • [ACT-2059] - Redundant null test in execute method
    • [ACT-2060] - Method uses the same code for two branches

    Improvement

    • [ACT-1987] - Portuguese brazilian translation of Activiti
    • [ACT-2002] - Upgrade Restlet & Jackson libraries
    • [ACT-2037] - Performance - Bulk deletion of variables at process end
    • [ACT-2051] - Code change: a null check is not needed before using instanceof.

    New Feature

    • [ACT-1996] - DiagramGenerator does not give possibility to change icons for custom service tasks
    • [ACT-2011] - Expose formKey on Task
    • [ACT-2038] - Custom IdentityLinkType support

    Wish

    • [ACT-2013] - support candidateGroupIn for runtime tasks in activiti-rest

    Release Notes - Activiti - Version 5.15.1

    Highlights

    • Bug fix release for a MySQL upgrade issue (more details here)
    • Some small improvements from pull requests

    Release Notes - Activiti - Version 5.15

    Highlights

    • Multi tanancy support added to Activiti, including the Java and REST API.
    • Added new event support to listen for events in the Activiti Engine, like task deleted, variable updated, process engine created and many more.
    • Introduction of data object support (thanks to Lori Small and team)
    • Improved Spring support with great and easy to use annotations (thanks to Josh Long)
    • Added an easy way to do custom sql execution (http://www.jorambarrez.be/blog/2014/01/17/execute-custom-sql-in-activiti/)
    • Improved OSGi support + added OSGi unit testing using Tinybundles
    • Various fixes and improvements

    Bug fixes and various smaller improvements

    Check out the Release notes for more details

    Sub-task

    Bug

    • [ACT-1339] - MultipleInstance UserTask does not use AtomicOperation -> CDI Event Listener fails
    • [ACT-1549] - endTime of joining parallel gateway is not set: HistoricActivityInstance.getEndTime() returns null
    • [ACT-1589] - NPE when executing SignalThrowingEvent
    • [ACT-1610] - DbSqlSession isTablePresent method adds table prefix which causes check to fail
    • [ACT-1627] - Save task will throw assignment-event even if assignee is not altered
    • [ACT-1712] - Duplicate task when signal is sent to User Task
    • [ACT-1733] - REST API documentation for Task Query points to wrong URL
    • [ACT-1745] - ProcessDiagramGenerator misses some diagram flow elements and truncates labels
    • [ACT-1752] - In BpmnDeployer, only schedule start timers AFTER process definition has been persisted
    • [ACT-1794] - LDAP - Group lookups for a user fail if the DN has special characters
    • [ACT-1795] - lineChart report hasn't been rendered
    • [ACT-1816] - ManagementService doesn't seem to give actual table Name for EventSubscriptionEntity.class
    • [ACT-1822] - MultiInstance loopIndexVariable support
    • [ACT-1823] - CancelEndEvent goes into dead lock
    • [ACT-1825] - Infinite recursion in TestActivityBehaviorFactory
    • [ACT-1826] - OSGI bundle activiti-engine/5.14 failed to deploy due to duplicated imported org.activiti.osgi + WorkAround
    • [ACT-1828] - Completing a task in DelegationState.PENDING does not throw ActivitiException
    • [ACT-1838] - Activiti 5.14 did not ship incremental upgrade DB schema migration script (to auto upgrade 5.13 -> 5.14)
    • [ACT-1839] - ACT_FK_VAR_BYTEARRAY violated on variable update
    • [ACT-1842] - Add taskService.complete() method that takes an option boolean to determine the scope of variables
    • [ACT-1844] - ActivitiRule fails if test methods are declared in a super class
    • [ACT-1848] - ClassCastException when using CdiEventSupportBpmnParseHandler with multi instance user task
    • [ACT-1854] - ExtensionElements parsing causes NullpointerException in non Process/Activity Context
    • [ACT-1858] - Groovy generated classes aren't garbage collected
    • [ACT-1859] - TaskListeners configured for ALL event types do not receive DELETE events
    • [ACT-1863] - NPE on HistoricVariableInstanceQuery
    • [ACT-1872] - Text Annotation is not generated in export and in viewer
    • [ACT-1879] - Job Executor job acquisition can lead to deadlocks in clustered setup
    • [ACT-1881] - activiti-engine OSGi bundle requires junit classes
    • [ACT-1882] - activiti-spring OSGi bundle requires spring-test classes.
    • [ACT-1883] - Listener end event is not notified when compensation done
    • [ACT-1884] - add missing type of serviceTask in activiti-bpmn-extensions-5.15.xsd
    • [ACT-1887] - Inserting a variable with the same name on the same process-instance from 2 threads results in duplicate name/revision entry in ACT_RU_VARIABLE
    • [ACT-1888] - UserTask XML converter error when it has default sequence flow
    • [ACT-1889] - Boundary event don't follow pool position.
    • [ACT-1891] - After edit or click form properties typed enum lose values
    • [ACT-1892] - Repeat add listener
    • [ACT-1894] - the parameter name of HistoricActivityInstanceQuery.activityInstanceId() should be activityInstanceId, not processInstanceId
    • [ACT-1896] - Using activityId(..) and processInstanceBusinessKey(.., true) on Execution-query causes SQL-exception
    • [ACT-1897] - Form-properties (and some other table-based properties) no longer selectable/editable/removable in Designer 5.14.0
    • [ACT-1901] - The coordinates of activity nodes contained in a DiagramLayout are sometime not correct.
    • [ACT-1908] - Activiti designer 5.14 removes custom form property information
    • [ACT-1909] - REST queries should support paging like their normal GET counterparts do
    • [ACT-1912] - Task Listener Bug
    • [ACT-1914] - Activiti designer does not update sequence flow references
    • [ACT-1918] - deploying a process fails with hibernate 4.2.6.Final "The object is already closed"
    • [ACT-1923] - Setting task assignee and using updateTask() does not update task history
    • [ACT-1927] - Manual tasks are actually created as generic tasks in the BPMN source
    • [ACT-1928] - Changing the id of elements in the Properties view does not change references to it leading to broken models
    • [ACT-1929] - Co-ordinates of BPMNEdge labels are relative to the wrong origin
    • [ACT-1930] - Activiti designer 5.14 form editor prevents editing of fields
    • [ACT-1935] - BeanELResolver hides target exception in ELException when catching InvocationTargetException
    • [ACT-1937] - StackOverflowError when using an EndErrorEvent from an Event Sub-Process
    • [ACT-1939] - HistoryService loads invalid task local variables for completed task
    • [ACT-1940] - Possible bug in MS-SQL server configuration with schema
    • [ACT-1941] - IdentityService interface leaking implementation details
    • [ACT-1944] - LDAP-Authentication fails if LDAP-User has no forename
    • [ACT-1949] - Jobs are not being removed from ACT_RU_JOB for for <timeCycle> timers
    • [ACT-1951] - ACT_RU_JOBS has orphaned rows after deleting Process with repeat timers
    • [ACT-1953] - multi instance sub process,variable conflict?

    Improvement

    • [ACT-1491] - Parsing association, drawing Annotation and connections
    • [ACT-1496] - Replace JSON.org with GSON dependencies
    • [ACT-1781] - Diagram improvement: curved flows, annotations, associations, label position.
    • [ACT-1860] - Remove unique constraint on business key
    • [ACT-1867] - MySQL DATETIME and TIMESTAMP precision
    • [ACT-1911] - Adopt MyBatis 3.2.4
    • [ACT-1916] - Double-check all REST-resources for explicit authenticate() call, to improve overall security
    • [ACT-1952] - Refactor process definition validation + allow to plugin in custom validation

    New Feature

    • [ACT-1448] - Support for expressions in candidate/assignee/...
    • [ACT-1797] - Send events for major state changes of domain objects
    • [ACT-1840] - Allow to set a 'category' on tasks
    • [ACT-1890] - Multi tenancy support
    • [ACT-1898] - Allow to execute custom SQL
    • [ACT-1904] - Introduce Process Engine Configurator concept
    • [ACT-1907] - Add ProcessInstanceHistoryLog
    • [ACT-1910] - Introduce @EnableActiviti for Spring
    • [ACT-1933] - Delete Identity Link from RuntimeService IdentityLink list
    • [ACT-1936] - Query Tasks by process category
    • [ACT-1954] - Warning Date on Task

    Task

    • [ACT-1631] - Deploy artifacts to central maven repository
    • [ACT-1833] - get BusinessCalendar from BusinessCalendarManager except new a instance
    • [ACT-1869] - Document signal event scope

    Release Notes - Activiti - Version 5.14

    Highlights

    • Version 5.14 is focused on bug fixes and small improvements.
    • Improved process and task query support
    • Add OSGi bundle headers to all Activiti module JARs
    • Thanks to the community for the large number of pull requests, especially Martin Grofcik, Mike Dias and Saeid Mirzaei

    Important Note for MSSQL and DB2 users

    Activiti 5.13 and 5.14 contain changes to the default indexes that are created when using MSSQL or DB2 as database. These indexes are not created automatically when upgrading Activiti, as they may conflict with custom indexes or impact the database load. The purpose if the indexes is to avoid deadlock exceptions when using Activiti under high load.

    As such, please review carefully following commits and apply to your database (where applicable):

    Bug fixes and various smaller improvements

    Check out the Release notes for more details

    Bug

    • [ACT-821] - HistoryService.deleteHistoricProcessInstance() does not delete sub processes
    • [ACT-1186] - ActivitiRule services not initialized when using SpringJUnit4ClassRunner together with @ContextConfiguration
    • [ACT-1438] - Target expressions for call activities are not supported
    • [ACT-1454] - Support for custom type of comment
    • [ACT-1600] - Activiti Modeler target namespace not saved to BPMN XML
    • [ACT-1609] - problem evaluating script while click "Reports->Process Instance Overview" on activiti-explorer.(DB2 datasource)
    • [ACT-1612] - Modeler missing cancelActivity
    • [ACT-1625] - Text-annotation elements are ignored when parsed, but the corresponding BPMN-DI is not which causes a warning
    • [ACT-1649] - Deadlock occurred in load test with db2
    • [ACT-1663] - StartEvent hasn't the attribute "formKey" in the Activiti Modeler
    • [ACT-1720] - Redundant space between table prefix and table name in org\activiti\db\mapping\entity\User.xml
    • [ACT-1723] - ORA-01747: select count(RES.*) from ACT_HI_VARINST RES WHERE RES.PROC_INST_ID_ = ?
    • [ACT-1725] - Incorrect display subprocess in subprocess, when it open in Activiti Modeler. (Problem with coordinates of elements after conversation BPMN to JSON)
    • [ACT-1727] - activiti-explorer process instance highlight diagram is incorrect
    • [ACT-1728] - If the process instance was started by a callActivity, it will be not have the startEvent activity in ACT_HI_ACTINST table
    • [ACT-1731] - Fail start process with variables
    • [ACT-1740] - REST-status cannot be created when exception contains newlines
    • [ACT-1741] - activiti-spring POM should not depend on slf4j-log4j12
    • [ACT-1743] - candidateGroup can't use expression with comma
    • [ACT-1749] - Impossible to remove identity-links from create-listener
    • [ACT-1755] - ACT_HI_ACTINST does not record parallel gateway end times and durations
    • [ACT-1756] - Changing ID of an activity or event makes a copy of BPMNShape element
    • [ACT-1758] - MySQL + BTM fails on schema create
    • [ACT-1762] - Support multiple occurrences of extension elements and attributes with same id
    • [ACT-1770] - Model query for latest version is broken
    • [ACT-1771] - VariableScope#getVariableLocal should take parameter of type String rather than Object
    • [ACT-1775] - NPE when retrieving JPA Entity process variables via REST API /runtime/tasks
    • [ACT-1777] - Activiti sql file problem for MySQL 5.6
    • [ACT-1780] - User Guide: Create a User (new api) does not list password for body
    • [ACT-1788] - Fields of Java services obtained with a delegateExpression aren't injected when handling signals.
    • [ACT-1789] - Make HistoricTaskInstanceQuery to support "taskCandidateUser"
    • [ACT-1791] - Modeler does not allow creation ENUM type fields in forms.
    • [ACT-1793] - Process flow through boundary events not rendered in diagram viewer
    • [ACT-1801] - JSON Serialization of Process with Lane leads to infinite recursion
    • [ACT-1806] - Race condition during BPMN deployment

    Improvement

    • [ACT-1076] - Draw transitions names in diagram generator
    • [ACT-1529] - Declare activiti-webapp-explorer2 as distributable in web.xml
    • [ACT-1630] - Extend SerializableType to *not* support entities with null id
    • [ACT-1634] - FormKey and TargetNameSpace attributes using Activiti Modeler
    • [ACT-1665] - Add support for UUIDs as queryable process variables
    • [ACT-1699] - Mail server configuration using JNDI
    • [ACT-1722] - Property isExecutable aren't available in Activiti Modeler
    • [ACT-1732] - Updating Process Business Key
    • [ACT-1738] - Adding MDC (Mapped Diagnostic Context) logging
    • [ACT-1747] - Upgrade some legacy dependencies (commons-lang, jackson)
    • [ACT-1753] - Add missing sql mapping for 'selectProcessDefinition'
    • [ACT-1782] - Provide hook to create custom UserTaskActivityBehavior
    • [ACT-1786] - Shared packages between activiti-common-rest & activiti-rest modules
    • [ACT-1798] - Provide getter for field MultiInstanceActivityBehavior#innerActivityBehavior
    • [ACT-1807] - Add support for Async Message/Signal triggering from RuntimeService
    • [ACT-1815] - Add getJobExecutor/setJobExecutor to ProcessEngineConfiguration interface

    New Feature

    • [ACT-830] - Provide API ProcessInstanceQuery#processDefinitionName
    • [ACT-1746] - Query for failed process instances
    • [ACT-1751] - Catch Mail sending fail exception

    Release Notes - Activiti - Version 5.13

    Highlights

    • Fully refactored REST API. The REST API should now offer the same functionality as the Java API.
    • Out-of-the-box LDAP integration
    • Include process and task variables in the result of the process, historic process, task and historic task queries
    • Lots of fixes

    Bug fixes and various smaller improvements

    Check out the Release notes for more details

    Sub-task

    • [ACT-1264] - Reintroduce ExportMarshaller invocation

    Bug

    • [ACT-1388] - NPE in ExecutionEntity#ensureExecutionsInitialized()
    • [ACT-1426] - Nested multi-instance activities do not work
    • [ACT-1542] - CommandContext Logs and Re-throws Exceptions
    • [ACT-1578] - Update documentation: sort parameter in REST-API method /process-definitions
    • [ACT-1591] - Referential integrity constraint violation on PROC_INST and IDENTITY_LINK
    • [ACT-1605] - The execution of many processes at once will cause constraint violations with the ID_ field.
    • [ACT-1607] - org.activiti.engine.ActivitiIllegalArgumentException: taskId is null when using taskService.addComment with process instance
    • [ACT-1619] - NullPointerException when no script is given to the script task,leading to process failure
    • [ACT-1620] - My Instances view fails to generate process diagram
    • [ACT-1623] - NPE when eventbased gateway is after referenced event
    • [ACT-1626] - Make not storing variable automatically in scripts the default
    • [ACT-1641] - Process diagram not shown for certain hostnames
    • [ACT-1653] - Deleting candidate users/groups for any user task
    • [ACT-1654] - Camel integration does not handle exceptions propagated back by Camel DefaultErrorHandler
    • [ACT-1655] - Wrong execution order
    • [ACT-1656] - Designer puts Task listener class where Execution listener class should be
    • [ACT-1657] - Wrong execution order of execution-listeners on event-based gateway and service-task
    • [ACT-1664] - Parsing results in exception when using textannotation on collaboration tag
    • [ACT-1668] - Auto refresh of task counts after task completion in Explorer
    • [ACT-1669] - Possible NPE in ActivitiDiagramMatchingStrategy
    • [ACT-1673] - CamelBehavior throws Exception when using with StrongUuidGenerator
    • [ACT-1674] - Classloading bug when using ExpressionFactory in OSGI environment
    • [ACT-1679] - Activiti 5.12.1 not compatible with Mybatis 3.2.2
    • [ACT-1685] - In activiti-web-explorer2, when call method "drawCollapsedCallActivity" throw an error "Object#<Object> has no method 'drawCollapsedTask'"
    • [ACT-1688] - Add identity-links to history and allow querying history based on involvedUser
    • [ACT-1690] - NPE when converting to BPMN a model with boundary event that is not attached to a task
    • [ACT-1698] - Activiti fails to build when default charset is Windows-1252
    • [ACT-1702] - Setting the databaseTablePrefix not possible directly on the ProcessEngineConfiguration
    • [ACT-1703] - The "result variable name" attribute of a Java service task is lost when exporting a process
    • [ACT-1709] - Some fields cannot be set directly on the ProcessEngineConfiguration

    Improvement

    • [ACT-1523] - Always set ProcessDefinitionId available on JobEntity
    • [ACT-1576] - Rest API improvements for getting tasks
    • [ACT-1606] - Create a convenience method in TaskService to set a task's due date
    • [ACT-1616] - Expose activityID in interface Execution (add a public getter for activityID)
    • [ACT-1642] - Deprecated IMAGE datatype under MS SQL Server
    • [ACT-1672] - Add getKey() to PvmProcessDefinition
    • [ACT-1704] - Option to exclude subprocesses in ProcessInstancesQuery and HistoricProcessInstanceQuery
    • [ACT-1705] - Some methods on the {{ProcessEngineConfiguration}} are not supporting the builder pattern

    New Feature

    • [ACT-1588] - Native query support paging
    • [ACT-1647] - Enable querying TaskService for Tasks including local variables
    • [ACT-1652] - Add support for message start events to the REST-API
    • [ACT-1680] - Support for custom ProcessEngine selection in REST
    • [ACT-1691] - Allow to update process definition category through RepositoryService
    • [ACT-1696] - Provide out of the box LDAP integration
    • [ACT-1706] - Add fullNameLike to UserQuery

    Task

    • [ACT-1396] - Bring REST api in sync with Java API
    • [ACT-1707] - Remove UserCache from Activiti Explorer

    Release Notes - Activiti - Version 5.12.1

    Highlights

    • Fix for ACT-1591, with referential constraint error (JIRA link)
    • Resolved javascript JDK 7 issue (link to blog post)
    • Small Explorer and Modeler bug fixes
    • Other small fixes

    Important upgrade notes when using script tasks and auto storage of variables

    Due to recent changes to the JDK (removing Serializable from sun.org.mozilla.javascript.internal.Undefined), the auto storing of variables is not possible anymore with the built-in Javascript scripting engine. See this link for more information. Each script variable that needs to be stored as process variable needs to be explicitly stored by callingexecution.setVariable("variableName", variableValue).

    For backwards compatibility reasons, the old behavior can still be used by setting the autoStoreVariables property on a scriptTask to true. As written in the linked article from above, this might not work when using a recent JDK version and the built-in Javascript scripting engine.

    Release Notes - Activiti - Version 5.12

    Highlights

    • Added new javascript-based diagram viewer to Explorer (thanks to Dmitry Farafonov)
    • Unified the BPMN parser and model for the Engine, Modeler and Designer
    • Added Activiti Kickstart to the Explorer to quickly create processes without deep BPMN knowledge
    • Simplified and extended the Activiti Camel module (thanks to Ryan Johnston)
    • Added first stage of reporting functionality to the Explorer via "reporting processes"
    • Added auto-layout module for Kickstart and BPMN import in Modeler (TBD) and Designer
    • Added script task and execution listeners
    • Lots of bug fixes

    Important upgrade note

    The internal org.activiti.engine.impl.bpmn.parser.BpmnParseListener interface and related classes have been removed.

    Yes, we know many people relied on its capabilities, although it was a class in an internal package. But do not worry: we have introduced a replacement in the api package that offers similar (and even more powerful) functionality. The code is not backwards compatible, but the required changes should be minimal (eg the XML element is replaced by a Java pojo representation of the element). Read more about it in the new 'Advanced' chapter of the userguide.

    Bug fixes and various smaller improvements

    Check out the Release notes for more details

    Sub-task

    • [ACT-1565] - activiti-bpmn-converter BaseBpmnXMLConverter ignores defaultFlow for Gateways

    Bug

    • [ACT-863] - HistoricVariableUpdate#getValue() throws NPE for JPA entities
    • [ACT-995] - Not possible to update/overwrite a JPA entity in workflow
    • [ACT-1025] - Methods deleteDeployment(String deploymentId, ...) and deleteDeploymentCascade(String deploymentId, ...) do not throw an exception with passed a non-existent deployementId
    • [ACT-1026] - Inclusive gateway isn't properly joining sequence flows coming from call activities
    • [ACT-1040] - TaskManager.findTaskById does not utilize session cache
    • [ACT-1054] - Unable to complete user task coming from parallel gateway
    • [ACT-1196] - Invalid login screen localization on non-utf-8 based hosts
    • [ACT-1204] - InclusiveGateway with two subprocesses does not join correctly
    • [ACT-1317] - Wrong task event generated when setting assignee to null
    • [ACT-1345] - method name orderByHistoricActivityInstanceStartTime in class HistoricTaskInstanceQuery should be orderByHistoricTaskInstanceStartTime
    • [ACT-1372] - User Task with form: form will be not displayed if the value expression in next line used
    • [ACT-1377] - removeVariables() in VariableScopeImpl does not consider parent scopes
    • [ACT-1414] - ClassCastException when completing a referenced sub process after Boundary Event with cancelActivity = false
    • [ACT-1417] - Fix Explorer session serialization
    • [ACT-1418] - NullPointerException if throw a not catched exception/error
    • [ACT-1470] - Import definition type fails with CxfWSDLImporter when using complex data types
    • [ACT-1477] - In user guide error api for form property from history detail
    • [ACT-1479] - activiti-engine has invalid symbolic name
    • [ACT-1486] - The ability to add an attachment to a process instance is broken
    • [ACT-1494] - Get garbled string when render form in chines
    • [ACT-1499] - Form properties not initialized when null or empty
    • [ACT-1502] - Custom font name in the engine for diagram
    • [ACT-1504] - Cannot create new user and membership in JavaDelegate using identityService
    • [ACT-1512] - HistoricVariableUpdates no longer returned when using postgres
    • [ACT-1516] - BPMN Converter: Adding a listener to a script task produces erroneous XML content.
    • [ACT-1524] - Variable update detection does not work for byte[]
    • [ACT-1528] - All variables are deleted after delete a history processinstance
    • [ACT-1533] - Undeployment of old process versions deletes jobs for TimerStartEvents
    • [ACT-1540] - HistoricVariableInstance does not expose taskId, nor does HistoricVariableQuery expose querying based on taskId
    • [ACT-1546] - Impossible to assign default flow on exclusive gateways
    • [ACT-1553] - Refactor BpmnParse to use separate handlers for each bpmn element
    • [ACT-1555] - ProgrammaticBeanLookup doesn't regard alternatives
    • [ACT-1556] - BpmnDeployer creates duplicates identity links when deploying processes with initiation authorization active
    • [ACT-1579] - Process engine can be DoS'ed when deploying unsafe XML
    • [ACT-1586] - ExecutionQuery returns wrong results when using multi instance on a receive task
    • [ACT-1596] - Not generated boundary event in diagram created by Raphaël

    Improvement

    • [ACT-1274] - Remove SEVERE level logging for expected exception in taskservice.claim()
    • [ACT-1324] - Add specific exceptions for common error scenarios (TaskNotFoundException if a task if not found etc)
    • [ACT-1463] - Review rest-response codes and error-body response
    • [ACT-1498] - IntermediateCatchEventActivitiBehaviour name does not match other ActivityBehavior's
    • [ACT-1505] - Should throw an exception if the picture is not generated
    • [ACT-1561] - Add the ability to register a TaskListener for all event types
    • [ACT-1568] - Query API documentation out of sync with codebase

    New Feature

    • [ACT-432] - Terminate end event
    • [ACT-1164] - Add possibility to hook in own implementation of BusinessRuleTask
    • [ACT-1493] - Make DeploymentCache pluggable and allow to set cache limit
    • [ACT-1511] - Extract ActivityBehavior and Task/ExecutionListener instantiation in a pluggable factory
    • [ACT-1518] - Add generic simple workflow creator API to activiti
    • [ACT-1537] - Allow to configure whether script variables are stored as process variables
    • [ACT-1569] - Introduce process instance scope for signal events
    • [ACT-1571] - Auto layout for BPMN 2.0 processes
    • [ACT-1572] - Designer should generate XML with delegationExpression
    • [ACT-1574] - Loop type for subprocess in Modeler
    • [ACT-1580] - Add method to retrieve BpmnModel (Pojo version of BPMN 2.0 process) to RepositoryService
    • [ACT-1588] - Native query support paging
    • [ACT-1593] - Basic reporting for Explorer

    Task

    • [ACT-1031] - Rename JobQuery methods
    • [ACT-1397] - Remove Account related service operations from IdentityService
    • [ACT-1465] - Document services in userguide
    • [ACT-1538] - Move BpmnParseListener to public API package
    • [ACT-1581] - Refactor ProcessDiagramGenerator to take BpmnModel as input instead of ProcessDefinitionEntity

    Wish

    • [ACT-1362] - Extend JPAEntityMappings to support UUID as Id

    Release Notes - Activiti - Version 5.11

    Highlights

    • Added Activiti Modeler to the Activiti Explorer web application
    • Removed buggy demo script and replaced with simpler distribution
    • Support for doing queries that are not out-of-the-box possible with the query api (called 'native queries')
    • Enhanced ability to query for history variable values
    • Improved functionality to suspend and activate process definitions and instances
    • Improved Activiti QA and added DB2 and MSSQL servers
    • Added support for using a service call in aJava delegates (see here for more details)
    • Lots of bug fixes

    Important upgrade note

    In 5.11 we introduce a new history table for process variables. There is an optional migration database script that you can run to generate historic variables for existing process instances. This is optional because the engine will just create those records upon update of the variable if they don't exist.

    The files can be found in the database directory of the Activiti distribution org/activiti/db/upgrade/optional.

    API Change

    The functionality of the repositoryService.suspendProcessDefinitionByXXX has been slightly altered. Previously, calling this method would stop the execution of jobs related to this process definition. Now, calling this method will not do this, but rather make sure a process instance cannot be created from this process definition. We've added a new method with an additional parameter 'suspendProcessInstances' which can be used to get the same behavior: when set to 'true', all the associated process instances will be suspended. This will avoid process instance continuation, including the execution of jobs related to the process instance.

    Bug fixes and various smaller improvements

    Check out the Release notes for more details

    Sub-task

    • [ACT-1406] - Extend Activiti BPMN XML Schema
    • [ACT-1407] - Marshall ID to BPMN when saving
    • [ACT-1408] - Read and use ID when parsing BPMN model

    Bug

    • [ACT-234] - CompetingJobAcquisitionTest does not work on windows
    • [ACT-454] - Variables not being escaped when mail is sent as HTML
    • [ACT-700] - Bug in DB2 supporting.
    • [ACT-734] - Schema creation in mssql 2005
    • [ACT-785] - User Task Assignments are not handled correctly if the value of an expression holds more than one group-id or user-id
    • [ACT-820] - Serializable values altered in scriptTask aren't persisted to DB
    • [ACT-847] - activiti:field not injected for tasklistener on event="create"
    • [ACT-865] - timeCycle requires seconds to be in the startDate
    • [ACT-866] - couldn't deduct database type from database product name 'DB2/LINUXX8664'
    • [ACT-870] - Multiple documentation elements not supported
    • [ACT-876] - Activiti Designer creates NPE when dragging tab to second window
    • [ACT-920] - ActivityException thrown on ProcessEngineConfiguration.buildProcessEngine()
    • [ACT-927] - nullpointer on empty sourceref in datainputassociation
    • [ACT-934] - Inconsistent procvar behaviour
    • [ACT-940] - When starting the demo, support Windows 7 for "explorer.browser.open"
    • [ACT-1002] - The Database Specific Statement is not applied in some cases
    • [ACT-1057] - Custom tasks in Designer with only BOOLEAN_CHOICE do not write proper XML
    • [ACT-1063] - Typo in org.activiti.engine.impl.jobexecutor.TimerDeclarationType#caledarName
    • [ACT-1070] - activiti explorer shows mistakenly non-activiti tables if their name starts with 'ACT*'
    • [ACT-1083] - Variables stored inside a subprocess are not linked to activity-id's.
    • [ACT-1090] - There is not async attribute in activiti XML schema
    • [ACT-1102] - Beans specified in activiti.cfg.xml not available in expressions
    • [ACT-1130] - Removing identity link does not remove owner in task entity.
    • [ACT-1147] - Posting a comment to a task causes an exception (Bad value for type long) (After updating from 5.8 to 5.9)
    • [ACT-1174] - historyLevel property not found when creating tables manually
    • [ACT-1180] - Add version fixing after running activiti.postgres.upgradestep.58.to.59.engine.sql to avoid the application try to autoupdate schema at restart
    • [ACT-1187] - Default image for CustomServiceTasks is not loaded correctly
    • [ACT-1189] - displayHelpLong of a custom property is not displayed
    • [ACT-1239] - Exclusive gateway: Condition on default flow is not ignored
    • [ACT-1251] - Manual upgrade throwing ActivitiWrongDbException
    • [ACT-1252] - Signal Events and None intermediate event not rendered during Diagram Generation
    • [ACT-1259] - Finishing last task (or signal last receive-task) of process doesn't do optimistic locking
    • [ACT-1295] - Error BoundaryEvent in multiInstance call activity does not work as intended
    • [ACT-1304] - EnumFormType always returns null when converting model value to form value
    • [ACT-1316] - org.activiti.spring.SpringTransactionContext#addTransactionListener, TransactionState.ROLLED_BACK registers listener that is also invoked for successful commit
    • [ACT-1320] - Start Timer is executed for suspended process definitions
    • [ACT-1321] - Add NOT NULL constraint to PROCDEF table
    • [ACT-1328] - Typo : "evalutaing" in JuelExpression
    • [ACT-1329] - Add NOT NULL constraint on VERSION_ in PROCDEF table
    • [ACT-1331] - RuntimeService.getVariables(String, Collection) retrieves more than the specified variables
    • [ACT-1338] - SetProcessDefinitionVersionCmd should update TaskEntity.processDefinitionId as well
    • [ACT-1340] - BusinessProcess.isAssociated throws NPE if no execution is associated
    • [ACT-1341] - Activiti engine drop statement for MSSQL misses a foreign key constraint
    • [ACT-1342] - Suspending a process with active timer can cause AcquireJobsRunnable to get into a loop that causes heavy load on database
    • [ACT-1353] - do not generates eventBasedGateway with ProcessDiagramGenerator.generateDiagram
    • [ACT-1361] - Broken Build: Activiti webapp REST uses junit but does not declare dependency using maven
    • [ACT-1370] - DB2 upgrade failed from 5.9 to 5.10 because missing NOT NULL
    • [ACT-1375] - Remove workspace with examples from distribution (maybe replace with website)
    • [ACT-1380] - Engine should throw exception when flow out of XOR-Gateway neither has condition nor is default flow
    • [ACT-1381] - Add support for SQL pagination in DB2 & MSSQL
    • [ACT-1390] - Activiti incorrectly logs SEVERE level messages for expected lock collisions
    • [ACT-1391] - Deploying a process with illegal expression doesn't cause deployment to fail
    • [ACT-1394] - NullPointerException in UserTaskAssignmentHandler
    • [ACT-1402] - Interrupting boundary events don't cancel all parallel sub-process instances in case sub-process is multi-instance
    • [ACT-1410] - Executing the TaskService.deleteAttachments(String attachmentId) does not remove the file data from ACT_GE_BYTEARRAY table
    • [ACT-1415] - TimeCycle expression is not evaluated on timer-start event
    • [ACT-1416] - RepositoryService startableByUser() method not identity-implementation agnostic, using ACT_ID_MEMBERSHIP
    • [ACT-1421] - Error Boundary Event - execution not closed properly
    • [ACT-1423] - BusinessRuleTask are not converted/exported in between Activiti Modeler and Activiti Engine
    • [ACT-1424] - Job timestamp defaults to current date when set to null (MySQL)
    • [ACT-1429] - Remaining flowNodeRef when deleting BPMN elements within lanes
    • [ACT-1431] - Invalid warning with exception thrown when di information is missing
    • [ACT-1434] - Rest call contains incorrect mimetype for resource service
    • [ACT-1435] - Exception for Expressions with 2 params in BusinessRule ruleVariablesInput
    • [ACT-1436] - Activiti-Rest : Binding error with form properties
    • [ACT-1440] - Activiti Explorer : Null Pointer Exception for Users with a Picture
    • [ACT-1441] - Eclipse Plugin : Missing a parentheses on a text label.
    • [ACT-1442] - EventBasedGateway not drawn in diagram
    • [ACT-1444] - Race condition in CallActivityBehavior
    • [ACT-1449] - Boundary events in designer are not deleted properly
    • [ACT-1455] - Add support to filter on HistoricVariables values on HistoricProcessInstanceQuery
    • [ACT-1456] - Add support for processVariableValueEquals(value)
    • [ACT-1459] - Add support for filtering queries based on string variable values, ignoring case
    • [ACT-1461] - The startableByUser method on the ProcessDefinitionQuery object does not return process definitions records for "candidate starter groups" when a custom session factory has been implemented
    • [ACT-1468] - Task query: can't query by process id with ordering by due date

    Improvement

    • [ACT-716] - Add log guards to org.activiti.engine.impl.interceptor.LogInterceptor
    • [ACT-721] - Usage of Collections.synchronizedMap might cause performance degradation or java deadlock in DbSqlSessionFactory
    • [ACT-877] - Allowing expressions in properties of CustomServiceTask
    • [ACT-900] - TaskService.deleteTask should allow a reason to be specified
    • [ACT-969] - Add description of JavaDelegate implementation for CustomServiceTasks to the user guide
    • [ACT-998] - Add a ScripTaskListener
    • [ACT-1015] - Process formKey as an expression
    • [ACT-1023] - random order in enum fields
    • [ACT-1064] - Remove 'selectNextJobsToExecute_mysql' and remove duplicate criterion where clause
    • [ACT-1067] - Make BpmnDeployer#addTimerDeclarations and BpmnDeployer#removeObsoleteTimers protected
    • [ACT-1112] - Ease integration of Activiti Explorer / Split up explorer into a JAR and a WAR example application
    • [ACT-1122] - databaseSchemaUpdate should not downgrade, it leads to inconsistent databases
    • [ACT-1134] - Reduce number of compensate event subscription queries when a subprocess is completed
    • [ACT-1138] - Optimize job acquisition (exclusive jobs / maxJobsPerAcquisition)
    • [ACT-1162] - activiti-spring pom.xml contains dependencies that should have scope 'test'
    • [ACT-1169] - Redundant RETRIES predicate in 'selectExclusiveJobsToExecute'
    • [ACT-1206] - GroupManager.findGroupsByUser called twice
    • [ACT-1224] - Remove Eclipse IDE Artifacts (.classpath,...) from SVN
    • [ACT-1273] - In the TaskService it is possible to removing variables
    • [ACT-1279] - Add foreign key to PROC_DEF_ID_ on ACT_RU_EXECUTION
    • [ACT-1291] - Allow subtask filtering
    • [ACT-1301] - Refactoring BpmnParse class
    • [ACT-1327] - activiti-osgi add blueprint context EL resolver
    • [ACT-1336] - Support start authorization in Designer
    • [ACT-1350] - Can not send mail use gmail smtp with ssl
    • [ACT-1352] - Reduce the log level when a job could not found due to cancelActiviti
    • [ACT-1383] - Enable specialization of BusinessProcess bean by moving producer methods into separate bean
    • [ACT-1392] - Activities rendered by DiagramGenerator should show task-names on multiple lines, if too big for single line.
    • [ACT-1405] - CustomServiceTask ID is not stored in model
    • [ACT-1430] - Add faster and more convenient methods for retrieving form keys
    • [ACT-1443] - Use the standard Activiti classloading mechanism for resolving serialized classes
    • [ACT-1445] - Improve documentation for creating Designer Extensions
    • [ACT-1447] - in Designer, The cancelActivity should not be shown for errorEventDefinition and cancelEventDefinition
    • [ACT-1450] - Modification on ProcessInstanceResource to insert taskDefinitionKey in results
    • [ACT-1451] - Rest API to see startableByUser process definitions
    • [ACT-1453] - Rest API to list groups

    New Feature

    • [ACT-933] - orderByDueDate for HistoricTaskInstanceQuery
    • [ACT-936] - Provide custom navigator for Activiti projects
    • [ACT-1020] - Get Process Documentation
    • [ACT-1293] - Add SQL Query extensions
    • [ACT-1300] - Add own History table for HistoricProcessVariable
    • [ACT-1302] - Add more information to HistoricActivityInstance
    • [ACT-1322] - Interrupting Message Event Sub-Process
    • [ACT-1330] - Improve History Queries
    • [ACT-1374] - Add "processVariableValueEquals" to ExecutionQuery
    • [ACT-1378] - Change behavior with HistoricProcessVariable
    • [ACT-1379] - Add field injection to delegateExpression
    • [ACT-1387] - Allow service invocation in a JavaDelegate/ActivityBehavior
    • [ACT-1457] - Suspend/Activate a process instance
    • [ACT-1458] - Allow to suspend/activate a process definition at a given date

    Task

    • [ACT-840] - Userguide refers to JPAVariableTest, but isn't present in examples anymore
    • [ACT-1332] - Remove servlet api jar from activiti-explorer
    • [ACT-1333] - Fix upgrade script
    • [ACT-1334] - ad hoc task has 2 owners
    • [ACT-1347] - Clean up cycle references
    • [ACT-1355] - Clean up jira issues
    • [ACT-1369] - Fix docs on starting h2 test console
    • [ACT-1425] - Add category to deployment

    Release Notes - Activiti - Version 5.10

    Highlights

    • Drastic performance improvements: See Joram's blog The Activiti performance showdown for the amazing details
    • Tijs' book Activiti in Action published by Manning came out!
    • Added support voor bpmn message start event
    • Added capability for clients to validate a user's rights to start a process
    • Added support for nested sub-processes and embedded subprocesses in designer
    • Added support for catching intermediate and boundary message events
    • Bug fixes and various smaller improvements. Check out the Release notes for more details

    Bug

    • [ACT-674] - ClaimTaskCmd should verify userId
    • [ACT-697] - Exception thrown when bpmndi:BPMNPlane elements does not reference a process id
    • [ACT-714] - Multi-threaded usage of non thread safe java.util.HashMap in ClassNameUtil
    • [ACT-733] - Potential Problem with ${empty someProcessVariable} or ${someProcessVariable != null}
    • [ACT-832] - Infinite loop in ErrorEndEventActivitiBehavior if errorEndEvent defined in a call-activity sub process and no matching boundary event
    • [ACT-873] - typo: TaskQuery.taskUnnassigned()
    • [ACT-886] - Process Definition Query Using CategoryLike Is Missing 'like' Clause
    • [ACT-955] - Integrity constraint ACT_FK_VAR_EXE violated - child record found
    • [ACT-958] - using a jobquery with processInstanceId AND executable filter fails with an SQLException
    • [ACT-962] - Failed Testcases because of Equal Check on Exception Messages
    • [ACT-984] - Activiti Designer: NullPointerException when saving arbitrary XML file
    • [ACT-1000] - [Eclipse] Diagram modifications removes data in XML file
    • [ACT-1016] - Eclipse freezes when opening xhtml page AND Activiti Designer
    • [ACT-1019] - REST-API, getting process instance diagram error
    • [ACT-1039] - Broken Round Trip bpmn20.xml-.activiti in Designer
    • [ACT-1048] - HistoricalActivityInstance missing for parallel GW
    • [ACT-1059] - Delegation state of task's not saved in database
    • [ACT-1071] - Process Instance Diagram has wrong content-type
    • [ACT-1075] - getting process variables through rest does not work
    • [ACT-1077] - Wrong URL for "Delete Deployments" in the User Guide REST API Documentation
    • [ACT-1113] - Remove deprecated cycle tables
    • [ACT-1115] - Parsing of process definition files with several pools and DI information (for graphical representation) fails
    • [ACT-1116] - Can't browse database tables with activiti-explorer when using Postgresql-9.1
    • [ACT-1125] - Missing "import java.util.Date" in HumanTimeTest causes build to fail
    • [ACT-1129] - BooleanFormPropertyRenderer: java.lang.IllegalArgumentException: CheckBox only accepts Boolean values
    • [ACT-1131] - Asynchronous Servicetasks with DB2
    • [ACT-1132] - Regression: Process Diagram generation not possible in headless mode anymore
    • [ACT-1137] - BusinessProcess#getExecutionId() does not participate in current command
    • [ACT-1143] - Activiti Update from 5.8 to 5.9 (using PostgreSQL)
    • [ACT-1144] - "isExpanded" attribute missing in DI for sub processes
    • [ACT-1146] - Class cast while saving changes - before closing editor
    • [ACT-1150] - NullPointerException during application startup with autodeployment set to true
    • [ACT-1154] - Missing pictures in the user guide
    • [ACT-1156] - Callactivity with Expression always use value of first evaluation
    • [ACT-1160] - Parsing results in Exception when using textannotation on association
    • [ACT-1170] - 'selectExclusiveJobsToExecute' does not work for DB2 and MSSQL
    • [ACT-1172] - activiti.mssql.create.engine.sql does not drop table ACT_RU_JOB
    • [ACT-1176] - Parsing Collaboration Tag fails because of DI reference
    • [ACT-1179] - Fix binary value on activiti.postgres.upgradestep.58.to.59.engine.sql
    • [ACT-1182] - REST: Error when trying to get process variables with null value.
    • [ACT-1183] - TimerCatchingEvent not showing up when re-opening bpmn file
    • [ACT-1185] - When using a multi-instance subprocess, the execution is ended after first loop
    • [ACT-1188] - JtaProcessEngineConfiguration does not use proper JTA Synchronizations
    • [ACT-1191] - Bug: NullPointerException in FailedJobListener
    • [ACT-1193] - REST-webapp: unable to get process instance diagram
    • [ACT-1200] - Location of labels of sequence flows move after reopening process definition
    • [ACT-1202] - History: tracking of multiple end events reached
    • [ACT-1209] - Mybatis pagination does not scale on MySQL & H2
    • [ACT-1216] - When receycling execution it is not activated correctly
    • [ACT-1222] - Receycling the root execution leads to stuck process instance when using call activities
    • [ACT-1223] - Activiti Designer creates pom.xml with dependency to Activiti 5.8
    • [ACT-1237] - SubProcesses within pool
    • [ACT-1238] - SignalBoundaryEvent not displayed when inside subprocess that has another subprocess as fault handler
    • [ACT-1242] - Designer removes "Input variables" attribute of BusinessRuleTask
    • [ACT-1245] - Diagram resource generation should only be triggered when deployment is new
    • [ACT-1249] - ORA-00918 when processUnfinished() and orderByHistoricTaskInstanceEndTime() called on HTIQ
    • [ACT-1253] - JobQuery 'selectJobByQueryCriteria.withExceptions' doesn't find all jobs with failures
    • [ACT-1257] - CDI Injection for process variables does not work correctly in call stacks including other processes
    • [ACT-1258] - ThreadpoolExecutor injection point is depending on actual class instead of Executor Interface
    • [ACT-1260] - REST: JSON field values have to be null instead of "null"
    • [ACT-1277] - activiti-engine-5.9.pom file has invalid URL for repository
    • [ACT-1278] - List<HistoricProcessInstance> is not serializable
    • [ACT-1286] - REST: Starting a process instance does not handle StartEvent property datatypes correctly
    • [ACT-1287] - HistoricTaskInstanceQuery orderByTaskDefinitionKey() does not work
    • [ACT-1298] - Deploying two processes with same id breaks engine
    • [ACT-1305] - Parsing call-activity may lead to NullPointerException
    • [ACT-1308] - Null-Pointer Exception in ProcessInstanceResource.java
    • [ACT-1309] - NullPointerException in SignalEventHandler

    Improvement

    • [ACT-380] - Add method getCandidates() to interface DelegateTask
    • [ACT-656] - Add support for schema prefixes for table names
    • [ACT-897] - Make JuelFormEngine.getFormTemplateString(FormData) protected
    • [ACT-923] - HistoricProcessInstance should hold the super processInstanceId
    • [ACT-946] - Category in ProcessDefinition REST Response
    • [ACT-974] - Don't register Activiti XML editor as default XML editor in Eclipse
    • [ACT-991] - improve exception thrown by taskservice.claim()
    • [ACT-1056] - Contention in mybatis due to dynamic query creation in ExecutionEntity.remove()
    • [ACT-1133] - Reduce number of task / event subscription queries when execution is removed
    • [ACT-1140] - Add RuntimeService.startProcessInstanceByMessage(String, String) Method
    • [ACT-1145] - Selecting the Activity's name from the DelegateExecution could be a convenience method
    • [ACT-1246] - FormService returns null instead of exception if no form is defined
    • [ACT-1276] - SetProcessDefinitionVersionCmd should work with CallActivities as well
    • [ACT-1280] - Add unique index to process-definitions on KEY and VERSION
    • [ACT-1284] - Improve error message if process definition with Message Start Events gets started by "startProcessInstanceByKey"
    • [ACT-1294] - Upgrade Spring dependency to 3.1.2.RELEASE

    New Feature

    • [ACT-638] - Implement non interrupting boundaryEvent (cancelActivity="false")
    • [ACT-740] - Mechanism of management rights on the start of process.
    • [ACT-892] - Support nested sub-processes in designer
    • [ACT-932] - Support embedded subprocesses in Designer
    • [ACT-959] - Retrieve process diagram through rest interface by processDefinitionId
    • [ACT-960] - Retrieve active task list from processInstanceId
    • [ACT-1020] - Get Process Documentation
    • [ACT-1028] - Support default values for form properties
    • [ACT-1046] - Allow engine to configure a delay between retries and the amount of retries.
    • [ACT-1117] - Add support for suffix ".bpmn" instead only ".bpmn20.xml"
    • [ACT-1136] - Add support for catching intermediate and boundary message events
    • [ACT-1139] - Add startProcessInstanceByMessage* methods to BusinessProcess bean
    • [ACT-1159] - BpmnError should be handled in expression based ServiceTasks.
    • [ACT-1164] - Add possibility to hook in own implementation of BusinessRuleTask
    • [ACT-1167] - Start and End event should be able to have Execution Listeners as well
    • [ACT-1181] - Group provisioning & group assignment missing in REST
    • [ACT-1190] - Add possibility to hook in own MyBatis Queries
    • [ACT-1213] - Add "processVariableValueNotEquals" to TaskQuery
    • [ACT-1225] - Provide infrastructure for mock testing
    • [ACT-1282] - Add method TaskQuery#taskDelegationState(DelegationState)
    • [ACT-1288] - Timer due date configured by expression can take java.util.Date directly - not only String with ISO 8601

    Task

    • [ACT-1161] - Remove experimental Webservices from activiti-cxf project

    Wish

    • [ACT-1197] - Spring based configuration with user specified expression manager
    • [ACT-1247] - Could u supply a WF graph with highlighted active node

    Release Notes - Activiti - Version 5.9

    Highlights

    • Support for Exclusive Jobs and Plugability of the Job Executor Infrastructure
    • Persistent event subscriptions (infrastructure)
    • Intermediate signal throw / catch
    • Event based gateway
    • BPMN transaction (cancel end event & cancel boundary event)
    • BPMN compensation (compensation catch & compensation throw)
    • Interrupting error event subprocesses
    • (Multiple) message start events (not implemented yet, should be a quick win)
    • Various bug fixes

    Bug

    • [ACT-583] - Processes are not found in the bar file, if they are below root
    • [ACT-736] - SpringAutoDeployment deploymentsDiffer incorrect (results in unnecessary deployment each application restart)
    • [ACT-834] - JavaDelegate instances should not be cached
    • [ACT-848] - Delete Reason not saved in database
    • [ACT-861] - Statement-Leak in Mybatis
    • [ACT-862] - VariableScopeImpl#getVariableNames does not take parent scopes into account
    • [ACT-907] - Timer start event triggers twice
    • [ACT-930] - startUserId missing in REST v2 /process-instances
    • [ACT-944] - Activiti 5.7 "Create deployment artifacts" in Eclipse creates unusable .jar file
    • [ACT-953] - Error catching boundary event that catches ALL errors doesn't work
    • [ACT-954] - REST webapp doesn't set the authenticated user on the Authentication object
    • [ACT-981] - ActivitiOptimisticLockingException thrown on CallActivity with Async serviceTask and Multi-Instance construct.
    • [ACT-983] - Only test in Activiti Explorer fails
    • [ACT-990] - Activiti-cdi: CdiActivitiTestCase troubles Jboss AS7 classloader
    • [ACT-1001] - Activiti-cdi: taskService.claim() does not work
    • [ACT-1003] - Exceptions thrown on a multi instance sub process with asynchronous property
    • [ACT-1027] - Activiti engine bundle has optional dependencies declared as mandatory in OSGi manifest
    • [ACT-1035] - Calling interrupt() on thread that access the database closes db connection and causes ConnectionClosed exceptions (H2 and Derby)
    • [ACT-1047] - Possible infinite loop with log flooding in JobAcquisitionThread
    • [ACT-1050] - AtomicOperationProcessEnd does not propagate caught Exceptions
    • [ACT-1053] - Activiti cdi: Remove CommandExecutor bean
    • [ACT-1061] - Process Image is cut off in "My instances" instead of scrolling
    • [ACT-1062] - Database table generation fails on Oracle if multiple activiti engine schematas are visible to the database user
    • [ACT-1087] - Add missing "parseReceiveTask" to BpmnParseListener
    • [ACT-1097] - Execution.takeAll() takes transitions with executions which have been deleted
    • [ACT-1098] - RuntimeService.deleteProcessInstance loses deleteReason
    • [ACT-1099] - Parsing results in exception when using text annotation connected with association
    • [ACT-1114] - Timer throw exception.

    Improvement

    • [ACT-249] - Need a way to skip process where isExecutable='false'
    • [ACT-326] - Store current authenticated user Id into HistoricDetail
    • [ACT-702] - All tests should also run with full history configuration on all DB's
    • [ACT-831] - CallActiviti to select subprocess based upon an expression evaluated at runtime.
    • [ACT-889] - Typo error in User guide
    • [ACT-948] - Database in activiti.cfg.xml in REST is hardcoded to H2
    • [ACT-964] - Also catch and handle Errors when generating diagram
    • [ACT-1005] - Activiti jpa integration does not merge detached entities
    • [ACT-1012] - REST - Get form properties from startform
    • [ACT-1036] - Check for isActive flag before going to sleep in JobAcqusitionThread
    • [ACT-1038] - Improve JobAcqusitionThread
    • [ACT-1045] - Finding a better way for executing task rejected by ThreadPoolExecutor.
    • [ACT-1052] - Activiti-cdi: Upgrade Jboss Weld to resolve Issue with BeforeShutdown event in ActivitiExtension
    • [ACT-1055] - Activiti cdi: Change ProcessEngineLookup into a java.util.ServiceLoader like SPI
    • [ACT-1072] - Execution gets stuck after nested Sub-Process with no outgoing Sequence Flows
    • [ACT-1079] - TimerEntity#getPersistentState() should include duedate field
    • [ACT-1104] - Overload method to pass in process variables to RuntimeService.signal
    • [ACT-1105] - Activiti -cdi: use signal method to pass in process variables to execution

    New Feature

    • [ACT-441] - Allow historic queries for a specific date range
    • [ACT-456] - Sending mails with Activiti with TLS (eg using Gmail as SMTP)
    • [ACT-461] - Activity type for executing OS commands
    • [ACT-846] - Add Scrollbars to Process image in Explorer2
    • [ACT-883] - Variable query support for HistoricProcessInstances
    • [ACT-903] - RuntimeService.signal should be able to take signalName
    • [ACT-945] - Enable creating new users through rest interface
    • [ACT-947] - Retrieve process variables through REST interface
    • [ACT-985] - Support activiti:priority userTask extension at run-time
    • [ACT-989] - Implement exclusive jobs
    • [ACT-1004] - There is no ability to sort process instances by 'start time' in Activiti-API. Good if it would be...
    • [ACT-1021] - Trigger BPMN Error Events from Java Delegate
    • [ACT-1028] - Support default values for form properties
    • [ACT-1034] - Fix synchronization on isActive and isJobAdded fields in JobAcquisitionThread
    • [ACT-1068] - Error Event Sub-Process
    • [ACT-1074] - Support suspension of JobExecution for particular ProcessDefinitions and ProcessInstances
    • [ACT-1086] - Add "businessKey" query capabilities to TaskQuery and ExecutionQuery
    • [ACT-1091] - Add support for persistent event subscriptions
    • [ACT-1092] - Add support for bpmn20 signal throw and catch in engine
    • [ACT-1093] - Add support for bpmn20 event based gateway in engine
    • [ACT-1094] - Add support for bpmn20 compensation in engine
    • [ACT-1095] - Add support for bpmn20 transactions in engine
    • [ACT-1103] - Add support for bpmn20 message start event in engine
    • [ACT-1107] - Implement None Intermediate Throw Event

    Task

    • [ACT-34] - Refactor JobExecutor threading
    • [ACT-994] - Get contributor agreement from Thilo

    Release Notes - Activiti - Version 5.8

    Highlights

    • Asynchronous continuations (tech preview)
    • Added BPMN inclusive gateway
    • Improved Spring support
    • CDI integration improvements
    • Bug fixes

    Bug

    • [ACT-908] - Designer .activiti file won't compile and generate a BPMN 2.0 xml file
    • [ACT-910] - duplication of flownodes when nodes are out of order
    • [ACT-919] - Activiti-cdi: make interceptors serializable
    • [ACT-922] - Activiti-cdi: make sure to use the right BeanManager in ProgrammaticLookups
    • [ACT-924] - BPMN Export fails for Sequence Flows under IBM JDK because of wrong namespace definition in SequenceFlowExport.java
    • [ACT-937] - Designer form property editor flips ID and Name fields
    • [ACT-939] - Mime-type and extension of uploaded attachments isn't handled correctly
    • [ACT-943] - ReceiveTask with TimerBoundaryEvent not working as expected !
    • [ACT-957] - Unable to add 2 timerBoundaryEvents in sub process

    Improvement

    • [ACT-288] - Variable with authenticated user for be used inside form
    • [ACT-909] - Null-check for process name in explorer2 ui
    • [ACT-918] - Activiti-cdi: revisit process variable handling and interceptor
    • [ACT-926] - Add method that is called when root-element of BPMN is parsed to BPMNParseListener

    New Feature

    • [ACT-126] - Asynchronous continuations
    • [ACT-890] - Add Inclusive Gateway Support
    • [ACT-916] - Activiti-cdi: add thread context for thread-scoped associations
    • [ACT-917] - Activiti-cdi: add execution-based associations.

    Release Notes - Activiti - Version 5.7

    Highlights

    • A new Activiti Explorer application completely rewritten in Vaadin
    • The REST services have been rewritten to Restlet

    Important

    A couple of add-on applications have spun off from the Activiti download and started life on their own. Activiti Modeler continues as a Google code project called Signavio Core Components. Activiti Cycle now lives on as Camunda Fox. An evolved version of Activiti KickStart will become part of a new Alfresco cloud case management solution.

    Activiti Explorer has acquired Activiti Probe for an undisclosed amount :-) The resulting Activiti Explorer has been restyled and includes more dynamic task management features.

    The REST services were rewritten with the Restlet framework with backwards compatibility, so the REST interfaces haven't changed. The previous versions of Activiti included a REST services web application that used the Spring Surf and Webscripts framework. To implement a new or revised REST service you had to learn these frameworks. With moving to Restlet implementing new or revised REST services has become really simple.

    The demo setup has been limited to H2 database only, as many people struggled with getting the demo setup to run on their databases. The demo setup is a quick way to get familiar with Activiti and its tools, but it is by no means meant for production purposes. A section 'Changing the database' has been added to the userguide and is intended for advanced users who want to run the Activiti tools on their servers and databases.

    Sub-task

    • [ACT-705] - Enable opening a call activity's process if it exists in the workspace

    Bug

    • [ACT-481] - Replacing MailTask with ServiceTask by reconnecting connections renders different type of connection after deletion of MailTask
    • [ACT-629] - BPMN waypoints are not created accurately
    • [ACT-768] - JtaTransactionInterceptor should not rollback existing JTA transactions but use setRollbackOnly instead
    • [ACT-803] - Activiti-Designer creates activiti:field for empty field-values which causes an error on deployment of bar on activiti-probe
    • [ACT-842] - Activiti explorer pretty-time label tooltip doesn't show time, only date
    • [ACT-856] - Error format xml in parameters of Call-Activity
    • [ACT-867] - Login page of activiti explorer 2 is not showing in ie
    • [ACT-879] - Designer plugin creates multiple extensionElements Nodes in a serviceTask Node

    Improvement

    • [ACT-730] - Easier way to retrieve businessKey from task listeners
    • [ACT-833] - [PATCH] make new explorer SSO friendly
    • [ACT-835] - Make commands serializable
    • [ACT-841] - Designer changes timer start event to none start event
    • [ACT-843] - Rendering variable values in process-instance view should be made pluggable
    • [ACT-860] - Ability to set targetNamespace /process definition category
    • [ACT-880] - Add query capability to search for historic process instances based on the parent process instance id

    New Feature

    • [ACT-450] - Use a Activiti XSD for the XML editor
    • [ACT-708] - Allow dragging a shape and connector directly from the context buttons
    • [ACT-846] - Add Scrollbars to Process image in Explorer2
    • [ACT-852] - Support timer start event

    Task

    • [ACT-436] - Create retry interceptor
    • [ACT-773] - Define strategy for classloading
    • [ACT-787] - Enable probe functionality subset in the new webapp
    • [ACT-836] - Cleaning obsolete modules from codebase
    • [ACT-839] - Remove impl from the public javadocs
    • [ACT-849] - Integrate explorer 2 in demo setup
    • [ACT-857] - Limit demo setup to H2
    • [ACT-864] - Add support for MS SQL bootstrap

    Release Notes - Activiti - Version 5.6

    Highlights

    • Added direct Mule and Camel integration
    • Easier way to retrieve businessKey from task listeners
    • Improved support for Alfresco processes
    • Added support for delegateExpressions in tasklistener
    • Added support for BPMN multi instance in the eclipse designer
    • Extended length of all user defined text columns to 4000

    Known upgrade limitation

    In the DB schema creation scripts, we've enlarged the max size of certain varchar columns from 255 to 4000. See ACT-236. These schema updates are not part of the automatic upgrade procedure.

    Max length of following columns has been set to 4000:

    • ACT_RU_JOB.EXCEPTION_MSG_
    • ACT_RU_JOB.HANDLER_CFG_
    • ACT_RE_PROCDEF.RESOURCE_NAME_
    • ACT_RE_PROCDEF.DGRM_RESOURCE_NAME_
    • ACT_RU_TASK.DESCRIPTION_
    • ACT_RU_VARIABLE.TEXT_
    • ACT_RU_VARIABLE.TEXT2_
    • ACT_HI_TASKINST.DESCRIPTION_
    • ACT_HI_TASKINST.DELETE_REASON_
    • ACT_HI_DETAIL.TEXT_
    • ACT_HI_DETAIL.TEXT2_
    • ACT_HI_COMMENT.MESSAGE_
    • ACT_HI_ATTACHMENT.DESCRIPTION_
    • ACT_HI_ATTACHMENT.URL_

    If you want to perform these changes, you can do that manually. Check your database capabilities for the easiest way on changing the type of columns from varchar(255) to varchar(4000). As a fall back, for each table affected, you can:

    1. create a new temporary table
    2. copy the contents from the original to the temporary table
    3. delete the original table
    4. recreate the original table using the new create script with the proper lengths
    5. copy the contents from the temporary table back to the new original table
    6. drop the temporary table

    Bug

    • [ACT-665] - Activiti Designer 0.8.0 can not delete by keyboard
    • [ACT-691] - Cannot see property changes when clicking on new tasks (Activiti Engine)
    • [ACT-786] - NPE on default sequenceFlow without id
    • [ACT-803] - Activiti-Designer creates activiti:field for empty field-values which causes an error on deployment of bar on activiti-probe
    • [ACT-806] - Bug: multi instance service task with collection doesn't inject collection element
    • [ACT-808] - Support for default sequence flow in Activiti Designer
    • [ACT-809] - Deploying Webservice
    • [ACT-813] - deleting task cascading problem for new variable instances
    • [ACT-826] - Rules Filter in Business Rules Task

    Improvement

    • [ACT-730] - Easier way to retrieve businessKey from task listeners
    • [ACT-795] - Refactor BPMN 2.0 validation to worker list

    New Feature

    • [ACT-236] - Introduce new variable type text
    • [ACT-781] - Allow to set charset when sending email
    • [ACT-797] - Set a userTask priority on the bpmn20.xml
    • [ACT-799] - Implement support for specifying timer event definitions other than timeDuration
    • [ACT-805] - Add Ant view to Activiti perspective
    • [ACT-807] - support definition of delegateExpressions in tasklistener
    • [ACT-811] - Support BPMN Multi-instance

    Task

    • [ACT-703] - Complement palette
    • [ACT-780] - Enhancing the create task input field
    • [ACT-788] - Enable Alfresco user repository integration in the new webapp

    Release Notes - Activiti - Version 5.5

    Highlights

    • Added CDI support
    • Added dynamic sub task capabilities
    • Added support for event/activity streams
    • In the eclipse process designer,added support for default value for CustomServiceTask fields
    • Simplified persistence
    • Performance improvements
    • Many bug fixes

    Bug

    • [ACT-477] - Creating new diagram using wizard with existing name overwrites without warning
    • [ACT-718] - Ternary operator not working in Listener field expression
    • [ACT-757] - calledElement missing from call activity in generated bpmn
    • [ACT-764] - MultiInstance doesn't work for serviceTask
    • [ACT-765] - Initial priority from task is not stored on HistoricTaskInstanceEntity
    • [ACT-766] - Querying tasks causes HistoricTaskInstanceEntity to be loaded for each result
    • [ACT-782] - Javadoc of org.activiti.engine.test.Deployment is inconsistent with its implementation

    Improvement

    • [ACT-653] - When folders src/test/java and src/test/resources are missing my unittests are not generated
    • [ACT-725] - Expose task query criteria for priority >= and <= in addition to =
    • [ACT-728] - When creating a process model not in src/main/resources (e.g. test), the activiti file is created in the src/main/resources anyway
    • [ACT-732] - Upgrade to iBatis 3.04
    • [ACT-735] - Task owner is not stored on the HistoricTaskInstance
    • [ACT-742] - Use spring to wire explorer 2 application
    • [ACT-744] - Management pages should only be visible for admins
    • [ACT-750] - Refactor task-lists in explorer 2
    • [ACT-752] - Add more demo-data to explorer 2
    • [ACT-753] - Navigate to task URL for task where user is not involved should be forbidden

    New Feature

    • [ACT-559] - Allow default value for CustomServiceTask fields
    • [ACT-644] - Add support for dynamic subtasks
    • [ACT-743] - Add screen to edit user profile
    • [ACT-746] - Add people involvement in task UI
    • [ACT-747] - Add support for dynamic tasks in explorer UI
    • [ACT-748] - Add support for showing/adding subtasks in UI
    • [ACT-751] - Show event-stream in new explorer
    • [ACT-755] - Add/remove related URL to task
    • [ACT-759] - Allow user assignable Id for process elements.
    • [ACT-760] - Add Skype buttons

    Task

    • [ACT-741] - Refactoring persistence
    • [ACT-754] - Apply styling to vaadin-components
    • [ACT-767] - Add support for Events
    • [ACT-790] - Look at cycle persistence

    Test

    • [ACT-745] - Incorporate user/group administration into explorer 2

    Release Notes - Activiti - Version 5.4

    Compatibility note

    After releasing 5.3, we discovered that execution listeners and task listeners and expressions were still in non-public api. Those classes were in subpackages of org.activiti.engine.impl..., which has impl in it). org.activiti.engine.impl.pvm.delegate.ExecutionListenerorg.activiti.engine.impl.pvm.delegate.TaskListener and org.activiti.engine.impl.pvm.el.Expression have been deprecated. From now on, you should use org.activiti.engine.delegate.ExecutionListenerorg.activiti.engine.delegate.TaskListener and org.activiti.engine.delegate.Expression. In the new publicly available API, access toExecutionListenerExecution.getEventSource() has been removed. Apart from the deprecation compiler warning, the existing code should run fine. But consider switching to the new public API interfaces (without .impl. in the package name).

    Highlights

    • Added first version of BPM-Roundtrip with Activiti Cycle (see this Screencast)
    • Started building case management features in the engine: Added dynamic comments, attachments and due dates to tasks in Activiti Engine
    • IMAP folder scanning for new tasks
    • Added accounts to users in Activiti Engine
    • Provided support to specify form properties in Activiti Designer Eclipse plugin
    • Many bug fixes

    Sub-task

    • [ACT-692] - Activiti Designer 0.8.0 can not show diagram with callActivity tasks

    Bug

    • [ACT-607] - Developer Friendly BPMN doesn't remove Pools/Lanes in DI
    • [ACT-634] - Generated Jar file is invalid
    • [ACT-666] - Activiti 5.3 demo setup does not work on JDK 5
    • [ACT-667] - Diagram is cut off in some cases
    • [ACT-668] - Mail task doesn't leave activity
    • [ACT-670] - Designer 0.8.0 generates wrong bpmnElement references for subprocess elements
    • [ACT-681] - Db autodiscovery for DB2 does not work on all installations of DB2
    • [ACT-685] - Executing processes can cause StackOverflows
    • [ACT-695] - Exception when using HistoricVariables of type ByteArray on Postgres
    • [ACT-731] - Webservice invocation doesn't continue process execution

    Improvement

    • [ACT-655] - Throw better exception when form is not found
    • [ACT-669] - FormService.submitStartFormData should provide a way to specify businessKey for process instance

    New Feature

    • [ACT-459] - Query for tasks for a specific process definition
    • [ACT-564] - Add dueDate to tasks
    • [ACT-661] - Parse process definition documentation
    • [ACT-663] - Provide support to specify form properties
    • [ACT-672] - Allow querying task based on process-instance variable
    • [ACT-673] - Extend HistoricTaskInstanceQuery sorting: assignee, taskId
    • [ACT-675] - Allow querying HistoricTaskInstances based on the state of historic process-instance (running/completed)
    • [ACT-676] - Allow querying HistoricTaskInstances based on the value of the last variable-update for a certain task-variable
    • [ACT-677] - Query HistoricTaskInstances based on the process definition key, id and name
    • [ACT-688] - Add comments to tasks and process instances
    • [ACT-712] - Create feature that scans a IMAP-folder and creates task for each email in it.

    Task

    • [ACT-628] - Resolve publicly exposed implementation classes
    • [ACT-648] - Fix activiti-cycle-maven-template.zip
    • [ACT-649] - Document process instance visualization in Probe & REST
    • [ACT-650] - Verify links to jdk, eclipse and ant in userguide
    • [ACT-652] - Ensure docs on how to deploy from designer to engine
    • [ACT-679] - Add attachments to tasks and to process instances
    • [ACT-687] - Add owner property to tasks
    • [ACT-690] - Verify activiti dependency versions against the ones used in Alfresco
    • [ACT-694] - Add photo, skypeid and other account data to identities
    • [ACT-696] - Prototype new Explorer UI

    Release Notes - Activiti - Version 5.3

    Highlights

    • Added BPMN multi instance (==foreach) support
    • Added BPMN intermediate timer catch event
    • Added business rule task with Drools integration
    • Improved Spring integrations: added possibility to limit visibility of beans and also exposed spring beans in scripts
    • Added administrator console to manage users and groups
    • Added automatic DB type discovery
    • Various bug fixes

    Bug

    • [ACT-485] - Fields in HistoricTaskInstance aren't updated when corresponding Task fields are updated using API
    • [ACT-568] - Deleting an gateway does not delete the associated sequence flows
    • [ACT-575] - Name of node in diagram not updated in specific case
    • [ACT-589] - Kickstart does not display properly on 1024x768
    • [ACT-592] - Nullpointer when trying to set variables on process-instance which is waiting in a Task with a timer on it, when history-level is FULL
    • [ACT-598] - Bug in drawing of process diagrams: sequence flow out of gateways can't have conditional markers
    • [ACT-599] - BPMN20ExportMarshaller generates wrong id for startEvent and endEvent elements of subProcesses
    • [ACT-603] - docs for generated processdefinition id not correct
    • [ACT-604] - Cannot add variables to standalone task when history level is 'full'
    • [ACT-610] - ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE does not work with Oracle
    • [ACT-611] - It's not possible to delete sequenceFlows
    • [ACT-612] - ServiceTask: Switching the type from class to expression doesn't update BPMN2.0.xml
    • [ACT-618] - Call of setter before null check in file BpmnParse
    • [ACT-621] - When creating HistoricFormPropertyEntity query for HistoricActivityInstance isn't limited to the active one
    • [ACT-625] - Task form just displays a Failure error when deployed from Eclipse Designer
    • [ACT-627] - Subprocess Start and End event ids incorrectly generated
    • [ACT-629] - BPMN waypoints are not created accurately
    • [ACT-631] - Investigate potential concurrency bug
    • [ACT-637] - Using a call activity with activiti: in extension for variable passing results in null pointer when history level set to "full"

    Improvement

    • [ACT-429] - Allow to use expressions in timer duration
    • [ACT-484] - Add task priority to HistoricTaskInstance
    • [ACT-529] - Processimage name does not follow conventions used by explorer/API to show or get image
    • [ACT-530] - Deployment doesn't export process image
    • [ACT-549] - Need brief documentation of working with Eclipse Designer Sources
    • [ACT-584] - Add ability to delete IdentityLinks using API and DelegateTask
    • [ACT-585] - Limiting/disabling spring-beans in expressions should be possible
    • [ACT-587] - FieldInjection should try public setter first and revert to setting private field
    • [ACT-600] - Review and improve 10 minute tutorial
    • [ACT-601] - Review and improve Designer section in userguide

    New Feature

    • [ACT-469] - Add support for specifying a Form key for StartEvent in Designer
    • [ACT-483] - Support for specifying a form (form key) on a StartEvent
    • [ACT-506] - For each support (Multi instance)
    • [ACT-527] - Implement a Business Rule Task with Drools integration
    • [ACT-581] - CallActivity with in/out parameters: Add sourceExpression and documentation to User Guide
    • [ACT-582] - Add deleteHistoricProcessInstance() to HistoryService
    • [ACT-588] - Extend TaskQuery to add variableValue querying similar to the ProcessInstanceQuery
    • [ACT-593] - Allow firing of custom events to the active node on a given execution
    • [ACT-596] - Result DTO of KickstartService.findKickstartWorkflowById() is missing Task-ID's
    • [ACT-606] - Open existing BPMN XML directly in the project with the Designer
    • [ACT-641] - Implement intermediate timer catch event

    Task

    • [ACT-97] - Expose spring beans in Scripts
    • [ACT-416] - Document how to open mgr of the in memory db
    • [ACT-422] - Make spring parsing dependency optional
    • [ACT-442] - expose root cause for class not found exceptions
    • [ACT-526] - Provide Money tasks example code from userguide in repository
    • [ACT-540] - Distill db name from the datasource
    • [ACT-571] - Upgrade KickStart to Vaadin 6.5.0
    • [ACT-574] - Rename service task resultVariableName to resultVariable
    • [ACT-623] - Simplify access to process engine configuration through Context
    • [ACT-632] - Update repo link
    • [ACT-642] - Include MIT license file in the activiti-modeler.war distribution file
    • [ACT-645] - Merge Administrator branch into trunk

    Release Notes - Activiti - Version 5.2

    Highlights

    • First version of the jBPM-Activiti migration
    • Visualization of the current activity in Activiti Probe
    • Added support for BPMN error event in Activiti Engine
    • Added support for BPMN 2.0 import in Activiti Designer
    • Improved form datatypes
    • Automated in container testing
    • Various bug fixes

    Sub-task

    Bug

    • [ACT-428] - It is not possible to use function with more then 1 argument as custom assignment handler for candidateGroups
    • [ACT-473] - ProcessEngineFactoryBean fails to register created process engine properly
    • [ACT-474] - Activiti Designer doesn't support multiple end events
    • [ACT-479] - Vacation Request form example code in user guide is not correct
    • [ACT-505] - Process definition cache not in sync when redeploying process definition with same generated id
    • [ACT-509] - Reported progress for ExportMarshallers and ProcessValidators is incorrect
    • [ACT-533] - In Eclipse the export process to bpmn20.xml fails in some attributes of "UserTask"
    • [ACT-557] - Field TASK_DEF_KEY_ is not populated on ACT_HI_TASK and not exposed on HistoricTaskInstance
    • [ACT-572] - Maven "check" profile states successful build when there are test-failures

    Improvement

    • [ACT-467] - Invalid small icon path throws unclear exception
    • [ACT-492] - Incorrect icon paths result in exceptions for CustomServiceTasks
    • [ACT-498] - Include active activity instance id on HistoricVariableUpdate when variable is updated
    • [ACT-499] - Start- and end-event should also be include as HistoricActivityInstance when history-level is at FULL
    • [ACT-534] - The BPMN validator should not fail validation if CustomServiceTasks are included
    • [ACT-567] - Allow assignee of a task to be set to null

    New Feature

    • [ACT-15] - Implement BPMN boundary error event
    • [ACT-281] - BPMN default sequence flow
    • [ACT-354] - Add data mapping capabilities in call activity
    • [ACT-446] - Add support for execution and task listener configuration
    • [ACT-447] - Add support for a receive task
    • [ACT-511] - Add support for simple controls in CustomServiceTasks
    • [ACT-543] - Capture initiator in KickStart
    • [ACT-554] - Return deploymentId when deploying process in AdhocWorkflowService (KickStart)
    • [ACT-555] - Rename AdhocWorkflowService to KickstartService
    • [ACT-560] - Improve CallActivity for independant subprocess to support parameters
    • [ACT-563] - Start JBPM Migration
    • [ACT-569] - Visualize current activities of process instances in probe

    Task

    • [ACT-108] - Create server script for continuous integration
    • [ACT-457] - Support the documentation element
    • [ACT-486] - User library is not present by default
    • [ACT-494] - Refactor deployments
    • [ACT-496] - Change action icons to links
    • [ACT-504] - Document exception handling in service task
    • [ACT-510] - Check export for each PropertyType to BPMN
    • [ACT-544] - Fix oracle metadata problem

    Wish

    • [ACT-188] - Source jar files are not published on maven repository
    • [ACT-476] - document the activiti database tables

    Release Notes - Activiti - Version 5.1

    Warning

    The automatic upgrade does not have enough coverage to have full confidence. For more info, see the user guide, section Database upgrade.

    Changes

    • In attribute <serviceTask delegateExpression="..."> previously always performed a leave after calling the delegate that was obtained by evaluating the expression. Which means that it's always an automatic activity. Now the leave is only performed only when the delegate object implements JavaDelegate. In case the delegate object implements ActivityBehavior the leave will not be called. In that case, the ActivityBehavior is responsible for calling leave if it wants to be an automatic activity.

    Highlights

    • Added Activiti KickStart making the creation of new BPMN process models as easy as 1, 2, 3
    • Added automatic upgrade of the DB schema from 5.0 to 5.1
    • Added generation of process definition diagram based on DI information
    • Added display of process definition diagram
    • Added historic task instances
    • Added Comments to artifacts in Cycle
    • Improved Cycle Plug-In Infrastructure (now using Annotations)
    • Fixed various bugs

    Sub-task

    • [ACT-386] - Split the BPMN 2.0 marshalling into marshalling and validation parts

    Bug

    • [ACT-418] - Missing groovy dependency in demo setup
    • [ACT-419] - Remove automatic leave when using delegateExpression in serviceTask
    • [ACT-424] - BPMN Export differs between manual and automatic and causes unnecessary exceptions
    • [ACT-430] - SequenceFlows are only deleted for Task elements
    • [ACT-434] - SaveHandler is only invoked from key combination
    • [ACT-443] - HistoricDetail doesn't use activitiyInstanceId

    Improvement

    • [ACT-18] - Show process definition diagram
    • [ACT-226] - Retrieve the expression from the PvmTransition

    New Feature

    • [ACT-336] - Create email service task node
    • [ACT-385] - Create extension point to validate diagrams
    • [ACT-408] - Allow usage of lists as property of CustomServiceTask
    • [ACT-413] - Allow parametrization of PropertyTypes
    • [ACT-421] - Introduce task-local variables
    • [ACT-455] - Make parselisteners configurable on ProcessEngineConfiguration
    • [ACT-464] - Introduce HistoricTaskInstance
    • [ACT-470] - Create and include Activiti KickStart in the distribution

    Task

    • [ACT-293] - Refactor variable map
    • [ACT-420] - Automatic upgrade
    • [ACT-439] - Extract image generation in code in module activiti-engine
    • [ACT-440] - Add process image generation to bpmn deployer
    • [ACT-444] - Add task query criteria for taskDefinitionKey and -Like
    • [ACT-458] - Check if seperate selectTaskByQueryCriteria is needed for MySQL in task.mapping.xml
    • [ACT-471] - Add taskId ref to HistoricDetail

    Release Notes - Activiti - Version 5.0

    Highlights

    • Various bug fixes
    • Activiti Engine: Added more configuration options and synced standalone with Spring configuration
    • Activiti Engine: Added task listeners
    • Activiti Probe: Deployment through file upload
    • Activiti Cycle: Loads of improvements for the GUI, tagging and linking, new connectors for SVN and SFTP, Maven project generation
    • Activiti Designer: Possibility to add your own developed nodes to the Designer with the Designer extension functionality
    • Activiti Designer: BPMN 2.0 XML editor with content assist
    • Activiti Designer: Deployment editor with support to generate a BAR file
    • Activiti Designer: Support for e-mail and manual tasks
    • Activiti Designer: Field extensions editor for the Service task and support for expressions
    • Activiti Designer: Support for Formkey attribute for User tasks
    • Activiti Designer: Automatic generation of the BPMN 2.0 XML and a process image after each save of the editor diagram (no need to for an explicit export).

    Bug

    • [ACT-194] - Business model is not persisted when reconnecting SequenceFlow
    • [ACT-215] - TaskEntity does not populate processInstanceId
    • [ACT-217] - Review documentation
    • [ACT-225] - Cannot see database view in Probe
    • [ACT-255] - Access via url to Explorer lose url after authentication.
    • [ACT-295] - Sorting processes on name doesn't work
    • [ACT-297] - Error when creating link in activiti-cycle on postgres DB
    • [ACT-306] - Nullpointer exception when sequence flow has invalid destination
    • [ACT-308] - Review DeployBarTask handling when no ProcessEngine is found
    • [ACT-314] - REST-call task get doesn't return valid JSON
    • [ACT-318] - Cannot open PNG picture in Activiti-Cycle if the model name has whitespaces in the name
    • [ACT-320] - Replace of JAVA_OPTS in demo setup not working on Windows
    • [ACT-323] - Business key not persisted in HistoricProcessInstance
    • [ACT-329] - HistoricProcessInstance startActivityId() and endActivityId() is always null
    • [ACT-334] - Remove check whether user/group exists when claim/addCandidateXX/etc.
    • [ACT-338] - Pagination Links in Processes List in Activiti Explorer doesn't work
    • [ACT-347] - Fix Spring bean usage in ServiceTask
    • [ACT-351] - Possible illegal query results when querying ProcessInstances by date/long variable value
    • [ACT-352] - HistoricVariableUpdate of type byteArray/serializable throws NPE when calling getValue()
    • [ACT-353] - Boolean variables are stored as bytearray
    • [ACT-366] - Problems with Umlauts in Modeler
    • [ACT-369] - Modeler requires Java 6 to run
    • [ACT-371] - Latest SVG API doesn't work with Activiti Modeler examples
    • [ACT-377] - Empty diagrams have no Process entity by default
    • [ACT-379] - Methode getLabels() is missing in Shape
    • [ACT-391] - Exception with BPMN 2.0 XML Export of examples in Modeler.
    • [ACT-403] - Cycle in demo-setup throws exception when opening 'Activiti Modeler' node in tree
    • [ACT-405] - Cycle create-scripts for oracle contain errors
    • [ACT-409] - Task form properties not persisted on history level audit

    Improvement

    • [ACT-162] - Simplify extensibility of identity component
    • [ACT-212] - Prefix foreign keys with FK_ACT_* instead of FK_*
    • [ACT-252] - Typo in warning message is misleading: "XPath currently not supported as typeLanguage"
    • [ACT-274] - Switch to Spring Surf/Webscripts 1.0 for all web applications & rest api (and use its new abstract authenticator base class)
    • [ACT-292] - Stop making default event being bookmarked
    • [ACT-327] - Add finished() to the HistoricActivityInstanceQuery to be able find all completed activities
    • [ACT-328] - add getId() into HisctoricActivitiInstance and add search by id into HistoricActivitiInstanceQuery
    • [ACT-359] - Invoke export to BPMN 2.0 automatically via ExportMarshaller extension point

    New Feature

    • [ACT-211] - BPMN: assignment handler
    • [ACT-222] - Make activiti jars valid OSGi bundles
    • [ACT-235] - Add an OSGi extender to deploy activiti processes as osgi bundles along with the needed URL handlers and fileinstall deployers
    • [ACT-278] - Add support for extending designer's functionality with custom service tasks
    • [ACT-290] - SVG API should not peform access to Signavio Academic Version in the Internet
    • [ACT-300] - Deploy business archive with Activiti Probe
    • [ACT-301] - Expose getFormService() for ActivitiRule
    • [ACT-360] - Provide an osgi web bundle for the rest api
    • [ACT-363] - Bug with relative paths in Modler Backend
    • [ACT-364] - The BPMN 2.0 serialization isn't the latest version
    • [ACT-365] - The BPMN 2.0 DI is still the early draft, not the spec version
    • [ACT-367] - Release a new Maven version of the Signavio core components and upload them to the alfresco repository
    • [ACT-396] - activiti.cfg.jar should go in webapps\activiti-rest\WEB-INF\lib as well

    Task

    • [ACT-123] - Review the user guide for experimental features
    • [ACT-163] - Investigate if smaller groovy jar is sufficient
    • [ACT-171] - Remove model repository workaround in demo.setup
    • [ACT-180] - Fix forced downloads in mule build
    • [ACT-205] - Create Ant script to assemble update site
    • [ACT-256] - Changed config param dbSchemaStrategy to databaseSchemaUpdate
    • [ACT-296] - Fix date picker in safari
    • [ACT-299] - Fix JobQuery test
    • [ACT-311] - Rename JavaDelegation to JavaDelegate
    • [ACT-315] - fix wsdl importer parsing
    • [ACT-317] - Improve lib dependency management in distribution
    • [ACT-321] - Add orderByCreateTime() to TaskQuery
    • [ACT-332] - Make variable types configurable
    • [ACT-335] - Move modeler patching from demo setup to a dedicated build
    • [ACT-337] - Refactor distribution to remove maven and include the libs in the distro
    • [ACT-340] - Add process definition diagram resource property
    • [ACT-342] - Make sessions configurable
    • [ACT-348] - Make handling of process definition resource name and other resource names consistent
    • [ACT-349] - Delete rest 2 webapp
    • [ACT-355] - Test java delegations in demo setup after distro refactoring
    • [ACT-358] - Lazy initialization of delegation classes
    • [ACT-378] - Unify and simplify configuration
    • [ACT-381] - Verify history level configuration
    • [ACT-383] - Fix exception message
    • [ACT-393] - Create build file for example projects to deploy business archives and classes
    • [ACT-394] - Review setup target cfg.create
    • [ACT-395] - Doc URIEncoding for Activiti Modeler
    • [ACT-399] - Check driver jars and setup demo.start with other dbs
    • [ACT-400] - Add release notes to the readme.html
    • [ACT-401] - Add cxf module to the checkmule profile
    • [ACT-402] - Add version number to userguide title

    5.0.rc1 (November 1, 2010)

    Highlights

    • Activiti Probe added Job and Deployment management
    • Event listeners
    • Query for process instances based on variable values
    • Parameterized method expressions
    • History details and audit capabilities
    • Extracted FormService and improved flexible form handling
    • Activiti config file from properties to xml
    • PostgreSQL en Oracle support
    • Improved DB performance by fine tuning indexes

    Known limitations

    • [ACT-294] - Currently the forms as worked out in Activiti Explorer do not yet use the submitStartFormData and submitTaskFormData. So the form properties are not yet archived when using the forms in Activity Explorer.

    Sub-tasks

    • [ACT-191] - Documentation Mistake in ProcessEngineFactoryBean section of User Guide

    Bug

    • [ACT-144] - Canot start process instance when sorted on version first
    • [ACT-192] - Table "ACT_ID_GROUP" not found for dbSchemaStrategy = "create-drop"
    • [ACT-194] - Business model is not persisted when reconnecting SequenceFlow
    • [ACT-195] - UpdateConnectionFlowElementFeature is not invoked for SequenceFlows
    • [ACT-206] - Cannot unclaim a task
    • [ACT-233] - Connection pool of Ibatis is not used in standalone usage
    • [ACT-287] - Starting process instance in explorer doesn't show 'Start form' anymore when the process has a startform

    Improvement

    • [ACT-21] - Manage list of deployments
    • [ACT-22] - Manage list of jobs
    • [ACT-23] - Add no-wrap to task list menu navigation
    • [ACT-129] - Make connection pool of MyBatis configurable
    • [ACT-138] - Create REST API for Manage list of jobs
    • [ACT-139] - REST API for Manage list of deployments
    • [ACT-179] - Fix css code so its consistent with the rest of the app
    • [ACT-189] - Engine should be able to resolve parameterised method expressions
    • [ACT-196] - Process and subprocess diagram should have default content
    • [ACT-197] - SequenceFlow arrowheads are mispositioned and too large
    • [ACT-209] - Expose Task start time in interface and query API
    • [ACT-210] - Rename ActivitiRule.getHistoricDataService() to ActivitiRule.getHistoryService()
    • [ACT-213] - Verify all basic indices exist on supported databases
    • [ACT-214] - Clarify documentation demo setup
    • [ACT-216] - ServiceTaskMethodExpressionActivityBehavior / ServiceTaskValueExpressionActivityBehavior should support storing service task return value in process variable
    • [ACT-219] - Update Userguide with latest UI changes
    • [ACT-224] - Allow parsing of document element for all activity types
    • [ACT-230] - Change BpmnParse: instead of throwing an exception, use the addProblem() method
    • [ACT-238] - Extract common methods from Query API to single Interface
    • [ACT-241] - Handle closing of inputstreams in a consistent way
    • [ACT-246] - Missing warning when process has a construct which is unsupported.
    • [ACT-257] - Define a order for group list (left panel)
    • [ACT-259] - Make method naming in Query API consistent
    • [ACT-260] - Make namespace prefix consistent activiti:
    • [ACT-261] - Change dashes in xml-entities to camelCase
    • [ACT-265] - Always use ReflectUtil to do classloader-related operations
    • [ACT-272] - Only use 'Expression' instead of making distinction between value/method

    New Feature

    • [ACT-120] - Audit tracking
    • [ACT-125] - BPMN: add event listeners
    • [ACT-145] - Add Task.getTaskDefinitionKey()
    • [ACT-148] - Make Activiti "offline runnable"
    • [ACT-152] - Introduce business key
    • [ACT-190] - Query for process instances based on variable values
    • [ACT-208] - Cannot remove a variable
    • [ACT-220] - Allow for parameter injection in method-expr on service-task
    • [ACT-242] - Expose process definition model for introspection
    • [ACT-258] - Introduce form instances
    • [ACT-273] - Allow user to customize preference of automatically adding labels to sequence flows

    Task

    • [ACT-134] - Revisit configuration
    • [ACT-137] - Add oracle support
    • [ACT-174] - Document link to Signavio community in our wiki
    • [ACT-183] - Remove 'about' tabs in the webapps
    • [ACT-186] - Improve exception analysis when no tables are present
    • [ACT-193] - Bring CYCLE_CONFIG in sync with rest of table naming conventions
    • [ACT-243] - Expose Execution.getProcessInstanceId
    • [ACT-245] - review variable in ByteArrayEntity
    • [ACT-247] - Clean unused table columns
    • [ACT-248] - Verify HistoricProcessInstance query filtering
    • [ACT-251] - Add task audit to history
    • [ACT-262] - Check docs about bar file classloading
    • [ACT-263] - Use a correct versioning scheme for activiti-juel module
    • [ACT-264] - Remove eclipse/idea files from trunk
    • [ACT-266] - Make demo-setup run on Postgres
    • [ACT-267] - Merge pvm and juel modules into engine
    • [ACT-282] - Transform BpmnJavaDelegation class to JavaDelegation interface
    • [ACT-283] - rename activiti bpmn extensions namespace

    Test

    • [ACT-221] - Add an integration test for the webservice task solely based on CXF

    5.0.beta2 (October 1, 2010)

    Highlights

    • Added Activiti Designer, an eclipse plugin for process authoring targetted for developers
      • Design BPMN processes grafically: start event, end event, sequence flow, parallel gateway, exclusive gateway, embedded subprocess, script task, user task and service task.
      • Generate JUnit test case by right click on the process in the package explorer
      • Run the JUnit test with an embedded h2 database
      • Configure Java class for a service task
      • Configure assignee or candidate for a user task
      • Configure script with a script task
    • Added DB support for MySQL and PostgreSQL
    • Activiti Modeler and Activiti Engine are now synced on the final BPMN 2.0 specification
    • New improved version of Activiti Modeler
    • Loads of Activiti Cycle improvements
    • Added JDK 5 compatibility
    • Added history activity instances
    • Added unit testing support
    • Added email support and receive activity
    • Added optimistic locking for out-of-the-box clustering support
    • Added more query APIs
    • Minor API cleanup

    Bug

    • [ACT-1] - Change init servlet into context listener
    • [ACT-56] - Activiti Modeler is bound to localhost instead of the actual servername
    • [ACT-57] - Condition on sequence flow is not saved to bpmn20.xml file after reopening an existing process
    • [ACT-71] - Activiti Modeler doesn't work if not installed by demo setup
    • [ACT-76] - JSON Response contains unescaped control caharcters
    • [ACT-94] - java.util.logging.ErrorManager/ NullPointerException in catalina.out at startup of tomcat
    • [ACT-113] - Modeler "Save" does not regenerate bpmn20.xml file
    • [ACT-114] - Unable to save newly created diagram twice
    • [ACT-115] - Table ACT_GE_PROPERTY cannot be created on MySQL with UTF-8 encoding due to limitation of key index length
    • [ACT-142] - Logo is linked to Signavio jBpm page
    • [ACT-181] - Automatic deployment on resource change doesn't work

    Improvement

    • [ACT-7] - Move logging.properties process activiti-engines-init to tomcat installation
    • [ACT-23] - Add no-wrap to task list menu navigation
    • [ACT-64] - Configure Tomcat in demo setup to have more memory
    • [ACT-66] - Make task form rendering consistent in API
    • [ACT-68] - Make demo.setup run on MySQL
    • [ACT-69] - Add ant target to start up h4 console
    • [ACT-70] - Review API and build systematic test coverage
    • [ACT-73] - Document usage of activiti prefix
    • [ACT-104] - Replace findXxx methods returning lists with query API
    • [ACT-140] - REST API for Show process definition diagram
    • [ACT-158] - ScriptTaskActivity should support storing script execution result in a process variable with configurable name
    • [ACT-182] - Add internal support for create-if-necessary db schema stragegy

    New Feature

    • [ACT-35] - Provide external URL for navigating task forms
    • [ACT-83] - Capture the initiator
    • [ACT-109] - BPMN: document receive task
    • [ACT-146] - Add Activiti FavIcon to webapp
    • [ACT-168] - Introduce identityLink in API

    Task

    • [ACT-30] - Finish the basic history data model
    • [ACT-44] - Verify exception and rollback behavior in Spring context
    • [ACT-49] - make activiti compatible with jdk 5
    • [ACT-52] - Remove BPMN 2.0 Beta compatibility
    • [ACT-67] - Rename modules activiti-probe to activiti-webapp-probe, similar for activiti-explorer
    • [ACT-78] - move sortorder out of the interface package
    • [ACT-84] - move parsing of value expression to bpmn parser
    • [ACT-87] - Fill exception field when job fails
    • [ACT-89] - Review test support
    • [ACT-95] - fix testTwoNestedSubProcessesInParallelWithTimer
    • [ACT-103] - Consider removing Page from engine interface
    • [ACT-105] - Add auto redirect to Activiti Modeler
    • [ACT-106] - Add testing for optimistic locking
    • [ACT-110] - Move Chapter 11. Running QA tests to wiki
    • [ACT-124] - Document library dependencies
    • [ACT-127] - Restructure modules
    • [ACT-130] - Reupload Maven artifacts due to checksum error
    • [ACT-131] - Switch to new repository/build for Ativiti Modeler
    • [ACT-133] - Refactor start process instance
    • [ACT-135] - Cleanup unused task properties
    • [ACT-136] - Verify MySQL
    • [ACT-153] - Replace DbSchemaStrategy enum with String
    • [ACT-155] - Create Junit @Rule test with ActivitiRule and document it
    • [ACT-156] - Revise Java service task: introduce BpmnJavaDelegation and field injection
    • [ACT-157] - Create mail activity
    • [ACT-159] - Remove expressionLanguage and typeLanguage in examples
    • [ACT-167] - fix excluded test RepositoryConnectorConfigurationManagerImplTest
    • [ACT-177] - Document configuration file properties

    5.0.beta1 (September 1, 2010)

    Known limitations

    • Optimistic locking isn't tested yet [ACT-106]
    • History only contains HistoricProcessInstances, no HistoricActivityInstances yet [ACT-30]
    • Some API changes are still expected [ACT-104]

    New Features

    • [ACT-55] - Introduce first version of Activiti-Cycle
    • [ACT-91] - Expand serviceTask with method and value expressions

    Bugs

    • [ACT-39] - fix ProcessEngineInitializationTest
    • [ACT-98] - REST API errors
    • [ACT-99] - Table records don't show

    Improvements

    • [ACT-2] - Clean up API
    • [ACT-6] - Rename DbProcessEngineBuilder to ProcessEngineBuilder
    • [ACT-60] - pvm refactoring
    • [ACT-79] - Please add a ELResolver that automatically resolves any bean in the Spring BeanFactory in which the ELResolver resides
    • [ACT-80] - Extend service task to SignallableActivityBehavior
    • [ACT-82] - Expose form attribute from Task object

    Tasks

    • [ACT-48] - Add Grails plugin link to docs or website
    • [ACT-59] - define table/column naming strategy
    • [ACT-61] - Introduce query API for deployments and resources
    • [ACT-75] - document maven repo in the website community page
    • [ACT-85] - Improve error message when db driver is not found
    • [ACT-86] - Fix classpath in setup script for other dbs
    • [ACT-90] - Add Spring integration examples and documentation
    • [ACT-96] - Cycle demo build creates 2 files in codebase
    • [ACT-101] - Add sorting of the table names in Probe

    5.0.alpha4 (August 1, 2010)

    Improvements

    • MySQL support
    • Support for method expressions on sequence flow
    • Revised ActivityExecution API
    • Added ConcurrencyController API
    • Process Event Bus
    • Taskforms: added date and date picker support
    • Explorer: changed process definition drop down list to a separate page

    New features

    • BPMN parallel gateway
    • BPMN manual task
    • BPMN (embedded) subprocess
    • BPMN call activity (subprocess)
    • BPMN Java service task
    • Spring integration (experimental, no docs yet)

    Bugfixes

    • Made engine compatible with BPMN 2.0 beta process models
    • Fixed exception on windows and linux when using boundary timer event
    • Expression cannot have whitespaces

    5.0.alpha3 (July 1, 2010)

    Improvements

    • Switch from iBatis to MyBatis
    • JobExecutor
    • BPMN Timers
    • BPMN JSR 223 script support.
    • Updated to a newer version of BPMN xsd
    • Query API
    • Switched JUnit usage from 3-style inheritance to 4-style annotations

    5.0.alpha2 (June 1, 2010)

    Improvements

    • Task forms in Activiti Explorer
    • Database table content viewer in Activiti Probe
    • Exclusive gateway
    • Unified Expression Language support
    • Reduced download size

    Known limitations

    • No history in Activiti Engine
    • Only single DB: H2
    • Only one tx demarcation tech: standalone JDBC
    • No process concurrency

    5.0.alpha1 (May 17, 2010)

    Known limitations

    • No history in Activiti Engine
    • Only single DB: H2
    • Only one tx demarcation tech: standalone JDBC
    • No task forms
    • No process concurrency
    • No Activiti Cycle

    展开全文
  • SQLDirect组件库用户指南

    万次阅读 2008-04-22 12:08:00
    SQLDirect组件库For Delphi 4, 5, 6, 7, 8, 9 (2005), 10 (2006), 2007 和C++ Builder 4, 5, 6, 2006, 2007ver. 5.2用户指南IntroductionThank You for using SQLDirect Component Library. I hope that
      
    
    SQLDirect组件库
    For
    Delphi 4, 5, 6, 7, 8, 9 (2005), 10 (2006), 2007
    和C++ Builder 4, 5, 6, 2006, 2007
    ver. 5.2
    用户指南

    Thank You for using SQLDirect Component Library. I hope that it will facilitate to You development and distribution of Your applications.
    About SQLDirect
    SQLDirect Component Library was written in Delphi by Yuri Sheino. It is 100% native Delphi components.
     
    SQLDirect Component Library - set of non-visual Delphi components. These components expand possibilities Delphi Visual Component Library, give you access to data on SQL-servers around BDE or ODBC (if you wish) and support all data-aware components. Now library supports the following SQL-servers: Centura SQLBase (version 6 and 7), Oracle Server (7.2+), IBM DB2 Database, Informix, Interbase, MySQL, PostgreSQL, Microsoft SQL Server, Sybase Adaptive Server Enterprise, Adaptive Server Anywhere (through Open-Client Library), ODBC and OLEDB. Hereafter this list will extend. For access to databases the native programming interface (API) of servers is used only. It means, that access to SQLBase-databases needs SQLBase Client for Windows, to the databases on Oracle - Oracle SQL*Net, to the DB2 databases - Client Application Enabler, to the databases on SQL Server - SQL Server Client and to the Sybase databases - Sybase Open Client libraries.
     
    The previous history SQLDirect Library began in times Delphi 1, as the object interface to the SQLBase server of the company Gupta (at that time). I wanted to develop my application on Delphi, but I did not want to use ODBC-drivers and distribute BDE+ODBC with my applications. I did not have choice therefore library should appear. Later n ecessity of carry of applications written using of the library has appeared to transfer on the more high-power and reliable Oracle server. Owing to what there was a processing of realization of classes for support of several kinds of database access interfaces. The appearance of the
    Delphi 3 has enabled to make data-aware components and easier in use library. Therefore SQLDirect Component Library has appeared…
    Using of SQLDirect Component Library gives you following advantages:
    ü      use 32-bit native API of the supported SQL servers: Centura SQLBase Server 6(+),Oracle Server 7.2(+) with SQL*Net 2.2(+), IBM DB2 Database, Firebird, Interbase, Microsoft SQL Server 6.5, MySQL 3.23(+), PostgreSQL 7.1, Sybase ASE and ASA, Informix, ODBC and OLEDB datasources;
    ü      no distributing, installing and configuring the BDE and ODBC;
    ü      give to you simultaneous access to any supported servers;
    ü      you can use Delphi 4, 5, 6, 7, 8, 9 (2005) or C++ Builder 4, 5, 6 version (Pro and above) to develop Client/Server applications;
    ü      query with an updatable result set
    ü      table component
    ü      script component
    ü      thread safe;
    ü      BLOB-fields;
    ü      stored procedure support (with multiple result set for some servers);
    ü      bi- and uni-directional result sets;
    ü      cached updates;
    ü      filtering records;
    ü      support all data-aware components (including InfoPower);
    ü      using images stored by Centura SqlWindows(or Team Developer);
    ü      interfaces (public methods and properties) of SQLDirect components is compatible with standard BDE data access components (TSession, TDatabase, TQuery ..).
     
    Note for Oracle, the SQLDirect Library uses deferred mode of statement execution for minimizing network traffic and piecewise insert, update and fetch of long BLOB-fields, it is supported only by Oracle Server 7.2(+) and Oracle SQL*Net 2.2(+).
     
    Thread safety is supported (and is documented) by the following software: Oracle SQL*Net 2.3 or later, SQLBase Ver. 7, Microsoft SQL Server, IBM DB2, Interbase 6, MySQL, Sybase OpenClient ver. 11.1 or above and ODBC. SQLBase Ver.6 does not support thread safety!

    For every developer you need to purchase a SQLDirect Standard or SQLDirect Professional license. The registered users are ensured with a free support by e-mail and all updates within 2 years from the purchase.
     
    You can develop and distribute applications using the registered SQLDirect Component Library without any royalties. You can not distribute registered (original or modified) SQLDirect Component Library.
     
    If you like SQLDirect Library and you want to receive the registered version you should purchase SQLDirect Std or SQLDirect Pro license.
     
    Version of library
    Price, $US
    Online Registration
    SQLDirect Std (w/o source)
    149
    http://www.sqldirect-soft.com/ordering.html
    SQLDirect Pro (with source)
    399
    SQLDirect Pro Upgrade (Std -> Pro)
    279
    2-year support prolongation
    50
     
     
    All prices do not include VAT(value added tax), which is applied to customers from EU.

    ATTENTION! For work with the SQLDirect Component Library you need to install appropriate 32-bit client software of the corresponding database server. See below for more information.
    You need to know the password for an installation of the registered version. After copying files you have to install the SQLDirect components in Delphi component palette. Select the following menu item Component->Install Packages (Installed .NET Components), then press Add button, find and select the corresponding library DclSql40.bpl, DclSql45.bpl, DclSql50.bpl, DclSql60.bpl, DclSql70.bpl, DclSql80N.dll, DclSql90N.dll or DclSql90.bpl, DclSql100N.dll or DclSql100.bpl from the SQLDirect directory.
    Attention! DclSql50.bpl and DclSql60.bpl is a design-time packages for Delphi/C++Builder 5 and Delphi/C++Builder 6. These packages are located in SqlDir/Delphi5 and SqlDir/Delphi6 directories for accordingly C++Builder 5 and C++Builder 6.
    Be sure to include the SQLDirect library path in Library Path to avoid "File not found" errors at compile time.
    This is found in the Environment Options for the project on the Library tab.
    In Delphi 8, 9 and 10 you need to add the following path <%SYSTEMROOT%/System32> in Assembly Search Paths of Installed .NET Components dialog.
    Since v.5.1 installation script can apply these changes automatically, when you select these options.
     
    The SQLDirect runtime packages (SqlDir40.bpl, SqlDir45.bpl, SqlDir50.bpl, SqlDir60.bpl, SqlDir70.bpl, SqlDir80N.dll, SqlDir90N.dll and SqlDir90.bpl, SqlDir100N.dll and SqlDir100.bpl) and helper SqlDirHN.dll are installed into the Windows system directory (for instance, WIN95/SYSTEM or WINNT/SYSTEM32). They can be distributed with your application, which compiled with the package using option.
    If you want to convert existing applications using BDE-components without rewriting them, you need to modify pas-files and dfm-files in your project. First, you need to open dfm-file (as text) or pas-file and replace a type of BDE-components with a type of appropriate SQLDirect-components. For example, it is necessary to replace TDatabase on TSDDatabase, TQuery on TSDQuery etc. In the uses clause of pas-files you need to replace SDEngine unit on DBTables unit.
    If you want to use Woll2Woll InfoPower (ver. 3.01 or above) components with SQLDirect then you need to install TSDwwQuery component into any packages (for instance, SQLDirect or User Components - dclusr?0.dpk). For install this component select menu item Component->Install Component in Delphi IDE, then find and select the following file SDwwData.pas in SQLDirect directory.
    NOTE: If you include TSDwwQuery component into the SQLDirect package, it'll be depend from InfoPower package. And all your application dependent from SQLDirect package will depend from InfoPower package, which is more 2-3 times than SQLDirect package. I think better include this component into run-time package, which don't distribute with your applications. Therefore this component will compile and link with your application, when you need it.
    In the following table you can view what software is need to install for connecting to the specified database server.
    Database Server
    Client software
    Oracle
    Oracle SQL*Net 2.2 or later
    Centura SQLBase
    SQLBase Client for Windows
    MS SQL Server
    Microsoft SQL Client
    Sybase ASE or ASA
    Sybase Open Client libraries
    IBM DB2
    IBM Client Application Enabler 5.2 or later
    Informix Server
    Informix Connect 2.8 or later
    Interbase Server
    Interbase Client
    ODBC
    ODBC Manager + ODBC drivers (+ Client software)
    OLEDB
    MDAC 2.6 or later (Microsoft Data Access Components)
    MySQL Server
    MySQL 3.23 client (libmySQL.dll)
    PostgreSQL
    PostgreSQL 7.1 client (libpq.dll)
    Adaptive Server Anywhere requires the setting up as an Open Server for connect through Open Client library (see Adaptive Server Anywhere User's Guide, Part 5 Adaptive Server Family, Chapter 26 Adaptive Server Anywhere as an Open Server).
    SQLAnywhere 5 provided support for Open Client application through separate Open Server Gateway. However in difference from the previous version Adaptive Server Anywhere 6 and above is part of the Sybase Adaptive Server Family. It means that ASA v.6+ can appear to client applications as Open Server and have native support for Sybase Open Client programming interface.
    Set up Adaptive Server Anywhere v.6+ for connect through Open Client:
    1.       Install Adaptive Server Anywhere software on a server computer
    2.       Start up network (dbsrv6.exe) or personal (dbeng6.exe) server as Open Server (only through TCP/IP, default port - 2638).
    For example:
    dbsrv6.exe -x tcpip asademo.db
    dbsrv6.exe -x tcpip{ServerPort=2639} asademo.db
    dbsrv6.exe -x tcpip{ServerPort=2639} -n asasrv1 asademo.db
    3.       Install Open Client components on a client computer
    4.       Add and configure Open Server entry using DSEdit utility
    For example, for Open Server with name ASASRV1:
    Attributes
    Value
    Server Entry Version
    1
    Server Name
    ASASRV1
    Server Service
    SQL Server
    Server Status
    4 Unknown
    Server Address
    NLWNSCK - host1,2639
    where
           ASASRV1 - server name for Open Client application
           host - computer name:
           2639 - port number for Open Server
    You can distribute your application, which works with Anywhere server, with one Dbodbc?.dll only (where ‘?’ is the used version, for example, 7 or 8).
    In this case you necessary to use the following database parameter and the similar value of RemoteDatabase property:
     
    SDDatabase1.Params.Values[‘ODBC API Library’] := ‘dbodbc7.dll’   
    SDDatabase1.RemoteDatabase := ‘UID=dba;PWD=sql;ENG=asasrv;DBF=c:// asa//asademo.db’;
     
    Look the complete description of parameters in RemoteDatabase property in Anywhere Reference.

    File name
    Description
     
    DCLSQL30.DPL / DCLSQL35.BPL
    DCLSQL40.BPL / DCLSQL45.BPL
    DCLSQL50.BPL
    DCLSQL60.BPL
    DCLSQL70.BPL
    DCLSQL80N.DLL
    DCLSQL90N.DLL
    DCLSQL90.BPL
    DCLSQL100N.DLL
    DCLSQL100.BPL
    SQLDirect design-time packages for
    Delphi 3 & C++Builder 3
    Delphi 4 & C++Builder 4
    Delphi 5 & C++Builder 5
    Delphi 6 & C++Builder 6
    Delphi 7
    Delphi 8 for Microsoft .NET
    Delphi 9 (2005) for Microsoft .NET
    Delphi 9 (2005) for Win32
    Delphi 10 (2006) for Microsoft .NET
    Delphi 2006/2007 & C++Builder 2006 for Win32
     
    SQLDIR30.DPL / SQLDIR35.BPL
    SQLDIR40.BPL / SQLDIR45.BPL
    SQLDIR50.BPL
    SQLDIR60.BPL
    SQLDIR70.BPL
    SQLDIR80N.DLL
    SQLDIR90N.DLL
    SQLDIR90.BPL
    SQLDIR100N.DLL
    SQLDIR100.BPL
    SQLDirect runtime packages for
    Delphi 3 & C++Builder 3
    Delphi 4 & C++Builder 4
    Delphi 5 & C++Builder 5
    Delphi 6 & C++Builder 6
    Delphi 7
    Delphi 8 for Microsoft .NET
    Delphi 9 (2005) for Microsoft .NET
    Delphi 9 (2005) for Win32
    Delphi 10 (2006) for Microsoft .NET
    Delphi 2006/2007 & C++Builder 2006 for Win32
    SQLDIRHN.DLL
    Helper library for SQLDirect for Delphi 8, 9, 10 for .NET. It is required to distribute this file with Delphi 8, 9 and 10 for .NET application, which work with MS SQLServer and Oracle
    SQLDIR*.DCP/ SQLDIR??N.DCPIL
    Package header for SQLDirect runtime package library
    SDCONSTS
    Constant unit
    SDCOMMON
    Common procedures and objects, which are not depend from SDEngine code
    SDENGINE
    SQLDirect core: public components
    SDCSB
    SQLBase support unit
    SDCSBSRV
    SQLBase server component
    SDCTBLOB
    Centura SqlWindows/Team Developer image support unit
    SDDB2
    IBM DB2 support unit
    SDFIB
    Firebird support unit
    SDINF
    Informix support unit
    SDINT
    Interbase support unit
    SDMSS
    MS SQL Server support unit
    SDMYSQL
    MySQL support unit
    SDODBC
    ODBC support unit
    SDOLEDB
    OLEDB support unit
    SDORA
    Oracle support unit
    SDPGSQL
    PostgreSQL support unit
    SDSYB
    Sybase Server support unit
    SDSRVLOG
    server login dialog
    SdwwData
    InfoPower support unit
     
    By default the demo-programs will be installed in the directory "../SQLDIR/DEMOS". It is intended for demonstrating functionality and methods of use of SQLDirect-components. In the DEMOS directory you find the following directories: QueryUpd, Threads.
     
    The sample queries and updates data in the database.
    In the project directory you can view the following project files: QueryUpd.dpr - for Delphi, QueryUp3.bpr - for C++Builder3, QueryUp4.bpr - for C++Builder 4, QueryUp5.bpr - for C++Builder 5 and QueryUp6.bpr - for C++Builder 6.
    After start of the program you can be connected to any database on the appropriate server. Then from the main form of application you can open the dialog for executing of any query from your database and see results of the query. In the other dialog you can see an example of using cached updates with SQLDirect-components. The table (TEST_PERSON) is necessary for the given demonstrating, which you can create and if necessary to delete from the main form of the program. The following components TSDDatabase, TSDQuery, TSDUpdateSQL are used here. In the source you can look use of appropriate properties and events of components for realization of cached updates.
     
    This is a sample of multithreaded application.
    In the project directory you can view the following project files: Threads.dpr - for Delphi, Threads3.bpr - for C++Builder3 and Threads4.bpr - for C++Builder 4.
    You need to create the tables by pressing the button "Create Table" before testing. It's create the following tables: TEST_THRD1 and TEST_THRD2. By pressing the button "Insert Data" you can insert rows in the every tables at the same time. Quantity of inserted rows is defined by default 1000 in the edit box. You can see the process of row insertion by pressing the button "Select Data", which starts 2 thread for query execution.
     
    ATTENTION! For creating and deleting of the test tables in the database it is necessary to you to have the appropriate rights!

    The SQLDirect Component Library consists of a set of non-visual components which are encapsulates access to a databases on SQL-servers.
    The component controls connections to databases that are provided by TSDDatabase component. The default session component is automatically created in any database application using SQLDirect Library. The default session component is accessible through the global variable Session in the SDEngine unit.
    It is recommended to use an additional session component per each thread in the multi-threaded applications have to create and maintain.
    Declaration
    procedure Close
    Purpose
           Closes all active database connections, i.e. this method calls the Close method for persistent database components and frees temporary database components. It’s possible to set Active property to False to close session.
    Declaration
    procedure CloseDatabase(Database: TSDDatabase)
    Purpose
           Closes a database connection or closes and frees temporary database connection. If the KeepConnections property of a database component is equal True that connection is not closed.
    Declaration
    constructor Create(AOwner: TComponent)
    Purpose
           Create an instance of a TSDSession component. Default session component is created automatically for application using SQLDirect Library. Now you do not have necessity to create instances of the session component.
    Declaration
    destructor Destroy
    Purpose
           Destroys of TSDSession component. Default session component is destroyed automatically when application is closed. The destructor closes all active database connections and frees all database components associated with the session.
    Declaration
    function FindDatabase(const DatabaseName: string): TSDDatabase
    Purpose
           Searches and returns a database component with the specific name in the list of the session component. If in the list exists database component with a property DatabaseName equal DatabaseName, the pointer to it returns, else function returns nil.
    Declaration
    procedure GetDatabaseNames(List: TStrings)
    Purpose
           The procedure populates List with the names of database components, which are known to session.
    Declaration
    procedure GetStoredProcNames(const DatabaseName: string; List: TStrings)
    Purpose
           The procedure populates List with the names of stored procedures, which are accessible through specific database connection. The procedure searches database connection with the specific DatabaseName and uses it for retrieve names of stored procedure. List is a string object, created and maintenance by application, which has requested the stored procedure names.
    Declaration
    procedure GetFieldNames(const DatabaseName, TableName: string; List: TStrings)
    Purpose
           The procedure populates List with the field names of the table, which are accessible through specific database connection. The procedure searches database connection with the specific DatabaseName and uses it for retrieve field names of the table, which is specified by TableName parameter. List is a string object, created and maintenance by application, which has requested the list of the fields.
    Declaration
    procedure GetTableNames (const DatabaseName, Pattern: string; SystemTables: Boolean; List: TStrings)
    Purpose
           The procedure populates List with the names of tables, which are accessible through specific database connection. The procedure searches database connection with the specific DatabaseName and uses it for retrieve names of the tables. List is a string object, created and maintenance by application, which has requested the table names.
           Set SystemTables parameter to True to return user and system tables, else the method will return only user tables.
    Declaration
    function OpenDatabase(const DatabaseName: string): TSDDatabase
    Purpose
           Opens database connection if it is exists or creates temporary database component and opens it. The temporary database component has properties DatabaseName and RemoteDatabase equal to parameter DatabaseName.
    Declaration
    property Active: Boolean
    Purpose
           Displays a status of a session component. If Active is equal False, it is meaning there are no open database connections and datasets associated with the session. Also setting Active to False closes all open datasets and disconnects database components associated with the session.
    Declaration
    property AutoSessionName: Boolean
    Purpose
           Indicates whether or not a unique session name is automatically generated for session instance. If AutoSessionName is False then the application must set the SessionName property for the session component. In case of the property is True then SessionName will be automatically generated.
    Declaration
    property DatabaseCount: Integer
    Purpose
           Returns number of database components currently associated with the session.
    Declaration
    property Databases[Index: Integer]: TSDDatabase
    Purpose
           Provides the indexed access to database components currently associated with the session.
    Declaration
    property KeepConnections: Boolean
    Purpose
           Determines value of the KeepConnections property of the temporary database components created in the session context.
    Declaration
    property SessionName: string
    Purpose
           Each session must have a unique session name, which is used by database components for linking with the session. The name can be generated by the TSDSession component automatically (see AutoSessionName property)
    Declaration
    property SQLHourGlass: Boolean
    Purpose
           Determines will whether or not be mouse cursor changed to hourglass during the database operations.
    Declaration
    property SQLWaitCursor: TCursor
    Purpose
           This property of a default session component provides a cursor type, which is used during database operations, when SQLHourGlass is equal True.
    The component contains a list of all TSDSession components. The default session list component is automatically created in any database application using SQLDirect Library. The default session list component is accessible through the global variable Sessions in the SDEngine unit.
    Declaration
    function FindDatabase(const DatabaseName: string): TSDDatabase
    Purpose
           Finds and returns a database instance by it’s DatabaseName property. If the database component with the associated DatabaseName property is not exist, then the function returns an empty pointer.
    Declaration
    function FindSession(const SessionName: string): TSDSession
    Purpose
           Finds and returns a session instance by it’s SessionName property. If the session component with the associated SessionName property is not exist, then the function returns an empty pointer.
    Declaration
    procedure GetSessionNames(List: TStrings)
    Purpose
           Populates a sting list with the names of all created and accessible session components. The List parameter is maintained by the application. Names are returned the methods correspond to the SessionName properties of all available sessions.
    Declaration
    function OpenSession(const SessionName: string): TSDSession
    Purpose
           Makes the specified session with associated SessionName property active. If the session is not exist, then the method creates one with the name specified by SessionName parameter and makes it active.
           In either case, OpenSession returns an instance of TSDSession component.
    Declaration
    property Count: Integer
    Purpose
           Indicates the number of sessions in an application.
    Declaration
    property List[const SessionName: string]: TSDSession
    Purpose
           Returns a specified by SessionName session component.
    Declaration
    property Sessions[Index: Integer]: TSDSession
    Purpose
           Lists all created by an application session components in the session list.
    Each component instance manages a database connection to a specific server, and any queries, stored procedure, etc., needs to identify which TSDDatabase instance they are operating on. This design allows the user e.g. to change the login process in one central location, and having it apply to (for example) several queries. The component also plays an important role in transaction control.
    Multi-threaded applications have to create and maintain one additional database component for each simultaneous connection to a database.
    Declaration
    procedure ApplyUpdates(const DataSets: array of TSDDataSet)
    Purpose
           Transfers updated data from the local cache of the specified dataset components DataSets to the remote database. Applying updates is two-phase process. The first phase is the writing of modified data to the database. The second phase is clearing the local update caches of the dataset components. The procedure executes the following operations:
    1.       Starts transaction
    2.       Writes the changed data
    3.       Commits the changes, if the database write was successful, else rollbacks the modifications.
    4.       In case of success the cached update buffers are cleared.
    Declaration
    procedure Close
    Purpose
           Closes all open datasets associated with the database component and disconnects from the remote database.
    Declaration
    procedure CloseDataSets
    Purpose
           Closes all datasets associated with the database components without disconnecting from the remote database.
    Declaration
    procedure Commit
    Purpose
           Executes commit operation on the remote database. All changed of data made in the current transaction are fixed.
    Declaration
    constructor Create(AOwner: TComponent)
    Purpose
    Creates an instance of a TSDDatabase component. The constructor adds this database component to the list of the default session component, creates an empty list of dataset components, creates an empty list of parameters and sets default values for the properties.
    Declaration
    destructor Destroy
    Purpose
           Before clearing of an instance the database connection is closed, deletes the list of dataset components and the list of parameters and removes itself from the list of the default session components.
    Declaration
    procedure ForceClose
    Purpose
           Forces to disconnect from the remote database even if the call fails, for example, in case of network problems.
    Declaration
    procedure GetFieldNames(const TableName: string; List: TStrings)
    Purpose
    The procedure populates List with the field names of the table, which is specified by TableName parameter. List is a string object, created and maintenance by application, which has requested the list of the fields.
    Declaration
    procedure GetTableNames(const Pattern: string; SystemTables: Boolean; List: TStrings)
    Purpose
           The procedure populates List with the names of tables using Pattern parameter. If SystemTables is True only the system tables are returned in the List, else all tables that match Pattern. If Pattern is empty, then all tables are returned. List is a string object, created and maintenance by application, which has requested the table names.
    Declaration
    TSDSchemaType = (stTables, stSysTables, stProcedures, stColumns,
                              stProcedureParams, stIndexes, stPackages,
    stPrimaryKeys, stForeignKeys);
     
    function GetSchemaInfo(ASchemaType: TSDSchemaType; AObjectName: string): TDataSet
    Purpose
           Creates and returns an instance of opened TDataSet component, which contain metadata as a result set. After using the returned dataset, application has to destroy it. Note, AObjectName value has to have a valid case for case-sensitive database.
    Declaration
    procedure Open
    Purpose
           Connects to the remote database. If the OnLogin event of the database component exists, it is executed. Setting the Connected property to True will also call this procedure.
    Declaration
    procedure Rollback
    Purpose
           Cancels all deletion, insertion and updates for the current transaction. The current transaction is the last transaction started by calling StartTransaction. If InTransaction property is False that exception is raised.
    Declaration
    procedure StartTransaction
    Purpose
           Begins a new transaction in the remote database. Before calling StartTransaction, application must check the InTransaction property. If the InTransaction property is True the transaction is already active, and calling StartTransaction would raise an exception.
    Declaration
    procedure StopWaitReconnect
    Purpose
           Stops the timer, which was started after connection was lost.
    Declaration
    function TestConnected: Boolean
    Purpose
           Checks a connection status and returns True, if the current connection is active. The method returns False, if the connection is disactivated or lost. In the last case, all active datasets are closed without errors, which are possible, when a server connection is lost.
    Declaration
    procedure ValidateName(const Name: string)
    Purpose
           Validates uniqueness of a database name in the default session. If the name is not unique an exception is raised. You do not normally need to call this method.
    Declaration
    procedure WaitReconnect;
    Purpose
           Startup timer, which is used to reconnect through ReconnectTimeout, when connection was lost by some reason.
     
    Declaration
    property ClientMajor: Word
    property ClientMinor: Word
    Purpose
           Indicates major and minor versions of the client software used for the active connection. For example, with Microsoft SQL Server 6.5, the properties will equal the following values: ClientMajor = 6 and ClientMinor =5.
    Declaration
    property Connected: Boolean
    Purpose
           Indicated whether or not a database connection is active. Setting the Connected property to True involves opening a database connection. To close a database connection set this property to False. The default value of the property is False.
    Declaration
    property DatabaseName: string
    Purpose
           Specifies a name associated with this database component in the application.
    Declaration
    property DataSetCount: Integer
    Purpose
           Number of dataset components associated with this database component.
    Declaration
    property DataSets[Index: Integer]: TSDDataSet
    Purpose
           Provides an indexed access to all datasets associated with the database component.
    Declaration
    TSDDesignDBOption=(ddoIsDefaultDatabase, ddoStoreConnected);
    TSDDesignDBOptions = set of TSDDesignDBOption;
    property DesignOptions: TSDDesignDBOptions
    Purpose
           If ddoIsDefaultDatabase value is checked then DatabaseName of the created datasets will be set automatically in design time.
           If ddoStoreConnected value is not checked, then Connected property of the database component is not stored.
    Declaration
           property IdleTimeOut: Integer
    Purpose
           Determines the amount of time, in milliseconds, that passes before the connection will be dropped automatically, if it was not used in this period. The feature is turn off, if the property is equal zero.
     
    Note: When IdleTimeOut property is not equal zero, the database component uses an additional thread to check its activity. If IdleTimeOut property is equal zero, then the thread is not created.
    Declaration
           property InTransaction: Boolean
    Purpose
           Indicates whether a database transaction is active or not. Calling StartTransaction sets InTransaction property to True. Calling Commit or Rollback sets InTransaction to False.
    Declaration
    property IsSQLBased: Boolean
    Purpose
           Indicates connection to an SQL-server. The property is declared for compatibility with TBDEDataSet component.
    Declaration
    TSDHandleRec = record
        SrvType: Integer;
        SrvInfo: PSDCursor;
    end;
    PSDHandleRec = ^TSDHandleRec;
     
    property Handle: PSDHandleRec
    Purpose
           The pointer to a connection record, which contains a reference to database handle dependent from a type of the database server. Use Handle property only to make direct calls of server API or assign the database connection to other database component, that is useful in case of use one server cursor by some database component, for example, in an application and dynamic library.
           The TSDHandleRec record specifies a connection information: the used server type and the required handles.
           The possible record value depending on server type:
     
    ServerType
    SrvType value = Ord(TISqlServerType)
    SrvInfo type
    stDB2, Informix, ODBC
    4, 5, 6
    POdbcSrvInfo
    stFirebird
    8
    PIntSrvInfo
    stInterbase
    7
    PIntSrvInfo
    stMySQL
    9
    PMySrvInfo
    stOLEDB
    11
    Not implemented
    stOracle
    1
    POraSrvInfo or POra8SrvInfo
    stPostgreSQL
    10
    PPgSrvInfo
    stSQLBase
    0
    PCsbSrvInfo
    stSQLServer
    2
    PMssSrvInfo
    stSybase
    3
    PSybConnection
     
    Declaration
    property KeepConnections: Boolean
    Purpose
           Determines whether connections remain active when there are no open associated dataset components. Default value of the property is True.
    Declaration
    property LoginPrompt: Boolean
    Purpose
           Indicates whether or not to display a standard login dialog when opening database connection. By default, LoginPrompt is True. If the property is True the standard login dialog opens, or the OnLogin event is called if one is provided for the application. If the property is False then the parameters ('USER NAME' and 'PASSWORD') from the Params property are used.
    Declaration
    property Params: TStrings
    Purpose
           Contains database connection parameters. Use Params to examine and specify a database connection parameters such as user name ('USER NAME'), password ('PASSWORD') or other.
           The parameters could be assigned different ways:
    Db.Params.Values[szUSERNAME] := ‘user’;
    Db.Params.Add(‘USER NAME=user’);
           In the 2-nd case should be no spaces present before the equal sign.
           Below you can see descriptions of the other accessible parameters. If a column ‘Note’ is empty, then the parameter is applied to all supported database server.
     
    Value
    Constants (SDConsts unit)
    Description
    Note
    USER NAME
    szUSERNAME
    Default user name for login
     
    PASSWORD
    szPASSWORD
    Default password for login
     
    AUTOCOMMIT
    szAUTOCOMMIT
    Whether to use auto-commit, else default behaviour will be used, which differs for the each server
     
    APPLICATION NAME
    szAPPNAME
    Application name, which will be sent to server
    Only for MSSQL and Sybase
    HOST NAME
    szHOSTNAME
    Workstation name, which will be sent to server
    Only for MSSQL and Sybase
    ANSI NULLS
    szANSINULLS
    Where to set ANSI(SQL92) compliant behaviour of comparison operators with null values
    Only for MSSQL
    ANSI TO OEM
    szANSITOOEM
    Set or clear DBANSItoOEM, DBOEMtoANSI options to make conversion between client and server.
    Only for MSSQL
    BYTE16 AS GUID
    szBYTE16ASGUID
    binary(16) and GUID columns will be considered as TGuidField. It’s required, because DB-Library returns both datatypes as binary.
    Only for MSSQL
    BLOB PIECE SIZE
    szBLOBPIECESIZE
    Size of read/write blob piece, default value is $7FF0 bytes
    Only for SQLBase, ODBC, OLEDB, Oracle, Sybase
    CACHED UPDATES
    szCACHEDUPDATES
    It has default value of CachedUpdates properties, which are created at run-time or loaded from form file. It can be equal False for compatibility with BDE components. Default value is True.
     
    COMMAND TIMEOUT
    szCMDTIMEOUT
    Number of seconds to wait for any request on the connection to complete
    Only for MSSQL, ODBC, OLEDB, SQLBase, Sybase
    COMPRESSED PROTOCOL
    szCOMPRESSEDPROT
    Whether to use the compressed client/server protocol for, by default it's True
    Only for MySQL
    DATABASE NAME
    szDATABASENAME
    The parameter’s value is used, when RemoteDatabase does not specify a database value
    Only for MSSQL, OLEDB, MySQL, PostgreSQL, Sybase
    DETACH ON FETCHALL
    szDETACHONFETCHALL
    Detach the used cursor, when all records are fetched
     
    FETCH ALL ON OPEN
    szFETCHALLONOPEN
    When it is True, then FetchAll will be called automatically right after Open call
     
    EMPTY STRING AS NULL
    szEMPTYSTRASNULL
    Empty string ('') is treated as NULL for parameter's values. By default it is False
    Only for Sybase
    ENABLE BCD
    szENABLEBCD
    Converts NUMERIC database type into BCD field in an application
    Only for Oracle, Interbase, Sybase
    ENABLE INTEGERS
    szENABLEINTS
    Converts NUMERIC database type into integer field in an application
    Only for Oracle, Interbase
    ENABLE MONEY
    szENABLEMONEY
    Converts NUMERIC database field with scale (1-4) into TCurrencyField in an application
    Only for MySQL
    ENABLE TIMESTAMP
    szENABLETIMESTAMP
    Whethere to use TSQLTimeStampField (ftTimestamp). Default value is False.
    Only for DB2, ODBC. DB2 TIMESTAMP type has microseconds value(6 digits)
    ENCRYPTION
    szENCRYPTION
    Whether to use an encrypted password security handshaking, by default it is equal false
    Only for Sybase
    FIELD REQUIRED
    szFIELDREQUIRED
    Value of Required property of all TField
     
    FORCE OCI7
    szFORCEOCI7
    force to use OCI7 (SQL*Net 2.x - Oracle7 interface) to access Oracle server
    Only for Oracle
    LOCAL CHARSET
    szLOCALCHARSET
    Sets character set for a client attachment
    Only for Interbase, Firebird, MySQL, PosgreSQL
    IB/FB-database has to be created with a <DEFAULT CHARACTER SET> clause
    LOGIN TIMEOUT
    szLOGINTIMEOUT
    Number of seconds to wait for a login request
    Only for DB2, Informix, ODBC, OLEDB, MSSQL, MySQL, Sybase
    MAX BLOB SIZE
    szMAXBLOBSIZE
    Size of blob parameter is restricted. Default value is 2GB
    Only ODBC with DB2 host
    MAX CURSORS
    szMAXCURSORS
    Maximum number of simultaneously open cursors
    Only for MSSQL and Sybase
    MAXCHARPARAMLEN
    szMAXCHARPARAMLEN
    defines maximum size of a buffer for output string parameters, by default, it's equal 255
     
    MAXFIELDNAMELEN
    szMAXFIELDNAMELEN
    Maximum length of field names. Default value is 50.
    It’s added for compatibility with BDE, which returns only 30 characters of the field name
    Only for Oracle
    MAX STRING SIZE
    szMAXSTRINGSIZE
    This is a limit of a string field (TStringField) size, larger fields will be considered as blob (TMemoField), when VARCHAR(>255) column is read
    Only for Firebird, Interbase, ODBC, OLEDB, Oracle, Sybase
    NEW PASSWORD
    szNEWPASSWORD
    This value is used, when a server returns 'Password expired' error
    Only for Oracle8
    QUOTE IDENTIFIER
    szQUOTE_IDENT
    Force to use quoted (delimited) identifiers for automatically generated statements of a live querys and a table component (default, False)
     
    QUOTED IDENTIFIER
    szQUOTEDIDENT
    Whether to use of quoted identifiers
    Only for MSSQL and Sybase
    PREFETCH ROWS
    szPREFETCHROWS
    Number of rows to be prefetched to minimize network trips (Oracle8 info: prefetching is not in effect if SELECT contains LONG columns)
    Only for DB2, Informix, ODBC, OLEDB, Oracle8, MySQL
    ROLE NAME
    szROLENAME
    The string defines the role, which an user will accept at connect time
    Only for Interbase and Oracle (SYSDBA/SYSOPER roles)
    SERVER CURSOR
    szSERVERCURSOR
    Whether use server cursors, default is False
    Only DB2, Informix, OLEDB, ODBC
    SERVER PORT
    szSERVERPORT
    Specifies port number of the server for TCP/IP connection
    Only for MySQL, PostgreSQL
    SINGLE CONNECTION
    szSINGLECONN
    Whether to use a single database process/connection (default, False)
    Only for ODBC, OLEDB, MSSQL and Sybase
    SKIP PREPARE
    szSKIPPREPARE
    When it is True, then a command preparation will be excluded, even if Prepare method is called. Default value is False
    Only for MS SQLServer OLEDB provider
    SQL DIALECT
    szSQLDIALECT
    Sets SQL Dialect(1,2,3) for a client
    Only for Interbase
    SQLWAIT TIMEOUT
    szSQLWaitTimeout
    Allow to change value of SQLWaitTimeout public variable. It can have numeric (in milliseconds) or boolean values. Default value is False.
     
    STRICT LIVE QUERY
    szSTRICTLIVEQUERY
    Allows more than 1 table in select-list of a live query, when it is equal False. In this case it will try to update the 1-st table. This option is not recommended. Default value is True.
     
    STRICT UPDATE
    szSTRICTUPDATE
    Whether to check number of affected rows in process of ApplyUpdates (default value is True)
     
    STRICT UPDATE MODE
    szSTRICTUPDATEMODE
    when False, live query will be opened in upWhereAll mode, when the required table does not have a primary keys or unique indexes, even actually UpdateMode <> upWhereAll (default is True)
     
    TDS PACKET SIZE
    szTDSPACKETSIZE
    Set size for TDS packet. If a server does not support a defined size “Login failed” is raised at connect-time
    Only for OLEDB (MSSQL), Sybase
    TRANSACTION LOGGING
    szTRANSLOGGING
    When it is equal FALSE, then a transaction logging is not performed, i.e. rollback is impossible
    Only for SQLBase
    TRANSACTION NOWAIT
    szTRANSNOWAIT
    Whether to use nowait transaction. Default value is False.
    Only for Interbase, Firebird
    RTRIM CHAR OUTPUT
    szRTRIMCHAROUTPUT
    Whether to trim trailing spaces in the output of fixed CHAR field type (default, True)
    Only for DB2, Informix, Interbase, MySQL, Oracle, ODBC, PostgreSQL and Sybase
    UNICODE STRING
    szUNICODESTRING
    Whether to support unicode string through TWideStringField. Default value is True.
     
    XA CONNECTION
    szXACONN
    Whether to connect to TM service, which is equal RemoteDatabase value (default, False)
    Only for Oracle8i
    XXX API LIBRARY
    szAPILIBRARY_FMT
    Provides an interface library for the different servers, where XXX server type, for example, Oracle, SQLServer, Interbase or other. It is possible to use GetSqlLibParamName function to create this parameter name depending on the server type
     
     
    MS SQL Server:
    If you want login using NT Authentication security of MS SQL Server, then user name and password parameters must be empty or do not set theirs at all. It is true also, when OLEDB connection is used.
    Declaration
    property RemoteDatabase: string
    Purpose
           Determines a name of the database on the server and other parameters, if it is possible.
     
    • DB2, Informix and ODBC:
    The RemoteDatabase property can contain DSN, which is set up in ODBC Administrator, or a full datasource string with supported parameters for the required server.
    Below you can see an example of datasource string for Informix server:
    'SERVICE=ids_srv1;HOST=yourhost;PROTOCOL=OLSOCTCP;SERVER=ids_srv1;DATABASE=sysmaster;UID=informix;PWD=informix '.
    • OLEDB:
    The RemoteDatabase property contains OLEDB connection string or server and database names for MS SQLServer provider (for example, "srv1:pubs"). Format of OLEDB connection string is based on the ODBC connection string. Some connection string for some providers include in a table below. If no PROVIDER keyword is in the string, the OLEDB Provider for ODBC (MSDASQL) is default value. This provides backward compatibility with ODBC connection strings.
     
    Provider
    RemoteDatabase value
    MS SQL Server
    PROVIDER=SQLOLEDB; DATA SOURCE=localhost;INITIAL CATALOG= pubs; USER ID=tester;PASSWORD=tester
    MS OLEDB Provider for Oracle
    PROVIDER=MSDAORA; DATA SOURCE=TEST;USER ID=tester; PASSWORD=tester
    Sybase OLEDB Provider for SQLAnywhere
    PROVIDER=ASAProv; DATA SOURCE=asademo;USER ID=tester; PASSWORD=tester;Persist Security Info=False
     
    ·         Interbase:
    The RemoteDatabase property defines a remote server, path to the required database and network protocol. It is important to use <server name> in a multi-threaded application, else the application could hang in the non-main thread. See examples below.
    RemoteDatabase value
    Used network protocol
    <server_name>:<filename>
    TCP
    //<server_name>/<filename>
    NetBEUI
    <server_name>@<filename>
    SPX
     
    • Oracle:
    The property specifies a host string/service name.
    • MySQL, MS SQL Server or Sybase SQL Server:
    If you connect to a remote server then RemoteDatabase property has to include server and database names divided by colon. For example, "srv1:pubs" defines database name PUBS on the server SRV1.
    Declaration
    property ReconnectTimeout: Integer
    Purpose
           Specifies the amount of time (in milliseconds) to wait between reconnect attempts. If the property is 0, then the database component will not try to reconnect.
    Declaration
    property ServerMajor: Word
    property ServerMinor: Word
    Purpose
           Indicate major and minor versions of the server software, to which is connected the application. For example, in case of the use Oracle Server 7.3, the properties will equal the following values: ServerMajor = 7 and ServerMinor =3.
    Declaration
    property ServerType: TSDServerType
    Purpose
           Indicates a type of the database server to which database component will be connected. Default value of the property is stSQLBase.
     
    ServerType value
    Database Server
    stDB2
    IBM DB2 Database
    stFirebird
    Firebird Server
    stInformix
    Informix Server
    stInterbase
    Interbase Server
    stMySQL
    MySQL Server
    stODBC
    ODBC database
    stOLEDB
    OLEDB datasource
    stOracle
    Oracle
    stPostgreSQL
    PostgreSQL Server
    stSQLBase
    Centura SQLBase
    stSQLServer
    MS SQL Server
    stSybase
    Sybase ASE and ASA
     
    Declaration
    property Session: TSDSession
    Purpose
           Identifies the instance of the session, which is associated with this database component. By default, the Session property points to default session (Session global variable). To change a session for the database component, set SessionName property to the SessionName value of the other persistent session component.
    Declaration
    property SessionName: string
    Purpose
           Identifies the name of the session used by this database component.
    Declaration
    property Temporary: Boolean
    Purpose
           Indicates whether a database component is a temporary one, created when it was necessary, or a persistent one explicitly created and maintained within the application.
    Declaration
    property TransIsolation: TSDTransIsolation
    TSDTransIsolation = (tiDirtyRead, tiReadCommitted, tiRepeatableRead)
    Purpose
           Specifies the isolation level for the transactions managed by the database component. A transaction isolation level determines how the current transaction interacts with other simultaneous transactions when they work with the same tables. Different database server supports different levels of transaction isolation. Below you can see the correspondence between TransIsolation values and the used options, which are applied per native API-level.
     
    Database Server
    Specified Level
    Actual API Level
    SQLBase
    tiDirtyRead
    Release Locks (RL)
     
    tiReadCommitted
    Cursor Stability (CS)
     
    tiRepeatableRead
    Read Repeatability (RR)
    OLEDB
    tiDirtyRead
    ISOLATIONLEVEL_READUNCOMMITTED
     
    tiReadCommitted
    ISOLATIONLEVEL_READCOMMITTED
     
    tiRepeatableRead
    ISOLATIONLEVEL_REPEATABLEREAD
    Oracle
    tiDirtyRead
    READ WRITE
     
    tiReadCommitted
    READ WRITE
     
    tiRepeatableRead
    READ ONLY
    MS SQL Server
    tiDirtyRead
    READ UNCOMMITTED
     
    tiReadCommitted
    READ COMMITTED
     
    tiRepeatableRead
    REPEATABLE READ
    Sybase
    tiDirtyRead
    Isolation Level 0
     
    tiReadCommitted
    Isolation Level 1
     
    tiRepeatableRead
    Isolation Level 3
    DB2 Database,
    tiDirtyRead
    SQL_TXN_READ_UNCOMMITTED (UR)
    Informix and ODBC
    tiReadCommitted
    SQL_TXN_READ_COMMITTED (CS)
     
    tiRepeatableRead
    SQL_TXN_REPEATABLE_READ (RS)
    Interbase, Firebird
    tiDirtyRead
    isc_tpb_read_committed, isc_tpb_rec_version
     
    tiReadCommitted
    isc_tpb_read_committed, isc_tpb_rec_version
     
    tiRepeatableRead
    isc_tpb_concurrency
     
    Declaration
    property Version: string
    Purpose
           Contains server-dependent information with a full server version.
    Declaration
    property AfterReconnect: TNotifyEvent
    Purpose
           The event occurs when connection is restored after it was lost.
    Declaration
    property OnLogin: TSDLoginEvent
    TSDLoginEvent = procedure(Database: TSDDatabase; LoginParams: TStrings) of object;
    Purpose
           OnLogin event occurs when an application connects to a database and LoginPrompt property is False. If you provide alternative OnLogin event handler that you must set the "USER NAME" and "PASSWORD" values in LoginParams.
    Declaration
    property OnLostConnectError: TSDLostConnectEvent
    TSDLostConnectEvent = procedure(Database: TSDDatabase; E: ESDEngineError; var Action: TSDLostConnectAction) of object
    TSDLostConnectAction = (lcCloseConnect, lcIgnore, lcWaitReconnect, lcTerminateApp)
    Purpose
           The event occurs when the database component detects that the connection is lost because of network problems, server shutdown or other reasons.
    E is the current exception object.
    Action indicates the action to take when the OnLostConnectError handler exits. On entry into the handler, Action is set to lcCloseConnect, i.e. all handles and result sets will be closed. When the handle returns lcIgnore, the database component does not close the lost connection. In case lcWaitReconnect the database component will try to reconnect through ReconnectTimeout milliseconds.
    Declaration
    property OnReconnectError: TSDLostConnectEvent
    Purpose
           The event occurs when reconnect attempt is unsuccessful. On entry into this handler, Action is set to lcIgnore, i.e. component will try to reconnect further.

    Encapsulates database connectivity for SQLDirect dataset components. Applications never use TSDDataSet objects directly. Instead they use the descendants of TSDDataSet, such as TSDQuery and TSDStoredProc, which inherit its database-related properties and methods.
    Declaration
    procedure ApplyUpdates
    Purpose
           Writes cached updates to the remote database. The method transfers the cached data to the database by using the OnUpdateRecord event, but the changes are not committed to the database. Your application must explicitly call the database component's Commit method to commit the changes to the database if the write is successful.
    Declaration
    procedure Assign(Source: TPersistent)
    Purpose
           Copies rows from the Source dataset to the current one, which will be activated in offline mode. If the Source dataset does not have rows, only field definitions will be copied.
    Declaration
    procedure CancelExec
    Purpose
           Aborts asynchronously of long-running call, which is processed on the server. It could be used to stop a query in a foregroung thread.
    Note:    This feature is supported by Oracle7, Oracle8, ODBC, DB2, Informix, OLEDB.
    Oracle aborts all calls that associated with the current connection (TSDDatabase) and processed on the server (in different threads). Other supported servers stops only the specified query.
    Declaration
    procedure CancelUpdates
    Purpose
           Clears all pending cached updates from the local data cache and restore the dataset to its initial state.
    Declaration
    procedure CommitUpdates
    Purpose
           Clears data in the local data cache. You must call CommitUpdates after successfully calling ApplyUpdates and database component's Commit method.
    Declaration
    procedure RollbackUpdates
    Purpose
           Marks all changes as not saved (applied). It means when some or all records was applied before the transaction was rolled back. In this case the updates was not stored in the database and that has to be marked in local cache.
           ApplyUpdates method of TSDDatabase component uses the similar logic, which you can see below. I.e. you can use only one database’s ApplyUpdates method instead below code.
     
    Example of using ApplyUpdates, CommitUpdates and RollbackUpdates methods:
     
    SDDatabase1.StartTransaction;
    Try
     SDQuery1.ApplyUpdates;
     SDDatabase1.Commit;
     SDQuery1.CommitUpdates;
     
    Except
     SDDatabase1.Rollback;
     SDQuery1.RollbackUpdates;
     
     Raise;
    End;
     
    Declaration
    constructor Create(AOwner: TComponent)
    Purpose
           Creates an instance of the TSDDataSet component. Note that TSDDataSet components are not normally instantiated directly by the client application. Instead, it is usually the case that a TSDDataSet descendant such as TSDQuery or TSDStoredProc is used.
    Declaration
    procedure Detach
    Purpose
    Drops a server connection and keeps the result set active, i.e. turns the result set to offline mode. It helps to minimize consumption of server resources.
    Declaration
    procedure Disconnect
    Purpose
           Closes the result set and disconnects the dataset component's cursor from the database. After calling the method the Handle property will equal nil.
    Declaration
    destructor Destroy
    Purpose
           Frees resources allocated by the component and destroys the instance.
    Declaration
    procedure FetchAll
    Purpose
           Retrieves all records from the current cursor position to the end of the result set and store them in the local cache.
    Declaration
    function IsSequenced: Boolean
    Purpose
           The function always returns False.
    Declaration
    TSDStreamFormat        = (sfCSV);
    TSDStreamOption = (soAppend, soCheckFmtVersion, soFieldDefs, soFieldNames, soFieldValues, soFieldBlobs, soFieldCalculated, soFieldLookup, soFieldNonVisible, soFieldFixedLength, soQuoteOnlyStrings);
    TSDStreamOptions       = set of TSDStreamOption;
     
    procedure LoadFromFile(const FileName: string; StreamFormat: TSDStreamFormat; SaveOptions: TSDStreamOptions)
    procedure LoadFromStream(Stream: TStream; StreamFormat: TSDStreamFormat; SaveOptions: TSDStreamOptions)
    Purpose
           Opens the dataset using data from the specified file or stream. The following option can be used:
     
    Value
    Meaning
    soAppend
    The data will be appended in the file/stream, when it exists
    soCheckFmtVersion
    Version of file/stream format will be checked, when version is not valid, an exception will be raised
    soFieldDefs
    FieldDefs property will be loaded/saved from/to file or stream
    soFieldNames
    Header line with field names will be loaded/saved from/to file or stream
    soFieldValues
    Field values will be loaded/saved from/to file or stream
    soFieldBlobs
    Blob values will be loaded/saved from/to file or stream
    soFieldCalculated
    Calculated fields will be loaded/saved from/to file or stream
    soFieldLookup
    Lookup fields will be loaded/saved from/to file or stream
    soFieldNonVisible
    Invisible fields(which has Field.Visible=False) will be loaded/saved from/to file or stream
    soFieldFixedLength
    Not supported now
    soQuoteOnlyStrings
    Only string values will be quoted
          
    When CSV-format is used the following default values are used:
    DefCSVQuoteChar
    '"'
    DefCSVFieldDelimiterChar
    ','
    DefCSVRecordDelimiterChar
    ','
    DefCSVDateFormat
    'yyyy-mm-dd'
    DefCSVTimeFormat
    'hh:nn:ss'
    DefCSVTimeMSecFormat
    'hh:nn:ss.zzz'
     
    Declaration
    function Locate(const KeyFields: string; const KeyValues: Variant;
    Options: TLocateOptions): Boolean
    Purpose
           Searches for a specific record in the result set from the begin and set the current cursor position to it. KeyFields is a string containing a semicolon-delimited list of field names on which to search. KeyValues is a variant array containing the values to match in the key fields. The method returns True if it finds a matching record, and makes that record the current one. Otherwise Locate returns False.
           When Option contains loPartialKey setting, then key and field values will be converted to string values (if it is necessary) to partial-string comparing on strings in KeyValues.
    Declaration
    function LocateNext(const KeyFields: string; const KeyValues: Variant;
    Options: TLocateOptions): Boolean
           function LocatePrior(const KeyFields: string; const KeyValues: Variant;
    Options: TLocateOptions): Boolean
    Purpose
           Searches forward/backward for a specific record in the result set from the current position and set the current cursor position to it. KeyFields is a string containing a semicolon-delimited list of field names on which to search. KeyValues is a variant array containing the values to match in the key fields. The method returns True if the matching record is found, and makes that record the current one. Otherwise Locate returns False.
    When Option contains loPartialKey setting, then key and field values will be converted to string values (if it is necessary) to partial-string comparing on strings in KeyValues.
    Declaration
    function Lookup(const KeyFields: string; const KeyValues: Variant;
    const ResultFields: string): Variant
    Purpose
           Retrieves field values from a record matching specific search criteria. KeyFields is a string containing a semicolon-delimited list of field names on which to search. KeyValues is a variant array containing the values to match in the key fields. ResultFields is a string containing a semicolon-delimited list of the field names whose values should be returned from the matching record. Lookup returns a variant array containing the values from the fields specified in ResultFields.
    Declaration
    procedure OpenEmpty
    Purpose
           The method opens an empty result set in offline mode without fetching rows from the database. That’s similar to memory dataset. The structure of the result set will be getting from persistent fields or will be requested from the database using it’s current SQL statement. This method is supported for Delphi 5 or above.
    Declaration
    function OpenEx: Boolean
    Purpose
           Executes SQL commnd and returns True, when the result set is available, else it is like ExecSQL
    Declaration
    procedure RefreshRecord
    Purpose
           Read values of the current record from a database using TSDUpdateSQL.RefreshSQL property, when UpdateObject is assigned, or automatically generated statement, which depends from UpdateMode value.
    Declaration
    procedure RefreshRecordEx (const ARefreshSQL: string)
    Purpose
           Read values of the current record from a database using ARefreshSQL statement, if the parameter value is empty, method is equal to RefreshRecord.
    Declaration
    procedure RevertRecord
    Purpose
           Restores current record to its original, unmodified state, provided the transaction has not been committed.
    Declaration
    procedure SaveToFile(const FileName: string; StreamFormat: TSDStreamFormat; SaveOptions: TSDStreamOptions)
    procedure SaveToStream(Stream: TStream; StreamFormat: TSDStreamFormat; SaveOptions: TSDStreamOptions)
    Purpose
           Stores the dataset using data to the specified file or stream. Look LoadFromStream description for parameter’s info.
    Declaration
    procedure SortRecords(AFields: array of const; AscOrder, ACaseSensitive: array of Boolean); procedure SortRecords(const AFields, AscOrder, ACaseSensitive: string);
    Purpose
           Orders a record set using the specified fields and parameters. This method will call FetchAll, if it is necessary. AFields parameter contains a name of the column (i.e. TField.FieldName) or an index number of the fields (i.e. TField.Index) into the Fields property, which will be used in ordering of records.
           String parameters AscOrder, ACaseSensitive can have the following values: ‘True’ or ‘False’, ‘1’ or ‘0’ and ‘Asc’ or ‘Desc’ for AscOrder parameter only. If values of AscOrder and ACaseSensitive are equal empty strings, then SortRecords will use True as default values.
           When SortRecords with string parameters is used, then values of a string parameter have to be delimited using semicolon.
    Example
           SDQuery1.SortRecords([‘COL_1’, ‘COL_3’], [True, False], [False, False]);
           SDQuery1.SortRecords([‘COL_1’, ‘COL_3’], [False], []);
           SDQuery1.SortRecords([0, 2], [False], []);
     
           SDQuery1.SortRecords(‘COL_1; COL_3’, ‘Asc; Desc’, ‘0; 1’);
           SDQuery1.SortRecords(‘0; 2’, ‘Asc; Desc’, ‘0; 1’);
    Declaration
    function UpdateStatus: TUpdateStatus
    Purpose
           Indicates update status for the current record of the dataset.
    Declaration
    property AutoRefresh: Boolean
    Purpose
           Specifies whether autoincrement fields will be refetched automatically (without explicit call Refresh or RefreshRecord methods), when insert is executed in both modes: RequestLive or Cached Updates. The property is False by default.
           If database driver can’t determine autoincrement fields, it is necessary to use AutoGenerateValue property of field component to specify, what fields that should be refreshed.
    Declaration
    property CacheBlobs: Boolean
    Purpose
           Determines whether BLOB objects are cached locally. The property is True by default.
    Declaration
    property Database: TSDDatabase
    Purpose
           The underlying database component associated with the dataset. The read-only property is automatically set when dataset is opened. Use this property for access to the database component's methods, properties and event.
    Declaration
    property CachedUpdates: Boolean
    Purpose
           Specifies whether cached updates mode is enabled for a dataset. When CachedUpdates is True, then cached updates mode is enabled and posted records are stored in an internal cache until ApplyUpdates of TSDDataSet or TSDDatabase method will be not called.
           In cached updates mode records are applied into the database using statements of UpdateObject, OnUpdateRecord or automatically generated statements according to UpdateMode property, when RequestLive is True.
    Declaration
    property DatabaseName: string
    Purpose
           Name of the database component associated with the dataset. This property should match DatabaseName property of the associated database component.
    Declaration
    property DBSession: TSDSession
    Purpose
           Determines the instance of the session component with which this dataset is associated.
    .
    Declaration
           TUpdateKinds       = set of TUpdateKind
    property EnableUpdateKinds: TUpdateKinds
    Purpose
           Defines what kind updates will be applied. The property is empty when the dataset is closed. Default value, when dataset is opened, is equal [ukModify, ukInsert, ukDelete], i.e. all updates will be applied, when ApplyUpdates method will be called. It is possible to select only some update kind, what is useful for master-detail relationship.
    Declaration
    property Filter: string
    Purpose
           Specifies the text of the current filter for a dataset.
    Declaration
    property Filtered: Boolean
    Purpose
           Specifies whether record filtering is active for a dataset. If Filtered is True, then filtering is active. You need to define Filter property or OnFilterRecord event handler, which define how to filter the records. The following methods allow navigation in the filtered dataset: FindFirst, FindNext, FindPrior, FindLast.
    Declaration
    property Handle: PSDCursor
    Purpose
           Returns a pointer to a cursor on the remote database, which depends on type of the used database server. The Handle property is used to make direct calls to the database server API, which is not normally necessary for client applications.
     
    Database Server
    Type of cursor
    stSQLBase
    SqlTCur
    stOracle
    TCdaDef
    stSQLServer
    DBPROCESS
    stSybase
    TSybConnection
    stDB2, stInformix, stODBC
    HSTMT
    stInterbase, stFirebird
    TISC_STMT_HANDLE
    stMySQL
    TMYSQL_RES
    stPostgreSQL
    PPGresult
     
    Declaration
        TSDDataSetOption = (doKeepSorting, doDetachOnFetchAll, doFetchAllOnOpen);
        TSDDataSetOptions= set of TSDDataSetOption;
    property Options: TSDDataSetOptions
    Purpose
           Contains dataset options, which affect dataset’s behaviour.
    When szFETCHALLONOPEN or szDETACHONFETCHALL database parameters are equal True, it is like that all data sets have  doDetachOnFetchAll or doFetchAllOnOpen options, even if they are not set.
     
    Value
    Meaning
    doKeepSorting
    To save a sort order after Refresh and insert/modify of the record, when SortRecords was called or the current SQL command has ORDER BY clause
    doDetachOnFetchAll
    If option is set on, then the dataset releases a server cursor automatically, when all record are fetched: FetchAll method is called or EOF is reached
    doFetchAllOnOpen
    When the option is turn, then FetchAll is called automatically right after Open
    Declaration
    property RecNo: LongInt
    Purpose
           Indicates ordinal position of the current record in the dataset. When a dataset component is activated, RecNo will be a number between one (1) and the total number of rows (RecordCount) in the result set. Property is writable, i.e. position in the result set will be changed if a new value is assigned to RecNo property.
    Declaration
    property SessionName: string
    Purpose
           Specifies the name of the session with which this dataset is associated. If SessionName property is blank, then a dataset component is associated with the default session (see public variable Session).
           A dataset component can be associated with any database component within one session, i.e. SessionName properties of the dataset and the database must be equal.
    Declaration
    property Sorted: Boolean
    Purpose
           Read-only property specifies, whether the result set is sorted using SortRecords method or ORDER BY clause is used in SQL command (doKeepSorting has to be set in the last case).
    Declaration
    property UniDirectional: Boolean
    Purpose
           Determines whether or not bidirectional cursors are enabled for a result set. By default, UniDirectional is False, enabling forward and backward navigation. When the property is set on, the result set requires less memory.
    Declaration
    property UpdateObject: TSDDataSetUpdateObject
    Purpose
           Specifies which update object component will write modified data to the database. Without this component dataset is read-only.
    Declaration
    property UpdateRecordTypes: TUpdateRecordTypes
    TUpdateRecordTypes = set of (rtModified, rtInserted, rtDeleted, rtUnmodified)
    Purpose
           Specifies the type of records visible in a dataset. By default, a dataset is created with an UpdateRecordTypes set of [rtModified, rtInserted, rtUnmodified], meaning that all existing, edited, or inserted records are visible to the user.
     
    UpdateRecordTypes Value
    Meaning
    rtModified
    Modified records are visible
    rtInserted
    Inserted records are visible
    rtDeleted
    Deleted records are visible
    rtUnmodified
    Unmodified records are visible
     
    Declaration
    property UpdatesPending: Boolean
    Purpose
           Indicates whether the cached updates buffer contains data, which have not been transferred to the remote database and committed. If UpdatesPending is False, the cached updates buffer is empty.
    Declaration
    property OnFilterRecord: TFilterRecordEvent
    Purpose
           The event used to determine the visibility of each record in a result set when record filtering is active. The filter handler will be called one time for each record in the set. The handler uses the Accept parameter to determine if the record will be passed to the application. Accept is set to True to indicate that the record is visible, and False for not visible (the record will not be passed to the application). While the client application is processing a filter, the State property of the DataSet is dsFilter.
    Declaration
    property OnUpdateError: TupdateErrorEvent
    TUpdateAction = (uaFail, uaAbort, uaSkip, uaRetry, uaApplied);
    TUpdateErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError;
                  UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction) of object;
    Purpose
           The event occurs if an exception is generated while cached updates are being applied to a remote database. DataSet is the component whose cached updates are being applied to a database. E is an exception generated during this process. UpdateKind indicates the type of update operation (insert, update or delete). UpdateAction determines the action after exit from the handler. In the entry point of the handler UpdateAction is uaFail. The error handler can use the TField.OldValue and TField.NewValue properties.
     
    UpdateAction value
    Meaning
    uaFail
    Abort update operation and displays an error message
    uaAbort
    Abort update operation and without displaying an error message
    uaSkip
    Skips updating the record, which raised an exception
    uaRetry
    Repeats update operation which raised exception
    uaApplied
    Not used
          
    Declaration
    property OnUpdateRecord: TUpdateRecordEvent
    TUpdateAction = (uaFail, uaAbort, uaSkip, uaRetry, uaApplied);
    TUpdateErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError;
                  UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction) of object;
    Purpose
           The event occurs when cached updates are applied to a record. Write an OnUpdateRecord event handler to process updates that cannot be handled by a single update component, such as implementation of cascading updates, insertions, or deletions. This handler is also useful for applications that require additional control over parameter substitution in update components. DataSet is the dataset to which updates are applied.
           UpdateKind indicates the current action: whether the record is inserted, updated or deleted. This parameter is usable for define, for example, which statement of TSDUpdateSQL need to perform.
           UpdateAction defines a success or failure of the update operation.
     
    UpdateAction value
    Meaning
    uaFail
    Abort update operation and displays an error message
    uaAbort
    Abort update operation and without displaying an error message
    uaSkip
    Skips updating the record, which raised an exception
    uaRetry
    Repeats update operation which raised exception
    uaApplied
    The event handler applied the update
     

    The component controls trace messages, which are sent, when some events happens.
    Note:      An application can have only one monitor component.
    Declaration
    property Active: Boolean
    Purpose
           Activates monitoring. At design-time this property has no sense, because trace messages are generated only at run-time.
    Declaration
    property FileName: string
    Purpose
           Specifies file, where trace messages will be stored. If FileName is empty, trace messages will be sent to SQLDirect monitor application.
    Declaration
    TSDTraceOption         = (toConnect, toTransact, toQPrepare, toQExecute, toDataIn, toDataOut);
    TSDTraceOptions        = set of TSDTraceOption;
     
    property TraceOptions: TSDTraceOptions
    Purpose
           Defines what trace messages will be generated.

    The component encapsulates a dataset with result set returned by an SQL-statement. You can use this component to return a result set from a remote database and for executing SQL statements on the server in order to modify data or database itself.
    SQL Server: As result of the SQL Server feature, which does not allow to have some active result sets per one connection (DBPROCESS handle, which is a separate transaction), you may encounter the following problem. TSDQuery with SELECT statement uses separate DBPROCESS handle, but all data manipulation statements (for example, INSERT, UPDATE) are executed through TSDDatabase.Handle. So TSDQuery with SELECT statement will wait a release the locks, which was acquired by data modifications in your application.
    Sybase: Blob fields must be last in the select list.
    Declaration
    constructor Create(AOwner: TComponent)
    Purpose
           Creates an instance of TSDQuery component. The constructor also creates an empty SQL-statement list, an empty parameter list and sets RowsAffected to -1.
    Declaration
    destructor Destroy
    Purpose
           Destroys the instance of the component. The method disconnects the cursor from the database, frees the SQL-statement list and the parameter list.
    Declaration
    procedure Disconnect
    Purpose
           Disconnects component's cursor (see Handle property) from the database.
    Declaration
    procedure ExecSQL
    Purpose
           Executes the SQL-statement associated with the component (see SQL property). ExecSQL prepares the statement (if it was not prepared), binds parameters and executes the statement. You must call this method for statements that do not return result set, such as INSERT, DELETE, UPDATE etc. For the SELECT statement call Open, instead of ExecSQL.
    Declaration
    function ParamByName(const Value: string): TSDParam
    Purpose
            The method is used for access to the parameter object by name.
    Declaration
    procedure Prepare
    Purpose
           Causes SQL-statement to be compiled by the remote database server, for increased performance.
    Declaration
    procedure UnPrepare
    Purpose
           Frees remote database resources allocated for a prepared SQL-statement.
    Declaration
    property DataSource: TDataSource
    Purpose
           Specifies the data source component, which will be used for extract field values to use with same-name parameters in the SQL statement of the current query component.
    Declaration
    property ParamCheck: Boolean
    Purpose
           Indicates whether the parameter list should change when an SQL-statement is changed at run-time (i.e. when the SQL property is modified by the client application). By default ParamCheck is True, so that when an SQL-statement is changed the parameter list is cleared and repopulated.
    Declaration
    property ParamCount: Word
    Purpose
           Determines the number of parameters for the SQL-statement. If you change the SQL-statement, ParamCount is automatically modified.
    Declaration
    property Params: TSDParams
    Purpose
           Provides indexed access to the parameters of the SQL-statement and allows changing the name, value and data type of a parameter at run-time.
    Declaration
    property Prepared: Boolean
    Purpose
           Indicates whether the SQL-statement is prepared for execution. If Prepared is True, the SQL-statement is prepared, otherwise it is not prepared. You can use the Prepared property instead of the Prepare and UnPrepare methods. Setting Prepared to True calls the Prepare method, while setting Prepared to False calls the UnPrepare method.
    Declaration
    property RequestLive: Boolean
    Purpose
           When property is True, then Open method will try to return an updatable result set. If UpdateObject is assigned, then it’s properties will be use to update or refresh the result set, else automatically generated statements will be used for these purposes depending on a value of UpdateMode property.
           If RequestLive set on, then Post method will update and commit data in the database.
           When RequestLive and CachedUpdates properties are equal True, then the live query will be activated, but data will be applied, when ApplyUpdates method will be called. In this case Post only saves data in the local cache.
    Declaration
    property RowsAffected: Integer
    Purpose
           Returns the number of updated or deleted row by the most recently executed SQL-statement. If no rows were affected (updated or delete) by last execution the property returns -1.
    SQL
    Declaration
    property SQL: TStrings
    Purpose
           Contains the SQL-statement text. Use this property to change the SQL-statement at run-time.
    Declaration
    property Text: string
    Purpose
           Returns the text of the SQL-statement. Property is read-only.

    The component has all features of TSDQuery plus possibility to process macros inside SQL statement.
    Declaration
    procedure ExpandMacros
    Purpose
           The method replaces all macros on macro values in the SQL property.
    Declaration
    function MacroByName(const MacroName: string): TParam
    Purpose
           Returns a macro item by it’s name.
    Declaration
    property MacroChar: Char
    Purpose
           Specifies a character, which has to precede a macro in the statement.
    Declaration
    property MacroCount: Word
    Purpose
           Returns number of macros in the statement.
    Declaration
    property Macros: TParams
    Purpose
           Use Macros to set up value of a macro.

    The component encapsulates stored procedure on a database server. TSDStoredProc hides the differences between different database servers with respect to calling stored procedures. The component can accept a result set, which may be returned by a stored procedure.
    Declaration
    procedure CopyParams(Value: TSDParams)
    Purpose
           Copies a stored procedure's parameters into another parameter list (for example, to another stored procedure Params property).
    Declaration
    constructor Create(AOwner: TComponent)
    Purpose
           Creates an instance of a stored procedure component, initializes parameter buffer and an empty parameter list.
    Declaration
    destructor Destroy
    Purpose
           Destroys the instance of a stored procedure component. Also Destroy method disconnects from the database and frees the parameter buffer and the parameter list.
    Declaration
    function DescriptionsAvailable: Boolean
    Purpose
           Indicates whether or not a database server can return information about stored procedure parameters. If DescriptionsAvailable returns True, parameter information is available from the database server. If the method returns False, parameter information is not available. If DescriptionsAvailable is False the client application must itself provide correct parameter information in the parameter list.
    Declaration
    procedure ExecProc
    Purpose
           Executes the stored procedure on the server. It is necessary to provide all input parameters in the Params property before calling ExecProc. The method prepares the stored procedure (if necessary) and binds the parameters. After call ExecProc the output parameters are accessible through the Params property (without call the GetResults method for Microsoft and Sybase SQL Server). If the stored procedure returns a result set, it can be accessed with the Open method or the Active property.
    Declaration
    procedure GetResults
    Purpose
           Returns the all output data from a stored procedure of the some servers after activation of the result set. The output data includes output parameters and an active(current) result set. When you connect to MS or Sybase SQL Server, after GetResults calling the TSDStoredProc component does not use a handle of the associated TSDDatabase component later. The method is applicable for MS SQL Server, Sybase and SQLBase only.
           Microsoft and Sybase SQL Server returns the output parameters after select of the last result sets. The method force to fetch a current result set and stores the output parameter’s data into the Params property. Note, that TSDStoredProc component shares a handle of the associated TSDDatabase component as result of a restriction of the SQL Server API. Consequently, if a stored procedure returns a result set, then it is necessary to use a separate associated TSDDatabase component or to call GetResults for getting all data (parameters and result set) of the stored procedure.
           SQLBase server returns the output parameters as a result set. Therefore, you can apply to Fields property for the output parameter’s data. The method copies a data from Fields property (for current record) to Params property only.
    Declaration
    function NextResultSet: Boolean
    Purpose
           The method returns True and forces a cursor to begin of a next result set, if one is accessible. If there are not more result set for the stored procedure, the method returns False. Now multiple result set is supported for IBM DB2, Microsoft and Sybase SQL Server only, for other servers the method always returns False.
    Declaration
    function ParamByName(const Value: string): TSDParam
    Purpose
           Returns stored procedure parameter object by specified name.
    Declaration
    procedure Prepare
    Purpose
           Prepares a stored procedure for execution. The method compiles the stored procedure, retrieves parameter information from the database server and allocates parameter buffer.
    Declaration
    procedure UnPrepare
    Purpose
           Frees the resources allocated for a previously prepared SQL-statement.
    Declaration
    property Overload: Word
    Purpose
           Not used.
    Declaration
    property ParamBindMode: TSDParamBindMode
    Purpose
    Not used.
    Declaration
    property ParamCount: Word
    Purpose
           Indicates the number of parameters currently stored in the Params property.
    Declaration
    property Params: TSDParams
    Purpose
           Stores the input and output parameters for a stored procedure. Provides access to parameters of the stored procedure and possibility to change name, value and data type of a parameter at run-time.
           Prepare method will fill up Params property, when it is empty, i.e. ParamCount is equal 0. In other case, a developer is responsible for accordance of Params property to actual parameters of procedure/function in a database.
           ATTENTION! SQLBase server does not return description of all stored procedure parameters, therefore you must set name, data type and default value of all parameters of the stored procedure.
    Declaration
    property Prepared: Boolean
    Purpose
           Determines whether a stored procedure is prepared for execution. If Prepared is False that setting it to True calls Prepare method. If Prepared is True that setting it to False calls UnPrepare method. Calling of ExecProc or Open methods automatically prepares stored procedure.
    Declaration
    property StoredProcName: string
    Purpose
           Stores the name of the stored procedure on the database which this component is an encapsulation.

    The component encapsulates a database table.
    Declaration
    procedure ExecSQL
    Purpose
           Executes all statement of the current script, which is assigned to the SQL property.
    Declaration
    procedure ExpandMacros
    Purpose
           The method replaces all macros on macro values in the SQL property.
    Declaration
    function MacroByName(const MacroName: string): TParam
    Purpose
           Returns a macro item by it’s name.
    Declaration
    function ParamByName(const Value: string): TSDParam
    Purpose
            The method is used for access to the parameter object by name.
    Declaration
    property Database: TSDDatabase
    Purpose
           The underlying database component associated with the script. The read-only property is automatically set when the script is executed. Use this property for access to the database component's methods, properties and event.
    Declaration
    property DatabaseName: string
    Purpose
           Name of the database component associated with the script. This property should match DatabaseName property of the associated database component.
    Declaration
    property DBSession: TSDSession
    Purpose
           Determines the instance of the session component with which this script is associated.
    Declaration
    property IgnoreParams: Boolean
    Purpose
           Indicate whether to use Params property when the script is executed. When IgnoreParams is equal True, then the script component does not use Params property at execution time.
    Declaration
    property MacroChar: Char
    Purpose
           Specifies a character, which has to precede a macro in the statement.
    Declaration
    property MacroCheck: Boolean
    Purpose
           Indicates whether the list of macros should be regenerated, when a SQL property is changed at run-time (i.e. when the SQL property is modified by the client application). By default MacroCheck is True, so that when the script is changed the parameter list is cleared and regenerated.
    Declaration
    property MacroCount: Word
    Purpose
           Returns number of macros in the statement.
    Declaration
    property Macros: TParams
    Purpose
           Use Macros to set up value of a macro.
    Declaration
    property ParamCheck: Boolean
    Purpose
           Indicates whether the parameter list should be regenerated, when a SQL property is changed at run-time. By default ParamCheck is True, so that when a SQL property is changed the parameter list is cleared and regenerated. It is useful, for example, when semicolon is used inside stored procedure source.
    Declaration
    property Params: TSDParams
    Purpose
           Provides indexed access to the parameters of the script and allows changing the name, value and data type of a parameter at run-time.
    Declaration
    property SessionName: string
    Purpose
           Specifies the name of the session with which this script is associated. If SessionName property is blank, then a script component is associated with the default session (see public variable Session).
           A script component can be associated with any database component within one session, i.e. SessionName properties of the script and the database must be equal.
    SQL
    Declaration
    property SQL: TStrings
    Purpose
           Contains the script text with macros, when they are present. Use this property to change the script text at run-time.
    Declaration
    property TermChar: Char
    Purpose
           Indicates a character, which is used as a terminator between statements of the script.
    Declaration
    property Text: string
    Purpose
           Returns the text of the script with expanded macro values. Property is read-only.
    Declaration
    property Transaction: Boolean
    Purpose
           Specifies whether to use database methods for transaction control. If Transaction property is equal True, then StartTransaction, Commit, Rollback database methods are used to start and to end a transaction at script execution time (ExecSQL call).
    Declaration
    property AfterExecute: TNotifyEvent
    Purpose
           Occurs at the end of script execution.
    Declaration
    property BeforeExecute: TNotifyEvent
    Purpose
           Occurs before the component executes a script.

    The component encapsulates a database table.
    Declaration
    procedure CreateTable
    Purpose
           Creates a new table using a new structure from TableName, FieldDefs and IndexDefs properties.
    Declaration
    procedure DeleteTable
    Purpose
           Delete an existing table from the database.
    Declaration
    procedure EmptyTable
    Purpose
           Deletes all records from the table.
    Declaration
    procedure GetIndexNames(List: TStrings)
    Purpose
           Populates List parameter using names of the available indexes for the table.
    Declaration
    property DefaultIndex: Boolean
    Purpose
           This property defines whether to use a default (primary or unique) index to order records, when the table is opened. If it is False, then alternative index will be used, which specified by IndexName or IndexFieldNames properties. Default value of DefaultIndex property is True.
           When DefaultIndex is False, IndexName is empty and UpdateMode is upWhereAll, then the component does not request index info from a database catalog to speed up of opening.
    Declaration
    property Exists: Boolean
    Purpose
           Indicates whether the database table exists.
    Declaration
    property IndexName: string
    Purpose
           The property specifies an alternative index, which will be used to order records, when DefaultIndex property will be equal False.
           When IndexName property is empty and UpdateMode=upWhereAll, then index info is not requested from the database for speed-up of opening.
    Declaration
    property IndexFieldNames: string
    Purpose
           The property contains a list of columns, which are used as an index for a table. Columns have to be separated with semicolon and can include ‘ASC’, ‘DESC’ after each column name to change ordering.
    The IndexFieldNames and IndexName properties are mutually exclusive. Setting one clears the other. The both properties signify, when DefaultIndex property is set off.
    In a master-detail relationship, IndexFieldNames can defines field names in the detail table, which have correspond to master fields. It is useful, when detail fields are not equal master fields.
    Declaration
    property TableName: string
    Purpose
           Indicates the name of the database table, which the component encapsulates.
    ATTENTION: PostgreSQL (at least, v.7.2 and below) do not support an owner name, therefore it is necessary to remove an owner name for TableName property, which is set in Object Inspector.

           Component for updating SQLDirect datasets. At design-time you can use an editor of TSDUpdateSQL to generate InsertSQL/DeleteSQL/ModifySQL automatically. Note, TableName field in the editor has to have a valid case for case-sensitive databases.
    "Select &Primary Keys" button can help to locate and select fields, which are primary key of the table. When the primary key is not available or is not identified, then the first unique index will be used.
    Declaration
    procedure Apply(UpdateKind: TUpdateKind)
    Purpose
           Sets the parameters for specified SQL-statement and executes it for update current record in the dataset. UpdateKind parameter indicates which SQL statement to bind and execute. The method should be called in OnUpdateRecord event handler.
    Declaration
    constructor Create(AOwner: TComponent)
    Purpose
           Creates an instance of an update component.
    Declaration
    destructor Destroy
    Purpose
           Frees an instance of an update component.
    Declaration
    procedure ExecSQL(UpdateKind: TUpdateKind)
    Purpose
           Executes specified SQL-statement without setting parameters.
    Declaration
           procedure SetParams(UpdateKind: TUpdateKind)
    Purpose
           Binds parameters for specified SQL-statement. You need to call SetParams before statement execution. Parameter name must exactly match to field name of the dataset. To retrieve the old value of a field, parameter name must begin with "OLD_". UpdateKind parameter indicates which SQL statement to bind. The method should be called in OnUpdateRecord event handler.
    Declaration
    property DataSet: TSDDataSet
    Purpose
           Identifies the dataset to which a update component belongs. At design-time, the property automatically sets when you set property UpdateObject of the dataset.
    Declaration
    property DeleteSQL: TStrings
    Purpose
           Stores the SQL statement to use for applying a deletion to a record.
    Declaration
    property InsertSQL: TStrings
    Purpose
           Stores the SQL statement to use for applying an insertion to a dataset.
    Declaration
    property ModifySQL: TStrings
    Purpose
           Stores the SQL statement to use for applying an update to a record.
    Declaration
    property Query[UpdateKind: TUpdateKind]: TSDQuery
    Purpose
           Returns query component used to perform a specified update.
    Declaration
    property QueryEx[StmtKind: TUpdateStatus]: TSDQuery
    Purpose
           Returns query component used to execute a specified statement. If StmtKind is equal usUnmodified, then the query is used to refresh a record.
    Declaration
    property RefreshSQL: TStrings
    Purpose
           Stores the SQL statement to refresh a record.
    SQL
    Declaration
    property SQL[StmtKind: TUpdateStatus]: TStrings
    Purpose
           Returns SQL statement used to applying a specified update.

           Exception class for SQLDirect database error.
    Declaration
    constructor Create(AErrorCode, ANativeError: TSDEResult; const Msg: string; AErrorPos: LongInt)
    Purpose
           Creates an instance of ESDEngineError using specified error codes, message and position of the error (if it is applied).
    Declaration
    constructor CreateDefPos(AErrorCode, ANativeError: LongInt; const Msg: string)
    Purpose
           Creates an instance of ESDEngineError using specified error codes, message and default position of the error, which is equal -1.
    Declaration
    property ErrorCode: TSDEResult
    Purpose
           Reserved. At present it is equal to NativeError property.
    Declaration
    property ErrorPos: LongInt
    Purpose
           Indicates a position of the error. It means after prepare or execute calls for Oracle, SQLBase and MS SQL Server only, it is equal –1 always for all other servers and by default at other cases.
    In case of error ErrorPos is equal error offset for Oracle and SQLBase and it is equal line number (beginning with 1) for MS SQL Server.
    Declaration
    property NativeError: TSDEResult
    Purpose
           Returns native error code for used SQL-server.
           This exception is raised whenever ODBC errors occurred.
    Declaration
    constructor CreateWithSqlState(AErrorCode, ANativeError: TSDEResult; const AMsg, ASqlState: string)
    Purpose
           Creates an instance of ESDOdbcError using the specified error codes, message and SQLSTATE string for the ODBC error..
    Declaration
    property SqlState: string
    Purpose
           Contains a five-character SQLSTATE code for an ODBC error. The first two characters indicate the class error and the other three characters indicate the subclass.
           This exception is raised whenever DB-Library errors occurred.
    Declaration
    constructor Create(DbProc: PDBPROCESS; AErrorCode, ANativeError: TSDEResult; const Msg: string)
    Purpose
           Creates an instance of ESDMssError with the specified error codes, message for the associated process handle and DB-Library error.
    Declaration
    property HProcess: PDBPROCESS
    Purpose
           Indicates a process handle for the associated error. ESDSqlLibError
           This exception is raised whenever errors occurred in process of loading/unloading database client software.
     

           The component gives an access to the images stored by Centura developer tools (SqlWindows or Team Developer). These tools can store images in proprietary format, therefore TDBImage component raised exception "Invalid image format".
           For use this component you need to include SDCTBLOB unit in your application and set the following code before image query: DefaultFieldClasses[ftBlob] := TSDCntrBlobField . After that all LONG fields will be check for known formats before assign data to TDBImage, TPicture or TBitmap components. You can set TSDCntrBlobField.HeaderRemove property to False or call the following code DefaultFieldClasses[ftBlob] := TSDCntrBlobField , if you want to return all as it was.
     
    Note: TDBImage and TImage do not understand all image formats.
    HeaderRemove
    declaration
    property HeaderRemove: Boolean
    Purpose
           If this property is equal True, then field will be parse header image and return only image data, if it is possible. If property set to False, then the component work as standard TBlobField.

     
    The component controls server connection and performs administration procedures on the specific SQLBase server. It allows changing login process.
    Declaration
    procedure AbortProcess(ProcessNo: Integer)
    Purpose
           Aborts a database server process. You can't abort a process that the server is currently processing.
    Declaration
    procedure BackupDatabase(const DBName, BackupDir: string; Over: Boolean)
    Purpose
           Makes an online backup, i.e. the procedure copies the specified database file (DBName parameter) and it’s log files needed to restore the database to a consistent state. The backup includes transactions, which are committed when the backup is started. BackupDir defines a directory where the files will be copied or overwritten, if Over parameter is equal True.
           The advantage of an online backup is that users can access the database while the backup is being done.
    Declaration
    procedure CancelRequest(CursorNo: Integer)
    Purpose
           Cancels an execution SQL statement.
    Declaration
    procedure Close
    Purpose
           Disconnects from SQLBase server.
    Declaration
    constructor Create(AOwner: TComponent)
    Purpose
           Creates an instance of TSDSQLBaseServer component.
    Declaration
    procedure CreateDatabase(const DBName: string)
    Purpose
           Procedure physically creates and installs database on the server.
    Declaration
    destructor Destroy
    Purpose
           Frees an instance of TSDSQLBaseServer component.
    Declaration
    procedure DeinstallDatabase(const DBName: string)
    Purpose
           Deinstalls the specified database on the server and removes the DBName keyword from sql.ini. The procedure does not physically delete the database.
    Declaration
    procedure DeleteDatabase(const DBName: string)
    Purpose
           Drops a database on the server. The procedure physically deletes the entire database directory for the specified database.
    Declaration
    procedure GetDatabaseNames(DBNames: TStrings)
    Purpose
           Populates a string list with the names of the installed database on the server.
    Declaration
    procedure InstallDatabase(const DBName: string)
    Purpose
           Procedure installs the specified database on the server and adds DBName keyword in sql.ini.
    Declaration
    procedure Open
    Purpose
           Connects to the specified server.
    Declaration
    procedure RestoreDatabase(const DBName, BackupDir: string; Over: Boolean)
    Purpose
           The procedure restores and recovers the specified database (DBName parameter) and it’s log files that were backed up using BackupDatabase procedure in BackupDir directory.
           The procedure can not be performed while users are connected.
    Declaration
    procedure Shutdown
    Purpose
           The procedure prevents new connections to the server. After call this procedure, anyone trying to connect to a database receives a "shutdown server in progress" message. All current users remain connected and all current transactions continue.
    Declaration
    procedure Terminate
    Purpose
           Terminates the server. If users are connected then their session are terminated and they will get a "session terminated" message. All open transactions are left uncommitted.
    Declaration
    property Connected: Boolean
    Purpose
           Specified whether or not server connection is active. Set Connected to True to establish a server connection. Set Connection to False to close a server connection.
    Declaration
    property LoginPrompt: Boolean
    Purpose
           Specified whether or not to display a standard login dialog when the application attempts to connect to a server.
    Declaration
    property Params: TStrings
    Purpose
           Contains server connection parameters.
    Declaration
    property ServerName: string
    Purpose
           Specified server name used for connection.
    Declaration
    property OnLogin: TSDSrvLoginEvent
    TSDSrvLoginEvent = procedure(Server: TSDSQLBaseServer; LoginParams: TStrings) of object
    Purpose
           OnLogin event occurs when an application connects to a server and LoginPrompt property is False. If you provide alternative OnLogin event handler that you must set the "PASSWORD" values in LoginParams.

    Declaration
    SDOra.Oracle8Blobs: Boolean
    Purpose
           The variable defines a binding mode for Oracle8 BLOB and CLOB field types. Set this variable to True before executing a query that uses these types for parameters. Assign the data using TParam.AsMemo for CLOB and TParam.AsBlob for BLOB. If the variable is equal False, then query will bind Blob and Memo parameters as Oracle RAW/LONG RAW field type.
    Note you cannot mix CLOB/BLOB and RAW/LONG RAW in the binding of the same query.
    Declaration
    Session: TSDSession
    Purpose
           The instance of TSDSession component, which controls the associated database components used by application. It is created automatically as part of application initialization process and destroyed, when application is terminated. It is forbidden to create or destroy Session variable manually.
    Declaration
    Sessions: TSDSessionList
    Purpose
           The instance of TSDSessionList component contains all session components, which are created by an application. Delphi automatically will add and remove the session components in and from the list.
           Applications should not create additional instances of TSDSessionList component.
    Declaration
    TInitSqlDatabaseProc      = function (ADbParams: TStrings): TISqlDatabase
    InitSqlDatabaseProcs: array[TSDServerType] of TInitSqlDatabaseProc
    Purpose
           The variable contains an array of references to functions, which create a low-level connection object.
    Declaration
     
    SqlApiDLL: string
    Purpose
           The variables are located in the each server support unit (for example, SDOra, SDMss) and contains the filenames of the client API-libraries, used for connection to the associated database server. You can use this variable to force a specific version of client library to be loaded, for that it is necessary to set this variable before first connect to the specific server.
    For example,
    Uses
     SDOra;
    …………
    SDOra.SqlApiDLL := 'ORA72.DLL';
    Declaration
     
    SQLWaitTimeout: Integer
    Purpose
    Specifies amount of time (in milliseconds) before reset Screen.Cursor in the default state to avoid cursor flickering in process of multiple-statement execution.
    The recommended value of this variable is 50-100 milliseconds. To turn off this behaviour, set the variable to value 0.
    Declaration
    function GetSQLDirectVersion: string;
    Purpose
          Return version string of SQLDirect components in the following format: “X.Y.Z”, where X - major version, Y – minor version, Z - release number.
    Declaration
     
    function GetSqlLibParamName(ServerTypeCode: Integer): string;
    Purpose
           Returns a “XXX API LIBRARY” database parameter name for the specified server, ServerTypeCode is equal Ord(SDDatabase.ServerType).
    Declaration
     
    function GetDataSourceNames(List: TStrings): Integer;
    Purpose
           List is filled by ODBC datasources, which are registered in the system.
    Declaration
     
    function GetDBInfoAttachedUsers(DbHandle: PSDHandleRec): TStrings;
    Purpose
           Return users, which currently connected to Interbase/Firebird server. The function accepts TSDDatabase.Handle as parameter. It is need to include SDInt unit to use this function.
    …..
    uses
       SDInt;
    ….
    SDDatabase1.Open;
    S := GetDBInfoAttachedUsers(SDDatabase1.Handle);
    S.Free;
     

    Support
    If you have any problems send me the following information:
    §         what database server (name, version) you use
    §         what software database client (SQL*Net, SQLBase Client, Informix CLI, Interbase Client, MS SQL Client, Open Client or DB2 CAE) and its version you use
    §         Delphi or C++Builder version
    §         Problem description (if it is possible, with sample code)
    §         OS version
     
    First, it is necessary to set Oracle8Blobs(it’s necessary for Delphi and C++Builder version 3 and 4) variable to True before bind and execute of the statement with these parameter’s types.
    Second, further you have two ways for input a valid UPDATE/INSERT statement.
    1.       Simplest way is to name a BLOB/CLOB parameter like column in the table. In this way, it’s important to define all parameter’s types before Prepare call. For example:
    ‘insert into TEST(ID, MEMO) values(:Ident, :MEMO)’
    or
    ‘update TEST set ID=:NewID, MEMO=:MEMO where ID=:OLD_ID’
    2.       Second way is to use empty_blob/empty_clob functions and RETURNING clause in the statement. For example, below is the modified statements:
    ‘insert into TEST(ID, MEMO) values( :Ident, empty_clob() ) returning MEMO into :MEMO’ or
    ‘update TEST set ID=:NewID, MEMO= empty_clob() where ID=:OLD_ID
    returning MEMO into :MEMO’
    Blob/Clob parameter of a stored procedure has to be declared as input/output.
     
    Create table TEST_TBL(FINT intgere, FLONG BLOB);
    Insert into TEST_TBL values(1, NULL);
     
    create or replace procedure ProcUpdateBlob
    (
     pLob in out BLOB --- it is necessary to return LOB locator to update LOB data
    ) is
    begin
     update TEST_TBL set FLONG = empty_blob() where FINT=1 returning FLONG into pLob;
    end;
     
    Delphi code to execute a stored procedure:
     
    sp: TSDStoredProc;
    ….
    Sp.StoredPorcName := ‘ProcUpdateBlob’;
    Sp.Prepare;
    Sp.Params[0].Value := ‘blob data’;
    Sp.ExecSQL;
     
    FAQ
    F: “Process Activity” screen of SQLBase Server does not show text of the executed command beginning with v.4.2.4.
    A: “Process Activity” screen of SQLBase Server shows text of a command only in time of the command compiling (preparing). And in this case the command is executed without Prepare call. I.e. call Prepare method before Open or ExecSQL, if you want to see the command text in “Process Activity” screen of SQLBase Server
       1. It is impossible to get more then 255 byte for a char/binary column of MS SQL Server 7, so that DB-Lib does not return more then 255 byte for these columns (MS SQL Server 7 truncates data in case of connecting through DB-Library). The reason is the following: Microsoft did not add new features of MS SQL Server 7 for DB-Library.
       2. All database connections of applications are lost after using and unloading DLL, which was connected to a database too (MSSQL & DB-Library). By some reason, DB-Library is unloaded incorrectly(dynamically, using FreeLibrary call) and produces AV in main application in case DB-Library calls.
       3. If the LONG-column (or LONG RAW) is equal NULL and is located last
    in INSERT-statement, then all columns are inserted as NULL (tested
    on SQLNet 2.3.2 & Oracle Server 7.3.3).
       4. If you get "External Exception C0000008" or "Access Violation" error
    with Oracle SQL*Net 2.3.3 that look at the following links:
     
           http://www.borland.com/devsupport/bde/qanda/641.html
                  or
           http://www.borland.com/devsupport/sqllinks/pub-73.html
       5. SQLBase incorrectly binds (or converts) DOUBLE program data type, which have the following first digits just after decimal point: 1, 4, 6, 9. Therefore the value like below are incorrectly bound: 1.1; 11.11; 0.4; 0.41; 10.413. For avoid the problem, it is possible to assign a data through TParam.AsString property instead TParam.AsFloat.
       6. When you got an error “ORA-04043: object … does not exist” for Oracle8 stored procedure, be sure that you set its full name as <OWNER.NAME> or <OWNER.PACKAGE.NAME>.
       7. "ORA-22990: LOB locators cannot span transaction" error is raised when Oracle8 BLOB/CLOB parameters are updated and AUTOCOMMIT database parameter is TRUE. To solve that, it is necessary to set off AUTOCOMMIT parameter or call StartTransaction/Commit explicitly
       8. "SQL error code: -504 Cursor unknown" or "SQL error code: -501 Attempt to reclose a closed cursor" errors happen on Interbase/Firebird, when szAUTOCOMMIT is True and Next or Close methods are called, after StartTransaction/Commit/Rollback calls. To exclude the errors:
    1) do not use StartTransaction/Commit, when AUTOCOMMIT is set on (True);
    2) set AUTOCOMIT database parameter to False.
    3) set “DETACH ON FETCHALL” database parameter to True
    4) do not use AUTOCOMIT database parameter, in this case commit will be executed after each statement automatically to emulate the autocommit parameter. Also “TRANSACTION RETAINING” database parameter must be equal True or not present to use a default value.
       9. DB2 CLI v.8.1 and earlier is not able to return information, that a column is autoincremented.
       10. ODBC and OLEDB drivers for MS SQLServer returns an invalid value (0) of affected rows after data modification statements, the table has triggers and parameters are bound at run-time (they are not embedded into the statement). Therefore TSDQuery.RowsAffected returns invalid value in this case. That’s tested with MSSQL ODBC driver v.3.85 and MDAC 2.6 with MSSQL2000.
       11. Oracle "ORA-01401: inserted value too large for column" error is raised, when size of updated/inserted data is equal size of updated/inserted CHAR column. It is necessary to use ftFixedChar type for this parameter to avoid this error.
       12. Delphi 5 parameters with TParam.DataType = LargeInt can not be assigned 64-bit integer, which has more than 9 numbers, because Delphi 5 variant type does not support Int64.
       13. ”Cannot create new connection because in manual or distributed transaction mode.” OLEDB-error, when a row of the large result set is updated in a live mode and single connection mode is off. To avoid the error, it is necessary to set single connection mode(szSINGLECONN database parameter) to True or call FetchAll for the last activated result set (OLEDB & MSSQL)

    Version 5.2.10 (31.10.2007)
    §         bugfix: szSKIPPREPARE excludes a preparation of a stored procedure and parameters are not described (OLEDB & MSSQL)
    §         bugfix: "ORA-01483: invalid length for DATE or NUMBER bind variable" error, when AsDate is used to assign a datatime parameter (Oracle9)
    §         bugfix: call Edit and Cancel for a record, which was inserted and posted, removes the record in cached updates mode
    §         bugfix: "SQL error code: -504 Cursor unknown", when szAUTOCOMMIT is True and Next or Close methods are called, after StartTransaction/Commit/Rollback calls. Exclude szAUTOCOMMIT to avoid the error and emulate autocommit behaviour (Interbase, Firebird)
    Version 5.2.9 (20.10.2007)
    §         szSKIPPREPARE database parameter to exclude preparation of a command and related problems/bugs  of MS SQLServer provider (OLEDB). For example: "Invalid input parameter values..." error.
    §         ESDEngineError returns SQLState string (PosgreSQL 8)
    §         bugfix: "Table read-only" error, when a table synonym is used in a live query with UpdateMode<>upWhereAll and a primary key exists (Oracle)
    §         bugfix: GetTableNames returns only 1st character of a table names, when szMAXSTRINGSIZE < 260 (OLEDB&MSSQL)
    §         bugfix: a prepared select-query, which has LIKE predicate with a parameter, returns no record (OLEDB&MSSQL)
    §         bugfix: TField.DataSize has invalid value(2*N+1) for VARCHAR(2*N) column (Oracle)
    Version 5.2.8 (5.10.2007)
    §         szSQLWaitTimeout new database parameter, by default it is equal False (public variable SQLWaitTimeout = 0 by default)
    §         bugfix: TSDTable does not use default index to order records, when DefaultIndex = True (TSDTable does not request index info, when DefaultIndex=False and UpdateMode=upWhereAll and IndexName property is empty)
    §         bugfix: live query generates an invalid insert statement, when the query has similar fields, like 'ID' and 'ID_MAIN' (Delphi6+)
    §         bugfix: OnUpdateRecord handler, which returns UpdateAction=uaSkip, is called repeatedly for the same inserted records
    §         bugfix: only the 1-st character of string parameter is stored, when sub-select is executed after Prepare call (OLEDB&MSSQL)
    §         bugfix: "Invalid input parameter values..." error, when a prepared query is executed with NULL(empty) parameter value, which is bound to NOT NULL column (OLEDB&MSSQL)
    §         bugfix: hourglass cursor is not changed to default, when TSDUpdateSQL Editor is opened first
    §         bugfix: hourglass cursor is not changed after Screen.Cursor := crHourGlass; SDDatabase1.Connected := True; Screen.Cursor := crDefault, when SQLWaitTimeout > 0
    Version 5.2.7 (27.09.2007)
    §         szSTRICTUPDATEMODE database parameter to exclude "Table read-only" error, when the required table does not have a primary keys or unique indexes
    §         TSDTable.SetKey/GotoKey methods are supported
    §         SQLWaitTimeout new public variable to avoid fleaking cursor, when some queries are executed sequenced (thanks to Rene Schietzel)
    §         TSDTable do not request index info, when UpdateMode=upWhereAll and IndexName property is empty, to speed up of opening
    §         bugfix: ApplyUpdates hangs, when 2 or more records are inserted
    §         bugfix: memory leaks in a live query mode (lost TStringList objects)
    §         bugfix: "Access Violation" error, when TSDUpdateSQL Editor is opened
    §         bugfix: Assertion failed (SDDEngine.pas, line 3920) or "Record not available locally" error, when Cancel is called in an exception block(without re-raise the exception) after Append/Insert call and "Duplicate record" exception in process of Post call
    §         bugfix: unclosed dbprocess structure, when connection to non-existing database is performed (MSSQL)
    §         bugfix: “Unknown identificator” error, when TSDTable is activated with a table name (without an owner name), which has duplicates in other schema (Oracle)
    §         bugfix: "Table read-only" error, when a live query selects a table name (without an owner name), which has duplicates in other schema (Oracle)
    §         bugfix: "Invalid field size" error, when a query with VARCHAR(>255) column is opened (Sybase)
    Version 5.2.6 (20.08.2007)
    §         szDATABASENAME database parameter is used, when it is not present in RemoteDatabase property (MSSQL, OLEDB, MySQL, PostgreSQL, Sybase)
    §         new GetDataSourceNames public function (in SDOdbc unit)
    §         performance optimization of a live query with large number of fields
    §         TSDTable.CreateTable overwrites an existing table (earlier an error happens)
    §         bugfix: error is raised, when CreateTable creates unique index for a primary key (Oracle, MSSQL)
    §         bugfix: Locate call with loPartialKey does not found a partial date/time value as string on sorted date/time field (SortRecords(FDATE,..); Locate('02', 'FDATE', [loPartialKey]))
    §         bugfix: Locate can not found a record, when variant types of key value and record value are different
    §         bugfix: "Duplicate row" error, when ApplyUpdates is called after Delete and Insert records with same key value
    §         bugfix: MONEY column is returned as 0 with some international Windows settings (MySQL, PostgreSQL) (Note: MONEY column is updated using a string value with money char)
    §         bugfix: "ORA-01406: fetched column value was truncated" error, when NVARCHAR(TWideStringField) column follows in select-list after DATE (not TIMESTAMP) column (Oracle9+)
    Version 5.2.5 (5.07.2007)
    §         bugfix: default value of TSDQuery.CachedUpdates is False
    Version 5.2.4 (1.07.2007)
    §         bugfix: "Incorrectly formed filter expression" error, when Filter value contains value of ftLargeint type
    §         bugfix: AssertionFailure(D:/.../SDUpdSEd.pas, line 528), when TSDUpdateSQL is not assigned to a dataset
    §         bugfix: exception in FreeParamsBuffer, when a statement like below "update TABLE ... returning FLOB_COL=:FLOB_COL" is executed (Oracle9+)
    §         bugfix: Cancel does not restore old Blob value, when Blob is modified before other fields
    §         bugfix: "SDQuery: Cannot perform this operation on a closed dataset" error, when a field is added in Field Editor (in design-time) for TSDQuery with Options=[doFetchAllOnOpen]
    §         bugfix: MONEY column is returned as 0 (PostgreSQL) (Note: MONEY column is updated using string value with money char)
    §         bugfix: TIMESTAMP column is returned as string field (MySQL)
    §         bugfix: "Could not convert variant of type(String) into type (Date)" error, when Locate with a string value is called for a date/time-field, which is sorted
    Version 5.2.3 (15.05.2007)
    §         TSQLTimestampField is overrided to display correctly it's value without microsecond in a grid, when szENABLETIMESTAMP=True
    §         performance of TSDQuery.ParamByName is improved, when more than 20 parameters are used
    §         bugfix: 'invalid transaction handle' error, when a command without result set and parameters is executed w/o Prepare (IB/FB)
    §         bugfix: to minimize network trips, save version value in TIMssDatabase.GetServerVersion (MSSQL)
    Version 5.2.2 (3.05.2007)
    §         bugfix: Locate('COL1'..., [loPartialKey]) does not work after SortRecords('COL1', .., 'False'), when COL1 is a string field
    §         bugfix: 'TICustomOdbcCommand.CnvtDBDateTime: DstSize < SizeOf(TDateTimeRec)' assertion, when DATE or TIME field is used (ODBC)
    §         bugfix: an invalid statement is executed, when TSDTable.Filter contains a column in brackets, like '[COL=...]'
    Version 5.2.1 (1.05.2007)
    §         Delphi 2007 support
    §         TWideStringField support (MySQL, PostgreSQL)
    §         TSQLTimestampField support (DB2, ODBC, Delphi6+)
    §         szENABLETIMESTAMP database parameter (default=False)
    §         szLOCALCHARSET database parameter is supported for MySQL, PostreSQL
    §         TSDTable.Filter property is added in WHERE clause of SQL command (for BDE-compatibility)
    §         bugfix: "Invalid variant operation" error, when a live query with UpdateMode=upWhereAll saves NULL-value for TLargeintField (NUMERIC(X, 0)) (Delphi 5 and below)
    §         bugfix: SafeArrayTypeMismatchException is raised, when function TIMssDatabase.GetServerVersion is called in .NET enviroment (MSSQL)
    §         bugfix: TSDDatabase.GetFieldNames() returns only 1-st char of names like 'd.s' (MSSQL2005 & ODBC/OLEDB)
    §         bugfix: "Record not found" error, when Locate is called on a sorted dataset
    §         bugfix: Locate('COL1'..., [loCaseInsensitive]) works incorrectly(inversely) after SortRecords('COL1', ..), when COL1 is a string field
    §         bugfix: "Data conversion is not implemented.. Float->Currency" error, when TCurrencyField persistent field is used for NUMERIC(x,y) column (PostreSQL)
    Version 5.2 (2.04.2007)
    §         Firebird 2 support
    §         new method TSDDataSet.OpenEx
    §         new method TSDDataSet.LocatePrior
    §         new property TSDDataSet.Sorted property
    §         new property TSDDataSet.Options = [doKeepSorting, doDetachOnFetchAll, doFetchAllOnOpen]
    §         new database parameters: szFETCHALLONOPEN, szDETACHONFETCHALL
    §         removed TSDDataSet.DetachOnFetchAll property, This property is automatically converted to the corresponding TSDDataSet.Options
    §         TWideStringField support (ODBC & MSSQL/Oracle, OLEDB, Oracle)
    §         new szUNICODESTRING database parameter to support unicode fields
    §         new parameters stPrimaryKeys, stForeignKeys of TSDDatabase.GetSchemaInfo method
    §         live query uses primary key info at first instead of index info only earlier
    §         Locate uses info about sort fields for quick search (when SortRecords or 'ORDER BY' clause are used)
    §         sorting inserted/modified locally records (when dataset is sorted and doKeepSorting is set)
    §         TLargeIntField support NUMBER(20) with precision up 19 significant digits
    §         load OCI.DLL, which is the first available in PATH variable, instead of highest installed library like: oraclient10.dll, oraclient9.dll or oraclient8.dll (Oracle8-10)
    §         transaction handle is closed, when no statements are executed or opened (IB/FB)
    §         monitor shows the following properties of ESDEngineError: NativeError, ErrorPos, LostConnection, SQLState, when they have non-default or non-empty values
    §         bugfix: transaction with isolation level tiReadCommitted can not read(locked) rows, which are locked by the other transaction (IB/FB)
    §         bugfix: assertion, when TSDTable.ApplyUpdates is called, but UpdateObject property or OnUpdateRecord event are not assigned
    §         bugfix: Cancel in AfterPost handler duplicates the posted record (when RequestLive = True)
    §         bugfix: '[DBNETLIB][ConnectionWrite (send()).]...' error (nNativeError=11) is not considered as lost connection
    §         bugfix: fields with Required = True are posted without an exception (D6 and above)
    §         bugfix: memory and resource leaks (interface is not destroyed), when a shared connection was used (OLEDB & MSSQL)
    §         bugfix: TSDDataSet.LoadFromFile read incorrectly Required and ReadOnly properies of field definitions
    §         bugfix: 'Unknown datatype for parameter OLD_XXX' error, when a query saves rows in a table with field names like OLD_XXX in a live or cached updates modes
    §         bugfix: LoadFromFile does not load the last data row, after which CR does not follow
    §         bugfix: GetSchemaInfo(stTable, ...) returns incorrectly 'TABLE_TYPE' field value (Interebase/FB, SQLBase)
    §         bugfix: 'Token unknown ..' error, when GetSchemaInfo(stColumns, ...) is called (Interbase v.6)
    §         bugfix: sort order is changed, when sorted columns are moved in TDBGrid
    §         bugfix: 'Record not found or changed...' error, when a key field is used with a column alias in the select-list
    Version 5.1.5 (20.11.2006)
    §         bugfix: 'Table read only' error with a statement like 'select COL1,COL2...' (columns without spaces) or '..where..(1=1)..'
    §         'Table read only' exception includes a table name, when it is possible
    Version 5.1.4 (3.11.2006)
    §         new ESDIntError.SQLCode property is added to check the returned code (Interbase, Firebird)
    §         new ESDOleDbError.SqlState property (OLEDB)
    §         new szANSITOOEM database parameter to set DBANSItoOEM and DBOEMtoANSI options (MSSQL)
    §         TSDDatabase.Assign duplicates propertiers of other TSDDatabase component
    §         bugfix: infinite loop, when a live query has 'ORDER BY' clause with 2 or more fields
    §         bugfix: TSDDataSet.Refresh has memory leaks for blob fields
    §         bugfix: NextResultSet raises an error, when the next result set is returned (OLEDB, ODBC)
    §         bugfix: infinite loop is reported, when a blob parameter of some (unknown) size is stored (ODBC)
    §         bugfix: Currency and LargeInt parameters are not supported (Oracle)
    §         bugfix: assigning the last record number to TSDDataSet.RecNo works incorrectly after <OpenEmpty and First> calls
    Version 5.1.3 (25.09.2006)
    §         szSTRICTUPDATE database parameter is added to exclude checking number of affected rows in process of ApplyUpdates
    §         szSTRICTLIVEQUERY database parameter is added to allow more than 1 table in select-list of a live query
    §         szCACHEDUPDATES parameter is added to set off all default created or loaded TSDDataSet.CachedUpdates properties (for compatibility with BDE components)
    §         bugfix: "Table read only" error in case of " SELECT..." statement (space character before SELECT keyword)
    §         bugfix: syntax error in a live query like: "...FROM table1 AS T1 LEFT JOIN table2 AS T2 ON ..", when "Table read-only” must be raised (MySQL)
    §         bugfix: "ORA-01401: inserted value too large for column" error, when size of updated/inserted ftFixedChar-parameter is equal size of inserted/updated CHAR column (Oracle)
    §         bugfix: "CLI0109E String data right truncated" error, when maximum size of data is inserted/updated (DB2, ODBC)
    §         bugfix: "0321 Insert/update value is too large" error, when maximum size of data is inserted/updated (SQLBase)
    §         bugfix: lost connection (SQLSTATE=40003 - communication failure error) is not detected (DB2)
    §         bugfix: "Table is read-only" error, when column names are quoted
    §         bugfix: lost connection event closes offline queries, which can stay active in this case
    Version 5.1.2 (1.08.2006)
    §         bugfix: TSDDatabase.Connected is True, when connection is lost
    §         bugfix: AfterReconnect is not fired, when connection is restored
    §         bugfix: error 303 on Win2K when optimization compiler option is set on(IB/Firebird)
    §         bugfix: 'The handle is invalid' error, when query is activated in Delphi 2006 for NET(Interbase/Firebird)
    Version 5.1.1 (26.07.2006)
    §         bugfix: TSDQuery.CachedUpdates property is stored incorrectly in dfm-file
    §         bugfix: TSDStoredProc does not display RAISEERROR message (OLEDB & MSSQL)
    §         bugfix: AV, when an application with an activated TSDTable component is stopped (Interbase)
    Version 5.1.0 (21.07.2006)
    §         C++Builder 2006 support
    §         lost connection handling (TSDDatabase has new ReconnectTimeout property, WaitReconnect method, AfterReconnect, OnLostConnectError, OnReconnectError events)
    §         ftFixedChar parameter is supported (also TField.FixedChar is set, when this info is available)
    §         BOOLEAN datatype is supported for Interbase 7.x
    §         forbid to connect TSDDataSet with unknown DatabaseName value, i.e. TSDDatabase has to exist with the same DatabaseName
    §         TField.Required is equal False always, when DataType = ftAutoInc (for BDE compatibility)
    §         new TSDDataSet.FindField, which is a few quickly than Fields.FindField, TSDDataSet.FieldByName method is accelerated a few
    §         new public GetDBInfoAttachedUsers() function in SDInt unit to return active users string list. The function requires Handle of active TSDDatabase as parameter (Interbase/Firebird)
    §         TSDDataSet can assign data from TStrings. When the dataset has more than 1 persistent field, data has to be separated using CSVFieldDelimiter
    §         TSDUpdateSQL editor generates statements without owner name for Interbase/Firebird
    §         szLOGINTIMEOUT database parameter is supported for Interbase/Firebird
    §         szRTRIMCHAROUTPUT database parameter is supported for MySQL, PostgreSQL
    §         CachedUpdates is published property now. CachedUpdates and RequestLive can be equal True in one time, CachedUpdates is primary (it's used UpdateMode value to generate statements)
    §         monitor shows error text and the statement, which produces the error
    §         error message contains error code for MySQL
    §         bugfix: OpenEmpty does not use the current valid statement, when an incorrect statement was executed with error before
    §         bugfix: 'Table is read-only', when a query looks like 'select#0D...' (CR after SELECT)
    §         bugfix: position in a dataset is changed, when Edit, Post methods are called on the unmodified record
    §         bugfix: 'Function sequence error', when function with a result set is opened (Informix)
    §         bugfix: 'error -104 Invalid command', when a live query is activated (Interbase 7.x)
    §         bugfix: TSDDatabase.GetSchemaInfo(stColumns...) does not show INT64-columns (Interbase, Firebird)
    §         bugfix: '..error -104 Token unknown..', when a table component with the owner name is posted (Interbase/Firebird)
    §         bugfix: AV, when procedure with output parameters is executed (Interbase7)
    §         bugfix: the last char of output string parameter is truncated (OLEDB & MSSQL)
    §         bugfix: 'Record changed by another user' error, when Prepare, Open, Edit and Post are called for a live query(the table has an index) in single conection mode (MSSQL, ODBC&MSSQL)
    §         bugfix: TSDDatabase.Close does not release some handles as reported by Windows TaskManager (OLEDB&MSSQL)
    §         bugfix: 'Error 2014: Commands out of sync...', when a query is opened after TSDDatabase.GetSchemaInfo call (MySQL)
    Version 5.0.1 (1.04.2006)
    §         szPREFETCHROWS is supported for MySQL connection: query can fetch the result set row-by-row from the server or retrieve the entire result at execution time (MySQL)
    §         bugfix: "00324-Invalid program bind variable" error, when a query with parameters is executed (D2006 for Win32 & SQLBase)
    §         bugfix: "8145:@ is not a parameter for procedure" error, when a stored procedure with parameters is executed (D2006 for Win32 & SQLServer)
    §         bugfix: AV, when a query with VARCHAR(>255) is closed and szMAXSTRINGSIZE is not used (Oracle8+)
    §         bugfix: string field shows NULL and empty value incorrectly (MySQL)
    §         bugfix: monitor receives a statement without CRLF
    §         bugfix: procedure without a result set is executed twice, when Prepare, ExecProc are called (MSSQL)
    §         bugfix: TSDDataSet.Refresh method returns empty result set, when it was opened without Prepare call (MySQL, PostgreSQL)
    §         bugfix: error, when the linked tables, which have different master and detail field names, are activated
    §         table components without indexes are refreshed more quickly (indexes is not read repeatedly)
    §         bugfix: when a form with an active monitor component is opened in designer, then 'Cannot perform .. on active monitor' exception is raised, when TraceOptions is read from form
    §         bugfix: 'error -104 Token unknown - char 24' error, when Params is clicked in Object Inspector and StoredProcName includes an owner name (Interbase/Firebird)
    Version 5.0 (15.02.2006)
    §         Delphi 2006 support
    §         trace-support in a file or monitor for Win32-applications
    §         new TSDDataSet.Assign method, which creates a copy of other dataset (if source is not active, then FieldDefs is copied)
    §         TSDDataSet.OpenEmpty can work in offline, when the database component is disconnected at all (it is equal to a memory dataset)
    §         new methods of TSDDataSet: LoadFromFile, LoadFromStream, SaveToStream, SaveToFile to load/store the result set using CSV-file/stream
    §         new TSDDataSet.CancelExec method, which is supported by Oracle7, Oracle8, ODBC, DB2, Informix, OLEDB
    §         new methods of TSDBlobStream: SaveToFile, LoadFromFile
    §         szMAXSTRINGSIZE database parameter is supported for OLEDB, Oracle 7, 8+
    §         BIT datatype is supported as TBooleanField (MySQL5)
    §         new FieldTypeToSQLDataTypeMap public variable to turn up a behaviour of TSDTable.CreateTable method
    §         bugfix: “Record changed” error did not happen, when ApplyUpdates updates 0 rows
    §         bugfix: "Record not found", when SortRecords is called and query does not have visible rows in filter mode
    §         bugfix: setting of TSDTable.IndexFieldNames value does not change a record sorting
    §         bugfix: at desing-time delays in case of TSDTable.TableName editing (for each character), when a database has many tables
    §         bugfix: AV, when a table component, which uses a primary key with more than 1 fields, is closed (IB, Firebird)
    §         bugfix: "Unexpended end of command" error happens in case of TSDDatabase.GetSchemaInfo(stPackages..) call (Firebird, IB)
    §         bugfix: "SQLDA missing or incorrect version..." (error code=-804), when a statement with a leading space is executed like ' update...' (IB, Firebird)
    §         bugfix: TSDUpdateSQL editor does not show fields of primary key, which contains 2 and more fields (Firebird, IB, Oracle)
    §         bugfix: TSDUpdateSQL editor generated statements with trailing spaces in field names (Firebird, IB)
    §         bugfix:list of TSDTable.TableName is empty in Object Inspector, when non-default session is used
    §         bugfix: "Multiple-step OLEDB ..errors" error, when GetSchema() is called (OLEDB & MS Access)
    §         bugfix: AV, when TSDTable.CreateTable is called (OLEDB & MSSQL)
    §         bugfix: "BIGINT field is not supported" error, when query with this field is activated (OLEDB & MSSQL)
    §         bugfix: only integer(<=4byte size) field can be created as TAutoIncField, which has 4 byte size (ODBC)
    §         bugfix: "Cannot update, .. is not owned by ..", when TSDDatabase.ApplyUpdates is called after OpenEmpty
    §         bugfix: SMALLINT, TINYINT datatypes were returned as TIntegerField (instead of TSmallintField) (MySQL)
    §         bugfix: TBlobField is not updated as NULL (empty string is stored) in case of ApplyUpdates (MSSQL)
    §         bugfix: "Accessor is invalid" error, when a command is executed (OLEDB & FoxPro)
    §         bugfix: output string parameters were truncated at 255 chars without szMAXCHARPARAMLEN parameter. Request and store max output length of procedure parameters in InitParamsList (DB2, ODBC)
    §         bugfix: DECIMAL/NUMERIC columns were described as TStringField (MySQL5)
    Version 4.2.9 (30.09.2005)
    §         TField.DefaultExpression is supported
    §         szTRANSNOWAIT parameter (Interbase, Firebird)
    §         TSDDatabase.SetHandle is implemented (OLEDB)
    §         bugfix: AV, when a query is refreshed after Detach or OpenEmpty is called (Interbase)
    §         bugfix: autocommit is set off after StartTransaction/Commit calls (Interbase, Firebird)
    §         bugfix: AV, when persistent TStringField.Size is less than actual column size
    §         bugfix: TSDTable modifies all record in the table, when UpdateMode property is upWhereKeyOnly (MySQL)
    §         bugfix: error, when record is inserted in a table ‘user’ using TSDTable (MySQL)
    §         bugfix: AV, when a stored procedure with inline parameters (ex.: sp_t @p=1) is executed using TSDQuery (Sybase)
    §         read Sybase Open Client version from the registry to exclude creation of sybinit.err in time of login (Sybase)
    §         bugfix: 'Token unknown' error, when TSDTable.IndexName property is clicked at Object Inspector and TableName property contains an object name (Interbase)
    §         bugfix: 'Table exists' error, when TSDTable.CreateTable is used (Interbase, Firebird)
    §         bugfix: unmatched CoInitialize/CoUninitialize calls, when some database components are used in the different threads (OLEDB)
    §         bugfix: 'Table read only' error, when a live query is activated and the table is not found
    §         bugfix: error 10038 ('pending results'), when prepared query is activated repeatedly and single connection mode set off (MSSQL)
    §         bugfix: "Client-Library error 16843068: ct_options()...routine has been called at an illegal time.", when szTDSPACKETSIZE parameter is used (Sybase)
    §         bugfix: AV in some case, when procedure returns output string parameters and it is executed repeatedly (MSSQL)
    Version 4.2.8 (15.08.2005)
    §         new database parameter szMAXBLOBSIZE (ODBC)
    §         try to load Firebird client using a registry item first (Firebird)
    §         bugfix: query with blobs allocates unused memory depending on maximum size of blob fields (MySQL)
    §         bugfix: invalid rows are displayed, when prepared query with PREFETCH ROWS parameter is refreshed (ODBC)
    §         bugfix: "Invalid statement handle" error in the application, when DLL with a shared DB handle is closed (Interbase)
    §         bugfix: when Filter property has a value like "COL_ID in (1, 2, 3)", it works like the Filter is equal "COL_ID = 1"
    §         bugfix: in sigle connection mode the following sequence: q2.Open; q1.Close; q1.Open; q2.Close; destroys the result set of q1 component (MSSQL)
    §         bugfix: memory leak, when the detached query is refreshed
    §         bugfix: "Incorrect syntax near ':'" error, when parameter names are quoted (ODBC, OLEDB)
    §         bugfix: parameter name is parsed incorrectly in the following case '...where :param=1...'
    §         bugfix: a conversion error, when a smallint value is selected and is returned as a persistent integer field
    Version 4.2.7 (2.07.2005)
    §         "Select Primary Keys" button in TSDUpdateSQL editor (it uses the first unique index, when the primary key is not available)
    §         bugfix: TSDQuery.Delete method removes a record, even if CanModify property is False
    §         bugfix: input varchar parameters of stored procedure are padded up parameter length (MSSQL&OLEDB)
    §         bugfix: now TSDUpdateSQL editor shows dataset fields at first, instead of all table fields as it was earlier
    §         bugfix: memory can be overrided, when string parameter is bound (OLEDB)
    §         bugfix: AV in rtl70.bpl, when TSDSript is placed at a form, which is an ancestor for other form in the project
    §         bugfix: TSDScript does not store Macros property at design-time
    §         bugfix: "Function sequence error" error or procedure w/o parameters is executed twice, when TSDStoredProc opens(w/o Prepare) a procedure without a result set (ASA&ODBC)
    Version 4.2.6 (10.06.2005)
    §         new szTRANSRETAINING database parameter to set off commit/rollback retaining (IB/FB)
    §         bugfix: "Function sequence error", when a procedure with an output parameter is executed (OLEDB, ODBC&MSSQL)
    §         bugfix: "List index out of bounds", when TSDTable.IndexFieldNames contains more fields than MasterFields property
    Version 4.2.5 (20.05.2005)
    §         new szANSINULLS database parameter to set ANSI_NULLS setting (MSSQL)
    §         bugfix: "Update failed" error (RowsAffected has an invalid value), when ApplyUpdates is called (MSSQL)
    §         bugfix: a query parameter, which is assigned using AsDate, stores a date part only to the database (MSSQL, Sybase)
    §         bugfix: "Fatal error: No diagnostic data in TICustomOdbcDatabase.CheckHandle", when query with a Blob parameter is executed (ODBC)
    §         bugfix: invalid result of detail dataset
    Version 4.2.4 (13.05.2005)
    §         new TSDDatabase.TestConnected method
    §         direct(without prepare phase) execution is supported, when a server supports this feature
    §         new szSERVERCURSOR database parameter (OLEDB, ODBC)
    §         new szBYTE16ASGUID database parameter to support TGuidField (SQLServer)
    §         “CREATE DATABASE” statement could be processed (Interbase, Firebird)
    §         source files has defines(sqldir.inc) to exclude unused server supports to minimize application/library size
    §         MySQL API call(mysql_insert_id) is used to get autoincrement value to avoid an execution of statement for this purpose (MySQL)
    §         bugfix: "Error creating cursor handle", when the first result set of an opened procedure is void, but it has other result sets (OLEDB & ODBC with MS SQLServer)
    §         bugfix: TSDTable.IndexDefs does not contain an option of primary key (IB, Firebird)
    §         bugfix: "Fieldtype of XXX is not supported" error (in TParam.GetDataSize), when Post for live query with LargeInt field is executed (IB)
     
    Version 4.2.3 (9.04.2005)
    §         szTDSPACKETSIZE parameter is supported for OLEDB provider for MSSQL
    §         stProcedureParameters support as parameter in GetSchemaInfo (Interbase/Firebird, OLEDB, ODBC, MSSQL, Sybase)
    §         bugfix: assertion in TIOleDbDatabase.SPDescriptionAvailable, when TSDStorecProc.Params clicked at design-time
    §         bugfix: "Parameter name is unrecognized"(DB_E_BADPARAMETERNAME) error, when query with sub-select has some parameters with one name
    §         bugfix: "Data conversion is not implemented for datatype Integer (TSDDataSet.ISqlCnvtFieldData)" error, when persistent fields differ from actual column datatypes
    §         bugfix: "Invalid OCI handle" or AV error, when value of RemoteDatabase property is invalid (Oracle8+)
    §         bugfix: TSDDatabase.GetProcNames does not return names of procedures without parameters (MSSQL, Sybase)
    §         SD_OleDb_D5 dcu/hpp/obj files are included in D5&CB5 installations
    Version 4.2.2 (2.04.2005)
    §         szSINGLECONN parameter is supported (OLEDB & MSSQL)
    §         bugfix: string parameter is updates as empty value (OLEDB & MSSQL)
    §         bugfix: GUID field value is output incorrectly (OLEDB & MSSQL)
    §         bugfix: GUID field value is output in braces (like, '{xxx..xx}') (ODBC & MSSQL)
    §         handler is added for "The system cannot find message for error -2147217887" error in connection time, when some properties are not supported (OLEDB&Oracle)
    §         bugfix: AV, when a query (with DetachOnFetchAll=True) is opened and Rollback called (MSSQL)
    §         bugfix: "SQL Server Message 911 : Could not locate entry in sysdatabases for database xxx" error, when a database name contains spaces or other delimiters and szSINGLECONN parameter is set off (MSSQL)
    §         bugfix: "Invalid OCI handle" or AV error, when a query with BLOB/CLOB field is fetched or closed (D4 & Oracle8)
    §         bugfix: "Invalid field size" error, when GetSchemaInfo(stTables..) is called (D4 & Oracle8)
    §         bugfix: "SQLSTATE=42000;Parameter Information cannot be derived from SQL statement with sub-select" error, when a query with sub-select is executed (OLEDB & MSSQL)
    §         bugfix: "SQLSTATE=HY000; Connection is busy with results for another command" error, when stored procedure is executed (set on szSINGLECONN parameter)
    §         bugfix: the statement is executed once, when ExecSQL is called twice or more for a prepared query (PostgreSQL)
    §         bugfix: trailing spaces up column size for VARCHAR column happens sometimes (Oracle8+ client)
    §         bugfix: vclado50.bpl is required, when Delphi/CB5 Pro does not have this package.
    Version 4.2.1 (12.03.2005)
    §         bugfix: error “TISqlCommand.GetHandle is not implemented”
    §         bugfix: Delphi 7 crashes, when TSDUpdateSQL double clicked at design-time
    §         bugfix: SDOleDb.obj is not included in Library file for BCB5&6
    §         bugfix: Conflict with ADO components package in Delphi 5
    Version 4.2 (5.03.2005)
    §         Delphi 2005 support
    §         OLEDB support (except for Delphi 4, 8 and 9 for .NET)
    §         PostgreSQL 8 support
    §         new szUseOLEDB database parameter for MSSQL (by default, it is equal False)
    §         new szBLOBPIECESIZE database parameter to change piece size, which is used to read/write blobs (default value is $7FF0)
    §         bugfix: “Out of memory” errors, when records are fetched with MySQL 5 client
    §         bugfix: assign to RecNo works incorrectly in cached updates mode, when the previous record was deleted and was not applied
    §         bugfix: macro name is equal "cProcName(10)" for a statement like: call %cProcName(10)
    §         bugfix: "Unknown data type for parameter 'OLD_'" error, when a dataset with a field 'OLD_' is updated
    §         bugfix: "AV .. . Read of address 00000056", when 3 or more BLOBs are inserted/updated in a statement (Oracle 8.x or Oracle9i, when temporary LOBs are not used)
    §         bugfix: to exclude 'Overflow error' with VARCHAR(32K), TFieldDesc.DataSize is declared as Integer
    §         GetTableNames and GetSchemaInfo(stTables or stSysTables) returns an empty result set for MS Excel ODBC driver (tested with v.4.00.6200). Now these methods returns all tables to exclude the feature of MS Excel driver.
    §         bugfix: TSDScript raises an error, when a TermChar value is embedded in a string value inside the script
    §         bugfix: GetSchemaInfo could raise a "SQLWNTM.DLL not found", when TSDDatabase.SessionName is not empty
    §         Thanks to R.Cerny for fixes and offers inside of SDOdbc and SDMss (to process errors in multithreaded MSSQL applications) units
    Version 4.1.3 (24.12.2004)
    §         new properties MacroCheck and ParamCheck for TSDScript. (by default, it is equal True)
    §         it is possible to use an owner pattern in GetTableNames (Interbase, Firebird, Oracle, MSSQL, Sybase)
    §         using temporary LOBs to update/insert BLOB/CLOB parameters (Oracle9i+)
    §         bugfix: live query did not save BLOB/CLOB fields (Oracle8+)
    §         bugfix: FilterOptions was not considered, when Filter property has condition without an asterisk (*) (for example: COL='AA')
    §         bugfix: TSDDataSet.RecNo returns 1 (has to be 0), when TSDDataSet.IsEmpty is True
    §         bugfix: SortRecords works incorrectly in cached updates, when all records were removed and one was inserted before SortRecords call
    §         bugfix: "Error = -804: ..incorrect number/type of variables", when procedure with NUMERIC/DECIMAL parameter (which has size 2 or 4 bytes) is executed (Interbase, Firebird)
    §         bugfix: v.4.1.2 slows a performance in ApplyUpdates
    Version 4.1.2 (1.12.2004)
    §         bugfix: incorrect field description with MySQL 4.1(+) client
    §         bugfix: impossible to Append records after the following code sequence: OpenEmpty, Append, SortRecords
    §         bugfix: "Invalid argument" error, when Locate method with 2 or more fields is used
    §         bugfix: memory leak: TISqlDatabase does not free its TStringList
    §         bugfix: "Invalid value for ServerType property" error, when TSDDatabase.Handle is assigned
    §         bugfix: "Attempt to reclose a closed cursor" error, when Query.FieldDefs.Update is called (Interbase)
    §         bugfix: "Invalid pointer operation" error, when a smallint parameter is used
    §         bugfix: TSDTable does not show non-unique indexes in the IndexDefs property (Interbase, Firebird)
    Version 4.1.1 (20.11.2004)
    §         trimmed the last character of VARCHAR2 column with Oracle8 client
    §         GUID/uniqueidentifier datatype support (ODBC)
    Version 4.1 (15.11.2004)
    §         Oracle10g support
    §         new method TSDDataSet.SortRecords
    §         TSDScript supports macros (new properties and methods)
    §         new global function GetSQLDirectVersion
    §         RecNo property is assigned for newly inserted (but not applied) records
    §         bugfix: AV, when query with VARCHAR(>8K) is opened (IB, Firebird)
    §         bugfix: Locate/LocateNext work incorrectly with loPartialKey option, for example, when KeyValues = 'abc' and a table contains 'ab', 'abc' values
    §         bugfix: AV, when 'Login failed for user ..' error has to showed (D7&MSSQL)
    §         bugfix: random results for procedure output-parameters (Oracle8)
    §         bugfix: RecNo is equal 0 always, when CHAR/VARCHAR column is last in the SELECT-list (Oracle)
    §         bugfix: when some records were deleted, RecNo values of the following (after deleted) records are not valid
    §         bugfix: EConvertError is raised, when SYSDATETIME/SYSTIME is selected (SQLBase)
    Version 4.0.1 (30.10.2004)
    §         Locate/LocateNext can search non-string values with loPartialKey option
    §         bugfix: macro value was reset, when statement was changed but without changing macro name
    §         bugfix: Locate/LocateNext work incorrectly with KeyValues, which is equal empty string; Locate/LocateNext stops search, when one of string field contains empty string
    §         bugfix: Locate/LocateNext work incorrectly with non-english strings (extended charsets)
    §         bugfix: 'Attempt to reclose cursor' error is raised, when actually 'Permission denied..' to execute statement (IB)
    §         bugfix: '..arithmetic overflow...' error, when integer value is bound sometimes (Firebird, IB)
    §         bugfix: 'System error 0' is showed when right-click over SQLDirect component in Delphi 8 Form designer
    §         bugfix: 'Cannot perform this operation on a closed dataset' error in some cases, when szSINGLECONN parameter is True
    §         bugfix: AV, when query like 'select TABLE .* from TABLE' is activated in a live mode
    §         bugfix: 'Table read-only', when query like 'select TABLE . * from TABLE' is activated in a live mode
    Version 4.0 (15.10.2004)
    §         Delphi 8 for Microsoft .NET support
    §         Delphi 3/C++Builder3 support was stopped
    §         INTERVAL datatypes support (Oracle9i, Informix)
    §         new szQUOTE_IDENT database parameter to use quoted (delimited) identifiers for automatically generated statements of a live querys and a table component
    §         new szEMPTYSTRASNULL database parameter (default is False) to treat empty string as NULL for parameter's values (Sybase)
    §         szENABLEBCD database parameter is supported for Sybase
    §         TPtr type is renamed to TSDPtr to exclude ambiguity error
    §         TField.Required property is set off, when TSDDataSet.AutoRefresh is on and TFieldDef.FieldType = ftAutoInc
    §         bugfix: set linked fields values for a detail table component from master fields
    §         bugfix: AV, when some stored procedures (TSDStoredProc) return string parameters (Sybase)
    §         bugfix: AV, when a query is detached and RefreshRecord is called
    §         bugfix: AV, when ExecProc(without Prepare) is called for procedure with RAISERROR statement (MSSQL)
    §         bugfix: DB-Library error 10008, when the second result set is requested (MSSQL)
    §         bugfix: TSDDataSet.RecNo = 0, when a record was inserted and was not refreshed, for a live query
    §         bugfix: some of default database parameters were not set (Informix)
    §         bugfix: set TParam,ParamType to ptInput if it is equal ptUnknown, when TSDQuery.ExecSQL is called
    §         bugfix: "Invalid column name 'isnullable', 'xusertype'" error, when GetFieldNames method is called (MSSQL v6)
    §         bugfix: error like "Invalid table name", when a live query with nested subquery is updated
    §         bugfix: TSDDataSet.Refresh method returns empty result set (Sybase)
    §         bugfix: query shows invalid data, when OpenEmpty, Close, Open are called and fields order is changed in Field Editor (ASA&ODBC)
    §         bugfix: TSDStoredProc.Params editor is opened empty always (D5+)
    Version 3.2.3 (30.06.2004)
    §         bugfix: parameter (with DataType is equal ftAutoInc) is bound incorrectly (MSSQL)
    §         empty string parameter is bound as NULL for both TSDQuery and TSDStoredProc (earlier for TSDStoredPorc only) (Sybase)
    §         bugfix: stored procedure returns NULL value for the output parameter incorrectly (Sybase)
    §         bugfix: LastDay procedure returns invalid value for February 2000
    §         bugfix: in connection string Userid tag is not recognized like UID; excluded double semicolons ';;' in connection string (ODBC)
    §         bugfix: AV or External exception is raised in single connection mode, when a query is activated after the second one (with DetachOnFetchAll=True) was activated and was not fetched before (MSSQL)
    §         bugfix: the trailing spaces are removed for output parameter values of stored procedures, when szRTRIMCHAROUTPUT is set to True (Interbase, Firebird)
    §         bugfix: Locate method changes position in a result set, when length of the current string value is less then the specified one
    §         bugfix: "Invalid column name 'status2'" error, when a procedure is selected from list in Object Inspector (Sybase ASE 11.x)
    Version 3.2.2 (17.06.2004)
    §         new ESDSqlLibError exception, which is raised when an error occurs loading a database client
    §         live query uses StarTransaction/Commit inside Post method, when autocommit is off
    §         bugfix: the following sequence Prepare, ExecSQL, ExecSQL executes statement once (MSSQL)
    §         bugfix: invalid login, when connection string with parameters does not contain user, password (ODBC)
    §         bugfix: AV, when persistent TStringField.DataSize is less, than actual column size in the database (TISqlCommand.GetCnvtFieldData)
    Version 3.2.1 (5.06.2004)
    §         new method: TSDDataSet.RefreshRecordEx() to refresh the current record only using the specified SQL.
    §         new szFIELDREQUIRED database parameter, which specifies a value of Required property of all Tfield
    §         bugfix: TSDScript executed the first statement twice in some cases
    §         bugfix: AV, when script is executed with error
    §         bugfix: MS SQLServer returns a valid value of column number (SQLNumResultCols) only after execution for a query with a parameter like 'select (select COUNT(*) from TABLE where F = :p) from TABLE' (ODBC+MSSQL)
    §         bugfix: AppendRecord/InsertRecord do not insert a record in a database for table and live query
    §         bugfix: AV happens, when a stored procedure with a datetime parameter is executed (Oracle9)
    §         bugfix: "Pending results", in case of Refresh call and single connection database parameter is false (MSSQL)
    §         bugfix: an exception is not showed, when RAISEERROR statement is used in procedure (Sybase)
    §         live query is prohibited, when it's result set contains only blobs
    §         live query is prohibited, when it's result set does not contain index fields and UpdateMode in [upWhereKeyOnly, upWhereChanged]
    Version 3.2 (15.05.2004)
    §         new property RefreshSQL of TSDUpdateSQL component to refresh the current record
    §         new method: TSDDataSet.RefreshRecord to refresh the current record only.
    §         IDENTITY field is supported (MSSQL, Sybase(ASA), DB2, ODBC, MySQL)
    §         new property TSDDataSet.AutoRefresh to refresh an autoincrement field for live query and for cached updates mode
    §         new property: TSDDatabase.DesignOptions
    §         szPREFETCHROWS database parameter is supported for DB2, Informix and ODBC
    §         TSDDataSet.RecNo is read/write property now
    §         new "XXX API LIBRARY" database parameter to set an interface library for the different servers, where XXX server type, for example, Oracle, SQLServer, Interbase or other.
    §         If UpdateObject is assigned to TSDUpdateSQL component, then it is used to save data of a live query
    §         changes in TSDUpdateSQL interface: QueryEx[] and SQL[] properties is indexed by values of TUpdateStatus
    §         added "Quote Field Name" checkbox and RefreshSQL value are added in editor of TSDUpdateSQL component
    §         bugfix: error "Ora 1036 Illegal variable name/number", when procedure is executed and 'FORCE OCI7=TRUE' (Oracle)
    §         Oracle 7&8 DATE and Oracle9 TIIMESTAMP columns are processed both as TDateTimeField in contrast to v.3.1.1
    §         bugfix: index with some fields in descending order was stored incorrectly in TSDTable.UpdateIndexDescs
    §         bugfix: char/varchar(255) was considered as blob with default value of szMAXSTRINGSIZE parameter (ODBC)
    §         bugfix: only CHAR column is trimmed if szRTRIMCHAROUTPUT is TRUE. VARCHAR is returned without changes (Oracle)
    §         bugfix: a table with some detail fields do not work correctly (TSDTable.SetLinkRanges)
    §         bugfix: "Invalid OCI handle" error when procedure with Blob/Clob parameter is executed (Oracle8)
    §         bugfix: error "A component named SQLxxxxxxxxxx already exists" occurs when TSDTable is opened for a table with a primary key, which contains of more than one column (DB2)
    Version 3.1.2 (15.04.2004)
    §         bugfix: stored procedure do not return output parameters (and do not release a connection), when it uses cursors (ODBC+MSSQL)
    §         bugfix: error, when Boolean column is updated (PostgreSQL)
    §         bugfix: TSDBlobStream truncates data, which is written after positon was changed
    §         bugfix: “Record changed by another user” error happens, when Edit/Post are called twice for a live query or a table
    Version 3.1.1 (25.03.2004)
    §         new szPREFETCHROWS database parameter for Oracle8
    §         Oracle9i TIMESTAMP datatype is supported (Oracle9i): TIMESTAMP column is processed as TDateTimeField, DATE - as TDateField for Oracle9i
    §         ExecProc fetches output parameters without GetResults call (MSSQL, Sybase)
    §         bugfix: 'Table is read only' error, when a live query uses a table alias in WHERE clause
    §         bugfix: memory leak, when Oracle8 connection is disactivated (in TIOra8Database.FreeHandle)
    §         bugfix: memory leak, when Informix connection is disactivated (in TICustomOdbcDatabase.DoConnect)
    §         bugfix: an exception is not showed, when a trigger raises an user-defined error using RAISERROR statement (Sybase)
    §         bugfix: GetSchemaInfo(stIndexes, ..) generate an "Client-Library error 411: ..", when a table do not have indexes (Sybase)
    §         bugfix: incomplete read of blob, when size > 32KB (Oracle ODBC driver)
    §         bugfix: TEXT data is not read (Informix 7.3 on Linux)
    §         bugfix: an index with some fields was stored incorrectly for TSDTable component
    §         bugfix: "Connection is busy with results for another hstmt" error, when two queries are opening in single connection mode (MSSQL+ODBC)
    Version 3.1 (01.03.2004)
    §         TSDScript component is added
    §         TSDTable.MasterSource property is supported
    §         szCOMPRESSEDPROT database parameter is added, which defines whether to use the compressed client/server protocol for MySQL
    §         szLOGINTIMEOUT database parameter is supported for MySQL
    §         szENCRYPTION database parameter is added to support an encrypted password handshaking (Sybase)
    §         bugfix: output parameters of a stored procedure are not returned (Sybase)
    §         bugfix: AV or "Invalid pointer operation" error, when a query with DECIMAL column is closed (SQLBase)
    §         bugfix: TSDDatabase.GetTableNames/GetStoredProcNames methods return object names with preceding point, when an owner name is not present (ODBC)
    §         bugfix: when AUTOCOMMIT database parameter is used, it impossible to read blobs larger than 4096 bytes (MSSQL)
    §         bugfix: a record of a table or a live query with a blob field is not stored, if only the blob field is changed
    §         bugfix: stored procedure component does not return a result set, when it is produced (DB2, MSSQL , ODBC)
    §         bugfix: invalid symbols at the end of a field value, when VARCHAR(>255) column is returned as TMemoField (DB2, ODBC)
    §         OpenEmpty is not supported and raises an exception for Delphi 4 and below
    §         bugfix: an exception happens, when result sets of two stored procedure are fetched concurrently (Sybase)
    §         bugfix: an exception is not showed, when procedure raises an user-defined error, for example, RAISERROR (ODBC+MSSQL)
    §         default datetime format is changed to 'yyyymmdd hh:mi:ss:nnn' in TISybCommand.CnvtDateTimeToSQLVarChar (Sybase)
    §         bugfix: "Ambiguity between stFirebird and Sdcommon::stFirebird", when TSDDatabase.ServerType property is assigned in BCBuilder5
    Version 3.0.3 (20.12.2003)
    §         bugfix: “No SQL statement available” error, when TSDMacroQuery does not have a macro
    §         bugfix: AV, when a SQLBase client library is not found
    §         bugfix: AV, when TSDTable.IndexName list is requested (DB2)
    §         bugfix: AV sometimes, when a query with blob field is opened (PostgreSQL)
    §         bugfix: “SQLDA missing or incorrect version” error, when TSDQuery.Refresh is called (Interbase)
    §         bugfix: “SQL0104N An unexpected token ..” error, when a live query (with spaces between a column name and a column delimiter, for example: "COL_NAME ,") is modified (DB2)
    §         bugfix: “SQL0104N An unexpected token ..” error, when a live query (which is activated using Prepare, Open calls) is modified (DB2)
    §         bugfix: a prepared query is not executed repeatedly (MSSQL, Sybase)
    §         bugfix: silent (without an exceptions) post a record in a live query if the record is changed by other application
    §         bugfix: size of Blob piece (for read/write process) is changed from $7FFF to $7FF0 to exclude an alignment influence (ODBC, Oracle7, SQLBase)
    Version 3.0.2 (01.12.2003)
    §         szMAXSTRINGSIZE parameter is added to use VARCHAR(>255) column as TStringField or TMemoField (Interbase, Firebird)
    §         Boolean parameter is supported (ODBC)
    §         bugfix: AV happens when query with REAL datatype is closed (MSSQL)
    §         bugfix: error "Table is read only", when live result set with key is opened (ODBC)
    §         bugfix: update fails for a live query with calculated fields
    §         bugfix: assertion raises in TICustomIntDatabase.GetTRHandle, when fbclient.dll is not found (Firebird)
    §         bugfix: AV happens when an empty VARCHAR(>255) column is read (Firebird)
    Version 3.0.1 (25.11.2003)
    §         bugfix: number fields, which are equal NULL, are returned as 0 (MSSQL)
    §         bugfix: truncated strings are returned
    §         bugfix: Refresh corrupts a result set (MSSQL)
    §         bugfix: repeated statement execution, when ExecSQL is called (MySQL)
    §         bugfix: record is not updated when an old value (and new value <> null) of a key field is equal null in a live result set
    §         add SDCommon unit in uses clause of DataMod.pas (QueryUpd project)
    Version 3.0 (17.11.2003)
    §         TSDMacroQuery, TSDTable components are added
    §         Firebird 1.5 and MySQL 4.1 support
    §         TSDQuery.RequestLive property is added (it is supported for Delphi 5+)
    §         Filter property is supported for Delphi 5+
    §         TSDQuery/TSDDataSet.OpenEmpty method is added to open a result set without server data (it is supported for Delphi 5+)
    §         TSDDataSet.LocateNext method is added to continue row locating
    §         TSDDatabase. GetSchemaInfo function to get metadata
    §         all database parameter constants (for example, szSERVERPORT) are moved in SDConsts unit
    §         szSERVERPORT database parameter is used for PostgreSQL
    §         szENABLEMONEY database parameter is added to use NUM(x,1-4) as a money field (TCurrencyField) for MySQL
    §         szFORCEOCI7 is added instead of ForceOCI7 variable
    §         szMAXCHARPARAMLEN is added to increase buffer size of procedure’s string parameters
    §         szMAXFIELDNAMELEN is added to increase length of the stored field names
    §         "connect with no recovery" SQLBase feature is accessible using szTRANSLOGGING database parameter (SQLBase)
    §         public variables ForceOCI7 and MinStrParamSize are removed
    §         TSDDataSet.Preservation property is removed
    §         bugfix: "Unknown datatype for parameter" error in process of Open/ExecSQL call when a parameter is assigned using AsCurrency property (DB2, ODBC, SQLBase)
    §         bugfix: excluding a lower case converting of a procedure name in <CALL ....> SpPrepareProc, it's significant for case sensitive database (ODBC)
    §         bugfix: GetTableNames supports Pattern parameter (Sybase, IB)
    §         bugfix: input procedure parameters are padded spaces up max length (MSSQL2K)
    §         bugfix: if AUTOCOMMIT database parameter is not defined and ODBC driver has an autocommit set on by default, then an explicit transaction was not turn off an autocommit (ODBC, Informix)
    §         bugfix: Oracle7 client was return trailing spaces for VARCHAR column (Oracle7)
    §         bugfix: error 504, when AUTOCOMMIT is True and a query is activated inside StartTransaction/Rollback and it's used outside of the transaction (IB)
    §         bugfix: when IMPLICIT_TRANSACTION is ON at server, application was not free locks after Commit call: AUTOCOMMIT parameter value is used to change this connection attribute (MSSQL)
    Version 2.9.7 (01.10.2002)
    §         Delphi 7 support
    §         MAXFIELDNAMELEN database parameter is added for compatibility with BDE, which returns only 30 characters of the field name (Oracle)
    §         bugfix: AfterScroll/BeforeScroll handlers are fired in process of ApplyUpdates
    §         bugfix: SqlDateToDateTime/SqlTimeToDateTime procedures (SDEngine unit) returns an invalid date, when it is less than 12/30/1899 (MySQL/PostgreSQL)
    §         bugfix: TIMyDataSet/TIPgDataSet.CnvtDateTime2SqlString has to return '1899-12-30' , if Trunc(Value) is equal 0 (MySQL/PostgreSQL)
    §         bugfix: "Invalid handle.." error in case of Refresh call for prepared TSDQuery after Rollback (ODBC+Access)
    §         bugfix: BOOLEAN datatype returns False always (PostgreSQL)
    §         bugfix: stored procedure with output BLOB/CLOB raised "ORA-3131..." error (Oracle8)
    §         bugfix: GetTableFieldNames do not support a full table name with schema(owner) name (DB2)
    §         bugfix: "Field not found" error in case of a statement with 2 blob fields with one name (Oracle)
    §         bugfix: when one dll has closed all connection, other dll raises AV when it try to close own connection (MSSQL)
    §         bugfix: transaction level is not set for separate connection of TSDQuery component (with SELECT statement) (MSSQL)
    Version 2.9.6 (26.08.2002)
    §         bugfix: a thread timer is not destroyed in UpdateTimer, when TSDDatabase.IdleTimeOut <> 0
    §         declarations of property editors is moved in interface part of SDReg unit
    §         fixed an assertion “function 'pqresetStart' not found in PostgreSQL library” is removed (PostgreSQL)
    §         Oracle DLL is loaded using the first available one in PATH variable, which is changed by Oracle home selector
    §         rollback the current explicit (started by StartTransaction call and is not ended by Commit/Rollback) transaction, when a database connection is closed (DB2)
    §         bugfix: “Fatal error: Invalid handle ...” error happens in case of open of a prepared query after rollback call (DB2)
    §         bugfix: sometimes AV in multithreaded application in LoadSqlLib at ct_con_alloc call (Sybase 12.5)
    §         bugfix: “Pending results..” error when one dataset is in edit mode(all rows are not fetched) and other one is opened (MSSQL)
    §         bugfix: the stored procedure is executed twice in case of ExecProc call (DB2)
    §         Transaction Monitor support for Oracle8i (added 'XA CONNECTION' database parameter)
    Version 2.9.5 (05.07.2002)
    §         bugfix: record is not saved, when it's values are set into OnNewRecord handler
    §         bugfix: invalid version detection for Oracle9i client (Oracle9i)
    §         bugfix: detail query with an additional parameter, which is set manually, is looking the corresponded field in the master query
    §         bugfix: “Operation not applicable” error, in case of a master-detail relation and detail query is unidirectional
    §         bugfix: TIMESTAMP datatype is not supported in PostgreSQL 7.2 (PostgreSQL)
    §         bugfix: “value is not a date” error in case of inserting of the following parameters 14.8.1872-21.09.1899 (inclusive) (SQLBase)
    §         bugfix: When AUTOCOMMIT is set ON, then StartTransaction/Commit calls produce "Cursor unknown" error(504) for the following fetch operation (IB)
    Version 2.9.4 (30.05.2002)
    §         SERVER PORT database parameter is added (MySQL)
    §         fixed AV, which is produced by GetRecordCount, when DetachOnFetchAll is True
    §         fixed: TSDQuery.RecordCount has an invalid value after Delete and ApplyUpdates calls
    §         fixed an assertion, when. PSSetParams is called and the query is not prepared
    §         fixed: RowsAffected property shows incorrect value, because the server does not update really rows with non-modified values (for example, RowsAffected=0, when <update TABLE set COL=COL where ...>) (MySQL)
    §         fixed an assertion in line 1808 (SDMss.pas), when MSSQL DB-Library is not found (MSSQL)
    §         fixed error: when connection is dropped during a transaction, it's impossible to start transaction after reconnecting
    §         TSDSession.InternalAddDatabase adds or changes (on the last values) database parameters
    §         fixed: CancelUpdates does not revert initial blob data, when it was modified more than once
    §         some optimization in TSDQuery.RefreshParams method (query is not reopened when it's possible, it means for master-detail forms)
    §         fixed: the current position of the filtered dataset is changed after ApplyUpdates
    §         fixed: an empty Blob(IMAGE) data was inserted as 0x00 (changed to NULL) (MSSQL)
    Thanks to Ben van Mierlo and Robert Cerny for all things.
    Version 2.9.3 (20.04.2002)
    §         Borland C++Builder 6 support
    §         COMMAND TIMEOUT database option is added (MSSQL, ODBC, SQLBase, Sybase)
    §         connect as SYSDBA/SYSOPER feature (Oracle8)
    §         NEW PASSWORD database parameter is added to process a "Password expiration" Oracle error 28001 and change the expired password (Oracle8)
    §         fixed: TSDDatabase.GetTableNames method does not support Pattern parameter (MSSQL)
    §         do not change an autocommit ODBC-option, when an autocommit(szAUTOCOMMIT) database parameter is not set (ODBC)
    §         fixed "ORA-01008: not all variables bound" when TSDStoredProc.FieldDefs.Update method is called for the inactive procedure with a cursor parameter (Oracle)
    §         fixed "Invalid pointer error" or AV, when a large string parameter is returned by a stored procedure (DB2, ODBC)
    §         ForceClose involves an endless loop, when a connection is dropped (IB)
    §         fixed: parameter handling is case sensitive (DB2, Informix, ODBC)
    §         fixed displaying wrong BLOB when a result set has some blob fields and Fields have a different order then FieldDefs (IB)
    §         fixed: TParam.Value property is changed from Null to Unassigned value after ExecProc, when an output parameter is NULL (Oracle)
    §         some fixes, concerning an interaction with MIDAS
    Version 2.9.2 (20.02.2002)
    §         support Sybase 12 features (for example, varchar(>255))
    §         fixed an error, when a blob column is not the last in a select-list (Sybase)
    §         fixed "Integer overflow" error, when record size is bigger 64Kb
    §         fixed "Function sequence error", if UPDATE/DELETE statement does not find at least one record (some Informix versions)
    §         fixed a problem, when TSDDatabase.Params could be lost when LoginPrompt is True
    §         fixed an "Error reading SDDatabase1.DatabaseName: Duplicate database name '...' " in case of creating an inherited form
    §         don't disconnect a long-running statement, when IdleTimeOut 's elapsed.
    §         fixed a problem, when a statement contains a quoted string with a single quote, for example: "quoted strin'g"
    §         fixed an error: no row is returned, when a result set contains NULL value and aggregate function (DB2)
    Version 2.9.1 (25.01.2002)
    §         New session SQLWaitCursor property to change a cursor during database operations
    §         Fixed: an error 'ORA-01008: not all variables bound' happens, when prepared query is executed (Oracle)
    §         Fixed: GetTableNames does not support Pattern parameter (Oracle)
    §         Fixed AV, when string data exceeds a field size (data is truncated up a field size) (MySQL)
    Version 2.9 (10.01.2002)
    §         PostgreSQL support
    §         New database’s property: TSDDatabase.IdleTimeOut (drops an idle database connection through the specified timeout)
    §         New dataset’s property: TSDDataSet.UniDirectional
    §         New dataset’s method: TSDDataSet.RollbackUpdates
    §         In filter mode TSDQuery.RecordCount shows number of visible records only (not all)
    §         fixed: error 241 'scale error during implicit conversion of NUMERIC value '10.2200000000000001' , when 10.22 is inserted (Sybase)
    §         quoted database name is supported (MSSQL)
    Version 2.8.5 (30.11.2001)
    §         szLOGINTIMEOUT database option is added (MSSQL, DB2, Informix, ODBC, Sybase)
    §         fixed error 'SET AUTOCOMMIT = 0 at line 1' (MySQL version <= 3.22)
    §         fixed: string parameter was binded incorrectly (MSSQL)
    §         TSDQuery component with a statement ‘{call PROC()}’ cannot return a result set from stored procedure (DB2)
    §         TSDQuery.FieldDefs.Update does not return field descriptions for a non-active query with a procedure like ‘{call PROC()}’, i.e. at design-time Field Editor cannot see fields of the non-active query, which calls a procedure (DB2)
    Version 2.8.4 (15.11.2001)
    §         Locate method worked incorrectly with loPartialKey option
    §         BIGINT column is supported (MySQL)
    §         fixed a memory leak: TSDFieldDescList object is not freed when an invalid query is opened
    §         FindNext returned False, when a result set is not fetched completely
    §         ApplyUpdates raised ASSERT when the last visible row is deleted
    §         "Datetime field overflow" error when datetime and integer values are inserted/modified in one statement (ODBC&MSSQL)
    §         fixed AV when NextResultSet is called and TSDStoredProc is activated without Prepare call (Sybase)
    §         at design-time TSDUpdateSQL cannot get field names when a table name is casesensitive (IB6)
    §         fixed "Invalid Pointer Operation" error when a DATE parameter was the last parameter in a statement (IB6)
    §         fixed AV in case of disconnecting: excluded OCITerminate call, which produced AV with some Oracle 8.0.5 and below and which is obsolete call for Oracle 8.1 (Oracle 8.0.4, some 8.0.5 clients)
    §         fixed "No parameter type for parameter ..." exception, which is raised in MIDAS environment when TClientDataSet is used in master/detail relationship.
    §         fixed StrRTrim function: sometimes "Integer Overflow" error in StrRTrim (DB2)
    §         string parameter is binded as variable-length(was fixed-length) character string (ODBC & MSSQL)
    Version 2.8.3 (15.10.2001)
    §         <SINGLE CONNECTION> database option is supported for ODBC
    §         turn off autocommit(when it's set to True) in time of an explicit transaction (StartTransaction/Commit calls)
    §         fixed: cursor position is changed randomly after ApplyUpdates
    §         fixed sometimes AV in TSDDatabase.Commit method
    §         fixed assertion (in SDInt.pas, line 4126) when a blob column is updated (IB)
    §         fixed AV when stored procedure component with string parameters is freed (Oracle)
    §         fixed a ‘Fatal error’ or AV in case a query is dynamically executed (MSSQL & Sybase)
    §         fixed an assertion when an output char procedure's parameter is empty (MSSQL)
    §         fixed sometime AV and RowsAffected is returned incorrectly when a query is executed (MySQL & BCB 3&4)
    §         fixed "Numeric value out of range" error when BigInt has a big value(>4*10^9) (DB2)
    §         fixed "Datetime field overflow" error when datetime value is inserted (ODBC&MSSQL)
    §         fixed "String data, length mismatch" error (ODBC&MSSQL)
    Version 2.8.2 (15.09.2001)
    §         added AUTOCOMMIT database parameter
    §         fixed: impossible to insert a record, which is not in a filter range, in the filtered dataset
    §         implemented a Direct Execution when statement is performed (ExecSQL) without preparing (prior Prepare call) (ODBC)
    §         fixed 'Optional feature not implemented' error in case of double-click on TSDUpdateSQL (ODBC & MS Acces)
    §         fixed AV when libmysql.dll is not found (MySQL)
    §         fixed: TDBRichEdit stores data incorrectly in the database (MSSQL, Sybase)
    §         fixed 'ct_cancel has been called at an illegal time' error right after “Login fail” (Sybase)
    §         fixed error ("Command is idle" or "Pending results"): when single connection is in use and one query is executed right after other one was opened (MSSQL & Sybase)
    §         ESDEngineError.NativeError property contains a valid SQL error code (earlier it contains Interbase error code) (IB)
    §         fixed: an empty(NULL) parameter is inserted as not NULL (Interbase)
    §         MakeValidStatement (SDOra.pas) does not remove CR to work correctly with encrypted PL/SQL (Oracle)
    §         fixed ORA-01480 when a string parameter of a stored procedure is longer than 255 (Oracle)
    §         fixed problems with lowcase parameter names in master-detail relationship
    Version 2.8.1 (30.07.2001)
    §         fixed: the prepared query is not executed repeatedly (MSSQL)
    §         fixed cursor leaks (MSSQL)
    §         fixed 'Fatal Eror. No diagnostic data ...' during connect (Informix)
    §         GetTableNames (and GetStoredProcNames) returns an empty list instead of AV when database name is unknown
    §         fixed 'Unknown datatype for parameter ...' for DATE parameter (IB6)
    §         fixed problem with NUMERIC(18,2) in stored procedure (IB6)
    §         fixed AV in case of disconnecting from Oracle7 using Net7
    §         single connection option is supported with Sybase
    §         fixed hangup when stored procedure is opening (Sybase)
    §         excluded <ambiguity between TUpdateAction and Db::TUpdateAction> error in BCB5, when set OnUpdateRecord event handler
    Version 2.8 (15.07.2001)
    §         Delphi 6 support
    §         MySQL support
    §         New database’s method: ForceClose (drops database connection without an exception in case of network problem)
    §         TSDDatabase.Handle property is writable.
    §         New dataset’s method: Detach (result set is active without server connection)
    §         New dataset’s properties: DetachOnFetchAll, EnableUpdateKinds
    §         Memo/Blob parameter with zero-length is equal NULL (Sybase)
    §         fixed error in case of one of some query is closed and single connection is active (MSSQL, Sybase)
    §         fixed memory leak in processing LOB columns (Oracle8)
    §         fixed error: non-empty blob field is empty, when is placed in a statement after varchar(32K) (IB)
    §         image column is updated without temporary procedure (MSSQL)
    §         fixed assertion failure in SDMss.pas when stored procedure has some output parameter (MSSQL)
    §         fixed AV in case of repeated Rollback and some datasets are active (DB2)
    §         fixed Client-Library error 290 in case of executing batch with select statement (Sybase)
    Version 2.7.5 (10.05.2001)
    §         support 'SINGLE CONNECTION' database option to use one process handle for all operation for Sybase
    §         added trimming of trailing spaces for char type (Sybase)
    §         increased a fetch perfomance (Oracle8 client)
    §         fixed errors in time of Rollback and close a result set when SINGLE CONNECTION is used (MSSQL)
    §         identification nchar/nvarchar stored procedure’s parameters (MSSQL7+)
    §         fixed MSSQL error: returns an incorrect(non-existent) parameter name, when procedure use WRITETEXT statement (MSSQL)
    Version 2.7.4 (5.04.2001)
    §         VARCHAR datatype with size more than 8K is considered as Memo field (IB5,6)
    §         fixed errors in case of DATE and TIME datatypes (IB6)
    §         added a database parameter 'SINGLE CONNECTION' to use one process handle for all operation (MSSQL)
    §         added DBSETSECURE option in case of NT Athentication (MSSQL)
    §         fixed a problem with similar parameter names in update/insert statements, which contain blob parameters (MSSQL)
    §         fixed a delay problem in case of close a big result set (MSSQL)
    §         TSDQuery is opened in context of the current database for the associated TSDDatabase (MSSQL)
    §         fixed an error with an empty result set, which has aggregate function with NULL value (Oracle8i client).
    §         OS authentication is used, when user password is empty (Oracle)
    §         fixed the following error: in filter mode Locate raises exception in case of record is not found
    Version 2.7.3 (15.01.2001)
    §         support TVarBytes field and parameter for CHAR WITH BIT option (DB2)
    §         fixed "invalid attribute error" instead of the required error (Oracle8)
    §         fixed CompareBookmarks method, which worked incorrectly with IP2000 in some cases
    §         fixed AV when TSDDatabase.ApplyUpdates has empty array parameter
    §         fixed 'Incorrect values within SQLDA-structure' message when same of field (from SELECT) has not persistent field (Interbase)
    §         automatically fetch all rows before Commit/Rollback, which destroys a result set (ODBC, Informix, IB5 (for rollback))
    §         using isc_commit_retaining method and isc_rollback_retaing for v.6 (IB) to preserve cursor after Commit/Rollback
    §         fixed incorrect work in case using 'ENABLE BCD' and ‘ENABLE INTS’ database parameters for Oracle
    §         tiDirtyRead (RL) transaction level preserves cursor after rollback (SQLBase)
    Version 2.7.2 (20.09.2000)
    §         added 'ENABLE BCD' database parameter to enable to use BCD field (Oracle, Interbase)
    §         fixed: ApplyUpdates does not update Blob/Memo field ('Update failed' message) (MSSQL)
    §         fixed AV in case of performing the stored procedure without input parameters (Interbase)
    §         fixed ASSERT is raised when a procedure with a result set/output parameters is performing (Informix)
    §         fixed ASSERT is raised in Delphi 3 when insert contains empty string (Interbase)
    §         fixed AV when UpdateSQL editor is opening in case of using non-default session for the associated dataset.
    §         It is enable to silent save a modified SQL text when TSDQuery is active, in this case TSDQuery is closed
    Version 2.7.1 (01.09.2000)
    §         add charset, role name and sql dialect database parameters (Interbase)
    §         szRTRIMCHAROUTPUT influences on a char datatype output (Interbase)
    §         a field name is equal an field alias with AS keyword (Interbase)
    §         fixed AV in time of open a query with lookup field (MSSQL)
    §         added horz scrollbars for field lists in a TSDUpdateSQL editor
    §         fixed AV, which appears sometimes in a stored procedure with string parameter (Oracle)
    Version 2.7 (10.08.2000)
    §         Interbase support
    §         added Close method for TSDSession component
    §         added TESDEngineError.ErrorPos property, which means for Oracle 7&8, SQLBase, MSSQL servers
    §         editor for TSDUpdateSQL sets Modified flag after changing statements
    §         raised exception when RAISERROR operator is performed in a procedure (Sybase)
    §         fixed recycling in case of execute an empty statement (MSSQL & Sybase)
    §         fixed problem in case reading text/image fields from view (MSSQL)
    §         fixed garbage in case of tinyint column (MSSQL)
    §         binary/char datatypes with size more then 255 are considered as Blob/Memo (ODBC & ASA6 driver)
    §         fixed incorrect pointer when reading blob/binary data for some drivers (ODBC)
    Version 2.6.5 (10.04.2000)
    §         C++Builder 5 support
    §         fixed a problem in a name resolution of stored procedure (Oracle8)
    §         TSDUpdateSQL uses the session name of the associated dataset
    §         fixed garbage in an empty string field
    Version 2.6.4 (26.03.2000)
    §         added Session and DBSession properties for TSDDataset and it’s descendants
    §         support Oracle8 ROWID pseudo-column (Oracle8)
    §         support update/insert some Blob column in one statement - it’s not need to add by hand RETURNING clause (Oracle8)
    §         support an execution of a stored procedure from a package (Oracle8)
    §         added a database parameter for TDS packet size (Sybase)
    §         optimization of Blob reading (MSSQL)
    §         support binary/varbinary parameters for a stored procedure (MSSQL)
    §         fixed an incorrect binding for a cursor parameter in Delphi 5 (Oracle8)
    §         fixed the problem with similar parameter’s names (MSSQL, Sybase)
    §         fixed an incorrect size for bit/boolean column (MS Access ODBC driver)
    Thanks to Chris Means, Darwin O’Connor, Michael C. Lamb and Robert Cerny for all things.
    Version 2.6.3 (01.02.2000)
    §         added BFILE support (Oracle8)
    §         added Backup/Restore database possibility for SQLBase
    §         fixed AV in case of insertion a row in a result set with calculated fields
    §         fixed "Invalid state cursor" error in time of Refresh call (ODBC, DB2)
    §         fixed “Option is not supported” error (Paradox ODBC driver)
    §         fixed silent stop of fetch when data is truncated (SQLBase)
    §         in case of StoredProcName property click, TSDStoredProc uses incorrectly an instance of TSDDatabase component, which associates with a persistent TSDSession component
     
    Thanks to Cerny Robert, Gerd Michael Hoffmann , Mickey Hsieh for bug reports and suggestions.
    Version 2.6.2 (22.12.1999)
    §         added a trimming of trailing spaces for fixed char type (Informix or ODBC)
    §         fixed an incorrectly size(1 byte increased) of TMemoField (ODBC)
    §         fixed "Fatal error: No diagnostic data.." for a statement like “insert into … select…” (ODBC)
    §         fixed “Client-Library error 411...” in time of execute(ExecProc method) a stored procedure without a result set (Sybase)
    §         fixed memory leaks with blob fields
    Version 2.6.1 (12.12.1999)
    The update fixes the following bugs:
    §         ‘Option is not supported’ error was raised by MS Access driver (ODBC - MS Access)
    §         cutting a last byte in CLOB field (DB2)
    §         money datatype (ftCurrency) is not binded in conjunction with text/image parameters (MSSQL)
    §         there are not showed a user-defined message from a stored procedure, raised by RAISERROR statement (MSSQL)
    §         fields can not be added in Field Editor for TSDStoreProc (MSSQL, Sybase)
    §         incorrectly binding, when a parameter's value contains other(follow) parameter's name (MSSQL)
    §         in case of Params click, TSDStoredProc uses incorrectly an instance of TSDDatabase component, which associates with a persistent TSDSession component
    Version 2.6 (02.12.1999)
    §         Informix support
    §         ODBC support
    §         fixed "DB-Library error 10038: .. results pending" when doing Refresh for an opened quite big result set (MSSQL)
    §         changed a default datetime format to 'yyyymmdd hh:mi:ss:nnn' (MSSQL)
    §         fixed an error in processing text/image column from a case-sensitivity server (MSSQL)
    §         modifications in binding of string parameters
     
    Thanks to Peter Stadelmann, Jompa Cervin, Sven-Erik Еhs for bug reports and suggestions for avoid the errors.
    Version 2.5.3 (25.10.1999)
    §         optimized processing of record fetching
    §         fixed some problems with binary/varbinary columns (MSSQL, Sybase)
    §         fixed a resource leak(server detach was missing ) in case of disconnecting from Oracle8 (Oracle, OCI8)
    §         support Oracle8i API, when it is available
    Version 2.5.2 (10.10.1999)
    §         support a provider interface in the implementation for Delphi 5
    §         excluded reading of the complete result set in case of ApplyUpdates call
    §         excluded a table alias, which is returned by SQLBase, from column header (SQLBase)
    §         fixed exception in case of assign empty string for string parameter (MSSQL)
    §         corrected right trimming for char fields (Oracle)
    Version 2.5.1 (15.09.1999)
    §         support Delphi 5
    §         implemented Refresh method for reread of result set
    §         added a database parameter ('ENABLE INTEGERS') for Oracle
    §         fixed exception in case of bind BLOB data type on Oracle8
    §         fixed 'Unsupported field type' exception in case of call procedure without parameters from package (Oracle)
    §         fixed error, when bind of a string parameter with quote (MSSQL, Sybase)
    §         corrected the following behavior: TSDStoredProc.ExecProc does not bind parameters in case of TSDStoredProc.Prepared is equal True, i.e. without UnPrepare call (MSSQL, Sybase)
    §         incorrectly bind blob data in Delphi 3
    Version 2.5 (25.08.1999)
    §         support Oracle8 datatypes like BLOB and CLOB
    §         support Microsoft SQL Server 7
    §         implemented version(for client and server) properties of the TSDDatabase component
    §         some extensions for an association of session and database components
    §         new database parameters(RTRIM CHAR OUTPUT, QUOTED IDENTIFIER) for turning of a database behavior (for Oracle, MSSQL and Sybase)
    Version 2.4.2 (25.07.1999)
    §         fixed <Error loading library ''> exception, which is raised, when SDMss is included before SDEngine
    §         support of the quoted identifiers for MSSQL and Sybase
    §         parameter's name can be enclosed in double quotation marks and may contain spaces, special and other characters
    §         add database’s parameters (szAPPNAME, szHOSTNAME, szMAXCURSORS) for custom changing in application for MSSQL and Sybase
    Version 2.4.1 (10.07.1999)
    §         fixed an infinite loop, in case of disconnecting after rollback (MSSQL)
    §         fixed AV for string output parameter of stored procedure (MSSQL)
    Version 2.4 (25.06.1999)
    §         IBM DB2 Database connectivity
    §         design-time editor for TSDUpdateSQL component
    §         fixed bug, in case of retr) of the applied record
    Version 2.3.5 (05.06.1999)
    §         fixed exception ‘Can not delete temporary stored procedure’ during rollback of blob update (MSSQL)
    §         TSDDataSet.RecordCount returned an invalid value after TSDDataSet.Delete
    §         fixed problem for the TSDDataSet.Locate call with deleted records and on empty(deleted) result set
    §         corrected an attempt to apply record, which was inserted in cache and deleted from cache right away
    §         add Error Offset in a parse error message (Oracle)
    §         increased default maximum process count (MSSQL)
    Version 2.3.4 (24.05.1999)
    §         add property UpdateObject for TSDStoredProc component
    §         method GetResults of TSDStoredProc component frees a shared handle of the associated TSDDatabase component (for MSSQL and Sybase)
    §         fixed an infinite loop when stored procedure fails (for MSSQL)
    Version 2.3.3 (10.05.1999)
    §         new methods of the TSDStoredProc component: NextResultSet and GetResults
    §         multiple result set implemented in TSDStoredProc component (for MSSQL and Sybase)
    §         fixed bugs when update a row with text and bit or float datatype (for MSSQL)
    §         fixed "Invalid Pointer" exception, when result set with smallint datatype(2byte) was closed (Sybase)
    §         improvement of an error processing in the time of Open Client libraries loading (Sybase)
    Version 2.3.2 (30.04.1999)
    §         implemented block reading, which is used by TDataSetProvider
    §         fixed bug when set up an empty ftString-field
    Version 2.3.1 (25.04.1999)
    §         support bit datatype (for MSSQL and Sybase)
    §         fixed bug of the parsing query with JOIN clause and alias using (for MSSQL and Sybase)
    §         setting default time part of the internal Oracle DATE type for parameters with ftDate type (Oracle)
    Version 2.3 (05.04.1999)
    §         Sybase support through Open Client Library
    §         support for C++Builder 4
    §         at design-time storing of the stored procedure parameters
    §         using registry variable in the time of the OCI-library loading (for Oracle)
    §         support BINARY_INTEGER datatype for stored procedure parameters (for Oracle)
    §         remove CR (0x13) symbol from executable statement, it's necessary to perform PL/SQL blocks (for Oracle)
    §         fixed error (ORA-1007) when reopen stored procedure with Cursor parameter at design time (for Oracle)
    §         fixed exception, when open a query with equal field name
    §         improvement of the query statement parsing with a Blob fields: support JOIN in the FROM clause (for MS SQL)
    Version 2.2 (22.01.1999)
    §         stored procedure can return result set (for Oracle)
    §         fixed invalid size of ROWID (for Oracle)
    §         MS SQL Server stored procedure supports Blob parameters
    §         added public SrvApiDLLs variable for setting API-library
    §         supported images stored by Centura SqlWindows(or Team Developer)
    Version 2.1 (15.12.1998)
    §         support for C++ Builder 3
    §         stored procedure component and money datatype (for MS SQL)
    Version 2.02 (25.11.1998)
    §         public accessible SqlApiDLL variables
    §         valid update empty parameters (for MS SQL Server)
    §         using internal parameters with double colon
    Version 2.01 (17.11.1998)
    §         fixed founded bugs: 'Range Check Error' (for SQLBase)
    §         update string with enlarged length (+1)
    §         AV when unsuccessful connect
    Version 2.0 (14.11.1998)
    §         internal reorganization
    §         Microsoft SQL Server support
    §         record filtering
    §         InfoPower-support
    §         implemented AppendRecord and InsertRecord methods of DataSet
    Version 1.05 (05.09.1998)
    §         fixed "List index out of bounds " error after open query with persistent fields
    Version 1.04 (24.08.1998)
    §         read output parameter of Oracle stored procedure bug
    Version 1.03 (21.08.1998)
    §         fixed memory leaks and other bugs
    Version 1.02 (05.08.1998)
    §         fixed the discovered bugs
    Version 1.01 (27.07.1998)
    §         compatible with Delphi 4
    Version 1.0 (10.07.1998)
    ·         new component TSDSQLBaseServer (for SQLBase)
    ·         multi-threading sample
    ·         fixed update error for varchar2(>256) (for Oracle)
    ·         fixed default connect
    ·         design-time editors for TSDataSet and it's descendants
     

    Contents
    About SQLDirect ................................................................................................................................ 2
    Basic features ..................................................................................................................................... 2
    Licensing issues .................................................................................................................................. 4
    Ordering ............................................................................................................................................. 4
    Installation .......................................................................................................................................... 5
    Component install ............................................................................................................................. 5
    BDE application conversion .............................................................................................................. 5
    InfoPower support ........................................................................................................................... 5
    Database Client Software ................................................................................................................. 5
    SQLAnywhere connect (OpenClient) ............................................................................................ 6
    SQLAnywhere connect (ODBC driver) ........................................................................................ 6
    File description .................................................................................................................................... 7
    Demos ................................................................................................................................................ 8
    QueryUpd ....................................................................................................................................... 8
    Threads ........................................................................................................................................... 8
    TSDSession ........................................................................................................................................ 9
    Methods .......................................................................................................................................... 9
    Close ........................................................................................................................................... 9
    CloseDatabase ............................................................................................................................. 9
    Create ......................................................................................................................................... 9
    Destroy ....................................................................................................................................... 9
    FindDatabase ............................................................................................................................. 10
    GetDatabaseNames ................................................................................................................... 10
    GetStoredProcNames ................................................................................................................. 10
    GetFieldNames .......................................................................................................................... 10
    GetTableNames ......................................................................................................................... 10
    OpenDatabase ........................................................................................................................... 11
    Properties ...................................................................................................................................... 11
    Active ....................................................................................................................................... 11
    AutoSessionName ...................................................................................................................... 11
    DatabaseCount .......................................................................................................................... 11
    Databases .................................................................................................................................. 11
    KeepConnections ....................................................................................................................... 12
    SessionName ............................................................................................................................. 12
    SQLHourGlass ........................................................................................................................... 12
    SQLWaitCursor ......................................................................................................................... 12
    TSDSessionList ................................................................................................................................. 12
    Methods ........................................................................................................................................ 12
    FindDatabase ............................................................................................................................. 12
    FindSession ................................................................................................................................ 13
    GetSessionNames ...................................................................................................................... 13
    OpenSession .............................................................................................................................. 13
    Properties ...................................................................................................................................... 13
    Count ........................................................................................................................................ 13
    List ............................................................................................................................................ 13
    SessionName ............................................................................................................................. 13
    TSDDatabase ................................................................................................................................... 14
    Methods ........................................................................................................................................ 14
    ApplyUpdates ............................................................................................................................ 14
    Close ......................................................................................................................................... 14
    CloseDataSets ........................................................................................................................... 14
    Commit ...................................................................................................................................... 14
    Create ....................................................................................................................................... 15
    Destroy ..................................................................................................................................... 15
    ForceClose ................................................................................................................................ 15
    GetFieldNames .......................................................................................................................... 15
    GetTableNames ......................................................................................................................... 15
    GetSchemaInfo .......................................................................................................................... 16
    Open ......................................................................................................................................... 16
    Rollback .................................................................................................................................... 16
    StartTransaction ......................................................................................................................... 16
    StopWaitReconnect .................................................................................................................... 16
    TestConnected ........................................................................................................................... 17
    ValidateName ............................................................................................................................ 17
    WaitReconnect .......................................................................................................................... 17
    Properties ...................................................................................................................................... 17
    ClientMajor, ClientMinor ............................................................................................................. 17
    Connected ................................................................................................................................. 17
    DatabaseName .......................................................................................................................... 18
    DataSetCount ............................................................................................................................ 18
    DataSets .................................................................................................................................... 18
    DesignOptions ............................................................................................................................ 18
    IdleTimeOut ............................................................................................................................... 18
    InTransaction ............................................................................................................................. 18
    IsSQLBased .............................................................................................................................. 19
    Handle ....................................................................................................................................... 19
    KeepConnections ....................................................................................................................... 19
    LoginPrompt .............................................................................................................................. 20
    Params ...................................................................................................................................... 20
    RemoteDatabase ........................................................................................................................ 24
    ReconnectTimeout ..................................................................................................................... 25
    ServerMajor, ServerMinor .......................................................................................................... 25
    ServerType ................................................................................................................................ 25
    Session ...................................................................................................................................... 26
    SessionName ............................................................................................................................. 26
    Temporary ................................................................................................................................. 26
    TransIsolation ............................................................................................................................ 26
    Version ...................................................................................................................................... 27
    Events ........................................................................................................................................... 27
    AfterReconnect ......................................................................................................................... 27
    OnLogin .................................................................................................................................... 27
    OnLostConnectError .................................................................................................................. 28
    OnReconnectError ..................................................................................................................... 28
    TSDDataSet ..................................................................................................................................... 29
    Methods ........................................................................................................................................ 29
    ApplyUpdates ............................................................................................................................ 29
    Assign ....................................................................................................................................... 29
    CancelExec ............................................................................................................................... 29
    CancelUpdates ........................................................................................................................... 29
    CommitUpdates ......................................................................................................................... 29
    RollbackUpdates ........................................................................................................................ 30
    Create ....................................................................................................................................... 30
    Detach ...................................................................................................................................... 30
    Disconnect ................................................................................................................................. 31
    Destroy ..................................................................................................................................... 31
    FetchAll ..................................................................................................................................... 31
    IsSequenced .............................................................................................................................. 31
    LoadFromFile / LoadFromStream ................................................................................................ 31
    Locate ....................................................................................................................................... 32
    LocateNext, LocatePrior ............................................................................................................ 32
    Lookup ...................................................................................................................................... 33
    OpenEmpty ................................................................................................................................ 33
    OpenEx ..................................................................................................................................... 33
    RefreshRecord ........................................................................................................................... 33
    RefreshRecordEx ....................................................................................................................... 33
    RevertRecord ............................................................................................................................ 34
    SaveToFile / SaveToStream ........................................................................................................ 34
    SortRecords ............................................................................................................................... 34
    UpdateStatus ............................................................................................................................. 34
    Properties ...................................................................................................................................... 35
    AutoRefresh .............................................................................................................................. 35
    CacheBlobs ............................................................................................................................... 35
    Database ................................................................................................................................... 35
    CachedUpdates .......................................................................................................................... 35
    DBSession ................................................................................................................................. 36
    EnableUpdateKinds .................................................................................................................... 36
    Filter .......................................................................................................................................... 36
    Filtered ...................................................................................................................................... 36
    Handle ....................................................................................................................................... 36
    Options ...................................................................................................................................... 37
    RecNo ....................................................................................................................................... 37
    SessionName ............................................................................................................................. 37
    Sorted ........................................................................................................................................ 37
    UniDirectional ............................................................................................................................ 38
    UpdateObject ............................................................................................................................. 38
    UpdateRecordTypes ................................................................................................................... 38
    UpdatesPending ......................................................................................................................... 38
    Events ........................................................................................................................................... 39
    OnFilterRecord .......................................................................................................................... 39
    OnUpdateError .......................................................................................................................... 39
    OnUpdateRecord ....................................................................................................................... 39
    TSDMonitor ...................................................................................................................................... 41
    Properties ...................................................................................................................................... 41
    Active ....................................................................................................................................... 41
    FileName ................................................................................................................................... 41
    TraceOptions ............................................................................................................................. 41
    TSDQuery ........................................................................................................................................ 42
    Methods ........................................................................................................................................ 42
    Create ....................................................................................................................................... 42
    Destroy ..................................................................................................................................... 42
    Disconnect ................................................................................................................................. 42
    ExecSQL ................................................................................................................................... 42
    ParamByName .......................................................................................................................... 43
    Prepare ..................................................................................................................................... 43
    UnPrepare ................................................................................................................................. 43
    Properties ...................................................................................................................................... 43
    DataSource ................................................................................................................................ 43
    ParamCheck .............................................................................................................................. 43
    ParamCount ............................................................................................................................... 43
    Params ...................................................................................................................................... 44
    Prepared .................................................................................................................................... 44
    RequestLive ............................................................................................................................... 44
    RowsAffected ........................................................................................................................... 44
    SQL .......................................................................................................................................... 44
    Text .......................................................................................................................................... 45
    TSDMacroQuery .............................................................................................................................. 46
    Methods ........................................................................................................................................ 46
    ExpandMacros ........................................................................................................................... 46
    MacroByName .......................................................................................................................... 46
    Properties ...................................................................................................................................... 46
    MacroChar ................................................................................................................................ 46
    MacroCount ............................................................................................................................... 46
    Macros ...................................................................................................................................... 46
    TSDStoredProc ................................................................................................................................. 47
    Methods ........................................................................................................................................ 47
    CopyParams .............................................................................................................................. 47
    Create ....................................................................................................................................... 47
    Destroy ..................................................................................................................................... 47
    DescriptionsAvailable ................................................................................................................. 47
    ExecProc ................................................................................................................................... 47
    GetResults ................................................................................................................................. 48
    NextResultSet ............................................................................................................................ 48
    ParamByName .......................................................................................................................... 48
    Prepare ..................................................................................................................................... 48
    UnPrepare ................................................................................................................................. 49
    Properties ...................................................................................................................................... 49
    Overload .................................................................................................................................... 49
    ParamBindMode ........................................................................................................................ 49
    ParamCount ............................................................................................................................... 49
    Params ...................................................................................................................................... 49
    Prepared .................................................................................................................................... 50
    StoredProcName ........................................................................................................................ 50
    TSDScript ......................................................................................................................................... 51
    Methods ........................................................................................................................................ 51
    ExecSQL ................................................................................................................................... 51
    ExpandMacros ........................................................................................................................... 51
    MacroByName .......................................................................................................................... 51
    ParamByName .......................................................................................................................... 51
    Properties ...................................................................................................................................... 51
    Database ................................................................................................................................... 51
    DatabaseName .......................................................................................................................... 52
    DBSession ................................................................................................................................. 52
    IgnoreParams ............................................................................................................................ 52
    MacroChar ................................................................................................................................ 52
    MacroCheck .............................................................................................................................. 52
    MacroCount ............................................................................................................................... 52
    Macros ...................................................................................................................................... 53
    ParamCheck .............................................................................................................................. 53
    Params ...................................................................................................................................... 53
    SessionName ............................................................................................................................. 53
    SQL .......................................................................................................................................... 53
    TermChar .................................................................................................................................. 53
    Text .......................................................................................................................................... 54
    Transaction ................................................................................................................................ 54
    Events ........................................................................................................................................... 54
    AfterExecute ............................................................................................................................. 54
    BeforeExecute ........................................................................................................................... 54
    TSDTable ......................................................................................................................................... 55
    Methods ........................................................................................................................................ 55
    CreateTable ............................................................................................................................... 55
    DeleteTable ............................................................................................................................... 55
    EmptyTable ............................................................................................................................... 55
    GetIndexNames ......................................................................................................................... 55
    Properties ...................................................................................................................................... 55
    DefaultIndex .............................................................................................................................. 55
    Exists ........................................................................................................................................ 56
    IndexName ................................................................................................................................ 56
    IndexFieldNames ....................................................................................................................... 56
    TableName ................................................................................................................................ 56
    TSDUpdateSQL ................................................................................................................................ 57
    Methods ........................................................................................................................................ 57
    Apply ........................................................................................................................................ 57
    Create ....................................................................................................................................... 57
    Destroy ..................................................................................................................................... 57
    ExecSQL ................................................................................................................................... 57
    SetParams ................................................................................................................................. 57
    Properties ...................................................................................................................................... 58
    DataSet ..................................................................................................................................... 58
    DeleteSQL ................................................................................................................................ 58
    InsertSQL .................................................................................................................................. 58
    ModifySQL ................................................................................................................................ 58
    Query ........................................................................................................................................ 58
    QueryEx .................................................................................................................................... 58
    RefreshSQL .............................................................................................................................. 59
    SQL .......................................................................................................................................... 59
    ESDEngineError ................................................................................................................................ 60
    Methods ........................................................................................................................................ 60
    Create ....................................................................................................................................... 60
    Create ....................................................................................................................................... 60
    Properties ...................................................................................................................................... 60
    ErrorCode .................................................................................................................................. 60
    ErrorPos .................................................................................................................................... 60
    NativeError ................................................................................................................................ 60
    ESDOdbcError .................................................................................................................................. 61
    Methods ........................................................................................................................................ 61
    CreateWithSqlState .................................................................................................................... 61
    Properties ...................................................................................................................................... 61
    SqlState ..................................................................................................................................... 61
    ESDMssError ................................................................................................................................... 61
    Methods ........................................................................................................................................ 61
    Create ....................................................................................................................................... 61
    Properties ...................................................................................................................................... 61
    HProcess ................................................................................................................................... 61
    ESDSqlLibError ................................................................................................................................ 62
    TSDCntrBlobField ............................................................................................................................. 63
    Properties ...................................................................................................................................... 63
    TSDSQLBaseServer ......................................................................................................................... 64
    Methods ........................................................................................................................................ 64
    AbortProcess ............................................................................................................................. 64
    BackupDatabase ........................................................................................................................ 64
    CancelRequest ........................................................................................................................... 64
    Close ......................................................................................................................................... 64
    Create ....................................................................................................................................... 64
    CreateDatabase ......................................................................................................................... 65
    Destroy ..................................................................................................................................... 65
    DeinstallDatabase ...................................................................................................................... 65
    DeleteDatabase ......................................................................................................................... 65
    GetDatabaseNames ................................................................................................................... 65
    InstallDatabase .......................................................................................................................... 65
    Open ......................................................................................................................................... 66
    RestoreDatabase ........................................................................................................................ 66
    Shutdown ................................................................................................................................... 66
    Terminate .................................................................................................................................. 66
    Properties ...................................................................................................................................... 66
    Connected ................................................................................................................................. 66
    LoginPrompt .............................................................................................................................. 66
    Params ...................................................................................................................................... 67
    ServerName .............................................................................................................................. 67
    Events ........................................................................................................................................... 67
    OnLogin .................................................................................................................................... 67
    Global Variables ................................................................................................................................ 68
    Oracle8Blobs ............................................................................................................................. 68
    Session ...................................................................................................................................... 68
    Sessions ..................................................................................................................................... 68
    InitSqlDatabaseProcs ................................................................................................................. 68
    SqlApiDLL ................................................................................................................................ 68
    SQLWaitTimeout ....................................................................................................................... 69
    Public procedures/functions ................................................................................................................ 69
    GetSqlDirectVersion ................................................................................................................... 69
    GetSqlLibParamName ................................................................................................................ 69
    GetDataSourceNames ................................................................................................................ 69
    GetDBInfoAttachedUsers .......................................................................................................... 70
    Bug report ......................................................................................................................................... 71
    Notes about modify Oracle8 BLOB/CLOB field types ......................................................................... 71
    Modify Oracle8 BLOB/CLOB fields using stored procedure ................................................................ 71
    FAQ ................................................................................................................................................. 72
    SQLBase ...................................................................................................................................... 72
    Known problems ............................................................................................................................... 72
    Latest Changes ................................................................................................................................. 74
     

    If you have any question or suggestion, don’t hesitate to contact to author:
     
    Email:     info@sqldirect-soft.com
     
     
    Thank You and Easy connecting!
    Yuri Sheino
     
    展开全文
  • alias l=\""ls -l\"" alias ll=\""ls -l\"" " >> /etc/profile . /etc/profile echo " umask 022 export ORACLE_HOME=/u01/app/11.2.0/grid export PATH="\$PATH:\$ORACLE_HOME/bin" export PS1='[\$...
  • 12C ORA-错误汇总11 ORA-12500 to ORA-24279

    万次阅读 2016-03-02 21:42:45
    ORA-19500: device block size string is invalid Cause: the device block size returned by sequential I/O OSD is invalid ...Cause: An ALTER statement attempted to reduce the size of the indicated...
  • The OCI Functions for C

    千次阅读 2007-09-19 16:37:00
    oparse(Cda_Def *cursor, text *sqlstm, sb4 sqllen, sword defflg, ub4 lngflg); If you call oparse() as   oparse(&cda, (text *) "select sysdate from dual", -1, 1, 2); it will usually...
  • 12C ORA-错误汇总4 ORA-02140 to ORA-04099

    万次阅读 2016-03-02 21:29:38
    Cause: An attempt to rename a tablespace to a new name failed because the new name is already used by some other tablespace. Action: Retry with a different new name. ORA-02155: invalid DEFAULT ...
  • Oracle Database Server Messages(二) .

    千次阅读 2014-02-24 17:52:36
    A SELECT...INTO statement returned more rows than can be stored in the host variable provided. Action: There are three possible solutions: Use the precompiler option SELECT_ERROR=NO. ...
  • Oracle Resumable Space Allocation 特性 说明

    千次阅读 2012-01-10 22:47:50
    一.Resumable Space Allocation 说明 从9i开始,Oracle提供了一种避免因为space Error... 在Oracle 10g的OCP 考试中有考resumable session 的这个知识点。官网对Resumable的解释: Advantage is forDBAs who are runni
  • Multi Table Insert SQL NCOMP NUMA Related Network OCCI OCI Online DDL Optimizer Optimizer (Stored Outlines) Optimizer (Subquery Factoring - WITH clause) Optimizer Bad Cardinality Oracle Data Mining ...
  • oracle日常运维及应急故障处理手册

    万次阅读 多人点赞 2016-10-06 18:58:56
    通过操作系统命令toptopas glance等查看top进程号,确认是系统进程还是oracle应用进程,查询当前top进程执行的操作和sql语句进行分析。   根据进程号获取正在执行的sql   SELECT a.osuser, a.username,b....
  • Security concern in connection pooling

    千次阅读 2010-02-16 18:20:00
    http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:22140261281764 关于jdbc pool,oralce package-level variable的一些讨论 Submitted on 12-Aug-2004 11:50 Central time zoneToms
  • 原文:https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_9.7.0/com.ibm.db2.luw.admin.trb.doc/doc/c0054595.html ...
  • 3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法...
  • PLSQLDEV

    千次阅读 2010-08-13 03:05:00
    1 明细类的命名 约定是 _ D T L 概化类的命名 概化类是其他类的概化如果E M P L O Y E E是领薪水的雇员和按小时工作的雇员的概化,那么恰当的名字是E M P、E M P _ S A L A R I E D、D E M P _ H O U R LY,或者是...
  • dbms_system.set_sql_trace_in_session? Followup July 15, 2005 - 8am Central time zone: http://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:35661775175899 Need some clarification ...
  • 【Xibo】Xibo汉化指南

    千次阅读 2016-06-07 15:33:03
    翻译不周,请谅解msgid "" ..."Project-Id-Version: xibo\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2014-11-26 10:54+0000\n" "PO-Revision-Date: 2016-06-07 15:00+0800\n" "Las
  • ORA_ERROR大全

    万次阅读 2015-12-11 14:16:09
    常见错误: -60 ORA00060: deadlock detected while waiting for resource 一般错误:  - 1 ORA00001: ... -17 ORA00017: session requested to set trace event  -18 ORA00018: maximum 
  • Hibernate参考文档

    千次阅读 2006-12-30 10:33:00
    id元素是标识符属性的声明,name="id" 声明了Java属性的名字 - Hibernate会使用getId()和setId()来访问它。 column属性则告诉Hibernate, 我们使用EVENTS表的哪个字段作为主键。嵌套的generator元素指定了标识符生成...
  • Tutorial: Moving from MySQL to ADODB

    千次阅读 2005-03-23 07:36:00
    $sql = "INSERT INTO table (id, thedate,note) values (" . $ ID . ',' . $db->DBDate($ TheDate ) .',' . $db->qstr($ Note ).")"; $db->Execute($sql); ADODB also supports $connection->Affected_...
  • hibernate学习手册

    千次阅读 2012-08-22 07:14:47
    2.5. Contextual sessions 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory 3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary ...
  • Oracle Database Server Messages(一)

    千次阅读 2014-02-24 17:36:30
    An attempt was made to issue a commit or rollback from a PL/SQL object (procedure, function, package) in a session that has this disabled by a ALTER SESSION DISABLE COMMIT IN PROCEDURE statement. ...
  • Hibernate参考文档

    千次阅读 2013-01-23 00:02:33
    3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法...
  • sql>create temporary tablespace temp2 tempfile '/u02/oradata/orcl/temp02.dbf' size 100m extent management local uniform size 128k; 启动丢失临时文件得数据库 COMMAND>SQLPLUS /NOLOG sql>...
  • 12C ORA-错误汇总2 ORA-00910 to ORA-01497

    千次阅读 2018-11-12 09:57:09
    Action: 1) Do not issue a fetch statement after the last row has been retrieved - there are no more rows to fetch. 2) Do not issue a COMMIT inside a fetch loop for a cursor that has been opened FOR ...

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

"sqlstatementexecutionhasfailed\"insertintosessions(sessionid,userid,l"