Posted
over 9 years
ago
by
Steven Buberl
So after the almost complete rewrite of old 1.4 beta was dropped, whenever a bug was found in 1.3.1 or a small feature request in last couple years, I had a modified copy on my PC with the changes. I thought it was lost when my PC crashed months
... [More]
ago. But I found it yesterday. Plus, Pedro Di Martino had his own modified with some more bug fixes in it. So I started merging some of these together to make a new bug fix release for 1.3.1. Should be out in next week or so depending on how much I find and want to add.
I've been on GitHub for a little while and imported fSQL into it this week. I will still check SF forums and make releases, but all code development will be on GitHub from now on. I've committed some of the fixes and and a few new features so far. Will check in more once I test them again.
https://github.com/sbuberl/fSQL [Less]
|
Posted
over 9 years
ago
by
Steven Buberl
So after the almost complete rewrite of old 1.4 beta was dropped, whenever a bug was found in 1.3.1 or a small feature request in last couple years, I had a modified copy on my PC with the changes. I thought it was lost when my PC crashed months
... [More]
ago. But I found it yesterday. Plus, Pedro Di Martino had his own modified with some more bug fixes in it. So I started merging some of these together to make a new bug fix release for 1.3.1. Should be out in next week or so depending on how much I find and want to add.
I've been on GitHub for a little while and imported fSQL into it this week. I will still check SF forums and make releases, but all code development will be on GitHub from now on. I've committed some of the fixes and and a few new features so far. Will check in more once I test them again.
https://github.com/sbuberl/fSQL
[Less]
|
Posted
over 11 years
ago
by
Steven Buberl
The project is currently stopped. My free time I had when I posted ran out not long after. Between work, going back to school, and life in general, there hasnt been any time for fSQL. I have tried on several occasions to bring in more people to
... [More]
help on this project to keep me from burning out and work when I am unable to, but fSQL code can overwhelming and people lose interest. [Less]
|
Posted
over 11 years
ago
by
Steven Buberl
The project is currently stopped. My free time I had when I posted ran out not long after. Between work, going back to school, and life in general, there hasnt been any time for fSQL. I have tried on several occasions to bring in more people to
... [More]
help on this project to keep me from burning out and work when I am unable to, but fSQL code can overwhelming and people lose interest. [Less]
|
Posted
over 11 years
ago
by
yr4ik
Still what that updates are planned? Or the project is stopped?
|
Posted
over 11 years
ago
by
yr4ik
Still what that updates are planned? Or the project is stopped?
|
Posted
over 12 years
ago
by
Steven Buberl
For the last few weeks, I've been using SVN here to version control my code regularly. In the SVN's php/fSQLv1.x/branch folder, there is an early beta of fSQL v1.4.0.
Its still in development so there are more features on the way and bugs to fix
... [More]
, but the major new features v1.4.0 will offer:
- Simple and more efficient WHERE handling
- Complete rewrite of SELECT expression lists
- Proper NULL handling in WHERE clauses and function calls
- Support for GROUP BY and HAVING clauses
- Proper support for all Date/Time types.
If you're interested in trying out out the new code, please do and if you find any bugs, report them to the Tracker.
fSQL v.1.4 is progressing nicely and being worked on regularly so will hopefully be done in a few weeks.
PS. We're looking for PHP and Perl developers: https://sourceforge.net/people/viewjob.php?group_id=61515&job_id=33206
[Less]
|
Posted
over 12 years
ago
by
Steven Buberl
While fSQL v1.4 still lives in SVN and is unready for a stable release, there's lot of new features going in. And I just coming up with more to fit in, which keeps pushing back the schedule. The latest is a very big rearchitecture that affects
... [More]
everything. But you still probably wouldn't notice unless I pointed it out.
New features:
1. In-memory databases
2. Schemas
3. System information database
Planned features:
1. Views
2. INFORMATION_SCHEMA
3. More SQL Standard features and types
In-memory databases are created when you specify the path in define_db() as ':memory:' to create a database purely in memory in which all tables are automatically temporary. This databses and all its contents are freed when the script ends or environment closes.
Having recently acquired a copy of the SQL 2008 Standard, there's one feature I really wanted to add and that is "schemas". Schemas are basically namespaces inside a database. According the standard, databases should not contain tables, only schemas should. fSQL had been following the following the mySQL example of a database which are basically schemas with no parents.
Now fSQL databases are been split into databases and schemas. Databases are still just directories. Schemas are stored as subdirectories in fSQL. And for backwards compatibility, we followed PostgreSQL's example and gave each database a "public" schema which is the default schema and stores it tables in the database's directory rather than a subdirectory. So all your pre-existing tables will continue to work normally because each of our old tables will be mapped into the public schemas with changing any of your code.
API changes:
- Changed define_db($db_name, $db_path) so that it automatically creates "public" schemas on database definition.
- Added define_schema($db_name, $schema_name) which adds a new schema of the specified name to the specified database which must already been defined using define_db().
- Changed select_db($db_name) so that it now sets the current database to the specified database and sets the current schema to that database's "public" schema.
- Added select_schema($db_name, $schema_name) sets the current database to the specified database and sets the current schema to that database's specified schema.
- When specifying table names in queries, you can use just "table" or "schema.table" or "database.schema.table" patterns. Any pre-existing references to other db tables like "database.table" must be changed to "database.public.table".
Also, I added a special in-memory database called "FSQL" which one schema called "master" which system information. Right now there are four tables inside called "databases", "schemas", "tables", and "columns" which contain metadata about the entire environment. Support for mySQL's SHOW and DESCRIBE will probably be deprecated and eventually removed in favor if these tables.
Also, I'm doing to add to squeeze "views" into this release, and if I do, support for the standard's INFORMATION_SCHEMA schema will be added which will be views mapping to the new FSQL.master data.
These new features are pretty recent and may have bugs but please try them out.
If you have any questions about these changes, you can ask at the forums here and if you find any bugs, please report them to the tracker.
PS. When v1.4 is nearly ready, I'll be updating the web site with the latest full docs as well. [Less]
|
Posted
over 12 years
ago
by
Steven Buberl
It's been a while since I've done one of these. Plus there's something important for people using the SVN beta to know so their old code keeps working.
The next release of fSQL is progressing nicely. Just turned out to be a much larger update than
... [More]
I had originally planned. A lot of the original 2.0 stuff is finding its way into the Beta.
New highlights:
- Multiple drivers/backends
- Views
- Keys
- Vendor-specific extensions
- Better concurrency
- Prepared Statements?
Mulitple Backends:
fSQL now allows you to change what format the files are saved to be specified. Current options: 'default', 'memory', or 'legacy'. 'default' is a new backend similar to the old one but not compatible because of new row formats. The 'legacy' backend is compatible with fSQL v1.2+ databases. So if you're using the beta for existing code, you can select the 'legacy' driver using:
$fsql->select_driver('legacy');
before any calls to define_db() for your existing tables to keep working. The 'default' backend is recommended but its format is not finalized yet so may change between commits. May add one or two example backends (popular requests are 'serialized', 'xml' and 'json') before release time.
Views:
Views are implemented. Writing to a view is currently not allowed but they can be used in SELECT's just fine. Added CREATE VIEW and DROP VIEW syntax. Need to add ALTER VIEW and ability to specify column names and they're done.
Keys:
fSQL has always supported keys somewhat. But it's never remembered key names, and can't handle multiple column unique keys correctly (except primary keys). The new default backend remembers key information and properly handles multi-column keys of all types. The new default backend creates a file for its primary keys and a in-memory key for all other keys that are built when reading from the table. In-memory keys are the only keys available for 'memory' and 'legacy' backends. Also, keys are now used to validate no duplicates in INSERTs (and soon UPDATEs) in a much faster way than the old code involving full table scans.
Extensions:
fSQL was originally built to mimic mySQL's syntax. But there's a lot of mySQL-specific queries (BACKUP, RESTORE, SHOW, DESCRIBE, LOCK, UNLOCK, USE) and functions that everyone may not need. And I want fSQL to be moving to more standards compliance. So now, mySQL support is an extension that can be enabled through the API to allow you to use those queries.
Concurrency:
fSQL's entire transaction and table write scheme has been reworked to better handle what happens when another person commits to that table during your transaction. Also INSERT-only transactions happen faster now it can append rather than rewrite the entire file (legacy still has to sometimes but not always).
Prepared Statements:
In the refactoring of fSQL, query() now parses/prepares a statement and then executes it if there is no error. So I could move this functionlity to the public API and allow prepared statements. However it currently does not support placeholders (such as: INSERT INTO mytable (?, ?, ?) ) and then binding values for them. Whether they'll make it into this release will be determined at a later date.
That's all for now. I have lots of time to work on fSQL lately and we recently got two new developers so hopefully fSQL will have its big release in the next few weeks.
-Kaja [Less]
|
Posted
over 12 years
ago
by
Steven Buberl
Flat-file SQL(fSQL) is a set of classes available in PHP that allows users without SQL database servers (like mySQL) to store and select their data using SQL queries. fSQL is designed to support as many SQL queries and features (primarily based on
... [More]
mySQL) as it can.
First off, I need to apologize for version 1.2. I rewrote so much of it so quickly that a lot of important things like writing to tables that got some serious bugs that blocked almost inserts. And there was some small bugs in reading it back. These bugs got introduced right before the release and they were missed. I've been getting emails about 1.2 for years and I knew they were there but I never had time to fix it.
Now that's over and fSQL is back with version 1.3. Version 1.3 brings a level of stability and reliability back to fSQL. This one has been well tested and fixes the major issues of version 1.2 as well as adds some features like the the LOCK and UNLOCK TABLES queries.
fSQL version 2.0 is currently in development. fSQL2 is almost complete rewrite of fSQL to cleaner API that takes advantage of PHP 5. fSQL's major goal is will be the ability to have multiple backend formats to choose from (ie. XML, YAML, hopefully at least one binary format). The fSQL 1.x series will continue to get big fixes and minor feature additions.
So big things on the way for fSQL. Be sure to keep an eye open for fSQL 2. [Less]
|