HAWQ-1782. Fix failed to read EXTERNAL TABLE of GPFDIST protocol

- revise CREATE EXTERNAL TABLE default to READABLE EXTERNAL TABLE

- fix read from EXTERNAL TABLE of GPFDIST protocol

The documented behaviour of CREATE EXTERNAL TABLE indicates a READABLE
TABLE but used to be violated.

Referring to https://curl.se/libcurl/c/curl_multi_fdset.html,
```
If no file descriptors are set by libcurl, max_fd will contain -1 when
this function returns. Otherwise it will contain the highest descriptor
number libcurl set. When libcurl returns -1 in max_fd, it is because
libcurl currently does something that isn't possible for your
application to monitor with a socket and unfortunately you can then not
know exactly when the current action is completed using select(). You
then need to wait a while before you proceed and call curl_multi_perform
anyway. How long to wait? Unless curl_multi_timeout gives you a lower
number, we suggest 100 milliseconds or so, but you may want to test it
out in your own particular conditions to find a suitable value.
```
it is not an error of `max_fd == -1`. Moreover, the situation of
`max_fd == -1` seems common on macOS.
diff --git a/.github/workflows/scripts/gtest_filter_negative b/.github/workflows/scripts/gtest_filter_negative
index 744558e..b20aa7f 100644
--- a/.github/workflows/scripts/gtest_filter_negative
+++ b/.github/workflows/scripts/gtest_filter_negative
@@ -14,7 +14,6 @@
 # limitations under the License.
 
 export GTEST_FILTER_NEGATIVE=\
-TestErrorTable.TestErrorTableAll:\
 TestCommonLib.TestHdfsConfig:\
 TestExtOrc.TestNormalPath:\
 TestExtOrc.BoolTypeTest:\
diff --git a/src/backend/access/external/url.c b/src/backend/access/external/url.c
index 7aadc95..e4bbddf 100644
--- a/src/backend/access/external/url.c
+++ b/src/backend/access/external/url.c
@@ -361,13 +361,13 @@
 						e, curl_easy_strerror(e));
 		}
 
-		if (maxfd <= 0)
+		if (maxfd == -1)
 		{
-			curl->still_running = 0;
-			break;
+			/* fall through to curl_multi_perform directly */
+			pg_usleep(100);
+			nfds = 1;
 		}
-
-        if (-1 == (nfds = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout)))
+		else if (-1 == (nfds = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout)))
 		{
 			if (errno == EINTR || errno == EAGAIN)
 				continue;
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 4dbfcb2..6650841 100755
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -4707,7 +4707,7 @@
 
 OptWritable:	WRITABLE				{ $$ = TRUE; }
 				| READABLE				{ $$ = FALSE; }
-				| /*EMPTY*/				{ $$ = TRUE; }
+				| /*EMPTY*/				{ $$ = FALSE; }
 				;
 
 OptWeb:		WEB						{ $$ = TRUE; }