Tuesday, November 30, 2004
IBReplicator Beta 2.0.0.10 has been released
Want your own Firebird T-Shirt or Polo Shirt?
Firebird currently beats Ingres on performance
http://opensource.ca.com/projects/ingres/forum/10/650886925835?b_start:int=0
Problems in Firebird 1.5.2 RC 3
Friday, November 26, 2004
PHP5 the undocumented bit
If we are talking PHP5 then the undocumented bit is all the ibase_ can
be changed to fbird_ , so Johan could use
$userid = fbird_gen_id ('G_USERS');
Would be nice to see the ibase_ fall out of use when using Firebird.
It is just a wrapper round the ibase_* but in the future if any changes
are needed specific to Firebird, then the fbird_ version can be modified.
-- Lester Caine
Wednesday, November 24, 2004
Tuesday, November 23, 2004
Evans Data research survey of databases
SQLDirect Component Library V4.1.1
Is Oracle A Legacy Technology?
Firebird 1.5.2 RC3 is ready for testing
FlameRobin has Moved!
Anyone subscribed to our current mailing lists should unsubscribe and re-subscribe to the new lists here.
InterBase Performance Monitoring: Vision and Control
In older versions of InterBase it was sometimes difficult to tell what was going on inside the server. This could make debugging applications very difficult. You could tell, for example, that there was a long-running transaction by looking at the DB header statistics, but you couldn't tell whose it was or what it was doing. Nor could the DBA preemptively end the transaction.
With InterBase 7 and higher, InterBase now provides insight into and control over the internal functions of the server via the temporary system tables. In some ways, InterBase developers and DBAs have a new problem: Instead of not enough information, we now have so much information and so many options for controlling the server that it's possible to get lost in the minutia of InterBase internals.
This session will focus on practical use of the feature. I'm not going to reproduce the InterBase documentation or explain every column of every table, but instead will focus on how to debug and enhance applications, and how to effectively administer an InterBase server.
Read more at: http://blogs.teamb.com/craigstuntz/articles/IBPerformanceMonitoring.aspx
Friday, November 19, 2004
Fyracle 0.8.1 released!
- fixed install failure when the installer was located on
a different drive than the installation directory (Win)
- fixed install failure where fyracle.dll did not get
installed properly (Win)
- fixed install failure where the desktop icons did not
always properly launch their program
- fixed issue with the installer where post-install errors
caused the installer to abort
- removed the maximum statement length in the plsql
compiler
- fixed incorrect command line parameter handling in the
plsql compiler
Download from http://www.fyracle.org/downloads/
Wednesday, November 17, 2004
FIBPlus 6.0 fixes
1. A report "Can''t read Buffer.Incorrect RecordNo" appeared on adding a new record to the database. An exception arose on trying to refresh an empty dataset.
function TRecordsCache.OldBuffer(RecordNo:integer): PChar;2. Incorrect FullRefresh occurred with CacheModelKind=cmkLimitedBufferSize
begin
if SaveChangeLog then
begin
if RecordNo<=FRecordCount then
ReadRecordBuffer(RecordNo,FOldBuffer,True)
else
ClearOldBuffer
end
else
begin
if FOldBufRecordNumber<>RecordNo then
if RecordNo<=FRecordCount then
SaveOldBuffer(RecordNo)
else
ClearOldBuffer
end;
Result:=FOldBuffer
end;
procedure TRecordsCache.SaveOldBuffer(RecordNo: integer);
begin
if SaveChangeLog then
SaveToChangeLog(RecordNo)
else
begin
if RecordNo<=FRecordCount then
ReadRecord(RecordNo,FOldBuffer)
else
ClearOldBuffer;
FOldBufRecordNumber:=RecordNo;
end;
end;
unit FIBDataSet;3. Local sorting and the CloneCurRecord method did not work.
function TFIBCustomDataSet.RefreshAround(BaseQuery: TFIBQuery;var
BaseRecNum:integer;
IgnoreEmptyBaseQuery:boolean = True;ReopenBaseQuery:boolean = True
):boolean;
procedure ExecCurSelect( aCurSelect:TFIBQuery; SourceObject:ISQLObject);
begin
aCurSelect.Close;
AssignSQLObjectParams(aCurSelect,[SourceObject]);
aCurSelect.Params.AssignValues(FQSelect.Params);
aCurSelect.ExecQuery;
end;
function FetchAround(aCurSelect:TFIBQuery; RecordsLimit:integer;
Arrow:smallint;
FromRecNum:integer =-1
):boolean;
var
i:integer;
begin
if FromRecNum=-1 then
FCurrentRecord:=BaseRecNum
else
FCurrentRecord:=FromRecNum;
i:=RecordsLimit;
Result := False;
while (i>0) and (aCurSelect.Next<>nil) do
begin
Result := True;
Inc(FCurrentRecord,Arrow);
FetchRecordToCache(aCurSelect, FCurrentRecord);
if Arrow<0 then
begin
vPartition^.BeginPartRecordNo:=FCurrentRecord;
if vPartition^.EndPartRecordNo=-1 then
vPartition^.EndPartRecordNo:=vPartition^.BeginPartRecordNo
end
else
begin
vPartition^.EndPartRecordNo :=FCurrentRecord;
if vPartition^.BeginPartRecordNo=-1 then
vPartition^.BeginPartRecordNo:=vPartition^.EndPartRecordNo;
end;
Dec(i);
end;
if aCurSelect.Eof then
if Arrow<0 then
vPartition^.IncludeBof:=True
else
vPartition^.IncludeEof:=True;
end;
var
RecordSource :ISQLObject;
EmptyDataSet :boolean;
NotFetchedCount:integer;
begin
with BaseQuery do
begin
if ReopenBaseQuery then
begin
Close;
Params.AssignValues(FQSelect.Params);
ExecQuery;
Next;
Result:=not Eof;
end
else
Result :=RecordCount>0;
end;
EmptyDataSet :=True;
if Result or (not IgnoreEmptyBaseQuery) then
begin
if BaseRecNum<(FCacheModelOptions.FBufferChunks div 2) then
BaseRecNum:=FCacheModelOptions.FBufferChunks div 2;
if Result then
begin
EmptyDataSet :=False;
FetchRecordToCache(BaseQuery, BaseRecNum);
vPartition^.BeginPartRecordNo:=BaseRecNum;
vPartition^.EndPartRecordNo :=BaseRecNum;
RecordSource:=BaseQuery
end
else
begin
RecordSource:=Self;
end;
vPartition^.IncludeBof:=False;
vPartition^.IncludeEof:=False;
ExecCurSelect(FQSelectDescPart,RecordSource);
ExecCurSelect(FQSelectPart,RecordSource);
if not Result then
begin
vPartition^.BeginPartRecordNo:=-1;
vPartition^.EndPartRecordNo :=-1;
end;
if FetchAround(FQSelectDescPart,FCacheModelOptions.FBufferChunks div
2,-1) then
EmptyDataSet:=False;
if not Result then
Dec(BaseRecNum);
NotFetchedCount:=FCacheModelOptions.FBufferChunks-(vPartition^.EndPartRecordNo-vPartition^.BeginPartRecordNo+2);
if FetchAround(FQSelectPart,NotFetchedCount,1) then
EmptyDataSet:=False;
NotFetchedCount:=FCacheModelOptions.FBufferChunks-(vPartition^.EndPartRecordNo-vPartition^.BeginPartRecordNo+2);
if NotFetchedCount>0 then
FetchAround(FQSelectDescPart,NotFetchedCount,-1,vPartition^.BeginPartRecordNo);
FQSelectDescPart.Close;
if Result then
FCurrentRecord:=BaseRecNum
else
if EmptyDataSet then
FCurrentRecord:=-1
else
FCurrentRecord:=BaseRecNum+1;
FQCurrentSelect:=FQSelectPart ;
BaseQuery.Close;
end;
end;
unit FIBDataSet;4. On saving a dataset to the repository the query dialog always opened with an empty string.
procedure GetInspectRecBuffer;
var
dsState:TDataSetState;
begin
dsState:=State;
Allocated:=
(dsState<>dsCalcFields) and (Field.FieldKind in
[fkLookUp,fkCalculated]);
if Allocated then
begin
Buff :=AllocRecordBuffer;
ReadRecordCache(vInspectRecno, Buff, State=dsOldValue);
if (Field.FieldKind in [fkLookUp,fkCalculated]) then
try
SetTempState(dsCalcFields);
CalculateFields(Buff);
finally
RestoreState(dsState);
end
end
else
begin
Allocated:=(dsState in [dsOldValue,dsFilter]) or
(vTypeDispositionField=dfRRecNumber);
if Allocated then
begin
Buff :=AllocRecordBuffer;
ReadRecordCache(vInspectRecno, Buff, State=dsOldValue)
end
else
Buff:=GetActiveBuf;
end;
end;
unit RegFIBPlusEditors;5. When creating the SQL statements at design time, FibPlus 6 invoked an error in the Refreh SQL Query.
procedure TFIBGenSQlEd.SaveDataSetInfo;
var
vDescription:string;
begin
with Component as TpFibDataSet do
if DataSet_ID = 0 then ShowMessage(Name + SCompEditDataSet_ID)
else
if DataBase = nil then ShowMessage(SDataBaseNotAssigned)
else
begin
if not ExistDRepositaryTable(TFIBDataset(Component).DataBase) then
begin
if
MessageDlg(SCompEditInfoTableNotExist, mtConfirmation, [mbOK, mbCancel], 0
) <> mrOk
then Exit;
CreateDRepositaryTable(TFibDataSet(Component).DataBase);
end;
vDescription:=TpFibDataSet(Component).Description;
if not InputQuery(SCompEditSaveDataSetProperty, SCompEditDataSetDesc, vDescription) then
Exit;
SaveFIBDataSetInfo(TpFibDataSet(Component),vDescription);
TpFibDataSet(Component).Description:=vDescription;
end;
end;
unit fraDSSQLEdit;6. On trying to connect to the database in design-time FIBPlus used the client library gds32.dll, though the LibraryName property had fbclient.dll.
procedure TfDSSQLEdit.cmbTablesChange(Sender: TObject);
begin
with cmbTables do
if ItemIndex>-1 then
begin
FUpdTableSynonym:=
FormatIdentifier(FDatabase.SQLDialect,AliasForTable(SelectSQLEdit.SQLText,cmbTables.Text)) +'.';
if FUpdTableSynonym[1]='@' then FUpdTableSynonym:='';
end
else
FUpdTableSynonym:='';
LstKeyFields.Clear; LstUpdFields.Clear;
btnGetFieldsClick(btnGetFields);
end;
unit pFIBDBEdit;6. If Select uses macro, refresh did not work.
procedure TDBEditForm.TestBClick(Sender: TObject);
var TempDB : TFIBDatabase;
begin
TestB.Enabled := false;
TempDB := TFIBDatabase.Create(nil);
try
if LocalC.Checked then
TempDB.DBName := DBNameE.Text
else
case ProtocolC.ItemIndex of
0: TempDB.DBName := Format('\\%s\%s', [ServerE.Text, DBNameE.Text]);
1: TempDB.DBName := Format('%s@%s', [ServerE.Text, DBNameE.Text]);
2: TempDB.DBName := Format('%s:%s', [ServerE.Text, DBNameE.Text]);
end;
TempDB.DBParams.Assign(ParamsM.Lines);
TempDB.UseLoginPrompt := UseLoginC.Checked;
/////////////
TempDB.LibraryName := aDatabase.LibraryName;
////^^^^^^^^^ to add
TempDB.SQLDialect := DialectC.ItemIndex + 1;
TempDB.Connected := True;
ShowMessage(SDBEditSuccessConnection);
finally
TempDB.Free;
TestB.Enabled := true;
end;
end;
function TFIBCustomDataSet.InternalRefreshRow(Qry: TFIBQuery; Buff:Pointer):boolean;
var
iCurScreenState: Integer;
begin
ChangeScreenCursor(iCurScreenState);
Result:=False;
try
if Buff=nil then
Exit;
if not EmptyStrings(Qry.SQL) and (Active) then
begin
if not FCachedUpdates and (CacheModelOptions.CacheModelKind=cmkStandard) then
SaveOldBuffer(Buff);
if not (Qry.Open or Qry.ProcExecuted) then
begin
SetQueryParams(Qry, Buff);
PrepareQuery(skRefresh);
if (poStartTransaction in Options) and
not Qry.Transaction.InTransaction
then
Qry.Transaction.StartTransaction;
Qry.ExecQuery;
end;
if Qry.Open then
with PRecordData(Buff)^ do
try
if (Qry.SQLType = SQLExecProcedure) or (Qry.Next <> nil) then
begin
FetchCurrentRecordToBuffer(Qry,PRecordData(Buff)^.rdRecordNumber,Buff);
Result:=True;
end
else
if poRefreshDeletedRecord in Options then
begin
if (CacheModelOptions.CacheModelKind=cmkStandard) then
begin
CacheDelete;
DoAfterRefresh;
end;
end;
finally
Qry.Close;
end;
end
else
if RecordCount>0 then
FIBError(feCannotRefresh, [CmpFullName(Self)]);
finally
RestoreScreenCursor(iCurScreenState);
end;
end;
FYRACLE listed on GrokDoc
Fyracle and Firebird are listed on the "application crossover" page under the "Databases" heading:
http://www.grokdoc.net/index.php/Application_Crossover_Chart
Firebird support in Neo 1.3
Advanced Data Generator
Tuesday, November 16, 2004
FlameRobin 0.2.0 just released !
We are glad to announce the release of FlameRobin 0.2.0 ALPHA, now with property sheets and editors for most database objects, brand new background backup & restore features and a MacOS X port. Not to mention the new program logo.
New features:
- Brand new Backup/Restore dialogs that work in background, let you suppress the output messages and store their settings among invocations. Plus, the output messages can be copied to the clipboard.
- Many dialogs have been redesigned and now feature a cleaner GUI.
- "Show value" and "Show all values" context menu commands implemented for generators.
- Exceptions are now shown in the tree view and have Create/Drop menu commands and a property page.
- Property pages for triggers, table constraints, dependencies (all objects), generators were added. Plus, a special empty property page now appears for not yet supported object types, instead of an error message.
- Ability to view/add/drop table constraints.
- Reconnect menu command for databases will physically disconnect and reconnect a database in one shot.
- "Create new" and "Drop" commands added for external functions.
- New MacOS X port.
Release notes here, download here. Please send us comments, bug reports, feature requests, wishes, etc.
Firebird Words Reference
Here you can find interesting list created by Lester Caine
http://81.138.11.136:8080/tikifirebird/wiki/index.php?page=FirebirdWordsReference
Thursday, November 11, 2004
The .NET Entity Objects Framework
Wednesday, November 10, 2004
The Free Database Niche - Response
In a recent article entitled ""Freie Datenbanken in der Nische", Wolfgang Sommergut compared open source database offerings with the products of the big three database companies, IBM, Microsoft, and Oracle. His conclusion was that open source databases were and would continue to be niche products in the near future. We at IBPhoenix see the future differently. Niche markets are early adopters, incubators for new technologies.Open source databases are attracting attention now because they are breaking out of their original niches and threatening the hegemony of the big three.
http://ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_conputerwoche_response
ibWebAdmin 0.99.1 released - Version 1.0 soon
But it comes with a polish translation contributed by
Matthias Hryniszak and a first draft of a documentation which can be
found in the doc directory inside of the source tree.
Due to the fact that there are no known bugs for some time now I have
decided to change the development status from 'beta' to 'stable' with
this release. The version number will become 1.0 when the
documentation is finished.
Changes:
- added polish language file, contributed by Matthias Hryniszak
- fixed editing of data for values containing double quotes
- fixed trigger-source when modifying triggers
- fixed a bug for csv-import of text-blobs
- direct editing of textblobs when entering/editing data
- added a 'delete all' option to the delete udf selectlist
- fixed editing/deleting data from the watchtable panel when cookies
are disabled
More on the fbwebadmin page
FireFoot - alternative to the current Firebird API
Monday, November 08, 2004
The Firebird ADO.NET Data Provider 1.7 Beta 1
Download information can be found here:
http://www.firebirdsql.org/index.php?op=files&id=netprovider
Beta 1 ( 2004-11-05 )
---- - - ---- -- -- -
( Please, see the changelog for details )
* Bug fixes:
- Fixed Event Parameter buffer handling.
- Fixed plan retrieval using the connection character set.
- Fixed Globalization issues.
- Documentation fixes.
- Minor fix in the FbCommandBuilder class on quotes usage.
- Fixed Input parameter describe when the Prepare method
is called before the FbCommand instance has parameters assigned.
- Fixed Role usage in Connection Strings.
* Added new "Isolation Level" parameter for the connection string,
that allows to set the default IsolationLevel for implicit transactions.
* Improve handling of parameters when they have null values (embedded
server support only.)
* Added changes to try to handle arrays defined with lowerbound 0 correctly.
NOTE: The design time support included in this release for the
FbDataAdapter class is not complete, please, do not use it until it get
finished in future releases.
CVS Tag: NP_1_7_Beta1
Tuesday, November 02, 2004
IBReplicator V2.0.0.8 (Beta)
IBReplicator Features |
Database replication synchronizes data when and where you want it!
IBReplicator uses Firebird's/InterBase's own native API for all replication, so there is no reliance on middleware and drivers. IBReplicator is, therefore:
Ease of use
Powerful replication strategies
Remote replication
Operation logging
Sophisticated database operations
|
Monday, November 01, 2004
Firebird V1.5.2 Release Candiate 1
Note this is a "Release Candidate", not an official release. We would
like people to help test this before official release. Any comments
issues, problems etc should be reported to the Firebird Development
list.
Builds can be downloaded from:
http://www.firebirdsql.org/download/prerelease/
Windows, Linux, Linux NPTL and 64 bit Linux versions are all available
under the appropriate subdirectories at the above url.
Details on what bugs have been fixed in this release, can be found in the
release notes
This release includes a fix for the following known problem with events.
Those of you who have experienced this bug should please test 1.5.2 and
make sure that the problem has been resolved.
"An old legacy bug that has continued to bug us is that, when a client had some
events registered and its network connection had been terminated abnormally
(hardware failure, reset button or task manager), then the server would start
using 100% of the CPU time until the "parent" port (client connection which
called isc_que_events() API routine) reported on its failure.
This bug affected all FB versions (more or less, depending on the
DummyPacketInterval configuration option) and only TCP/IP connections.
Solution
Further work has been done to rectify the problem in v.1.5.2. It now appears to be solved."