Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[msql-list] Suggested addition to msql

1 view
Skip to first unread message

Doug Hardie

unread,
May 3, 2007, 10:50:17 PM5/3/07
to
I often load a database from a msqldump. The normal approach is to
cat the file through msql which works just fine. However, that
approach generates a lot of output that effectively hides any
errors. Worse yet, there is no indication of which record caused an
error so it can take many hours to figure out how to fix the problem.

I recommend adding a -q option to msql that will basically cause it
to only output error messages along with the query (generally an
insert of update record). The following changes to msql seem to work
fine for me:

--- msql.c.orig Thu May 3 17:07:17 2007
+++ msql.c Thu May 3 17:45:51 2007
@@ -61,6 +61,7 @@
************************************************************************
**/
char *msql_tmpnam();
+int quiet = 0;
/
************************************************************************
**
** PRIVATE ROUTINES
@@ -215,15 +216,18 @@
printf("\n\nERROR : ");
fflush(stdout);
write(fileno(stdout),error,strlen(error));
+ if (quiet)
+ printf ("\nQuery = ", q);
printf("\n\n");
return;
}
+ if (!quiet)
printf("\nQuery OK. row(s) modified or retrieved.\n\n",res);
result = msqlStoreResult();
if (!result)
{
- printf("\n\n");
+ if (!quiet) printf("\n\n");
return;
}
@@ -415,7 +419,7 @@
extern int optind;
extern char *optarg;
- while((c=getopt(argc,argv,"f:h:"))!= -1)
+ while((c=getopt(argc,argv,"f:h:q"))!= -1)
{
switch(c)
{
@@ -433,6 +437,10 @@
confFile = optarg;
break;
+ case 'q':
+ quiet ++;
+ break;
+
case '?':
errFlag++;
break;
@@ -483,12 +491,13 @@
** Run in interactive mode like the ingres/postgres monitor
*/
+ if (!quiet)
printf("Welcome to the miniSQL monitor. Type \\h for help.\n\n");

inchar = EOF+1;
(void)bzero(qbuf,sizeof(qbuf));
cp = qbuf;
- printf("\nmSQL > ");
+ if (!quiet) printf("\nmSQL > ");
fflush(stdout);
while(!feof(stdin))
{
@@ -496,6 +505,7 @@
qLen ++;
if (qLen == MSQL_PKT_LEN)
{
+ if (quiet) printf ("\nQuery = ", inString);
printf("\n\n\nError : Query text too long ( > bytes!)\n\n",
MSQL_PKT_LEN);
printf("Check your query to ensure that there isn't an unclosed
text field.\n\n");
exit(1);
@@ -518,7 +528,7 @@
case 'h':
help();
newQ = 1;
- printf("\nmSQL > ");
+ if (!quiet) printf("\nmSQL > ");
prompt=0;
break;
case 'g':
@@ -526,7 +536,7 @@
newQ = 1;
qLen = 0;
inString = 0;
- printf("\nmSQL > ");
+ if (!quiet) printf("\nmSQL > ");
prompt=0;
break;
case 'e':
@@ -534,7 +544,7 @@
printf("Query buffer\n");
printf("------------\n");
printf("\n[continue]\n",qbuf);
- printf(" -> ");
+ if (!quiet) printf(" -> ");
prompt=0;
cp = qbuf + strlen(qbuf);
qLen = strlen(qbuf);
@@ -548,13 +558,13 @@
printf("\nQuery buffer\n");
printf("------------\n");
printf("\n[continue]\n",qbuf);
- printf(" -> ");
+ if (!quiet) printf(" -> ");
prompt=0;
break;
default:
printf("\n\nUnknown command.\n\n");
newQ = 1;
- printf("\nmSQL > ");
+ if (!quiet) printf("\nmSQL > ");
prompt=0;
break;
}
@@ -595,7 +605,7 @@
{
if (prompt)
{
- printf(" -> ");
+ if (!quiet) printf(" -> ");
}
else
{

-----------------------------------------------------------------
This is the Mini SQL Mailing List operated by Hughes Technologies
To unsubscribe, go to http://www.Hughes.com.au/extras/email/

David J. Hughes

unread,
May 6, 2007, 8:01:18 AM5/6/07
to

Sure, why not.


Thanks

Bambi
..

0 new messages