Known Issues

Documentation

  • Please refer to the online documents for latest information. The What’s New documents in PB Help are not synchronized with the latest changes made to the online documents.

PowerServer deployment

  • If you create a new PowerServer project, and select "Package the compiled app and manually deploy later" on the Client Deployment tab, make sure to save the project first before deploying the project, otherwise, the application deployment will fail.

  • If you have made changes to the embedded SQLs, make sure to select the full build option. The incremental build has issues in handling embedded SQLs.

  • The Compile & Run Web APIs option may repeatedly execute the commands and failed to start the Web APIs on some Windows 8 machines. In such case, open the PowerServer Web API solution in SnapDevelop, and then start the Web API from SnapDevelop.

  • When the PowerServer project is being deployed, the NuGet package for the driver Oracle 2.19.101 (Oracle.ManagedDataAccess.dll) and MySQL 8.0.21 (MySql.Data.dll) cannot be dynamically downloaded if 1) after the database connection (for Oracle and MySQL) has been configured, the database driver is damaged (for example, the corresponding .nuget files and .sd files are deleted or renamed, or the driver folder is deleted or renamed); or 2) only PowerBuilder Compiler is installed, while PowerServer Compiler and PowerBuilder Runtime are not installed.

  • If the database configuration is detected to be invalid during the application deployment, the database connection error will be displayed in the Output window | Unsupported (DWs) tab and Errors tab. The Default tab will be optimized later.

  • The ChangePowerServer.exe file has dependence on msvcp100.dll, msvcr100.dll etc., therefore, it may not be loaded correctly in Windows Server 2016 or 2012 R2.

  • If you select "Package the compiled app and manually deploy later" and then select to package your customized cloud app launcher on the Client Deployment tab, the app launcher failed to be packaged. This is caused by a location mistake. To workaround this issue, you can copy CloudAppLauncher_Installer.exe and LauncherSetup.json from the customized app launcher folder (for example, C:\Users\appeon\AppData\Roaming\CloudAppLauncher_Installer\21.0.0.1150\CloudAppLauncher_Installer21.0.0.1150\) to the app launcher root folder (for example, C:\Users\appeon\AppData\Roaming\CloudAppLauncher_Installer).

  • To have the optimal performance, it is recommended that you publish and run the PowerServer Web APIs in the production hosting environment such as Docker, IIS, Kestrel. Running the PowerServer Web APIs from the IDE will start the Web API in the debug mode, not the release mode.

PowerClient deployment

  • If PowerServer Toolkit is not installed, PowerClient deployment cannot work; although PowerClient deployment has no dependency on PowerServer Toolkit.

  • The PowerClient project object (salesdemo_local) provided with the Salesdemo application did not add README.md to the External Files tab. This file will be used in the main window of the Salesdemo app, therefore, you will need to add this file to the External Files tab before deployment.

PowerBuilder Runtime

  • DataWindow failed to update multiple tables.

  • Executing dbparm="" after a successful connection will cause the application to crash. To set dbparm after a successful connection, use the following workaround:

           Transaction.dbparm = "DBParm = "Database='en_sql2000',DelimitIdentifier=1,TrimSpaces=1""
           Connect using transaction;
           ……
           Disconnect using transaction;
           Transaction.dbparm =""
           Connect using transaction;
    
  • It is unsupported to dynamically create a DataWindow that is using the procedure as data source.

  • When the column of DataWindow QueryMode is a datetime value, the value will not be enclosed in single quotation marks when concatenated in the Where clause. This issue exists in all databases except Oracle.

    Wrong:

    SELECT  t_sesssion_nchar.session_id , t_sesssion_nchar.coy_code , t_sesssion_nchar.session_date FROM t_sesssion_nchar WHERE (((t_sesssion_nchar.session_date = 2012-09-02 00:00:00)))

    Correct:

    SELECT  t_sesssion_nchar.session_id , t_sesssion_nchar.coy_code , t_sesssion_nchar.session_date FROM t_sesssion_nchar WHERE (((t_sesssion_nchar.session_date = '2012-09-02 00:00:00')))

PowerServer runtime library & DataWindow conversion

  • The default value of Trimspaces for ASE and PostgreSQL database may not be consistent with the default settings of the PowerBuilder database interface. You can set the value of TrimSpaces in transaction.dbparm if there is inconsistency.

  • The static SQLs might not work in MySQL after compiled in PowerBuilder, as a redundant space is added after the function name (count, sum, avg etc.). For example,

    Select count(*)  into :li_count from esq_dept;

    is compiled as

    select count ( * ) from esq_dept;

    You can go to the PowerServer solution, open the appname_Select.cs file under the AppModels project, and remove the redundant space after the function name.

  • If the control in the DataWindow object such as Text, Button etc. has an invalid value (for example, contains a decimal portion) for its X, Y, Width or Height, the error "Error: Input string was not in a correct format." will occur when converting the DataWindow to a model or creating a dynamic SQL with the DataWindow syntax. Removing the decimal portion can workaround this issue.

  • Using the PBSELECT syntax to parse the Exist keyword may introduce syntax errors in SELECT. To workaround this issue, convert the PBSELECT to the SELECT syntax first.

  • If the dynamically created DataWindow contains the text column, PowerServer will by default consider it an abnormal update (the text column cannot appear in the Where clause in PowerServer).

  • When inserting data to a dynamically created DataWindow, the SQL default value cannot be used.

  • When converting the model, the SQL syntax and the data type mappings for a few columns of the DataWindow using the Procedure data source are wrong, which causes the retrieved data incorrect. You need to manually change the field data type in the corresponding C# model according to the error message.

  • If the DataWindow SQL statement uses a function and the function parameter is an integer; and if it is called by the number parameter of the DataWindow, the following syntax error occurs when exporting the DataWindow to the C# model: Argument datatype float is invalid for argument 3 of substring function. You can workaround this issue by using substring(value, 1, cast(:al_len as int)).

  • If the DataWindow SQL statements executes SQL according to conditions, the attributes of the exported model maybe incorrect. For example, if :arg1=1 then select ... else select .... It is recommended to split into two DataWindows.

  • If the column type in the DataObject is column=(type=decimal(-1), PowerServer will fail to parse the data type, and will cause an error when converting the model. You can change decimal(-1) to the correct data length according to the actual use.

  • If the Where clause in the DataObject contains the PBSELECT syntax and UNION is used, converting to model will fail. To workaround this issue, convert the PBSELECT to the SELECT syntax.

    NEST = PBSELECT ( VERSION(400) TABLE(NAME=~"t_dwstyle_dept~" ) COLUMN(NAME=~"t_dwstyle_dept.deptid~") WHERE ( EXP1 =~"t_dwstyle_dept.deptid~" OP =~"=~" EXP2 =~"100~" ) )) ) UNION (PBSELECT(
  • If the case of the parameter name in the stored procedure does not match, there will be error messages indicating that the parameter is not defined when converting to model.


Databases

  • (Oracle) Exceptions will occur when the stored procedure returns a value with precision over 28 digits, for example, dbms_random.value.

  • (SQL Server) When executing the stored procedure which contains a default value for the output parameter, PowerServer will fail to obtain the default value. For the code example below, PowerServer automatically uses null as the default value for the @v_out output parameter.

    Create PROCEDURE [dbo].[up_pro104_001]
      @v_in1 varchar(10) = 'in1', 
      @v_in2 varchar(10) = 'in2',
      @v_out varchar(10) = 'out' output,
      @v_in3 varchar(10) = 'in3'  
      Declare lp_proc03 Procedure For up_pro104_001 ;
      Execute lp_proc03;
      fetch lp_proc03 into :ls_result;  
    
  • (ASE) Due to the driver problem, the numeric-type argument in the stored procedure may have conversion errors. For the code example below, when passing the decimal data, PowerServer will display an error when converting numeric to decimal.

    CREATE PROCEDURE up_rpcfunc_dec
    @v_d decimal(3,2),
    @v_outd decimal(3,2) output
    
  • (PostgreSQL) There are discrepancies due to the difference between the native driver and the PowerBuilder database interface. For example, the Char-type field in the Where clause will be handled differently. For the code example below, if the database varchar field contains a space "name1 ", PowerBuilder will get no data, while PowerServer can get data.

    ls_name = "name1"
    select count(1) into :ll_count from dbparm_fortest where name_varch = :ls_name;
    
  • (PostgreSQL) Some data types are unsupported, for example, array, inet, line, tid, polygon, point, etc.

  • (ASA) PowerServer has strict rules to the order of the parameters when executing the stored procedure. The code example below will produce an error when executed in PowerServer.

    ls_tablename = "t_datatype_forupdate"
    ls_sql =  "execute sa_reset_identity  ?, new_identity=1;"
    prepare sqlsa from :ls_sql;
    execute sqlsa using :ls_tablename;
    

    To workaround this issue, you need to list all of the parameters in order as below:

    ls_sql =  "execute sa_reset_identity  ?, "dba", new_identity=1;"
  • (MySQL) The Delimitidentifier property is not fully supported.

Others

  • The data type difference will bring in different execution result, for example, PowerBuilder can use Time to update DateTime, while PowerServer cannot.

  • If the following error occurs when retrieving a large amount of data, open the Connection-Cache.json file from the PowerServer solution, and increase the command timeout value for the corresponding cache name; it is 30 seconds by default.


  • To publish the PowerServer Web APIs to a server, when Internet connection is accessed through a proxy server, you will need to configure the ProxyServer setting in the appsettings.json file of the PowerServer solution.


  • If the following error occurs when you click the Database Configuration button, it is probably because the machine is not started after the installation of .NET Framework 4.8. You can restart the machine and try again.