head	1.2;
access;
symbols
	REL7_4_29:1.1
	REL8_0_25:1.1
	REL8_1_21:1.1
	REL7_4_28:1.1
	REL8_0_24:1.1
	REL8_1_20:1.1
	REL7_4_27:1.1
	REL8_0_23:1.1
	REL8_1_19:1.1
	REL7_4_26:1.1
	REL8_0_22:1.1
	REL8_1_18:1.1
	REL7_4_25:1.1
	REL8_0_21:1.1
	REL8_1_17:1.1
	REL7_4_24:1.1
	REL8_0_20:1.1
	REL8_1_16:1.1
	REL7_4_23:1.1
	REL8_0_19:1.1
	REL8_1_15:1.1
	REL7_4_22:1.1
	REL8_0_18:1.1
	REL8_1_14:1.1
	REL7_4_21:1.1
	REL8_0_17:1.1
	REL8_1_13:1.1
	REL7_4_20:1.1
	REL8_0_16:1.1
	REL8_1_12:1.1
	REL7_3_21:1.1
	REL7_4_19:1.1
	REL8_0_15:1.1
	REL8_1_11:1.1
	REL7_3_20:1.1
	REL7_4_18:1.1
	REL8_0_14:1.1
	REL8_1_10:1.1
	REL7_3_19:1.1
	REL7_4_17:1.1
	REL8_0_13:1.1
	REL8_1_9:1.1
	REL8_0_12:1.1
	REL8_1_8:1.1
	REL7_3_18:1.1
	REL7_4_16:1.1
	REL8_0_11:1.1
	REL8_1_7:1.1
	REL8_0_10:1.1
	REL8_1_6:1.1
	REL7_4_15:1.1
	REL7_3_17:1.1
	REL8_1_5:1.1
	REL8_0_9:1.1
	REL7_4_14:1.1
	REL7_3_16:1.1
	REL7_3_15:1.1
	REL7_4_13:1.1
	REL8_0_8:1.1
	REL8_1_4:1.1
	REL7_3_14:1.1
	REL7_4_12:1.1
	REL8_0_7:1.1
	REL8_1_3:1.1
	REL7_3_13:1.1
	REL7_4_11:1.1
	REL8_0_6:1.1
	REL8_1_2:1.1
	REL7_3_12:1.1
	REL7_4_10:1.1
	REL8_0_5:1.1
	REL8_1_1:1.1
	REL8_1_STABLE:1.1.0.16
	REL8_1_0:1.1
	REL8_1_0RC1:1.1
	REL8_1_0BETA4:1.1
	REL8_1_0BETA3:1.1
	REL7_3_11:1.1
	REL7_4_9:1.1
	REL8_0_4:1.1
	REL8_1_0BETA2:1.1
	REL8_1_0BETA1:1.1
	REL7_2_8:1.1
	REL7_3_10:1.1
	REL7_4_8:1.1
	REL8_0_3:1.1
	REL8_0_2:1.1
	REL7_2_7:1.1
	REL7_3_9:1.1
	REL7_4_7:1.1
	REL8_0_1:1.1
	REL8_0_STABLE:1.1.0.14
	REL8_0_0:1.1.0.12
	REL8_0_0RC5:1.1
	REL8_0_0RC4:1.1
	REL8_0_0RC3:1.1
	REL8_0_0RC2:1.1
	REL8_0_0RC1:1.1
	REL8_0_0BETA5:1.1
	REL8_0_0BETA4:1.1
	REL7_4_6:1.1
	REL7_3_8:1.1
	REL7_2_6:1.1
	REL8_0_0BETA3:1.1
	REL8_0_0BETA2:1.1
	REL7_2_5:1.1
	REL7_4_5:1.1
	REL7_3_7:1.1
	REL7_4_4:1.1
	REL8_0_0BETA1:1.1
	REL7_4_3:1.1
	REL7_4_2:1.1
	REL7_3_6:1.1
	REL7_4_1:1.1
	REL7_3_5:1.1
	REL7_4:1.1
	REL7_4_RC2:1.1
	REL7_4_STABLE:1.1.0.10
	REL7_4_RC1:1.1
	REL7_4_BETA5:1.1
	REL7_4_BETA4:1.1
	REL7_4_BETA3:1.1
	REL7_4_BETA2:1.1
	WIN32_DEV:1.1.0.8
	REL7_4_BETA1:1.1
	REL7_3_4:1.1
	REL7_3_2:1.1
	REL7_2_4:1.1
	REL7_3_STABLE:1.1.0.6
	REL7_2_3:1.1
	REL7_2_STABLE:1.1.0.4
	REL7_2:1.1
	REL7_2_RC2:1.1
	REL7_2_RC1:1.1
	REL7_2_BETA5:1.1
	REL7_2_BETA4:1.1
	REL7_2_BETA3:1.1
	REL7_2_BETA2:1.1
	REL7_2_BETA1:1.1
	REL7_1_2:1.1
	REL7_1_STABLE:1.1.0.2
	REL7_1_BETA:1.1
	REL7_1_BETA3:1.1
	REL7_1_BETA2:1.1
	REL7_1:1.1;
locks; strict;
comment	@# @;


1.2
date	2006.09.05.17.20.28;	author tgl;	state dead;
branches;
next	1.1;

1.1
date	2000.06.19.14.01.38;	author momjian;	state Exp;
branches;
next	;


desc
@@


1.2
log
@Remove contrib modules that have been migrated to pgfoundry: adddepend,
dbase, dbmirror, fulltextindex, mac, userlock; or abandoned: mSQL-interface,
tips.
@
text
@
Hello! :)

(Sorry for my english. But if i wrote in portuguese, you wouldn't
 understand nothing. :])

	I found it's the right place to post this. I'm a newcomer in these
lists. I hope i did it right. :]

<BOREDOM>
	When i started using SQL, i started with mSQL. I developed a lot
of useful apps for me and my job with C, mainly because i loved it's
elegant, simple api. But for a large project i'm doing in these days, i
thought is was not enough, because it felt a lot of features i started to
need, like security and subselects. (and it's not free :))
	So after looking at the options, choose to start again with
postgres. It offered everything that i needed, and the documentation is
really good (remember me to thank the one who wrote'em).
	But for my little apps, i needed to start porting them to libpq.
After looking at pq's syntax, i found it was better to write a bridge
between the mSQL api and libpq. I found that rewriting the libmsql.a
routines that calls libpq would made things much easier. I guess the
results are quite good right now.
</BOREDOM>

	Ok. Lets' summarize it:

	mpgsql.c is the bridge. Acting as a wrapper, it's really good,
since i could run mSQL. But it's not accurate. Some highlights:

	CONS:
	* It's not well documented 
		(this post is it's first documentation attempt, in fact);
	* It doesn't handle field types correctly. I plan to fix it,
	  if people start doing feedbacks;
	* It's limited to 10 simultaneous connections. I plan to enhance
	  this, i'm just figuring out;
	* I'd like to make it reentrant/thread safe, although i don't
	  think this could be done without changing the API structure;
	* Error Management should be better. This is my first priority
          now;
	* Some calls are just empty implementations.

	PROS:
	* the mSQL Monitor runs Okay. :]
	* It's really cool. :)
	* Make mSQL-made applications compatible with postgresql just by
	  changing link options.
	* Uses postgreSQL. :]
	* the mSQL API it's far easier to use and understand than libpq.
          Consider this example:

#include "msql.h"

void main(int argc, char **argv, char **envp) {
   int sid;
	
   sid = msqlConnect(NULL); /* Connects via unix socket */

   if (sid >= 0) {
      m_result *rlt;
      m_row *row;
      msqlSelectDB(sid, "hosts");
      if (msqlQuery(sid, "select host_id from hosts")) {
	 rlt = msqlStoreResult();
         while (row = (m_row*)msqlFetchRow(rlt)) 
            printf("hostid: %s\n", row[0]);
         msqlFreeResult(rlt);
      }
      msqlClose(sid);
   }
}

	I enclose mpgsql.c inside. I'd like to maintain it, and (maybe, am
i dreaming) make it as part of the pgsql distribution. I guess it doesn't
depends on me, but mainly on it's acceptance by its users.

	Hm... i forgot: you'll need a msql.h copy, since it's copyrighted
by Hughes Technologies Pty Ltd. If you haven't it yes, fetch one
from www.hughes.com.au.

	I would like to catch users ideas. My next goal is to add better
error handling, and to make it better documented, and try to let relshow
run through it. :)

	done. Aldrin Leal <aldrin@@americasnet.com>
@


1.1
log
@Add missing /contrib files
@
text
@@

