List of fixed bugs in the commercial version of OpenQM (Current as of 2.8-10)

From ScarletDME
Jump to navigation Jump to search

The list of fixed issues below are in reverse version order. If one is fixed, please use the <strike></strike> html command to block out the fixed bug.

  • 2.8-10
The QMBasic compiler allowed use of EQ as an alternative to the = symbol as an
assignment operator.

Query commands that used closed range tests (e.g. A > 5 and < 8) with fields
for which an alternate key index was present could return incorrect data.
  • 2.8-9
The N() funcion in an A-correlative did not allow for field names that did not
comply with QM's naming rules.

Where a file had multiple alternate key indices, if an index was built from a
calculated value that used a T-conversion or a TRANS() function to reference a
record that did not exist, all later index updates for the same write would
damage the index.

Use of PSTAT could cause the process being queried to crash if it had a very
deep execution stack or was executing a very long command.  

A phantom would fail to start correctly if the parent process terminated before
it had commenced its initialisation.

The Proc A command did not treat semicolons in the source data as a special
character separating multiple items.

A Proc with a command of H with no qualifying text caused the Proc processor
to loop.

The LPTR keyword was not recognised by the FILE.STAT command.

The WHEN clause of the query processor was not handling some complex conditions

A Pick style qualified display clause on a multivalued field was equivalent to
use of WITH when it should have been equivalent to use of WHEN.

Quitting out of a PSTAT command could result in not being able to start pahntom

The @FILENAME synonym for @FILE.NAME was not recognised by the QMBasic

The QMBasic OPENSEQ statement did not return the blocking user number via the
STATUS() function if the record was locked by another user.

Some PDA devices would report errors on access to files on the removeable
memory card if the PDA had powered down while the file was open.

  • 2.8-8
Relational operators in correlatives were not implying use of the reuse option.

The C operation in F-correlatives did not handle negative numbers.

Format codes applied to integer numeric values when non-default NLS delimiters
were selected returned an incorrect result.

The SET.FILE command did not handle multi-files correctly.

Use of the NEXT qualifer to SETPTR or SET.QUEUE could cause QM to terminate
abnormally on subsequent use of the CAPTURING clause to EXECUTE.

The QMBasic CLEAR statement caused updates to subroutine argument variables
that were passed by reference not to be treated as though they were passed by
value, not returning the new value to the calling program.

The QMBasic SUM() and SUMMATION() functions should ignore non-numeric elements
in the dynamic array that they are summing.
  • 2.8-7
Deleting a record from a file that used record level encryption could fail to
remove the record from an alternate key index.
The SED editor hung when trying to delete a record via the explore buffer if
that record was locked by another user.

The query processor treated Fn field references as being single valued.

Reference to a dimensioned matrix on a QMBasic source line above the
corresponding DIM statement generated a compilation error.

A performance optimisation in the QMBasic LOCATE statement could result in the
incorrect field position being returned or a QM fatal error. Also, LOCATE could
incorrectly report an item as found if the leading characters matched the final
item in the dynamci array being searched.
  • 2.8-6
The installer on some Linux systems could fail to set permissions correctly.

There was an assumption that $HOLD was always in its default location.

FORMAT was creating a VOC record named X.
  • 2.8-5
The init.d scripts on Linux and FreeBSD did not allow for installation with the
QMSYS directory in a non-default location.

The -R option of qmfix could report that the file was unusable.
  • 2.8-4
A direct network connection to QM using ports 4242 (telnet) or 4243 (QMClient)
would fail on some versions of the network management software used by Linux
and the PowerPC version of the Mac.

Attempting to open a file that uses record level encryption was causing an
abort for users with no access to the encryption key. This should have taken
the ELSE clause of the open.

FILE.SAVE was ignoring any account name given on the command line and saving
all accounts.

Using SEL.RESTORE to restore the VOC needed the file name to be entered as

A QMBasic source line that generate a very large volume of object code could
result in the program terminating unexpectedly.

AccuSoft have supplied a correction to the terminfo definition for F5 in the
vt100-at, vt220-at, vt320-at and vt420-at terminal types.
  • 2.8-3
Attempting to access a hashed file for which a user was locked out by file
permissions could appear to open it as a directory file though it would not be
possible to read or write records.

Creating an alternate key index with an I-type, C-type or correlative that
compiles to more than 512 bytes caused QM to terminate with a fatal error and
left the index file corrupt.

QM could terminate with a fatal error if a command executed using OS.EXECUTE
with the CAPTURING clause returned only a newline.

Use of an invalid pathname with the QMBasic OSWRITE statement did not take the
ON ERROR clause.
  • 2.8-2
The ANALYSE.FILE command could wrongly report a file as having resizing
disabled when it did not, or vice versa.

The CREATE.INDEX and MAKE.INDEX commands did not always correctly recognise
equivalent indices, resulting an an extra index being created where another
that already existed could be used instead.

Deleting all lines below the current position in ED and then saving the item
could sometimes add a blank line to the end of the data.

The query processor did not apply CSV quoting rules to column headings when
creating comma separated output. 

A QMBasic class module with more than 255 entry points would appear to compile
correctly but would produce run time errors.

The QMBasic READCSV statement could cause a fatal error that terminated the
QM session. 

A QMBasic class module in which a public function or subroutine aborted and the
destructor routine then also aborted did not clean up correctly from the first
  • 2.8-1
ACCOUNT.RESTORE could restore data to an incorrectly formed file name.

The query processor BY.EXP.DSND operator was sorting in ascending order.
  • 2.7-1
The account restore tools did not handle filenames containing illegal
characters correctly.
  • 2.6-14
The VOC $RELEASE record command editor control flags (field 3) were lost when
installing a new release.

The CODEPAGE option of the PTERM command was rejected.

The QMBasic compiler could report an error if an include item had the same name
as an equated token.
  • 2.6-13
A QMBasic indirect call where the indirection variable as an equated token
failed to compile correctly.

A QMBasic expression containing a Pick style implicit format element could
sometimes be interpreted as a dimensioned matrix reference.
The MT conversion code was returning 00:00 for a null input value.
  • 2.6-12
The FORMAT command reported an internal data mismatch if the program being
formatted started with a blank line.

The QMBasic SELECTV statement generated a run time error if the source and
target variables were the same.

SELECTV "" TO VAR created a list with a single item named "__".  --Unable to replicate. Need source code example--

The mc4 and mc5 terminfo keys were incorrect for some AccuTerm terminal types
causing use of auxiliary port printing to display the data at the same time as
it was printed. Also, pagination prompts could appear while the data was sent
to the terminal.

The QMCall() function of the qmclilib library on PPC Mac systems did not
update returned argument values correctly.
  • 2.6-11
Use of an equate token that matched the alphabetic part of an @-variable name
caused compilation errors. --Unable to replicate. Need source code example--

A null string in the data supplied to the !SORT() subroutine could cause QM
to crash.
  • 2.6-10
Phantom processes failed to start when launched from sessions logged in as
specific user numbers by use of the PORTMAP configuration parameter.

The Hot Spot Monitor (HSM) did not count direct calls correctly.

QMBasic programs accepted a string containing only a period as being a valid
number and treated it as zero.