Icon View Incident Report

Serious Serious
Reported By: Wolfgang Klein [AESA GmbH]
Reported On: 11/13/2013
For: Version 2.14 Build 2
# 3919 Writing NULL Values to BLOB Columns Causes Block Allocation in the Table's Physical BLOB File

Zero length and "NULL" BLOBs unnecessarily occupy memory in *.EDBBlb file.

The "Code to Reproduce" will create two tables (one with 1000 BLObs of size 0 and one with 1000 "NULL" BLObs) where each *.EDBBlb file is around 1 MB in size.

var Database :TEDBDatabase;
    Table    :TEDBTable;
    i        :Integer;
    Field    :TField;
begin
  Engine.ConfigPath:='C:\Test';

  Session.SessionType:=stLocal;
  Session.LoginUser:='Administrator';
  Session.LoginPassword:='EDBDefault';

  Session.SessionName:='SessionTest1';
  Session.Open;

  Session.Execute('CREATE DATABASE "DatabaseTest" PATH ''''');

  Database:=TEDBDatabase.Create(nil);
  Database.SessionName:=Session.SessionName;
  Database.DatabaseName:='DatabaseTest';
  Database.Database:='DatabaseTest';
  Database.Open;

  Database.Execute('CREATE TABLE "TestNULL" ("a" BLOB)');
  Database.Execute('CREATE TABLE "Test0" ("a" BLOB)');

  Table:=TEDBTable.Create(nil);
  Table.SessionName:=Session.SessionName;
  Table.DatabaseName:=Database.DatabaseName;
  Table.Exclusive:=True;

  Table.TableName:='TestNULL';
  Table.Open;
  Field:=Table.Fields [0];
  for i:=1 to 1000 do begin
    Table.Append;
    Field.Clear;
    Table.Post;
    end;
  Table.Close;

  Table.TableName:='Test0';
  Table.Open;
  Field:=Table.Fields [0];
  for i:=1 to 1000 do begin
    Table.Append;
    Field.AsBytes:=nil;
    Table.Post;
    end;
  Table.Close;

  Table.Free;
  Database.Free;



Resolution Resolution
Fixed Problem on 11/21/2013 in version 2.15 build 1


Products Affected Products Affected
ElevateDB Additional Software and Utilities
ElevateDB DAC Client-Server
ElevateDB DAC Client-Server with Source
ElevateDB DAC Standard
ElevateDB DAC Standard with Source
ElevateDB DAC Trial
ElevateDB LCL Standard with Source
ElevateDB PHP Standard
ElevateDB PHP Standard with Source
ElevateDB PHP Trial
ElevateDB VCL Client-Server
ElevateDB VCL Client-Server with Source
ElevateDB VCL Standard
ElevateDB VCL Standard with Source
ElevateDB VCL Trial

Image