On Mon, 2006-06-05 at 16:57 +0530, Girish Maskeri Rama wrote:
> Hi Jim,
> Thanks for the quick reply.
>
> Is it safe to assume each of the source code top level directories as
> modules? E.g client,sql e.t.c. This would then imply that there are
> around roughly 36 modules in mysql?? (I am analyzing mysql-4.1.10
> source code for now)
What do you mean by "module" here?
>
> If someone were to layer them would the following layering make sense??
>
> Layer 3 (Application): client, tests
>
> Layer 2 (QueryProcessing): sql
>
> Layer 1 (StorageManagement): heap, innobase, myisam, ndb, isam,
> bdatabase, myisammrg, merge
>
> Layer 0 (library/utility) : mysys,libmysql,libmysqld,libmysql_r,
> cmd-line-utils, extra, mysqltest, netware, os2, pstack,
> regex, zlib, vio, strings, SSL, support-files, tools, include,
> dbug
>
>
> There are too many modules in level 0 as I did not know where to place
> some of them, especially libmysqld. I could not understand from the
> documentation what exactly is the purpose of libmysqld.
libmysqld is embedded version of MySQL server. This is not a dev
utility. As well, as libmysql. Which is a client library, which
one can use to connect to a mysql server. libmysql_r is it's
thread-safe version. mysqltest dir contains the test suite we
use to test server. So, I would put many of these to your Layer 3.
The storage engine layer (Layer 1) indeed exists and clearly defined.
However in 4.1 some engines are in sql/examples/ directory. It is
harder with Query processing thing, as sql/ also includes many other
things. Such as replication.
Petr